diff --git a/keywords.txt b/keywords.txt index 76cf9f20..4968ef5b 100644 --- a/keywords.txt +++ b/keywords.txt @@ -88,6 +88,8 @@ setDataShaping KEYWORD2 setOOK KEYWORD2 setDataShapingOOK KEYWORD2 setCRC KEYWORD2 +variablePacketLengthMode KEYWORD2 +fixedPacketLengthMode KEYWORD2 # RF69-specific setAESKey KEYWORD2 diff --git a/src/modules/CC1101.cpp b/src/modules/CC1101.cpp index bbfbb5a2..657400a0 100644 --- a/src/modules/CC1101.cpp +++ b/src/modules/CC1101.cpp @@ -493,7 +493,7 @@ size_t CC1101::getPacketLength(bool update) { if (_packetLengthConfig == CC1101_LENGTH_CONFIG_VARIABLE) { _packetLength = _mod->SPIreadRegister(CC1101_REG_FIFO); } else { - _packetLength = _mod->SPIreadRegister(CC1101_REG_FIFO); + _packetLength = _mod->SPIreadRegister(CC1101_REG_PKTLEN); } _packetLengthQueried = true; @@ -513,7 +513,7 @@ int16_t CC1101::fixedPacketLengthMode(uint8_t len) { return(state); } - // set max length to register + // set length to register state = SPIsetRegValue(CC1101_REG_PKTLEN, len); if (state != ERR_NONE) { return(state); @@ -530,13 +530,20 @@ int16_t CC1101::variablePacketLengthMode(uint8_t maxLen) { return(ERR_PACKET_TOO_LONG); } + // set to fixed packet length int16_t state = SPIsetRegValue(CC1101_REG_PKTCTRL0, CC1101_LENGTH_CONFIG_VARIABLE, 1, 0); if (state != ERR_NONE) { return(state); } - _packetLengthConfig = CC1101_LENGTH_CONFIG_VARIABLE; + // set max length to register state = SPIsetRegValue(CC1101_REG_PKTLEN, maxLen); + if (state != ERR_NONE) { + return(state); + } + + // all went well: cache the reg value + _packetLengthConfig = CC1101_LENGTH_CONFIG_VARIABLE; return(state); }