From 4b34d0c297b2953eff7af65e0e71e351fdadffda Mon Sep 17 00:00:00 2001 From: tumbili Date: Sun, 3 May 2015 23:30:18 +0200 Subject: [PATCH] improved topic listener --- Tools/generate_listener.py | 45 +++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/Tools/generate_listener.py b/Tools/generate_listener.py index 805b390901..50fc17267c 100755 --- a/Tools/generate_listener.py +++ b/Tools/generate_listener.py @@ -9,19 +9,33 @@ import sys raw_messages = glob.glob(sys.argv[1]+"/msg/*.msg") messages = [] -message_floats = [] +message_elements = [] for index,m in enumerate(raw_messages): - temp_list = [] + temp_list_floats = [] + temp_list_uint64 = [] + temp_list_bool = [] if("actuator_control" not in m and "pwm_input" not in m and "position_setpoint" not in m): + temp_list = [] f = open(m,'r') for line in f.readlines(): if(line.split(' ')[0] == "float32"): - temp_list.append(line.split(' ')[1].split('\t')[0].split('\n')[0]) + temp_list.append(("float",line.split(' ')[1].split('\t')[0].split('\n')[0])) + elif(line.split(' ')[0] == "uint64"): + temp_list.append(("uint64",line.split(' ')[1].split('\t')[0].split('\n')[0])) + elif (line.split(' ')[0] == "bool"): + temp_list.append(("bool",line.split(' ')[1].split('\t')[0].split('\n')[0])) + elif (line.split(' ')[0] == "uint8") and len(line.split('=')) == 1: + temp_list.append(("uint8",line.split(' ')[1].split('\t')[0].split('\n')[0])) + elif ('float32[' in line.split(' ')[0]): + num_floats = int(line.split(" ")[0].split("[")[1].split("]")[0]) + temp_list.append(("float_array",line.split(' ')[1].split('\t')[0].split('\n')[0],num_floats)) + f.close() messages.append(m.split('/')[-1].split('.')[0]) - message_floats.append(temp_list) + message_elements.append(temp_list) + num_messages = len(messages); print @@ -76,6 +90,7 @@ print """ #include #include #include +#include """ for m in messages: print "#include " % m @@ -104,10 +119,28 @@ for index,m in enumerate(messages[1:]): print "\t\tID = ORB_ID(%s);" % m print "\t\tstruct %s_s container;" % m print "\t\tmemset(&container, 0, sizeof(container));" + print "\t\tbool updated;" print "\t\tfor(uint32_t i = 0;i