Merge pull request #6032 from mikeller/add_rssi_offset
Added RSSI offset to complement RSSI scaling.
This commit is contained in:
commit
1640f6179d
|
@ -520,6 +520,7 @@ const clivalue_t valueTable[] = {
|
||||||
{ "rssi_channel", VAR_INT8 | MASTER_VALUE, .config.minmax = { 0, MAX_SUPPORTED_RC_CHANNEL_COUNT }, PG_RX_CONFIG, offsetof(rxConfig_t, rssi_channel) },
|
{ "rssi_channel", VAR_INT8 | MASTER_VALUE, .config.minmax = { 0, MAX_SUPPORTED_RC_CHANNEL_COUNT }, PG_RX_CONFIG, offsetof(rxConfig_t, rssi_channel) },
|
||||||
{ "rssi_src_frame_errors", VAR_INT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_RX_CONFIG, offsetof(rxConfig_t, rssi_src_frame_errors) },
|
{ "rssi_src_frame_errors", VAR_INT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_RX_CONFIG, offsetof(rxConfig_t, rssi_src_frame_errors) },
|
||||||
{ "rssi_scale", VAR_UINT8 | MASTER_VALUE, .config.minmax = { RSSI_SCALE_MIN, RSSI_SCALE_MAX }, PG_RX_CONFIG, offsetof(rxConfig_t, rssi_scale) },
|
{ "rssi_scale", VAR_UINT8 | MASTER_VALUE, .config.minmax = { RSSI_SCALE_MIN, RSSI_SCALE_MAX }, PG_RX_CONFIG, offsetof(rxConfig_t, rssi_scale) },
|
||||||
|
{ "rssi_offset", VAR_INT8 | MASTER_VALUE, .config.minmax = { -100, 100 }, PG_RX_CONFIG, offsetof(rxConfig_t, rssi_offset) },
|
||||||
{ "rssi_invert", VAR_INT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_RX_CONFIG, offsetof(rxConfig_t, rssi_invert) },
|
{ "rssi_invert", VAR_INT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_RX_CONFIG, offsetof(rxConfig_t, rssi_invert) },
|
||||||
{ "rc_interp", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_RC_INTERPOLATION }, PG_RX_CONFIG, offsetof(rxConfig_t, rcInterpolation) },
|
{ "rc_interp", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_RC_INTERPOLATION }, PG_RX_CONFIG, offsetof(rxConfig_t, rcInterpolation) },
|
||||||
{ "rc_interp_ch", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_RC_INTERPOLATION_CHANNELS }, PG_RX_CONFIG, offsetof(rxConfig_t, rcInterpolationChannels) },
|
{ "rc_interp_ch", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_RC_INTERPOLATION_CHANNELS }, PG_RX_CONFIG, offsetof(rxConfig_t, rcInterpolationChannels) },
|
||||||
|
|
|
@ -52,6 +52,7 @@ void pgResetFn_rxConfig(rxConfig_t *rxConfig)
|
||||||
.rssi_src_frame_errors = false,
|
.rssi_src_frame_errors = false,
|
||||||
.rssi_channel = 0,
|
.rssi_channel = 0,
|
||||||
.rssi_scale = RSSI_SCALE_DEFAULT,
|
.rssi_scale = RSSI_SCALE_DEFAULT,
|
||||||
|
.rssi_offset = 0,
|
||||||
.rssi_invert = 0,
|
.rssi_invert = 0,
|
||||||
.rcInterpolation = RC_SMOOTHING_AUTO,
|
.rcInterpolation = RC_SMOOTHING_AUTO,
|
||||||
.rcInterpolationChannels = 0,
|
.rcInterpolationChannels = 0,
|
||||||
|
|
|
@ -49,6 +49,7 @@ typedef struct rxConfig_s {
|
||||||
uint16_t rx_max_usec;
|
uint16_t rx_max_usec;
|
||||||
uint8_t max_aux_channel;
|
uint8_t max_aux_channel;
|
||||||
uint8_t rssi_src_frame_errors; // true to use frame drop flags in the rx protocol
|
uint8_t rssi_src_frame_errors; // true to use frame drop flags in the rx protocol
|
||||||
|
int8_t rssi_offset; // offset applied to the RSSI value before it is returned
|
||||||
} rxConfig_t;
|
} rxConfig_t;
|
||||||
|
|
||||||
PG_DECLARE(rxConfig_t, rxConfig);
|
PG_DECLARE(rxConfig_t, rxConfig);
|
||||||
|
|
|
@ -78,6 +78,7 @@ static timeUs_t lastMspRssiUpdateUs = 0;
|
||||||
#define MSP_RSSI_TIMEOUT_US 1500000 // 1.5 sec
|
#define MSP_RSSI_TIMEOUT_US 1500000 // 1.5 sec
|
||||||
|
|
||||||
#define RSSI_ADC_DIVISOR (4096 / 1024)
|
#define RSSI_ADC_DIVISOR (4096 / 1024)
|
||||||
|
#define RSSI_OFFSET_SCALING (1024 / 100.0f)
|
||||||
|
|
||||||
rssiSource_e rssiSource;
|
rssiSource_e rssiSource;
|
||||||
|
|
||||||
|
@ -680,7 +681,7 @@ void updateRSSI(timeUs_t currentTimeUs)
|
||||||
|
|
||||||
uint16_t getRssi(void)
|
uint16_t getRssi(void)
|
||||||
{
|
{
|
||||||
return (rxConfig()->rssi_scale / 100.0f) * rssi;
|
return rxConfig()->rssi_scale / 100.0f * rssi + rxConfig()->rssi_offset * RSSI_OFFSET_SCALING;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t getRssiPercent(void)
|
uint8_t getRssiPercent(void)
|
||||||
|
|
Loading…
Reference in New Issue