Esempio n. 1
0
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
Esempio n. 2
0
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)
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
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
Esempio n. 6
0
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
Esempio n. 7
0
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
Esempio n. 8
0
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)