diff --git a/src/modules/SX126x/SX126x.cpp b/src/modules/SX126x/SX126x.cpp index c21dd404..5d69eeb0 100644 --- a/src/modules/SX126x/SX126x.cpp +++ b/src/modules/SX126x/SX126x.cpp @@ -290,6 +290,14 @@ int16_t SX126x::receive(uint8_t* data, size_t len) { float symbolLength = (float)(uint32_t(1) << _sf) / (float)_bwKhz; timeout = (uint32_t)(symbolLength * 100.0 * 1000.0); + // set implicit mode and expected len if applicable + if (_headerType == SX126X_LORA_HEADER_IMPLICIT) { + state = setPacketParams(_preambleLength, _crcType, _implicitLen, _headerType); + if(state != ERR_NONE) { + return(state); + } + } + } else if(modem == SX126X_PACKET_TYPE_GFSK) { // calculate timeout (500 % of expected time-one-air) size_t maxLen = len; @@ -600,6 +608,14 @@ int16_t SX126x::startReceiveCommon() { // clear interrupt flags state = clearIrqStatus(); + // set implicit mode and expected len if applicable + if (_headerType == SX126X_LORA_HEADER_IMPLICIT && getPacketType() == SX126X_PACKET_TYPE_LORA) { + state = setPacketParams(_preambleLength, _crcType, _implicitLen, _headerType); + if(state != ERR_NONE) { + return(state); + } + } + return(state); }