@@ -241,128 +241,6 @@ def convert_type(spec_type, use_short_type=False):
241
241
return c_type
242
242
243
243
244
- def print_field (field ):
245
- """
246
- Echo printf line
247
- """
248
-
249
- # check if there are any upper case letters in the field name
250
- assert not any (a .isupper ()
251
- for a in field .name ), "%r field contains uppercase letters" % field .name
252
-
253
- # skip padding
254
- if field .name .startswith ('_padding' ):
255
- return
256
-
257
- bare_type = field .type
258
- if '/' in field .type :
259
- # removing prefix
260
- bare_type = (bare_type .split ('/' ))[1 ]
261
-
262
- msg_type , is_array , array_length = genmsg .msgs .parse_type (bare_type )
263
-
264
- field_name = ""
265
-
266
- if is_array :
267
- c_type = "["
268
-
269
- if msg_type in type_map :
270
- p_type = type_printf_map [msg_type ]
271
-
272
- else :
273
- for i in range (array_length ):
274
- print (("PX4_INFO_RAW(\" \\ t" + field .type +
275
- " " + field .name + "[" + str (i ) + "]\" );" ))
276
- print ((" print_message(message." +
277
- field .name + "[" + str (i ) + "]);" ))
278
- return
279
-
280
- for i in range (array_length ):
281
-
282
- if i > 0 :
283
- c_type += ", "
284
- field_name += ", "
285
-
286
- if "float32" in field .type :
287
- field_name += "(double)message." + \
288
- field .name + "[" + str (i ) + "]"
289
- else :
290
- field_name += "message." + field .name + "[" + str (i ) + "]"
291
-
292
- c_type += str (p_type )
293
-
294
- c_type += "]"
295
-
296
- else :
297
- c_type = msg_type
298
- if msg_type in type_map :
299
- c_type = type_printf_map [msg_type ]
300
-
301
- field_name = "message." + field .name
302
-
303
- # cast double
304
- if field .type == "float32" :
305
- field_name = "(double)" + field_name
306
- elif field .type == "bool" :
307
- c_type = '%s'
308
- field_name = "(" + field_name + " ? \" True\" : \" False\" )"
309
-
310
- else :
311
- print (("PX4_INFO_RAW(\" \\ n\\ t" + field .name + "\" );" ))
312
- print (("\t print_message(message." + field .name + ");" ))
313
- return
314
-
315
- if field .name == 'timestamp' :
316
- print (("if (message.timestamp != 0) {\n \t \t PX4_INFO_RAW(\" \\ t" + field .name +
317
- ": " + c_type + " (%.6f seconds ago)\\ n\" , " + field_name +
318
- ", (now - message.timestamp) / 1e6);\n \t } else {\n \t \t PX4_INFO_RAW(\" \\ n\" );\n \t }" ))
319
- elif field .name == 'timestamp_sample' :
320
- print (("\n \t PX4_INFO_RAW(\" \\ t" + field .name + ": " + c_type + " (" + c_type +
321
- " us before timestamp)\\ n\" , " + field_name + ", message.timestamp - message.timestamp_sample);\n \t " ))
322
- elif field .name == 'device_id' :
323
- print ("char device_id_buffer[80];" )
324
- print ("device::Device::device_id_print_buffer(device_id_buffer, sizeof(device_id_buffer), message.device_id);" )
325
- print ("PX4_INFO_RAW(\" \\ tdevice_id: %\" PRId32 \" (%s) \\ n\" , message.device_id, device_id_buffer);" )
326
- elif field .name == 'accel_device_id' :
327
- print ("char accel_device_id_buffer[80];" )
328
- print ("device::Device::device_id_print_buffer(accel_device_id_buffer, sizeof(accel_device_id_buffer), message.accel_device_id);" )
329
- print ("PX4_INFO_RAW(\" \\ taccel_device_id: %\" PRId32 \" (%s) \\ n\" , message.accel_device_id, accel_device_id_buffer);" )
330
- elif field .name == 'gyro_device_id' :
331
- print ("char gyro_device_id_buffer[80];" )
332
- print ("device::Device::device_id_print_buffer(gyro_device_id_buffer, sizeof(gyro_device_id_buffer), message.gyro_device_id);" )
333
- print ("PX4_INFO_RAW(\" \\ tgyro_device_id: %\" PRId32 \" (%s) \\ n\" , message.gyro_device_id, gyro_device_id_buffer);" )
334
- elif field .name == 'baro_device_id' :
335
- print ("char baro_device_id_buffer[80];" )
336
- print ("device::Device::device_id_print_buffer(baro_device_id_buffer, sizeof(baro_device_id_buffer), message.baro_device_id);" )
337
- print ("PX4_INFO_RAW(\" \\ tbaro_device_id: %\" PRId32 \" (%s) \\ n\" , message.baro_device_id, baro_device_id_buffer);" )
338
- elif field .name == 'mag_device_id' :
339
- print ("char mag_device_id_buffer[80];" )
340
- print ("device::Device::device_id_print_buffer(mag_device_id_buffer, sizeof(mag_device_id_buffer), message.mag_device_id);" )
341
- print ("PX4_INFO_RAW(\" \\ tmag_device_id: %\" PRId32 \" (%s) \\ n\" , message.mag_device_id, mag_device_id_buffer);" )
342
- elif (field .name == 'q' or 'q_' in field .name ) and field .type == 'float32[4]' :
343
- # float32[4] q/q_d/q_reset/delta_q_reset
344
- print ("{" )
345
- print (
346
- "\t \t matrix::Eulerf euler{matrix::Quatf{message." + field .name + "}};" )
347
- print ("\t \t PX4_INFO_RAW(\" \\ t" + field .name + ": " + c_type + " (Roll: %.1f deg, Pitch: %.1f deg, Yaw: %.1f deg" ")\\ n\" , " +
348
- field_name + ", (double)math::degrees(euler(0)), (double)math::degrees(euler(1)), (double)math::degrees(euler(2)));\n \t " )
349
- print ("\t }" )
350
-
351
- elif ("flags" in field .name or "bits" in field .name ) and "uint" in field .type :
352
- # print bits of fixed width unsigned integers (uint8, uint16, uint32) if name contains flags or bits
353
- print ("PX4_INFO_RAW(\" \\ t" + field .name + ": " +
354
- c_type + " (0b\" , " + field_name + ");" )
355
- print ("\t for (int i = (sizeof(" + field_name + ") * 8) - 1; i >= 0; i--) { PX4_INFO_RAW(\" %lu%s\" , (unsigned long) "
356
- + field_name + " >> i & 1, ((unsigned)i < (sizeof(" + field_name + ") * 8) - 1 && i % 4 == 0 && i > 0) ? \" '\" : \" \" ); }" )
357
- print ("\t PX4_INFO_RAW(\" )\\ n\" );" )
358
- elif is_array and 'char' in field .type :
359
- print (("PX4_INFO_RAW(\" \\ t" + field .name + ": \\ \" %." +
360
- str (array_length ) + "s\\ \" \\ n\" , message." + field .name + ");" ))
361
- else :
362
- print (("PX4_INFO_RAW(\" \\ t" + field .name + ": " +
363
- c_type + "\\ n\" , " + field_name + ");" ))
364
-
365
-
366
244
def print_field_def (field ):
367
245
"""
368
246
Print the C type from a field
0 commit comments