summaryrefslogtreecommitdiff
path: root/extra/usb_power/convert_servo_ina.py
blob: 1deb75cda441e9673ee77be9066e74eb8dafdb33 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/env python
# Copyright 2017 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Program to convert power logging config from a servo_ina device
   to a sweetberry config.
"""

# Note: This is a py2/3 compatible file.

from __future__ import print_function

import os
import sys


def fetch_records(basename):
    """Import records from servo_ina file.

    servo_ina files are python imports, and have a list of tuples with
    the INA data.
    (inatype, i2caddr, rail name, bus voltage, shunt ohms, mux, True)

    Args:
      basename: python import name (filename -.py)

    Returns:
      list of tuples as described above.
    """
    ina_desc = __import__(basename)
    return ina_desc.inas


def main(argv):
    if len(argv) != 2:
        print("usage:")
        print(" %s input.py" % argv[0])
        return

    inputf = argv[1]
    basename = os.path.splitext(inputf)[0]
    outputf = basename + ".board"
    outputs = basename + ".scenario"

    print("Converting %s to %s, %s" % (inputf, outputf, outputs))

    inas = fetch_records(basename)

    boardfile = open(outputf, "w")
    scenario = open(outputs, "w")

    boardfile.write("[\n")
    scenario.write("[\n")
    start = True

    for rec in inas:
        if start:
            start = False
        else:
            boardfile.write(",\n")
            scenario.write(",\n")

        record = (
            '  {"name": "%s", "rs": %f, "sweetberry": "A", "channel": %d}'
            % (
                rec[2],
                rec[4],
                rec[1] - 64,
            )
        )
        boardfile.write(record)
        scenario.write('"%s"' % rec[2])

    boardfile.write("\n")
    boardfile.write("]")

    scenario.write("\n")
    scenario.write("]")


if __name__ == "__main__":
    main(sys.argv)