#!/usr/bin/env python3

import argparse, re, time, logging
from astropy import units as u
from astropy.time import Time
from astropy.coordinates import Angle
from legacyserver import LegacyServer

server = 'bigrock.atnf.csiro.au'
port = 2334

parser = argparse.ArgumentParser()
parser.add_argument('-fake', '--fake', help="Fake tracking", action="store_true")
parser.add_argument('-update', '--update', help="Pause between updates", type=int, default=2)
parser.add_argument('-debug', '--debug', help="Enable debug messages", action="store_true")

args = parser.parse_args()

if args.debug:
    logging.basicConfig(level=logging.DEBUG)
else:
    logging.basicConfig(level=logging.INFO)
    
# Connect to antenna
s = LegacyServer((server,port), fake=args.fake)
s.connect()
s.allocate()

try:
    while True:
        lastupdate = time.time()
        mon = s.get_mon()
        #print(mon)

        t = Time(mon.timestamp, format='mjd')
        dt = t.datetime
        tt = [dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second + dt.microsecond/1E6]
        RA = Angle(mon.ra, unit=u.rad)
        Dec = Angle(mon.dec, unit=u.rad)
    
        print("{:02d}:{:02d}:{:04.1f}  ({},{})  AzEl: {:.3f},{:.3f} [error {:5.2f},{:5.2f}] {}".format(tt[3],tt[4],tt[5], RA.to_string(u.hour,precision=2,pad=True),
            Dec.to_string(u.deg,precision=1,pad=True), mon.azdeg, mon.eldeg, mon.delta_az_deg, mon.delta_el_deg, mon.servo_state))

        time.sleep(args.update-(time.time()-lastupdate))

except KeyboardInterrupt:
    print("Quitting")
    
s.deallocate()    
