import time
import lcm

from test.TestUtils import *


def test_publish_lcm(lc=lcm.LCM()):

    msg_pub_rate_sec = 1.0

    pub = LcmPublisher(lc)
    data = read_file()
    data.pop(0)  # drop first line

    channel_name = 'WetLabsUBAT'
    var_name = 'raw_data'

    print("\n")
    print("publishing UBAT msgs at {0} Hz:".format(1 / msg_pub_rate_sec))
    for l in data:
        try:
            t = time.time()
            print("publishing msg # {}".format(pub.seq_number))
            pub.clear_msg()
            pub.add_variable(var_name, l)
            pub.timestamp()
            pub.publish(channel_name)
            time.sleep(max(0.0, t + msg_pub_rate_sec - time.time()))
        except KeyboardInterrupt:
            print("Aborting.")
            break


if __name__ == "__main__":

    test_publish_lcm()
