#!/usr/bin/python
"""
A script to configure a UUT as master or slave depending on the position of the
HDMI cable in the system.
Use case 1: Run on a specific UUT locally.
Use case 2: Run remotely from a host by providing a UUT argument.
"""
import acq400_hapi
import argparse
import socket
[docs]def set_clk_trg(args):
    try:
        uut = acq400_hapi.Acq400(args.uut)
    except:
        print( "Connection refused. If you are running this script from " \
              
"a remote host then make sure you provide a uut argument.")
    # Check if master or slave
    if uut.s0.SIG_SYNC_BUS_OUT_CABLE_DET.split(" ")[-1] == "CONNECTED":
        print( "Configuring as master.")
        uut.s0.SIG_SYNC_OUT_CLK = "CLK"
        uut.s0.SIG_SYNC_OUT_CLK_DX = "d3"
        uut.s0.SIG_SYNC_OUT_TRG = "TRG"
        uut.s0.SIG_SYNC_OUT_TRG_DX = args.trg
        uut.s0.SIG_SYNC_OUT_SYNC = "SYNC"
        uut.s0.SIG_SYNC_OUT_SYNC_DX = "d2"
        uut.s1.clk = "1,3,1"
        uut.s1.trg = "1,",args.trg,",1"
        uut.s1.sync = "0,0,0"
        uut.s1.clkdiv = 1
        uut.s1.sync_trg_to_clk=1
    else:
        print("Configuring as slave")
        uut.s0.SIG_SRC_CLK_0 = "EXT"
        uut.s0.SIG_SRC_CLK_1 = "HDMI"
        uut.s0.SIG_SRC_TRG_0 = "HDMI"
        uut.s0.SIG_SRC_SYNC_0 = "HDMI"
        uut.s0.SIG_SYNC_OUT_CLK = "CLK"
        uut.s0.SIG_SYNC_OUT_CLK_DX = "d1"
        uut.s0.SIG_SYNC_OUT_TRG = "TRG"
        uut.s0.SIG_SYNC_OUT_TRG_DX = "d0"
        uut.s0.SIG_SYNC_OUT_SYNC = "SYNC"
        uut.s0.SIG_SYNC_OUT_SYNC_DX = "d0"
        uut.s1.clk = "1,1,1"
        uut.s1.trg = "1,0,1"
        uut.s1.sync = "1,0,1"
        uut.s1.sync_trg_to_clk=0 
[docs]def get_parser():
    parser = argparse.ArgumentParser(description = 'Set CLK and TRG on UUT')
    parser.add_argument('--trg', type=str, default="d2",
    help="Which trigger to use. Default is soft.")
    parser.add_argument('--uut', type=str, default=socket.gethostname(),
    help='Which UUT we are working with. Default is found using socket.')
    return parser 
if __name__ == '__main__':
    set_clk_trg(get_parser().parse_args())