Rate limit corrected UART telemetry
This commit is contained in:
@@ -18,6 +18,14 @@
|
||||
#error "GPS_ESKF_ENABLE must be 0 or 1"
|
||||
#endif
|
||||
|
||||
#ifndef IMU_CORRECTED_PUBLISH_EVERY_N_SAMPLES
|
||||
#define IMU_CORRECTED_PUBLISH_EVERY_N_SAMPLES 5u
|
||||
#endif
|
||||
|
||||
#if (IMU_CORRECTED_PUBLISH_EVERY_N_SAMPLES < 1)
|
||||
#error "IMU_CORRECTED_PUBLISH_EVERY_N_SAMPLES must be at least one"
|
||||
#endif
|
||||
|
||||
#define IMU_SAMPLES_BEFORE_GPS_SERVICE 1u
|
||||
#define IMU_SAMPLES_AFTER_GPS_SERVICE 3u
|
||||
|
||||
@@ -67,10 +75,20 @@ static unsigned int feed_pending_imu_to_eskf(
|
||||
(system->fused_solution.timestamp_ticks !=
|
||||
system->last_fused_location_tick))
|
||||
{
|
||||
gps_system_uart_publish_fused_location(
|
||||
&system->fused_solution);
|
||||
system->last_fused_location_tick =
|
||||
system->fused_solution.timestamp_ticks;
|
||||
system->fused_publish_sample_count++;
|
||||
bool first_location =
|
||||
(system->last_fused_location_tick == 0u);
|
||||
bool publish_due =
|
||||
(system->fused_publish_sample_count >=
|
||||
IMU_CORRECTED_PUBLISH_EVERY_N_SAMPLES);
|
||||
if(first_location || publish_due)
|
||||
{
|
||||
gps_system_uart_publish_fused_location(
|
||||
&system->fused_solution);
|
||||
system->last_fused_location_tick =
|
||||
system->fused_solution.timestamp_ticks;
|
||||
system->fused_publish_sample_count = 0u;
|
||||
}
|
||||
}
|
||||
processed++;
|
||||
}
|
||||
@@ -93,7 +111,8 @@ int main(void)
|
||||
gps_receiver_start_acquisition();
|
||||
gps_system_uart_publish_startup(
|
||||
system.fusion_enabled, system.fusion_initialized,
|
||||
system.imu_initialized, system.imu_running);
|
||||
system.imu_initialized, system.imu_running,
|
||||
IMU_CORRECTED_PUBLISH_EVERY_N_SAMPLES);
|
||||
|
||||
bool imu_backlog_may_remain = false;
|
||||
for(;;)
|
||||
|
||||
Reference in New Issue
Block a user