#!/usr/bin/env python3
"""
wait until the fleet is ready (bist0 status good), then run "preset1", amx-start-demo from CUSTOM_AMX
make sure amx-start-demo reaches the parts before accepting.
"""
import acq400_hapi
from acq400_hapi import timing
import argparse
import threading
import requests
import time
[docs]def get_parser():
parser = argparse.ArgumentParser(description='start amx demo')
parser.add_argument('--verbose', default=0, type=int, help='increase verbosity')
parser.add_argument('--wrtt', default=1, help='use WRTT to start the fleet')
parser.add_argument('uutnames', nargs='+', help="uuts")
return parser
[docs]def wait_bist_ok(u, args):
url = f'http://{u.uut}/d-tacq/bist0_status'
ii = 1
maxi = 100
while True:
if args.verbose or ii%10 == 0:
print(f'get {url} {ii}/{maxi}')
response = requests.get(url)
if args.verbose:
print(repr(response))
if response.status_code == 200:
if response.text[0] == '0':
return True
else:
print(f'ERROR {u.uut} BIST FAIL')
return False
time.sleep(2.5)
ii += 1
if ii >= maxi:
return False
[docs]def tee_up_action(u, args):
print(f"hello {u.uut}")
ok = False
if wait_bist_ok(u, args):
ok = True
u.s0.preset1 = args.wrtt
ssb = int(u.s0.ssb)
if ssb != 128:
print(f'ERROR {u.uut} ssb != 96 actual {ssb}')
ok = False
RTM_TRANSLEN = acq400_hapi.intpv(u.s1.RTM_TRANSLEN)
rtm_translen = int(u.s1.rtm_translen)
if RTM_TRANSLEN != 16384:
print(f'ERROR {u.uut} {RTM_TRANSLEN} != 16384')
ok = False
if RTM_TRANSLEN+1 != rtm_translen:
print(f'ERROR {u.uut} RTM_TRANSLEN+1 != rtm_translen')
ok = False
u.amx_demo_ok = ok
if args.verbose:
print(f'u.amx_demo_ok set {ok}')
[docs]def tee_up_mt_action(u, args):
def _tee_up_mt_action():
tee_up_action(u, args)
return _tee_up_mt_action
[docs]@timing
def tee_up_mt(args):
thx = []
for u in args.uuts:
u.amx_demo_ok = False
th = threading.Thread(target=tee_up_mt_action(u, args))
th.start()
thx.append(th)
for t in thx:
t.join()
for u in args.uuts:
if not u.amx_demo_ok:
print(f"ERROR: {u.uut} is NOT OK")
[docs]@timing
def connect(args):
args.uuts = [ acq400_hapi.Acq2106(u, has_comms=False, has_wr=True) for u in args.uutnames ]
[docs]def run_main(args):
connect(args)
tee_up_mt(args)
if __name__ == '__main__':
run_main(get_parser().parse_args())