summaryrefslogtreecommitdiff
path: root/extra/usb_power/convert_servo_ina.py
blob: 1c70f31aebe6d673b9bcb9b5d5c7ca2a9c8d0b99 (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
#!/usr/bin/env python
# Copyright 2017 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Ignore indention messages, since legacy scripts use 2 spaces instead of 4.
# pylint: disable=bad-indentation,docstring-section-indent
# pylint: disable=docstring-trailing-quotes

"""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)