[ardrone] lost imu frame counter

This commit is contained in:
Christophe De Wagter
2013-12-13 16:15:56 +01:00
parent a6b886760e
commit fbaff566d2
2 changed files with 13 additions and 0 deletions
+11
View File
@@ -193,10 +193,12 @@ bool_t navdata_init()
previousUltrasoundHeight = 0; previousUltrasoundHeight = 0;
nav_port.checksum_errors = 0; nav_port.checksum_errors = 0;
nav_port.lost_imu_frames = 0;
nav_port.bytesRead = 0; nav_port.bytesRead = 0;
nav_port.totalBytesRead = 0; nav_port.totalBytesRead = 0;
nav_port.packetsRead = 0; nav_port.packetsRead = 0;
nav_port.isInitialized = TRUE; nav_port.isInitialized = TRUE;
nav_port.last_packet_number = 0;
#if DOWNLINK #if DOWNLINK
register_periodic_telemetry(DefaultPeriodic, "ARDRONE_NAVDATA", send_navdata); register_periodic_telemetry(DefaultPeriodic, "ARDRONE_NAVDATA", send_navdata);
@@ -343,6 +345,15 @@ void navdata_update()
nav_port.checksum_errors++; nav_port.checksum_errors++;
} }
nav_port.last_packet_number++;
if (nav_port.last_packet_number != navdata.nu_trame)
{
printf("Lost Navdata frame: %d should have been %d\n",navdata.nu_trame, nav_port.last_packet_number);
nav_port.lost_imu_frames++;
}
nav_port.last_packet_number = navdata.nu_trame;
//printf("%d\r",navdata.nu_trame);
// When we already dropped a packet or checksum is correct // When we already dropped a packet or checksum is correct
if(last_checksum_wrong || navdata.chksum == checksum) { if(last_checksum_wrong || navdata.chksum == checksum) {
// Invert byte order so that TELEMETRY works better // Invert byte order so that TELEMETRY works better
+2
View File
@@ -102,6 +102,8 @@ typedef struct {
uint32_t totalBytesRead; uint32_t totalBytesRead;
uint32_t packetsRead; uint32_t packetsRead;
uint32_t checksum_errors; uint32_t checksum_errors;
uint32_t lost_imu_frames;
uint16_t last_packet_number;
uint8_t buffer[NAVDATA_BUFFER_SIZE]; uint8_t buffer[NAVDATA_BUFFER_SIZE];
} navdata_port; } navdata_port;