def do_version(pty): """Check version via ec console 'pty'. Args: pty: a pty object connected to tigertail Commands are: # > version # Chip: stm stm32f07x # Board: 0 # RO: tigertail_v1.1.6749-74d1a312e # RW: tigertail_v1.1.6749-74d1a312e # Build: tigertail_v1.1.6749-74d1a312e # 2017-07-25 20:08:34 [email protected] """ cmd = '\r\nversion\r\n' regex = 'RO:\s+(\S+)\s+RW:\s+(\S+)\s+Build:\s+(\S+)\s+' \ '(\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d) (\S+)' results = pty._issue_cmd_get_results(cmd, [regex])[0] c.log('Version is %s' % results[3]) c.log('RO: %s' % results[1]) c.log('RW: %s' % results[2]) c.log('Date: %s' % results[4]) c.log('Src: %s' % results[5]) return True
def main(argv): parser = get_parser() opts = parser.parse_args(argv) result = True # Let's make sure there's a tigertail # If nothing found in 5 seconds, fail. c.wait_for_usb(STM_VIDPID, 5.) pty = c.setup_tinyservod(STM_VIDPID, 0, serialno=opts.serialno) if opts.setserialno: try: c.do_serialno(opts.setserialno, pty) except Exception: result = False elif opts.mux: result &= do_mux(opts.mux, pty) elif opts.sysjump: result &= do_sysjump(opts.sysjump, pty) elif opts.reboot: result &= do_reboot(pty) if result: c.log('PASS') else: c.log('FAIL') exit(-1)
def do_check_serial(pty): """Check serial via ec console 'pty'. Args: pty: a pty object connected to tigertail Commands are: # > serialno # Serial number: number """ cmd = '\r\nserialno\r\n' regex = 'Serial number: ([^\n\r]+)' results = pty._issue_cmd_get_results(cmd, [regex])[0] c.log('Serial is %s' % results[1]) return True
def do_reboot(pty): """Reboot via ec console pty Command is: reboot. """ cmd = '\r\nreboot\r\n' regex = 'Rebooting' try: results = pty._issue_cmd_get_results(cmd, [regex])[0] time.sleep(1) c.log(results) except Exception as e: c.log(e) return False return True
def do_power(count, bus, pty): """Check power usage via ec console 'pty'. Args: count: number of samples to capture bus: rail to monitor, 'vbus', 'cc1', or 'cc2' pty: a pty object connected to tigertail Commands are: # > ina 0 # Configuration: 4127 # Shunt voltage: 02c4 => 1770 uV # Bus voltage : 1008 => 5130 mV # Power : 0019 => 625 mW # Current : 0082 => 130 mA # Calibration : 0155 # Mask/Enable : 0008 # Alert limit : 0000 """ if bus == 'vbus': ina = 0 if bus == 'cc1': ina = 4 if bus == 'cc2': ina = 1 start = time.time() c.log('time,\tmV,\tmW,\tmA') cmd = '\r\nina %s\r\n' % ina regex = 'Bus voltage : \S+ \S+ (\d+) mV\s+' \ 'Power : \S+ \S+ (\d+) mW\s+' \ 'Current : \S+ \S+ (\d+) mA' for i in xrange(0, count): results = pty._issue_cmd_get_results(cmd, [regex])[0] c.log('%.2f,\t%s,\t%s\t%s' % (time.time() - start, results[1], results[2], results[3])) return True
def do_mux(mux, pty): """Set mux via ec console 'pty'. Args: mux: mux to connect to DUT, 'A', 'B', or 'off' pty: a pty object connected to tigertail Commands are: # > mux A # TYPE-C mux is A """ validmux = ['A', 'B', 'off'] if mux not in validmux: c.log('Mux setting %s invalid, try one of %s' % (mux, validmux)) return False cmd = '\r\nmux %s\r\n' % mux regex = 'TYPE\-C mux is ([^\s\r\n]*)\r' results = pty._issue_cmd_get_results(cmd, [regex])[0] result = results[1].strip().strip('\n\r') if result != mux: c.log('Mux set to %s but saved as %s.' % (mux, result)) return False c.log('Mux set to %s' % result) return True
def do_sysjump(region, pty): """Set region via ec console 'pty'. Args: region: ec code region to execute, 'ro' or 'rw' pty: a pty object connected to tigertail Commands are: # > sysjump rw """ validregion = ['ro', 'rw'] if region not in validregion: c.log('Region setting %s invalid, try one of %s' % (region, validregion)) return False cmd = '\r\nsysjump %s\r\n' % region try: pty._issue_cmd(cmd) time.sleep(1) except Exception as e: c.log(e) return False c.log('Region requested %s' % region) return True
def main(argv): parser = get_parser() opts = parser.parse_args(argv) result = True # Let's make sure there's a tigertail # If nothing found in 5 seconds, fail. c.wait_for_usb(STM_VIDPID, timeout=5., serialname=opts.serialno) pty = c.setup_tinyservod(STM_VIDPID, 0, serialname=opts.serialno) if opts.bus not in ('vbus', 'cc1', 'cc2'): c.log('Try --bus [vbus|cc1|cc2]') result = False elif opts.setserialno: try: c.do_serialno(opts.setserialno, pty) except Exception: result = False elif opts.mux: result &= do_mux(opts.mux, pty) elif opts.sysjump: result &= do_sysjump(opts.sysjump, pty) elif opts.reboot: result &= do_reboot(pty) elif opts.check_version: result &= do_version(pty) elif opts.check_serial: result &= do_check_serial(pty) elif opts.power: result &= do_power(1, opts.bus, pty) elif opts.powerlog: result &= do_power(opts.powerlog, opts.bus, pty) if result: c.log('PASS') else: c.log('FAIL') exit(-1)