# EXAMPLE USAGES:
# python step_9MHz.py +1 ## increase mod depth by 1 dB
# python step_9MHz.py -1 ## decrease mod depth by 1 dB
# This script does NOT adjust the CARM gain

import numpy as np
import time
import sys

import ezca as ez
ezca = ez.Ezca()

def main():
    chanlist = [
                'LSC-POP_A_RF9_I',
                'LSC-POP_A_RF9_Q',
                'LSC-REFL_A_RF9_I',
                'LSC-REFL_A_RF9_Q',
                'LSC-POPAIR_A_RF9_I',
                'LSC-POPAIR_A_RF9_Q',
                'LSC-REFLAIR_A_RF9_I',
                'LSC-REFLAIR_A_RF9_Q',
                'ASC-REFL_A_RF9_I1',
                'ASC-REFL_A_RF9_I2',
                'ASC-REFL_A_RF9_I3',
                'ASC-REFL_A_RF9_I4',
                'ASC-REFL_A_RF9_Q1',
                'ASC-REFL_A_RF9_Q2',
                'ASC-REFL_A_RF9_Q3',
                'ASC-REFL_A_RF9_Q4',
                'ASC-REFL_B_RF9_I1',
                'ASC-REFL_B_RF9_I2',
                'ASC-REFL_B_RF9_I3',
                'ASC-REFL_B_RF9_I4',
                'ASC-REFL_B_RF9_Q1',
                'ASC-REFL_B_RF9_Q2',
                'ASC-REFL_B_RF9_Q3',
                'ASC-REFL_B_RF9_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',
                ]

    chanlist2 = [
                'LSC-POPAIR_B_RF18_I',
                'LSC-POPAIR_B_RF18_Q',
                'LSC-ASAIR_B_RF18_I',
                'LSC-ASAIR_B_RF18_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_RF9_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()
