From 4440c6383c3ad9030db7de4b828a7c4a1627c100 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Tue, 21 Apr 2015 10:48:40 +0200 Subject: IO RSSI handling: Make 0-RSSI value consistent for all input sources --- src/modules/px4iofirmware/controls.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/modules/px4iofirmware/controls.c b/src/modules/px4iofirmware/controls.c index 4ef27718c..c9702c2ec 100644 --- a/src/modules/px4iofirmware/controls.c +++ b/src/modules/px4iofirmware/controls.c @@ -196,6 +196,11 @@ controls_tick() { } #endif + /* zero RSSI if signal is lost */ + if (!(r_raw_rc_flags & (PX4IO_P_RAW_RC_FLAGS_RC_OK))) { + rssi = 0; + } + perf_begin(c_gather_dsm); bool dsm_updated, st24_updated, sumd_updated; (void)dsm_port_input(&rssi, &dsm_updated, &st24_updated, &sumd_updated); @@ -227,19 +232,17 @@ controls_tick() { r_raw_rc_flags &= ~(PX4IO_P_RAW_RC_FLAGS_FRAME_DROP); } - /* set RSSI to an emulated value if ADC RSSI is off */ - if (!(r_setup_features & PX4IO_P_SETUP_FEATURES_ADC_RSSI)) { - rssi = sbus_rssi; - } - if (sbus_failsafe) { r_raw_rc_flags |= PX4IO_P_RAW_RC_FLAGS_FAILSAFE; - /* set RSSI to 0 if the decoder senses complete drop, independent of the ADC value */ - rssi = 0; } else { r_raw_rc_flags &= ~(PX4IO_P_RAW_RC_FLAGS_FAILSAFE); } + /* set RSSI to an emulated value if ADC RSSI is off */ + if (!(r_setup_features & PX4IO_P_SETUP_FEATURES_ADC_RSSI)) { + rssi = sbus_rssi; + } + } perf_end(c_gather_sbus); -- cgit v1.2.3