import lcm
import sys
import time
from lcm_test import lcm_test_t

TEST_CHANNEL = 'LCM_TEST_CHANNEL'


def pub():

    lc = lcm.LCM("udpm://239.255.76.67:7667?ttl=1")

    while True:
        msg = lcm_test_t()
        msg.test_num = int(time.time())
        msg.test_string = "Hello LCM!"
        lc.publish(TEST_CHANNEL, msg.encode())
        time.sleep(1.0)


def sub():

    def handler(channel, data):
        msg = lcm_test_t.decode(data)
        print('Received: ' + msg.test_string + ", at " + str(msg.test_num))

    lc = lcm.LCM()
    lc.subscribe(TEST_CHANNEL, handler)

    while True:
        lc.handle_timeout(2000)


if __name__=="__main__":

    action = None

    if len(sys.argv) >= 2:
        action = sys.argv[1]

    if action == 'pub':
        pub()
    else:
        sub()
