sweetberry: converter tool for servo_ina

convert_servo_ina.py can convert power log config
files from hdctools/servo/data into sweetberry configs

BRANCH=None
BUG=b:35578707
TEST=compare kevin_r0_loc.py output with kevin.board

Change-Id: Iadc57fe4eb1f5b220c6bffe3a3fe8a10b0d6b5a2
Signed-off-by: Nick Sanders <nsanders@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/634486
This commit is contained in:
Nick Sanders
2017-08-24 18:52:24 -07:00
committed by chrome-bot
parent 4e46386877
commit 4fc9cf4c11
2 changed files with 86 additions and 0 deletions

View File

@@ -8,6 +8,18 @@ a ".board" file, and one describing the particular rails you want to
monitor in this session, a ".scenario" file.
Converting from servo_ina configs:
Many configs can be found for the servo_ina_board in hdctools/servo/data/.
Sweetberry is plug compatible with servo_ina headers, and config files
can be converted with the following tool:
./convert_servo_ina.py kevin_r0_loc.py
This will produce kevin_r0_loc.board and kevin_r0_loc.scenario which
can be used with powerlog.py.
Board files:
Board files contain a list of rails, supporting 48 channels each on up to two

View File

@@ -0,0 +1,74 @@
#!/usr/bin/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.
"""Program to convert power logging config from a servo_ina device
to a sweetberry config.
"""
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)