[SX126x] Fix preamble detector configuration (#1350)
This commit is contained in:
parent
5a8ba0003b
commit
eeff547aa4
1 changed files with 16 additions and 4 deletions
|
@ -973,10 +973,13 @@ int16_t SX126x::setPreambleLength(size_t preambleLength) {
|
||||||
return(setPacketParams(this->preambleLengthLoRa, this->crcTypeLoRa, this->implicitLen, this->headerType, this->invertIQEnabled));
|
return(setPacketParams(this->preambleLengthLoRa, this->crcTypeLoRa, this->implicitLen, this->headerType, this->invertIQEnabled));
|
||||||
} else if(modem == RADIOLIB_SX126X_PACKET_TYPE_GFSK) {
|
} else if(modem == RADIOLIB_SX126X_PACKET_TYPE_GFSK) {
|
||||||
this->preambleLengthFSK = preambleLength;
|
this->preambleLengthFSK = preambleLength;
|
||||||
this->preambleDetLength = preambleLength >= 32 ? RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_32 :
|
// maximum preamble detector length is limited by sync word length
|
||||||
preambleLength >= 24 ? RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_24 :
|
// for details, see the note in SX1261 datasheet, Rev 2.1, section 6.2.2.1, page 45
|
||||||
preambleLength >= 16 ? RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_16 :
|
uint8_t maxDetLen = RADIOLIB_MIN(this->syncWordLength, this->preambleLengthFSK);
|
||||||
preambleLength > 0 ? RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_8 :
|
this->preambleDetLength = maxDetLen >= 32 ? RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_32 :
|
||||||
|
maxDetLen >= 24 ? RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_24 :
|
||||||
|
maxDetLen >= 16 ? RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_16 :
|
||||||
|
maxDetLen > 0 ? RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_8 :
|
||||||
RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_OFF;
|
RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_OFF;
|
||||||
return(setPacketParamsFSK(this->preambleLengthFSK, this->preambleDetLength, this->crcTypeFSK, this->syncWordLength, this->addrComp, this->whitening, this->packetType));
|
return(setPacketParamsFSK(this->preambleLengthFSK, this->preambleDetLength, this->crcTypeFSK, this->syncWordLength, this->addrComp, this->whitening, this->packetType));
|
||||||
}
|
}
|
||||||
|
@ -1214,6 +1217,15 @@ int16_t SX126x::setSyncWord(uint8_t* syncWord, size_t len) {
|
||||||
|
|
||||||
// update packet parameters
|
// update packet parameters
|
||||||
this->syncWordLength = len * 8;
|
this->syncWordLength = len * 8;
|
||||||
|
|
||||||
|
// maximum preamble detector length is limited by sync word length
|
||||||
|
// for details, see the note in SX1261 datasheet, Rev 2.1, section 6.2.2.1, page 45
|
||||||
|
uint8_t maxDetLen = RADIOLIB_MIN(this->syncWordLength, this->preambleLengthFSK);
|
||||||
|
this->preambleDetLength = maxDetLen >= 32 ? RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_32 :
|
||||||
|
maxDetLen >= 24 ? RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_24 :
|
||||||
|
maxDetLen >= 16 ? RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_16 :
|
||||||
|
maxDetLen > 0 ? RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_8 :
|
||||||
|
RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_OFF;
|
||||||
state = setPacketParamsFSK(this->preambleLengthFSK, this->preambleDetLength, this->crcTypeFSK, this->syncWordLength, this->addrComp, this->whitening, this->packetType);
|
state = setPacketParamsFSK(this->preambleLengthFSK, this->preambleDetLength, this->crcTypeFSK, this->syncWordLength, this->addrComp, this->whitening, this->packetType);
|
||||||
|
|
||||||
return(state);
|
return(state);
|
||||||
|
|
Loading…
Add table
Reference in a new issue