diff --git a/apps/drivers/px4io/px4io.cpp b/apps/drivers/px4io/px4io.cpp index 72c7e34a13..0e84760d5e 100644 --- a/apps/drivers/px4io/px4io.cpp +++ b/apps/drivers/px4io/px4io.cpp @@ -467,6 +467,7 @@ PX4IO::rx_callback(const uint8_t *buffer, size_t bytes_received) /* publish raw rc channel values from IO */ _input_rc.timestamp = hrt_absolute_time(); + _input_rc.channel_count = rep->channel_count; for (int i = 0; i < rep->channel_count; i++) { _input_rc.values[i] = rep->rc_channel[i]; diff --git a/apps/sensors/sensors.cpp b/apps/sensors/sensors.cpp index 675a8602a4..7c1503f0d2 100644 --- a/apps/sensors/sensors.cpp +++ b/apps/sensors/sensors.cpp @@ -93,6 +93,8 @@ #define BAT_VOL_LOWPASS_2 0.01f #define VOLTAGE_BATTERY_IGNORE_THRESHOLD_VOLTS 3.5f +#define PPM_INPUT_TIMEOUT_INTERVAL 50000 /**< 50 ms timeout / 20 Hz */ + /** * Sensor app start / stop handling function * @@ -865,8 +867,10 @@ Sensors::ppm_poll() struct rc_input_values raw; raw.timestamp = ppm_last_valid_decode; + /* we are accepting this message */ + _ppm_last_valid = ppm_last_valid_decode; - if (ppm_decoded_channels > 1) { + if (ppm_decoded_channels > 2 && hrt_absolute_time() - _ppm_last_valid < PPM_INPUT_TIMEOUT_INTERVAL) { for (int i = 0; i < ppm_decoded_channels; i++) { raw.values[i] = ppm_buffer[i];