# EXAMPLE USAGES:
# python step_45MHz.py +1 ## increase mod depth by 1 dB
# python step_45MHz.py -1 ## decrease mod depth by 1 dB

import numpy as np
import time
import sys

import ezca as ez
ezca = ez.Ezca()

def main():
    chanlist = [
                'LSC-POP_A_RF45_I',
                'LSC-POP_A_RF45_Q',
                'LSC-REFL_A_RF45_I',
                'LSC-REFL_A_RF45_Q',
                'LSC-POPAIR_A_RF45_I',
                'LSC-POPAIR_A_RF45_Q',
                'LSC-REFLAIR_A_RF45_I',
                'LSC-REFLAIR_A_RF45_Q',
                'LSC-ASAIR_A_RF45_I',
                'LSC-ASAIR_A_RF45_Q',
                'ASC-REFL_A_RF45_I1',
                'ASC-REFL_A_RF45_I2',
                'ASC-REFL_A_RF45_I3',
                'ASC-REFL_A_RF45_I4',
                'ASC-REFL_A_RF45_Q1',
                'ASC-REFL_A_RF45_Q2',
                'ASC-REFL_A_RF45_Q3',
                'ASC-REFL_A_RF45_Q4',
                'ASC-REFL_B_RF45_I1',
                'ASC-REFL_B_RF45_I2',
                'ASC-REFL_B_RF45_I3',
                'ASC-REFL_B_RF45_I4',
                'ASC-REFL_B_RF45_Q1',
                'ASC-REFL_B_RF45_Q2',
                'ASC-REFL_B_RF45_Q3',
                'ASC-REFL_B_RF45_Q4',
                'ASC-AS_A_RF36_I1',
                'ASC-AS_A_RF36_I2',
                'ASC-AS_A_RF36_I3',
                'ASC-AS_A_RF36_I4',
                'ASC-AS_A_RF36_Q1',
                'ASC-AS_A_RF36_Q2',
                'ASC-AS_A_RF36_Q3',
                'ASC-AS_A_RF36_Q4',
                'ASC-AS_B_RF36_I1',
                'ASC-AS_B_RF36_I2',
                'ASC-AS_B_RF36_I3',
                'ASC-AS_B_RF36_I4',
                'ASC-AS_B_RF36_Q1',
                'ASC-AS_B_RF36_Q2',
                'ASC-AS_B_RF36_Q3',
                'ASC-AS_B_RF36_Q4',
                'ASC-AS_A_RF45_I1',
                'ASC-AS_A_RF45_I2',
                'ASC-AS_A_RF45_I3',
                'ASC-AS_A_RF45_I4',
                'ASC-AS_A_RF45_Q1',
                'ASC-AS_A_RF45_Q2',
                'ASC-AS_A_RF45_Q3',
                'ASC-AS_A_RF45_Q4',
                'ASC-AS_B_RF45_I1',
                'ASC-AS_B_RF45_I2',
                'ASC-AS_B_RF45_I3',
                'ASC-AS_B_RF45_I4',
                'ASC-AS_B_RF45_Q1',
                'ASC-AS_B_RF45_Q2',
                'ASC-AS_B_RF45_Q3',
                'ASC-AS_B_RF45_Q4',
                'ASC-POP_X_RF_I1',
                'ASC-POP_X_RF_I2',
                'ASC-POP_X_RF_I3',
                'ASC-POP_X_RF_I4',
                'ASC-POP_X_RF_Q1',
                'ASC-POP_X_RF_Q2',
                'ASC-POP_X_RF_Q3',
                'ASC-POP_X_RF_Q4',
                ]

    chanlist2 = [
                'LSC-POPAIR_B_RF90_I',
                'LSC-POPAIR_B_RF90_Q',
                'LSC-ASAIR_B_RF90_I',
                'LSC-ASAIR_B_RF90_Q',
                ]

    if sys.argv[1][0] == '+':
        sign = 1
    elif sys.argv[1][0] == '-':
        sign = -1
    else:
        raise ValueError
    dB = float(sys.argv[1][1:])

    ezca['LSC-MOD_RF45_AM_RFSET'] += sign*dB
    time.sleep(1)

    for chan in chanlist:
        ezca[chan+'_TRAMP'] = 3
        ezca[chan+'_GAIN'] *= 10**(-sign*dB/20)

    for chan in chanlist2:
        ezca[chan+'_TRAMP'] = 3
        ezca[chan+'_GAIN'] *= 10**(-sign*2*dB/20)

if __name__ == '__main__':
    main()
