import RXTools as rx
import pickle
import glob
import os
import datetime
import time
import xmltodict

user='admin'
pw='password'
for in_filename in glob.glob('Clone/*ALM17.xml'):
    out_filename = in_filename[:-6]+'.pkl'
    if os.path.exists(out_filename):
        continue
    print(f"Processing {in_filename}")
    d=xmltodict.parse(open(in_filename,'r').read())
    if d['CloneConfigData']['SrcReceiverInfo']['HdrStingerAPI_ID']=='16':
        ip='10.1.150.71'
    else:
        ip='10.1.150.25'
    date_str = out_filename[6:].replace('-','')[:8]
    approx_date = datetime.datetime.strptime(date_str, '%Y%m%d')
    gps_epoch = datetime.datetime(1980,1,6)
    gps_week = int((approx_date - gps_epoch).days/7)
    rx.clearGNSSReset(ip,user,pw)
    print(" .. wait 60s for reboot")
    time.sleep(60)
    rx.sendDColRefWeek( ip, 28001, approx_date.year )
    rx.UploadClone(ip,user,pw,in_filename)
    rx.InstallClone(ip,user,pw,in_filename)
    time.sleep(10)
    data=rx.getDColStartupData(ip,28001,inc_eph_pos=False)
    if len(data['gps_alm'])==0:
        print(" Error: No GPS alm!")
        break
    if len(data['gal_alm'])==0 and approx_date.year > 2016:
        print(" Error: No Galileo alm!")
        break
    print(f" writing {out_filename}")
    with open(out_filename,'wb') as f_out:
        pickle.dump((data,(gps_week,0)),f_out)
