import time
import lcm

from LCM.Publisher import LcmPublisher


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

    pub = LcmPublisher(lc)
    pub_rate_sec = 5

    channel_name = 'BioLumProxies'

    print("\nPublishing BioLumProxies at {0} Hz:".format(1/pub_rate_sec))
    while True:
        try:
            t1 = time.time()

            print("Publishing BioLumProxies # {0}".format(pub.seq_number))
            pub.clear_msg()

            pub.add_double("dinoflagellates", 0.1, 'n/a')
            pub.add_double("larvaceans", 0.2, 'n/a')
            pub.add_double("copepods", 0.3, 'n/a')
            pub.add_double("jellies", 0.4, 'n/a')
            pub.add_double("adinos", 0.5, 'n/a')
            pub.add_double("hdinos", 0.6, 'n/a')
            pub.add_double("aother", 0.7, 'n/a')

            pub.timestamp()
            pub.publish(channel_name)

            time.sleep(max(0.0, t1+pub_rate_sec - time.time()))
        except KeyboardInterrupt:
            print("Aborting.")
            break


if __name__ == "__main__":

    publish_heartbeat()
