Fix usages, scaling.
This commit is contained in:
parent
9a7c863c3c
commit
d401e3bbbe
|
@ -495,7 +495,7 @@ static void applyLedFixedLayers(void)
|
|||
|
||||
case LED_FUNCTION_RSSI:
|
||||
color = HSV(RED);
|
||||
hOffset += scaleRange(getRssi() * 100, 0, 1023, -30, 120);
|
||||
hOffset += scaleRange(getRssiPercent(), 0, 100, -30, 120);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -714,7 +714,7 @@ static void applyLedRssiLayer(bool updateNow, timeUs_t *timer)
|
|||
int timerDelay = HZ_TO_US(1);
|
||||
|
||||
if (updateNow) {
|
||||
int state = (getRssi() * 100) / 1023;
|
||||
int state = getRssiPercent();
|
||||
|
||||
if (state > 50) {
|
||||
flash = true;
|
||||
|
|
|
@ -1086,7 +1086,7 @@ void osdUpdateAlarms(void)
|
|||
|
||||
int32_t alt = osdGetMetersToSelectedUnit(getEstimatedAltitude()) / 100;
|
||||
|
||||
if (scaleRange(getRssi(), 0, 1024, 0, 100) < osdConfig()->rssi_alarm) {
|
||||
if (getRssiPercent() < osdConfig()->rssi_alarm) {
|
||||
SET_BLINK(OSD_RSSI_VALUE);
|
||||
} else {
|
||||
CLR_BLINK(OSD_RSSI_VALUE);
|
||||
|
@ -1202,7 +1202,7 @@ static void osdUpdateStats(void)
|
|||
stats.max_current = value;
|
||||
}
|
||||
|
||||
value = scaleRange(getRssi(), 0, 1024, 0, 100);
|
||||
value = getRssiPercent();
|
||||
if (stats.min_rssi > value) {
|
||||
stats.min_rssi = value;
|
||||
}
|
||||
|
|
|
@ -254,7 +254,7 @@ rx_spi_received_e frSkyDHandlePacket(uint8_t * const packet, uint8_t * const pro
|
|||
timeoutUs = 50;
|
||||
|
||||
#if defined(USE_RX_FRSKY_SPI_TELEMETRY)
|
||||
setRssiFiltered(0, RSSI_SOURCE_RX_PROTOCOL);
|
||||
setRssiDirect(0, RSSI_SOURCE_RX_PROTOCOL);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -269,7 +269,7 @@ rx_spi_received_e frSkyDHandlePacket(uint8_t * const packet, uint8_t * const pro
|
|||
ledIsOn = !ledIsOn;
|
||||
|
||||
#if defined(USE_RX_FRSKY_SPI_TELEMETRY)
|
||||
setRssiUnfiltered(0, RSSI_SOURCE_RX_PROTOCOL);
|
||||
setRssi(0, RSSI_SOURCE_RX_PROTOCOL);
|
||||
#endif
|
||||
nextChannel(13);
|
||||
}
|
||||
|
|
|
@ -106,7 +106,7 @@ void setRssiDbm(uint8_t value)
|
|||
rssiDbm = ((((uint16_t)value) * 18) >> 5) + 65;
|
||||
}
|
||||
|
||||
setRssiUnfiltered(constrain(rssiDbm << 3, 0, 1023), RSSI_SOURCE_RX_PROTOCOL);
|
||||
setRssi(rssiDbm << 3, RSSI_SOURCE_RX_PROTOCOL);
|
||||
}
|
||||
#endif // USE_RX_FRSKY_SPI_TELEMETRY
|
||||
|
||||
|
|
|
@ -451,7 +451,7 @@ rx_spi_received_e frSkyXHandlePacket(uint8_t * const packet, uint8_t * const pro
|
|||
ledIsOn = !ledIsOn;
|
||||
|
||||
#if defined(USE_RX_FRSKY_SPI_TELEMETRY)
|
||||
setRssiFiltered(0, RSSI_SOURCE_RX_PROTOCOL);
|
||||
setRssiDirect(0, RSSI_SOURCE_RX_PROTOCOL);
|
||||
#endif
|
||||
nextChannel(1);
|
||||
cc2500Strobe(CC2500_SRX);
|
||||
|
|
|
@ -183,7 +183,7 @@ static void checkTimeout (void)
|
|||
|
||||
if(countTimeout > 31) {
|
||||
timeout = timings->syncPacket;
|
||||
setRssiFiltered(0, RSSI_SOURCE_RX_PROTOCOL);
|
||||
setRssiDirect(0, RSSI_SOURCE_RX_PROTOCOL);
|
||||
} else {
|
||||
timeout = timings->packet;
|
||||
countTimeout++;
|
||||
|
@ -206,8 +206,8 @@ static void checkRSSI (void)
|
|||
|
||||
rssi_dBm = 50 + sum / (3 * FLYSKY_RSSI_SAMPLE_COUNT); // range about [95...52], -dBm
|
||||
|
||||
int16_t tmp = 2280 - 24 * rssi_dBm;// convert to [0...1023]
|
||||
setRssiFiltered(constrain(tmp, 0, 1023), RSSI_SOURCE_RX_PROTOCOL);
|
||||
int16_t tmp = 2280 - 24 * rssi_dBm; // convert to [0...1023]
|
||||
setRssiDirect(tmp, RSSI_SOURCE_RX_PROTOCOL);
|
||||
}
|
||||
|
||||
static bool isValidPacket (const uint8_t *packet) {
|
||||
|
|
|
@ -269,7 +269,7 @@ static uint8_t fportFrameStatus(rxRuntimeConfig_t *rxRuntimeConfig)
|
|||
} else {
|
||||
result = sbusChannelsDecode(rxRuntimeConfig, &frame->data.controlData.channels);
|
||||
|
||||
setRssiUnfiltered(scaleRange(constrain(frame->data.controlData.rssi, 0, 100), 0, 100, 0, 1024), RSSI_SOURCE_RX_PROTOCOL);
|
||||
setRssi(scaleRange(frame->data.controlData.rssi, 0, 100, 0, 1024), RSSI_SOURCE_RX_PROTOCOL);
|
||||
|
||||
lastRcFrameReceivedMs = millis();
|
||||
}
|
||||
|
@ -323,7 +323,7 @@ static uint8_t fportFrameStatus(rxRuntimeConfig_t *rxRuntimeConfig)
|
|||
}
|
||||
|
||||
if (lastRcFrameReceivedMs && ((millis() - lastRcFrameReceivedMs) > FPORT_MAX_TELEMETRY_AGE_MS)) {
|
||||
setRssiFiltered(0, RSSI_SOURCE_RX_PROTOCOL);
|
||||
setRssiDirect(0, RSSI_SOURCE_RX_PROTOCOL);
|
||||
lastRcFrameReceivedMs = 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -374,10 +374,10 @@ bool rxUpdateCheck(timeUs_t currentTimeUs, timeDelta_t currentDeltaTime)
|
|||
|
||||
if (frameStatus & (RX_FRAME_FAILSAFE | RX_FRAME_DROPPED)) {
|
||||
// No (0%) signal
|
||||
setRssiUnfiltered(0, RSSI_SOURCE_FRAME_ERRORS);
|
||||
setRssi(0, RSSI_SOURCE_FRAME_ERRORS);
|
||||
} else {
|
||||
// Valid (100%) signal
|
||||
setRssiUnfiltered(RSSI_MAX_VALUE, RSSI_SOURCE_FRAME_ERRORS);
|
||||
setRssi(RSSI_MAX_VALUE, RSSI_SOURCE_FRAME_ERRORS);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -578,7 +578,7 @@ void parseRcChannels(const char *input, rxConfig_t *rxConfig)
|
|||
}
|
||||
}
|
||||
|
||||
void setRssiFiltered(uint16_t newRssi, rssiSource_e source)
|
||||
void setRssiDirect(uint16_t newRssi, rssiSource_e source)
|
||||
{
|
||||
if (source != rssiSource) {
|
||||
return;
|
||||
|
@ -589,7 +589,7 @@ void setRssiFiltered(uint16_t newRssi, rssiSource_e source)
|
|||
|
||||
#define RSSI_SAMPLE_COUNT 16
|
||||
|
||||
void setRssiUnfiltered(uint16_t rssiValue, rssiSource_e source)
|
||||
void setRssi(uint16_t rssiValue, rssiSource_e source)
|
||||
{
|
||||
if (source != rssiSource) {
|
||||
return;
|
||||
|
@ -632,7 +632,7 @@ static void updateRSSIPWM(void)
|
|||
}
|
||||
|
||||
// Range of rawPwmRssi is [1000;2000]. rssi should be in [0;1023];
|
||||
setRssiFiltered(constrain((uint16_t)(((pwmRssi - 1000) / 1000.0f) * 1024.0f), 0, RSSI_MAX_VALUE), RSSI_SOURCE_RX_CHANNEL);
|
||||
setRssiDirect(constrain(((pwmRssi - 1000) / 1000.0f) * RSSI_MAX_VALUE, 0, RSSI_MAX_VALUE), RSSI_SOURCE_RX_CHANNEL);
|
||||
}
|
||||
|
||||
static void updateRSSIADC(timeUs_t currentTimeUs)
|
||||
|
@ -648,15 +648,14 @@ static void updateRSSIADC(timeUs_t currentTimeUs)
|
|||
rssiUpdateAt = currentTimeUs + DELAY_50_HZ;
|
||||
|
||||
const uint16_t adcRssiSample = adcGetChannel(ADC_RSSI);
|
||||
uint16_t rssiValue = (uint16_t)(adcRssiSample / RSSI_ADC_DIVISOR);
|
||||
rssiValue = constrain(rssiValue, 0, RSSI_MAX_VALUE);
|
||||
uint16_t rssiValue = adcRssiSample / RSSI_ADC_DIVISOR;
|
||||
|
||||
// RSSI_Invert option
|
||||
if (rxConfig()->rssi_invert) {
|
||||
rssiValue = RSSI_MAX_VALUE - rssiValue;
|
||||
}
|
||||
|
||||
setRssiUnfiltered((uint16_t)rssiValue, RSSI_SOURCE_ADC);
|
||||
setRssi((uint16_t)rssiValue, RSSI_SOURCE_ADC);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -684,6 +683,11 @@ uint16_t getRssi(void)
|
|||
return (rxConfig()->rssi_scale / 100.0f) * rssi;
|
||||
}
|
||||
|
||||
uint8_t getRssiPercent(void)
|
||||
{
|
||||
return scaleRange(getRssi(), 0, RSSI_MAX_VALUE, 0, 100);
|
||||
}
|
||||
|
||||
uint16_t rxGetRefreshRate(void)
|
||||
{
|
||||
return rxRuntimeConfig.rxRefreshRate;
|
||||
|
|
|
@ -160,11 +160,12 @@ void parseRcChannels(const char *input, struct rxConfig_s *rxConfig);
|
|||
|
||||
#define RSSI_MAX_VALUE 1023
|
||||
|
||||
void setRssiFiltered(uint16_t newRssi, rssiSource_e source);
|
||||
void setRssiUnfiltered(uint16_t rssiValue, rssiSource_e source);
|
||||
void setRssiDirect(uint16_t newRssi, rssiSource_e source);
|
||||
void setRssi(uint16_t rssiValue, rssiSource_e source);
|
||||
void setRssiMsp(uint8_t newMspRssi);
|
||||
void updateRSSI(timeUs_t currentTimeUs);
|
||||
uint16_t getRssi(void);
|
||||
uint8_t getRssiPercent(void);
|
||||
|
||||
void resetAllRxChannelRangeConfigurations(rxChannelRangeConfig_t *rxChannelRangeConfig);
|
||||
|
||||
|
|
|
@ -196,7 +196,7 @@ static void ltm_sframe(void)
|
|||
ltm_initialise_packet('S');
|
||||
ltm_serialise_16(getBatteryVoltage() * 100); //vbat converted to mv
|
||||
ltm_serialise_16(0); // current, not implemented
|
||||
ltm_serialise_8((uint8_t)((getRssi() * 254) / 1023)); // scaled RSSI (uchar)
|
||||
ltm_serialise_8(scaleRange(getRssi(), 0, RSSI_MAX_VALUE, 0, 255)); // scaled RSSI (uchar)
|
||||
ltm_serialise_8(0); // no airspeed
|
||||
ltm_serialise_8((lt_flightmode << 2) | lt_statemode);
|
||||
ltm_finalise();
|
||||
|
|
|
@ -281,7 +281,7 @@ void mavlinkSendRCChannelsAndRSSI(void)
|
|||
// chan8_raw RC channel 8 value, in microseconds
|
||||
(rxRuntimeConfig.channelCount >= 8) ? rcData[7] : 0,
|
||||
// rssi Receive signal strength indicator, 0: 0%, 255: 100%
|
||||
scaleRange(getRssi(), 0, 1023, 0, 255));
|
||||
scaleRange(getRssi(), 0, RSSI_MAX_VALUE, 0, 255));
|
||||
msgLength = mavlink_msg_to_send_buffer(mavBuffer, &mavMsg);
|
||||
mavlinkSerialWrite(mavBuffer, msgLength);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue