AP_RSSI: add RADIO_STATUS.rssi as an AP_RSSI telemetry source

This commit is contained in:
Peter Barker 2020-06-04 12:02:56 +10:00 committed by Andrew Tridgell
parent 345029ec67
commit 547b641c91
2 changed files with 13 additions and 2 deletions

View File

@ -38,7 +38,7 @@ const AP_Param::GroupInfo AP_RSSI::var_info[] = {
// @Param: TYPE // @Param: TYPE
// @DisplayName: RSSI Type // @DisplayName: RSSI Type
// @Description: Radio Receiver RSSI type. If your radio receiver supports RSSI of some kind, set it here, then set its associated RSSI_XXXXX parameters, if any. // @Description: Radio Receiver RSSI type. If your radio receiver supports RSSI of some kind, set it here, then set its associated RSSI_XXXXX parameters, if any.
// @Values: 0:Disabled,1:AnalogPin,2:RCChannelPwmValue,3:ReceiverProtocol,4:PWMInputPin // @Values: 0:Disabled,1:AnalogPin,2:RCChannelPwmValue,3:ReceiverProtocol,4:PWMInputPin,5:TelemetryRadioRSSI
// @User: Standard // @User: Standard
AP_GROUPINFO_FLAGS("TYPE", 0, AP_RSSI, rssi_type, BOARD_RSSI_DEFAULT, AP_PARAM_FLAG_ENABLE), AP_GROUPINFO_FLAGS("TYPE", 0, AP_RSSI, rssi_type, BOARD_RSSI_DEFAULT, AP_PARAM_FLAG_ENABLE),
@ -147,6 +147,8 @@ float AP_RSSI::read_receiver_rssi()
} }
case RssiType::PWM_PIN: case RssiType::PWM_PIN:
return read_pwm_pin_rssi(); return read_pwm_pin_rssi();
case RssiType::TELEMETRY_RADIO_RSSI:
return read_telemetry_radio_rssi();
} }
// should never get to here // should never get to here
return 0.0f; return 0.0f;
@ -257,6 +259,11 @@ float AP_RSSI::read_pwm_pin_rssi()
return pwm_state.rssi_value; return pwm_state.rssi_value;
} }
float AP_RSSI::read_telemetry_radio_rssi()
{
return GCS_MAVLINK::telemetry_radio_rssi();
}
// Scale and constrain a float rssi value to 0.0 to 1.0 range // Scale and constrain a float rssi value to 0.0 to 1.0 range
float AP_RSSI::scale_and_constrain_float_rssi(float current_rssi_value, float low_rssi_range, float high_rssi_range) float AP_RSSI::scale_and_constrain_float_rssi(float current_rssi_value, float low_rssi_range, float high_rssi_range)
{ {

View File

@ -26,7 +26,8 @@ public:
ANALOG_PIN = 1, ANALOG_PIN = 1,
RC_CHANNEL_VALUE = 2, RC_CHANNEL_VALUE = 2,
RECEIVER = 3, RECEIVER = 3,
PWM_PIN = 4 PWM_PIN = 4,
TELEMETRY_RADIO_RSSI = 5,
}; };
AP_RSSI(); AP_RSSI();
@ -96,6 +97,9 @@ private:
// read the PWM value from a pin // read the PWM value from a pin
float read_pwm_pin_rssi(); float read_pwm_pin_rssi();
// read the (RC) RSSI value from telemtry radio RSSI (e.g. rfd900x pass-through)
float read_telemetry_radio_rssi();
// Scale and constrain a float rssi value to 0.0 to 1.0 range // Scale and constrain a float rssi value to 0.0 to 1.0 range
float scale_and_constrain_float_rssi(float current_rssi_value, float low_rssi_range, float high_rssi_range); float scale_and_constrain_float_rssi(float current_rssi_value, float low_rssi_range, float high_rssi_range);