diff --git a/msg/tools/px_generate_uorb_topic_helper.py b/msg/tools/px_generate_uorb_topic_helper.py
index f413d34239..8445f6d940 100644
--- a/msg/tools/px_generate_uorb_topic_helper.py
+++ b/msg/tools/px_generate_uorb_topic_helper.py
@@ -44,7 +44,8 @@ import errno
try:
import yaml
except ImportError:
- raise ImportError("Failed to import yaml. You may need to install it with 'sudo pip install pyyaml")
+ raise ImportError(
+ "Failed to import yaml. You may need to install it with 'sudo pip install pyyaml")
import genmsg.msgs
import gencpp
@@ -124,6 +125,7 @@ type_printf_map = {
'char': '%c',
}
+
def bare_name(msg_type):
"""
Get bare_name from
/[x] format
@@ -143,15 +145,19 @@ def sizeof_field_type(field):
bare_name_str = bare_name(field.type)
if bare_name_str in msgtype_size_map:
return msgtype_size_map[bare_name_str]
- return 0 # this is for non-builtin types: sort them at the end
+ return 0 # this is for non-builtin types: sort them at the end
+
def get_children_fields(base_type, search_path):
(package, name) = genmsg.names.package_resource_name(base_type)
tmp_msg_context = genmsg.msg_loader.MsgContext.create_default()
- spec_temp = genmsg.msg_loader.load_msg_by_type(tmp_msg_context, '%s/%s' %(package, name), search_path)
- sorted_fields = sorted(spec_temp.parsed_fields(), key=sizeof_field_type, reverse=True)
+ spec_temp = genmsg.msg_loader.load_msg_by_type(
+ tmp_msg_context, '%s/%s' % (package, name), search_path)
+ sorted_fields = sorted(spec_temp.parsed_fields(),
+ key=sizeof_field_type, reverse=True)
return sorted_fields
+
def add_padding_bytes(fields, search_path):
"""
Add padding fields before the embedded types, at the end and calculate the
@@ -159,7 +165,7 @@ def add_padding_bytes(fields, search_path):
returns a tuple with the struct size and padding at the end
"""
struct_size = 0
- align_to = 8 # this is always 8, because of the 64bit timestamp
+ align_to = 8 # this is always 8, because of the 64bit timestamp
i = 0
padding_idx = 0
while i < len(fields):
@@ -175,16 +181,17 @@ def add_padding_bytes(fields, search_path):
# embedded type: may need to add padding
num_padding_bytes = align_to - (struct_size % align_to)
if num_padding_bytes != align_to:
- padding_field = genmsg.Field('_padding'+str(padding_idx),
- 'uint8['+str(num_padding_bytes)+']')
+ padding_field = genmsg.Field('_padding' + str(padding_idx),
+ 'uint8[' + str(num_padding_bytes) + ']')
padding_idx += 1
padding_field.sizeof_field_type = 1
struct_size += num_padding_bytes
fields.insert(i, padding_field)
i += 1
- children_fields = get_children_fields(field.base_type, search_path)
+ children_fields = get_children_fields(
+ field.base_type, search_path)
field.sizeof_field_type, unused = add_padding_bytes(children_fields,
- search_path)
+ search_path)
struct_size += field.sizeof_field_type * array_size
i += 1
@@ -193,8 +200,8 @@ def add_padding_bytes(fields, search_path):
if num_padding_bytes == align_to:
num_padding_bytes = 0
else:
- padding_field = genmsg.Field('_padding'+str(padding_idx),
- 'uint8['+str(num_padding_bytes)+']')
+ padding_field = genmsg.Field('_padding' + str(padding_idx),
+ 'uint8[' + str(num_padding_bytes) + ']')
padding_idx += 1
padding_field.sizeof_field_type = 1
struct_size += num_padding_bytes
@@ -226,7 +233,8 @@ def print_field(field):
"""
# check if there are any upper case letters in the field name
- assert not any(a.isupper() for a in field.name), "%r field contains uppercase letters" % field.name
+ assert not any(a.isupper()
+ for a in field.name), "%r field contains uppercase letters" % field.name
# skip padding
if field.name.startswith('_padding'):
@@ -249,8 +257,10 @@ def print_field(field):
else:
for i in range(array_length):
- print("PX4_INFO_RAW(\"\\t" + field.type + " " + field.name + "[" + str(i) + "]\");")
- print(" print_message(message." + field.name + "[" + str(i) + "]);")
+ print("PX4_INFO_RAW(\"\\t" + field.type +
+ " " + field.name + "[" + str(i) + "]\");")
+ print(" print_message(message." +
+ field.name + "[" + str(i) + "]);")
return
for i in range(array_length):
@@ -260,7 +270,8 @@ def print_field(field):
field_name += ", "
if "float32" in field.type:
- field_name += "(double)message." + field.name + "[" + str(i) + "]"
+ field_name += "(double)message." + \
+ field.name + "[" + str(i) + "]"
else:
field_name += "message." + field.name + "[" + str(i) + "]"
@@ -284,19 +295,20 @@ def print_field(field):
else:
print("PX4_INFO_RAW(\"\\n\\t" + field.name + "\");")
- print("\tprint_message(message."+ field.name + ");")
+ print("\tprint_message(message." + field.name + ");")
return
if field.name == 'timestamp':
- print("if (message.timestamp != 0) {\n\t\tPX4_INFO_RAW(\"\\t" + field.name + \
- ": " + c_type + " (%.6f seconds ago)\\n\", " + field_name + \
- ", hrt_elapsed_time(&message.timestamp) / 1e6);\n\t} else {\n\t\tPX4_INFO_RAW(\"\\n\");\n\t}" )
+ print("if (message.timestamp != 0) {\n\t\tPX4_INFO_RAW(\"\\t" + field.name +
+ ": " + c_type + " (%.6f seconds ago)\\n\", " + field_name +
+ ", hrt_elapsed_time(&message.timestamp) / 1e6);\n\t} else {\n\t\tPX4_INFO_RAW(\"\\n\");\n\t}")
elif field.name == 'device_id':
print("char device_id_buffer[80];")
print("device::Device::device_id_print_buffer(device_id_buffer, sizeof(device_id_buffer), message.device_id);")
- print("PX4_INFO_RAW(\"\\tdevice_id: %d (%s) \\n\", message.device_id, device_id_buffer);" )
+ print("PX4_INFO_RAW(\"\\tdevice_id: %d (%s) \\n\", message.device_id, device_id_buffer);")
else:
- print("PX4_INFO_RAW(\"\\t" + field.name + ": " + c_type + "\\n\", " + field_name + ");" )
+ print("PX4_INFO_RAW(\"\\t" + field.name + ": " +
+ c_type + "\\n\", " + field_name + ");")
def print_field_def(field):
@@ -305,7 +317,8 @@ def print_field_def(field):
"""
# check if there are any upper case letters in the field name
- assert not any(a.isupper() for a in field.name), "%r field contains uppercase letters" % field.name
+ assert not any(a.isupper()
+ for a in field.name), "%r field contains uppercase letters" % field.name
type_name = field.type
# detect embedded types
@@ -335,8 +348,9 @@ def print_field_def(field):
if field.name.startswith('_padding'):
comment = ' // required for logger'
- print('\t%s%s%s %s%s;%s'%(type_prefix, type_px4, type_appendix, field.name,
- array_size, comment))
+ print('\t%s%s%s %s%s;%s' % (type_prefix, type_px4, type_appendix, field.name,
+ array_size, comment))
+
def parse_yaml_msg_id_file(yaml_file):
"""
@@ -351,6 +365,7 @@ def parse_yaml_msg_id_file(yaml_file):
else:
raise
+
def rtps_message_id(msg_id_map, message):
"""
Get RTPS ID of uORB message