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 committed by GitHub
commit 857144a6e6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 8 deletions

View File

@ -168,18 +168,17 @@ bool srxl2ProcessHandshake(const Srxl2Header* header)
}
void srxl2ProcessChannelData(const Srxl2ChannelDataHeader* channelData, rxRuntimeState_t *rxRuntimeState) {
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, rxRuntimeState_t *rxRunt
break;
case FailsafeChannelData: {
srxl2ProcessChannelData((const Srxl2ChannelDataHeader *) (controlData + 1), rxRuntimeState);
globalResult |= RX_FRAME_FAILSAFE;
setRssiDirect(0, RSSI_SOURCE_RX_PROTOCOL);
// DEBUG_PRINTF("fs channel data\r\n");
} break;