import foton
import ezca
ezca = ezca.Ezca()

def define_dict():
    dict = {
        'FM1_name':'',
        'FM1_filt':None,
        'FM2_name':'',
        'FM2_filt':None,
        'FM3_name':'',
        'FM3_filt':None,
        'FM4_name':'',
        'FM4_filt':None,
        'FM5_name':'',
        'FM5_filt':None,
        'FM6_name':'',
        'FM6_filt':None,
        'FM7_name':'',
        'FM7_filt':None,
        'FM8_name':'',
        'FM8_filt':None,
        'FM9_name':'',
        'FM9_filt':None,
        'FM10_name':'',
        'FM10_filt':None
    }
    return dict

for iOptic in ['SR3','PR3']:
    
    print(f'\nStarting with {iOptic}\n')
    
    foton_file_obj = foton.FilterFile(f'/opt/rtcds/userapps/release/sus/h1/filterfiles/H1SUS{iOptic}.txt')
    for iDof in ['P', 'Y']:
        filter_dict = define_dict()
        # Grab the three letter acronym for the corresponding DOF
        if iDof == 'P':
            DOF_damp = 'PIT'
        elif iDof == 'Y':
            DOF = 'YAW'
        
        # Grab all filters for that optic and that DOF
        for fm in range(0,10):
            filter_dict[f'FM{fm+1}_name'] = foton_file_obj[f'{iOptic}_M1_DAMP_{iDof}'][fm].name
            filter_dict[f'FM{fm+1}_filt'] = foton_file_obj[f'{iOptic}_M1_DAMP_{iDof}'][fm].get_filterdesign()
        
        # Put damping filters in for OSEM and Estimator dampers
        for fm in range(0,10):
            # Putting filters in for OSEM damper
            foton_file_obj[f'{iOptic}_M1_{DOF}_DAMP_OSEM'][fm].set_filterdesign(filter_dict[f'FM{fm+1}_filt'])
            foton_file_obj[f'{iOptic}_M1_{DOF}_DAMP_OSEM'][fm].name = filter_dict[f'FM{fm+1}_name']

            # Putting filters in for Estimator damper
            foton_file_obj[f'{iOptic}_M1_{DOF}_DAMP_EST'][fm].set_filterdesign(filter_dict[f'FM{fm+1}_filt'])
            foton_file_obj[f'{iOptic}_M1_{DOF}_DAMP_EST'][fm].name = filter_dict[f'FM{fm+1}_name']
        
        foton_file_obj.write()
    
    print(f'\nDone with {iOptic}\n')
