#!/usr/bin/python3
"""
@file
@ingroup trs_common_trsutils
@copyright ESO - European Southern Observatory
@author C. Soenke

@brief Command line utility to query NTP servers

TBD
"""

import argparse
from trslib.ntp import ntplib

def parse_args(args=None):
    """
    @brief Parse command line arguments
    """
    
    description = ("Send a single query to an NTP server")

    parser = argparse.ArgumentParser(description=description,
                                     formatter_class=argparse.RawDescriptionHelpFormatter)
    parser.add_argument('server', help='NTP server address to query', action='store')


    return parser.parse_args(args=args)

def main(argv=None):
    """Main function."""
    args = parse_args(argv)
    
    c = ntplib.NTPClient()
    response = c.request(args.server, version=4)
    
    print('Server:        ', args.server)
    print('Leap:          ', ntplib.leap_to_text(response.leap))
    print('Version:       ', response.version)
    print('Mode:          ', ntplib.mode_to_text(response.mode))
    print('Stratum:       ', ntplib.stratum_to_text(response.stratum))
    print('Poll:          ', response.poll)
    print('Precision:     ', response.precision)
    print('Root delay:    ', response.root_delay)
    print('Root disp:     ', response.root_dispersion)
    print('Ref ID:        ', ntplib.ref_id_to_text(response.ref_id, stratum=response.stratum))
    print('Ref timestamp: ', response.ref_timestamp, response.ref_time)
    print('Orig timestamp:', response.orig_timestamp, response.orig_time)
    print('Recv timestamp:', response.recv_timestamp, response.recv_time)
    print('Tx timestamp:  ', response.tx_timestamp, response.tx_time)
    print('Dest timestamp ', response.dest_time)
    print('Offset:         {:f} ms'.format(response.offset*1000.0))
    print('Delay:          {:f} ms'.format(response.delay*1000.0))

if __name__ == "__main__":
    main()
    