1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-16 12:55:19 +03:00

SRXL2 failsafe fix for newer receivers (#9189)

SRXL2 failsafe fix for newer receivers
This commit is contained in:
Michael Keller 2019-12-04 15:49:38 +13:00
parent 534ea7577b
commit 68cdde94fc

View file

@ -168,18 +168,17 @@ bool srxl2ProcessHandshake(const Srxl2Header* header)
}
void srxl2ProcessChannelData(const Srxl2ChannelDataHeader* channelData, rxRuntimeConfig_t *rxRuntimeConfig) {
globalResult = RX_FRAME_COMPLETE;
if (channelData->rssi >= 0) {
const int rssiPercent = channelData->rssi;
setRssi(scaleRange(rssiPercent, 0, 100, 0, RSSI_MAX_VALUE), RSSI_SOURCE_RX_PROTOCOL);
} else {
// If dBm value provided, cant properly convert to % without knowing the receivers sensitivity range. Fix at 50% for now.
setRssi(RSSI_MAX_VALUE / 2, RSSI_SOURCE_RX_PROTOCOL);
}
if (channelData->rssi == 0) {
globalResult = RX_FRAME_FAILSAFE;
} else {
globalResult = RX_FRAME_COMPLETE;
//If receiver is in a connected state, and a packet is missed, the channel mask will be 0.
if (!channelData->channelMask.u32) {
globalResult |= RX_FRAME_FAILSAFE;
return;
}
const uint16_t *frameChannels = (const uint16_t *) (channelData + 1);
@ -209,7 +208,7 @@ bool srxl2ProcessControlData(const Srxl2Header* header, rxRuntimeConfig_t *rxRun
break;
case FailsafeChannelData: {
srxl2ProcessChannelData((const Srxl2ChannelDataHeader *) (controlData + 1), rxRuntimeConfig);
globalResult |= RX_FRAME_FAILSAFE;
setRssiDirect(0, RSSI_SOURCE_RX_PROTOCOL);
// DEBUG_PRINTF("fs channel data\r\n");
} break;