1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-15 20:35:33 +03:00

Merge pull request #11129 from AlienWiiBF/FRSky_D8_Fix

Fix FrSky D8 protocol bind issues
This commit is contained in:
ctzsnooze 2021-12-17 10:57:50 +11:00 committed by GitHub
commit a63172cc1f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 6 deletions

View file

@ -229,7 +229,8 @@ rx_spi_received_e frSkyDHandlePacket(uint8_t * const packet, uint8_t * const pro
timeoutUs = 1;
if (packet[0] == 0x11) {
if ((packet[1] == rxCc2500SpiConfig()->bindTxId[0]) &&
(packet[2] == rxCc2500SpiConfig()->bindTxId[1])) {
(packet[2] == rxCc2500SpiConfig()->bindTxId[1]) &&
(packet[5] == rxCc2500SpiConfig()->bindTxId[2])) {
rxSpiLedOn();
nextChannel(1);
cc2500setRssiDbm(packet[18]);

View file

@ -339,8 +339,13 @@ static bool getBind(uint8_t *packet)
if (packet[5] == 0x00) {
rxCc2500SpiConfigMutable()->bindTxId[0] = packet[3];
rxCc2500SpiConfigMutable()->bindTxId[1] = packet[4];
rxCc2500SpiConfigMutable()->bindTxId[2] = packet[11];
rxCc2500SpiConfigMutable()->rxNum = packet[12];
if (spiProtocol == RX_SPI_FRSKY_D) {
rxCc2500SpiConfigMutable()->bindTxId[2] = packet[17];
rxCc2500SpiConfigMutable()->rxNum = 0;
} else {
rxCc2500SpiConfigMutable()->bindTxId[2] = packet[11];
rxCc2500SpiConfigMutable()->rxNum = packet[12];
}
}
for (uint8_t n = 0; n < 5; n++) {
rxCc2500SpiConfigMutable()->bindHopData[packet[5] + n] = (packet[5] + n) >= 47 ? 0 : packet[6 + n];
@ -491,6 +496,7 @@ bool frSkySpiInit(const rxSpiConfig_t *rxSpiConfig, rxRuntimeState_t *rxRuntimeS
handlePacket = frSkyDHandlePacket;
setRcData = frSkyDSetRcData;
packetLength = FRSKY_RX_D8_LENGTH;
frSkyDInit();
break;

View file

@ -33,9 +33,10 @@
#define MAX_MISSING_PKT 100
#define FRSKY_RX_D16FCC_LENGTH 0x1d + 3
#define FRSKY_RX_D16LBT_LENGTH 0x20 + 3
#define FRSKY_RX_D16v2_LENGTH 0x1d + 3
#define FRSKY_RX_D8_LENGTH (0x11 + 3)
#define FRSKY_RX_D16FCC_LENGTH (0x1d + 3)
#define FRSKY_RX_D16LBT_LENGTH (0x20 + 3)
#define FRSKY_RX_D16v2_LENGTH (0x1d + 3)
enum {
STATE_INIT = 0,