# -*- coding: utf-8 -*-
"""
Created on Fri Oct  2 13:11:25 2020

@author: ppantina
"""
# -*- coding: utf-8 -*-
"""
Created on Mon Aug 10 12:33:49 2020

@author: ppantina
"""

radName       = input('Which radar? CRS, EXRAD, HIWRAP: ')
flightDate    = input('Which date?: yyyymmdd ')

##Import some libraries
import h5py
import L0_parseTelemetry_TESTARENA
import sub_params
import L0_sub_unitsDescriptions


fileNameParams            = 'radar_params_irma.xlsx'
fileNameUnitDescriptions  = 'radar_attrs.xlsx'

##Call subroutines for parameter/attributes data parsing
hkpUnits, hkpDescriptions, \
antUnits, antDescriptions, \
gpsUnits, gpsDescriptions, \
navUnits, navDescriptions, \
radUnits, radDescriptions = L0_sub_unitsDescriptions.L0_sub_unitsDescriptions(fileNameUnitDescriptions,   radName)
Params                    = sub_params.sub_params                      (fileNameParams, flightDate, radName)

##Paths and info for raw radar/telemetry data
fileNamesHkp     = Params                  ['path_HKP']
fileNamesIWG     = Params                  ['path_IWG']
fileNamesGPS     = Params                  ['path_INSPVA']

##Call subroutines for telemtry data parsing
if 'EXRAD_SCAN' in radName:
    antOut = L0_sub_parseAnt.      L0_sub_parseAnt      (fileNamesTele) #exrad only
hkpOut     = L0_parseTelemetry_TESTARENA.   L0_parseTelemetry_TESTARENA   (fileNamesHkp, 'hkp')
navOut     = L0_parseTelemetry_TESTARENA.   L0_parseTelemetry_TESTARENA      (fileNamesIWG, 'nav')          #all radars
gpsOut     = L0_parseTelemetry_TESTARENA.   L0_parseTelemetry_TESTARENA   (fileNamesGPS, 'gps') #all radars

      
##Create an HDF5 file. Use the input name for the output name
fileout     = radName + '_' + str(flightDate) + '_nav'
fileoutpath = Params['Directory_L0'] + fileout + '.hdf'
print ('Writing', fileoutpath)

f           = h5py.File(fileoutpath, 'w')

##Add global attributes to the file
f.attrs['radname'         ] = radName
f.attrs['experimentName'  ] = Params['experimentName'  ]
f.attrs['FlightDate'      ] = Params['FlightDate'      ]
f.attrs['Description'     ] = Params['Description'     ]
        
##Add telemetry data        
        
for i, j in enumerate(gpsOut.keys()): ##for gps data       
    ##Create and populate a dataset for each key
    f.create_dataset('gps/' + j,     data = gpsOut[j][:])

    ##Add a description
    f['gps'].attrs['description'] = Params['GPS_Description']

    ##Add Units/Descriptions based on attrs subroutine
    if j in gpsUnits.keys():        f['gps/' + j].attrs['units'      ] = gpsUnits       [j]
    else:                           f['gps/' + j].attrs['units'      ] = ''
    if j in gpsDescriptions.keys(): f['gps/' + j].attrs['description'] = gpsDescriptions[j]
    else:                           f['gps/' + j].attrs['description'] = ''
#endfor i

for i, j in enumerate(navOut.keys()): ##for nav data

    ##Create and populate a dataset for each key
    f.create_dataset('nav/' + j,     data = navOut[j][:])

    ##Add a description
    f['nav'].attrs['description'] = Params['NAV_Description']

    ##Add Units/Descriptions based on attrs subroutine
    if j in navUnits.keys():        f['nav/' + j].attrs['units'      ] = navUnits       [j]
    else:                           f['nav/' + j].attrs['units'      ] = ''
    if j in navDescriptions.keys(): f['nav/' + j].attrs['description'] = navDescriptions[j]
    else:                           f['nav/' + j].attrs['description'] = ''
#endfor i

for i, j in enumerate(hkpOut.keys()): ##for hkp data
    
    ##Create and populate a dataset for each key
    f.create_dataset('hkp/' + j,     data = hkpOut[j][:])

    ##Add a description
    f['hkp'].attrs['description'] = Params['HKP_Description']

    ##Add Units/Descriptions based on attrs subroutine
    if j in hkpUnits.keys():        f['hkp/' + j].attrs['units'      ] = hkpUnits       [j]
    else:                           f['hkp/' + j].attrs['units'      ] = ''
    if j in hkpDescriptions.keys(): f['hkp/' + j].attrs['description'] = hkpDescriptions[j]
    else:                           f['hkp/' + j].attrs['description'] = ''
#endfor i

if radName == 'EXRAD_SCAN':
    for i, j in enumerate(antOut.keys()): ##for nav data
    
        ##Create and populate a dataset for each key
        f.create_dataset('ant/' + j,     data = antOut[j][:])
f.close() #close the file

    
