rc_update: require consecutive valid input_rc before publishing

This commit is contained in:
Daniel Agar
2021-04-15 10:57:36 -04:00
parent 96c7fe4978
commit 2492fb35e4
+8 -4
View File
@@ -424,11 +424,12 @@ void RCUpdate::Run()
/* publish rc_channels topic even if signal is invalid, for debug */
_rc_channels_pub.publish(_rc);
/* only publish manual control if the signal is present */
if (input_source_stable && channel_count_stable && !signal_lost
&& (input_rc.timestamp_last_signal > _last_timestamp_signal)) {
// only publish manual control if the signal is present and regularly updating
if (input_source_stable && channel_count_stable && !signal_lost) {
if ((input_rc.timestamp_last_signal > _last_timestamp_signal)
&& (input_rc.timestamp_last_signal - _last_timestamp_signal < 1_s)) {
_last_timestamp_signal = input_rc.timestamp_last_signal;
perf_count(_valid_data_interval_perf);
// check if channels actually updated
@@ -455,6 +456,9 @@ void RCUpdate::Run()
}
}
_last_timestamp_signal = input_rc.timestamp_last_signal;
}
memcpy(_rc_values_previous, input_rc.values, sizeof(input_rc.values[0]) * channel_count_limited);
static_assert(sizeof(_rc_values_previous) == sizeof(input_rc.values), "check sizeof(_rc_values_previous)");
}