From d3249e151e71b1ab8da1499aa4b7ef3cbd51cbf6 Mon Sep 17 00:00:00 2001 From: Mike Hamer Date: Tue, 27 Nov 2012 12:57:29 +0100 Subject: [PATCH] Fixed a bug whereby all navdata messages with array-typed members would grow in size. This bug was introduced when moving local scope message variables to class-level. This move meant that messages wouldn't be reset after being sent. This was not a problem for non-array type message members, which were reassigned before being sent. However for array-type message members, which are filled using .push_back, no reset occurred. This fix appropriately clears these members before re-filling them on every send-loop. --- scripts/NavdataMessageDefinitionsTemplate.c | 1 + src/NavdataMessageDefinitions.h | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/scripts/NavdataMessageDefinitionsTemplate.c b/scripts/NavdataMessageDefinitionsTemplate.c index 88a911f..47c1814 100644 --- a/scripts/NavdataMessageDefinitionsTemplate.c +++ b/scripts/NavdataMessageDefinitionsTemplate.c @@ -77,6 +77,7 @@ void ARDroneDriver::PublishNavdataTypes(navdata_unpacked_t &n) } % else: + ${item['struct_name']}_msg.${member['name']}.clear(); for(int i=0; i<${member['array_size']}; i++) {\ ${format_member(item, member, 'i')} diff --git a/src/NavdataMessageDefinitions.h b/src/NavdataMessageDefinitions.h index 269893a..c5eec3d 100644 --- a/src/NavdataMessageDefinitions.h +++ b/src/NavdataMessageDefinitions.h @@ -552,6 +552,7 @@ void ARDroneDriver::PublishNavdataTypes(navdata_unpacked_t &n) navdata_raw_measures_msg.size = m; } + navdata_raw_measures_msg.raw_gyros.clear(); for(int i=0; i