From d3d16433bfefaa7def43ed97f730f432f0bce7c0 Mon Sep 17 00:00:00 2001 From: jgromes Date: Sat, 18 Jan 2025 15:43:14 +0100 Subject: [PATCH] [SX126x] Cppcheck fixes --- src/modules/SX126x/STM32WLx.cpp | 2 +- src/modules/SX126x/STM32WLx.h | 8 ++-- src/modules/SX126x/SX1262.h | 4 +- src/modules/SX126x/SX126x.cpp | 53 ++++++++++++++------------- src/modules/SX126x/SX126x.h | 10 ++--- src/modules/SX126x/SX126x_LR_FHSS.cpp | 6 +-- 6 files changed, 42 insertions(+), 41 deletions(-) diff --git a/src/modules/SX126x/STM32WLx.cpp b/src/modules/SX126x/STM32WLx.cpp index e9f47167..d32477a9 100644 --- a/src/modules/SX126x/STM32WLx.cpp +++ b/src/modules/SX126x/STM32WLx.cpp @@ -45,7 +45,7 @@ int16_t STM32WLx::setOutputPower(int8_t power) { RADIOLIB_ASSERT(state); // check the user did not request power output that is not possible - Module* mod = this->getMod(); + const Module* mod = this->getMod(); bool hp_supported = mod->findRfSwitchMode(MODE_TX_HP); bool lp_supported = mod->findRfSwitchMode(MODE_TX_LP); if((!lp_supported && (power < -9)) || (!hp_supported && (power > 14))) { diff --git a/src/modules/SX126x/STM32WLx.h b/src/modules/SX126x/STM32WLx.h index 993791aa..317922cf 100644 --- a/src/modules/SX126x/STM32WLx.h +++ b/src/modules/SX126x/STM32WLx.h @@ -66,12 +66,12 @@ class STM32WLx : public SX1262 { /*! \copydoc SX1262::begin */ - int16_t begin(float freq = 434.0, float bw = 125.0, uint8_t sf = 9, uint8_t cr = 7, uint8_t syncWord = RADIOLIB_SX126X_SYNC_WORD_PRIVATE, int8_t power = 10, uint16_t preambleLength = 8, float tcxoVoltage = 1.6, bool useRegulatorLDO = false); + int16_t begin(float freq = 434.0, float bw = 125.0, uint8_t sf = 9, uint8_t cr = 7, uint8_t syncWord = RADIOLIB_SX126X_SYNC_WORD_PRIVATE, int8_t power = 10, uint16_t preambleLength = 8, float tcxoVoltage = 1.6, bool useRegulatorLDO = false) override; /*! \copydoc SX1262::beginFSK */ - int16_t beginFSK(float freq = 434.0, float br = 4.8, float freqDev = 5.0, float rxBw = 156.2, int8_t power = 10, uint16_t preambleLength = 16, float tcxoVoltage = 1.6, bool useRegulatorLDO = false); + int16_t beginFSK(float freq = 434.0, float br = 4.8, float freqDev = 5.0, float rxBw = 156.2, int8_t power = 10, uint16_t preambleLength = 16, float tcxoVoltage = 1.6, bool useRegulatorLDO = false) override; // configuration methods @@ -113,12 +113,12 @@ class STM32WLx : public SX1262 { \brief Sets interrupt service routine to call when DIO1/2/3 activates. \param func ISR to call. */ - void setDio1Action(void (*func)(void)); + void setDio1Action(void (*func)(void)) override; /*! \brief Clears interrupt service routine to call when DIO1/2/3 activates. */ - void clearDio1Action(); + void clearDio1Action() override; /*! \brief Sets interrupt service routine to call when a packet is received. diff --git a/src/modules/SX126x/SX1262.h b/src/modules/SX126x/SX1262.h index a7e0b677..d0e73a6e 100644 --- a/src/modules/SX126x/SX1262.h +++ b/src/modules/SX126x/SX1262.h @@ -44,7 +44,7 @@ class SX1262: public SX126x { \param useRegulatorLDO Whether to use only LDO regulator (true) or DC-DC regulator (false). Defaults to false. \returns \ref status_codes */ - int16_t begin(float freq = 434.0, float bw = 125.0, uint8_t sf = 9, uint8_t cr = 7, uint8_t syncWord = RADIOLIB_SX126X_SYNC_WORD_PRIVATE, int8_t power = 10, uint16_t preambleLength = 8, float tcxoVoltage = 1.6, bool useRegulatorLDO = false); + virtual int16_t begin(float freq = 434.0, float bw = 125.0, uint8_t sf = 9, uint8_t cr = 7, uint8_t syncWord = RADIOLIB_SX126X_SYNC_WORD_PRIVATE, int8_t power = 10, uint16_t preambleLength = 8, float tcxoVoltage = 1.6, bool useRegulatorLDO = false); /*! \brief Initialization method for FSK modem. @@ -60,7 +60,7 @@ class SX1262: public SX126x { \param useRegulatorLDO Whether to use only LDO regulator (true) or DC-DC regulator (false). Defaults to false. \returns \ref status_codes */ - int16_t beginFSK(float freq = 434.0, float br = 4.8, float freqDev = 5.0, float rxBw = 156.2, int8_t power = 10, uint16_t preambleLength = 16, float tcxoVoltage = 1.6, bool useRegulatorLDO = false); + virtual int16_t beginFSK(float freq = 434.0, float br = 4.8, float freqDev = 5.0, float rxBw = 156.2, int8_t power = 10, uint16_t preambleLength = 16, float tcxoVoltage = 1.6, bool useRegulatorLDO = false); /*! \brief Initialization method for LR-FHSS modem. This modem only supports transmission! diff --git a/src/modules/SX126x/SX126x.cpp b/src/modules/SX126x/SX126x.cpp index 393a8ed0..01148ecd 100644 --- a/src/modules/SX126x/SX126x.cpp +++ b/src/modules/SX126x/SX126x.cpp @@ -331,7 +331,7 @@ int16_t SX126x::transmitDirect(uint32_t frf) { RADIOLIB_ASSERT(state); // direct mode activation intentionally skipped here, as it seems to lead to much worse results - uint8_t data[] = { RADIOLIB_SX126X_CMD_NOP }; + const uint8_t data[] = { RADIOLIB_SX126X_CMD_NOP }; return(this->mod->SPIwriteStream(RADIOLIB_SX126X_CMD_SET_TX_CONTINUOUS_WAVE, data, 1)); } @@ -473,7 +473,7 @@ int16_t SX126x::standby(uint8_t mode, bool wakeup) { (void)this->mod->SPIwriteStream((uint16_t)RADIOLIB_SX126X_CMD_NOP, NULL, 0, false, false); } - uint8_t data[] = { mode }; + const uint8_t data[] = { mode }; return(this->mod->SPIwriteStream(RADIOLIB_SX126X_CMD_SET_STANDBY, data, 1)); } @@ -672,7 +672,7 @@ int16_t SX126x::startReceiveDutyCycle(uint32_t rxPeriod, uint32_t sleepPeriod, R int16_t state = startReceiveCommon(RADIOLIB_SX126X_RX_TIMEOUT_INF, irqFlags, irqMask); RADIOLIB_ASSERT(state); - uint8_t data[6] = {(uint8_t)((rxPeriodRaw >> 16) & 0xFF), (uint8_t)((rxPeriodRaw >> 8) & 0xFF), (uint8_t)(rxPeriodRaw & 0xFF), + const uint8_t data[6] = {(uint8_t)((rxPeriodRaw >> 16) & 0xFF), (uint8_t)((rxPeriodRaw >> 8) & 0xFF), (uint8_t)(rxPeriodRaw & 0xFF), (uint8_t)((sleepPeriodRaw >> 16) & 0xFF), (uint8_t)((sleepPeriodRaw >> 8) & 0xFF), (uint8_t)(sleepPeriodRaw & 0xFF)}; return(this->mod->SPIwriteStream(RADIOLIB_SX126X_CMD_SET_RX_DUTY_CYCLE, data, 6)); } @@ -1641,8 +1641,8 @@ int16_t SX126x::invertIQ(bool enable) { int16_t SX126x::getModem(ModemType_t* modem) { RADIOLIB_ASSERT_PTR(modem); - uint8_t packetType = getPacketType(); - switch(packetType) { + uint8_t type = getPacketType(); + switch(type) { case(RADIOLIB_SX126X_PACKET_TYPE_LORA): *modem = ModemType_t::RADIOLIB_MODEM_LORA; return(RADIOLIB_ERR_NONE); @@ -1687,7 +1687,8 @@ int16_t SX126x::uploadPatch(const uint32_t* patch, size_t len, bool nonvolatile) for(uint32_t i = 0; i < len / sizeof(uint32_t); i++) { uint32_t bin = 0; if(nonvolatile) { - bin = RADIOLIB_NONVOLATILE_READ_DWORD(patch + i); + uint32_t* ptr = const_cast(patch) + i; + bin = RADIOLIB_NONVOLATILE_READ_DWORD(ptr); } else { bin = patch[i]; } @@ -1726,7 +1727,7 @@ int16_t SX126x::spectralScanStart(uint16_t numSamples, uint8_t window, uint8_t i RADIOLIB_ASSERT(state); // now set the actual spectral scan parameters - uint8_t data[3] = { (uint8_t)((numSamples >> 8) & 0xFF), (uint8_t)(numSamples & 0xFF), interval }; + const uint8_t data[3] = { (uint8_t)((numSamples >> 8) & 0xFF), (uint8_t)(numSamples & 0xFF), interval }; return(this->mod->SPIwriteStream(RADIOLIB_SX126X_CMD_SET_SPECTR_SCAN_PARAMS, data, 3)); } @@ -1822,12 +1823,12 @@ int16_t SX126x::setFs() { } int16_t SX126x::setTx(uint32_t timeout) { - uint8_t data[] = { (uint8_t)((timeout >> 16) & 0xFF), (uint8_t)((timeout >> 8) & 0xFF), (uint8_t)(timeout & 0xFF)} ; + const uint8_t data[] = { (uint8_t)((timeout >> 16) & 0xFF), (uint8_t)((timeout >> 8) & 0xFF), (uint8_t)(timeout & 0xFF)} ; return(this->mod->SPIwriteStream(RADIOLIB_SX126X_CMD_SET_TX, data, 3)); } int16_t SX126x::setRx(uint32_t timeout) { - uint8_t data[] = { (uint8_t)((timeout >> 16) & 0xFF), (uint8_t)((timeout >> 8) & 0xFF), (uint8_t)(timeout & 0xFF) }; + const uint8_t data[] = { (uint8_t)((timeout >> 16) & 0xFF), (uint8_t)((timeout >> 8) & 0xFF), (uint8_t)(timeout & 0xFF) }; return(this->mod->SPIwriteStream(RADIOLIB_SX126X_CMD_SET_RX, data, 3, true, false)); } @@ -1879,11 +1880,11 @@ int16_t SX126x::setCad(uint8_t symbolNum, uint8_t detPeak, uint8_t detMin, uint8 } int16_t SX126x::setPaConfig(uint8_t paDutyCycle, uint8_t deviceSel, uint8_t hpMax, uint8_t paLut) { - uint8_t data[] = { paDutyCycle, hpMax, deviceSel, paLut }; + const uint8_t data[] = { paDutyCycle, hpMax, deviceSel, paLut }; return(this->mod->SPIwriteStream(RADIOLIB_SX126X_CMD_SET_PA_CONFIG, data, 4)); } -int16_t SX126x::writeRegister(uint16_t addr, uint8_t* data, uint8_t numBytes) { +int16_t SX126x::writeRegister(uint16_t addr, const uint8_t* data, uint8_t numBytes) { this->mod->SPIwriteRegisterBurst(addr, data, numBytes); return(RADIOLIB_ERR_NONE); } @@ -1897,18 +1898,18 @@ int16_t SX126x::readRegister(uint16_t addr, uint8_t* data, uint8_t numBytes) { return(state); } -int16_t SX126x::writeBuffer(uint8_t* data, uint8_t numBytes, uint8_t offset) { - uint8_t cmd[] = { RADIOLIB_SX126X_CMD_WRITE_BUFFER, offset }; +int16_t SX126x::writeBuffer(const uint8_t* data, uint8_t numBytes, uint8_t offset) { + const uint8_t cmd[] = { RADIOLIB_SX126X_CMD_WRITE_BUFFER, offset }; return(this->mod->SPIwriteStream(cmd, 2, data, numBytes)); } int16_t SX126x::readBuffer(uint8_t* data, uint8_t numBytes, uint8_t offset) { - uint8_t cmd[] = { RADIOLIB_SX126X_CMD_READ_BUFFER, offset }; + const uint8_t cmd[] = { RADIOLIB_SX126X_CMD_READ_BUFFER, offset }; return(this->mod->SPIreadStream(cmd, 2, data, numBytes)); } int16_t SX126x::setDioIrqParams(uint16_t irqMask, uint16_t dio1Mask, uint16_t dio2Mask, uint16_t dio3Mask) { - uint8_t data[8] = {(uint8_t)((irqMask >> 8) & 0xFF), (uint8_t)(irqMask & 0xFF), + const uint8_t data[8] = {(uint8_t)((irqMask >> 8) & 0xFF), (uint8_t)(irqMask & 0xFF), (uint8_t)((dio1Mask >> 8) & 0xFF), (uint8_t)(dio1Mask & 0xFF), (uint8_t)((dio2Mask >> 8) & 0xFF), (uint8_t)(dio2Mask & 0xFF), (uint8_t)((dio3Mask >> 8) & 0xFF), (uint8_t)(dio3Mask & 0xFF)}; @@ -1916,12 +1917,12 @@ int16_t SX126x::setDioIrqParams(uint16_t irqMask, uint16_t dio1Mask, uint16_t di } int16_t SX126x::clearIrqStatus(uint16_t clearIrqParams) { - uint8_t data[] = { (uint8_t)((clearIrqParams >> 8) & 0xFF), (uint8_t)(clearIrqParams & 0xFF) }; + const uint8_t data[] = { (uint8_t)((clearIrqParams >> 8) & 0xFF), (uint8_t)(clearIrqParams & 0xFF) }; return(this->mod->SPIwriteStream(RADIOLIB_SX126X_CMD_CLEAR_IRQ_STATUS, data, 2)); } int16_t SX126x::setRfFrequency(uint32_t frf) { - uint8_t data[] = { (uint8_t)((frf >> 24) & 0xFF), (uint8_t)((frf >> 16) & 0xFF), (uint8_t)((frf >> 8) & 0xFF), (uint8_t)(frf & 0xFF) }; + const uint8_t data[] = { (uint8_t)((frf >> 24) & 0xFF), (uint8_t)((frf >> 16) & 0xFF), (uint8_t)((frf >> 8) & 0xFF), (uint8_t)(frf & 0xFF) }; return(this->mod->SPIwriteStream(RADIOLIB_SX126X_CMD_SET_RF_FREQUENCY, data, 4)); } @@ -1974,7 +1975,7 @@ int16_t SX126x::setPaRampTime(uint8_t rampTime) { return(this->setTxParams(this->pwr, rampTime)); } -int16_t SX126x::calibrateImage(uint8_t* data) { +int16_t SX126x::calibrateImage(const uint8_t* data) { int16_t state = this->mod->SPIwriteStream(RADIOLIB_SX126X_CMD_CALIBRATE_IMAGE, data, 2); // if something failed, show the device errors @@ -1996,7 +1997,7 @@ uint8_t SX126x::getPacketType() { } int16_t SX126x::setTxParams(uint8_t pwr, uint8_t rampTime) { - uint8_t data[] = { pwr, rampTime }; + const uint8_t data[] = { pwr, rampTime }; int16_t state = this->mod->SPIwriteStream(RADIOLIB_SX126X_CMD_SET_TX_PARAMS, data, 2); if(state == RADIOLIB_ERR_NONE) { this->pwr = pwr; @@ -2050,12 +2051,12 @@ int16_t SX126x::setModulationParams(uint8_t sf, uint8_t bw, uint8_t cr, uint8_t } // 500/9/8 - 0x09 0x04 0x03 0x00 - SF9, BW125, 4/8 // 500/11/8 - 0x0B 0x04 0x03 0x00 - SF11 BW125, 4/7 - uint8_t data[4] = {sf, bw, cr, this->ldrOptimize}; + const uint8_t data[4] = {sf, bw, cr, this->ldrOptimize}; return(this->mod->SPIwriteStream(RADIOLIB_SX126X_CMD_SET_MODULATION_PARAMS, data, 4)); } int16_t SX126x::setModulationParamsFSK(uint32_t br, uint8_t sh, uint8_t rxBw, uint32_t freqDev) { - uint8_t data[8] = {(uint8_t)((br >> 16) & 0xFF), (uint8_t)((br >> 8) & 0xFF), (uint8_t)(br & 0xFF), + const uint8_t data[8] = {(uint8_t)((br >> 16) & 0xFF), (uint8_t)((br >> 8) & 0xFF), (uint8_t)(br & 0xFF), sh, rxBw, (uint8_t)((freqDev >> 16) & 0xFF), (uint8_t)((freqDev >> 8) & 0xFF), (uint8_t)(freqDev & 0xFF)}; return(this->mod->SPIwriteStream(RADIOLIB_SX126X_CMD_SET_MODULATION_PARAMS, data, 8)); @@ -2064,24 +2065,24 @@ int16_t SX126x::setModulationParamsFSK(uint32_t br, uint8_t sh, uint8_t rxBw, ui int16_t SX126x::setPacketParams(uint16_t preambleLen, uint8_t crcType, uint8_t payloadLen, uint8_t hdrType, uint8_t invertIQ) { int16_t state = fixInvertedIQ(invertIQ); RADIOLIB_ASSERT(state); - uint8_t data[6] = {(uint8_t)((preambleLen >> 8) & 0xFF), (uint8_t)(preambleLen & 0xFF), hdrType, payloadLen, crcType, invertIQ}; + const uint8_t data[6] = {(uint8_t)((preambleLen >> 8) & 0xFF), (uint8_t)(preambleLen & 0xFF), hdrType, payloadLen, crcType, invertIQ}; return(this->mod->SPIwriteStream(RADIOLIB_SX126X_CMD_SET_PACKET_PARAMS, data, 6)); } int16_t SX126x::setPacketParamsFSK(uint16_t preambleLen, uint8_t preambleDetectorLen, uint8_t crcType, uint8_t syncWordLen, uint8_t addrCmp, uint8_t whiten, uint8_t packType, uint8_t payloadLen) { - uint8_t data[9] = {(uint8_t)((preambleLen >> 8) & 0xFF), (uint8_t)(preambleLen & 0xFF), + const uint8_t data[9] = {(uint8_t)((preambleLen >> 8) & 0xFF), (uint8_t)(preambleLen & 0xFF), preambleDetectorLen, syncWordLen, addrCmp, packType, payloadLen, crcType, whiten}; return(this->mod->SPIwriteStream(RADIOLIB_SX126X_CMD_SET_PACKET_PARAMS, data, 9)); } int16_t SX126x::setBufferBaseAddress(uint8_t txBaseAddress, uint8_t rxBaseAddress) { - uint8_t data[2] = {txBaseAddress, rxBaseAddress}; + const uint8_t data[2] = {txBaseAddress, rxBaseAddress}; return(this->mod->SPIwriteStream(RADIOLIB_SX126X_CMD_SET_BUFFER_BASE_ADDRESS, data, 2)); } int16_t SX126x::setRegulatorMode(uint8_t mode) { - uint8_t data[1] = {mode}; + const uint8_t data[1] = {mode}; return(this->mod->SPIwriteStream(RADIOLIB_SX126X_CMD_SET_REGULATOR_MODE, data, 1)); } @@ -2105,7 +2106,7 @@ uint16_t SX126x::getDeviceErrors() { } int16_t SX126x::clearDeviceErrors() { - uint8_t data[2] = {RADIOLIB_SX126X_CMD_NOP, RADIOLIB_SX126X_CMD_NOP}; + const uint8_t data[2] = {RADIOLIB_SX126X_CMD_NOP, RADIOLIB_SX126X_CMD_NOP}; return(this->mod->SPIwriteStream(RADIOLIB_SX126X_CMD_CLEAR_DEVICE_ERRORS, data, 2)); } diff --git a/src/modules/SX126x/SX126x.h b/src/modules/SX126x/SX126x.h index 275faee3..e37265b0 100644 --- a/src/modules/SX126x/SX126x.h +++ b/src/modules/SX126x/SX126x.h @@ -634,12 +634,12 @@ class SX126x: public PhysicalLayer { \brief Sets interrupt service routine to call when DIO1 activates. \param func ISR to call. */ - void setDio1Action(void (*func)(void)); + virtual void setDio1Action(void (*func)(void)); /*! \brief Clears interrupt service routine to call when DIO1 activates. */ - void clearDio1Action(); + virtual void clearDio1Action(); /*! \brief Sets interrupt service routine to call when a packet is received. @@ -1238,14 +1238,14 @@ class SX126x: public PhysicalLayer { int16_t setTx(uint32_t timeout = 0); int16_t setRx(uint32_t timeout); int16_t setCad(uint8_t symbolNum, uint8_t detPeak, uint8_t detMin, uint8_t exitMode, RadioLibTime_t timeout); - int16_t writeRegister(uint16_t addr, uint8_t* data, uint8_t numBytes); + int16_t writeRegister(uint16_t addr, const uint8_t* data, uint8_t numBytes); int16_t readRegister(uint16_t addr, uint8_t* data, uint8_t numBytes); - int16_t writeBuffer(uint8_t* data, uint8_t numBytes, uint8_t offset = 0x00); + int16_t writeBuffer(const uint8_t* data, uint8_t numBytes, uint8_t offset = 0x00); int16_t readBuffer(uint8_t* data, uint8_t numBytes, uint8_t offset = 0x00); int16_t setDioIrqParams(uint16_t irqMask, uint16_t dio1Mask, uint16_t dio2Mask = RADIOLIB_SX126X_IRQ_NONE, uint16_t dio3Mask = RADIOLIB_SX126X_IRQ_NONE); virtual int16_t clearIrqStatus(uint16_t clearIrqParams = RADIOLIB_SX126X_IRQ_ALL); int16_t setRfFrequency(uint32_t frf); - int16_t calibrateImage(uint8_t* data); + int16_t calibrateImage(const uint8_t* data); uint8_t getPacketType(); int16_t setTxParams(uint8_t power, uint8_t rampTime); int16_t setModulationParams(uint8_t sf, uint8_t bw, uint8_t cr, uint8_t ldro); diff --git a/src/modules/SX126x/SX126x_LR_FHSS.cpp b/src/modules/SX126x/SX126x_LR_FHSS.cpp index 0f491f91..42c071af 100644 --- a/src/modules/SX126x/SX126x_LR_FHSS.cpp +++ b/src/modules/SX126x/SX126x_LR_FHSS.cpp @@ -87,7 +87,7 @@ int16_t SX126x::buildLRFHSSPacket(const uint8_t* in, size_t in_len, uint8_t* out // for rates other than the 1/3 base, puncture the code if(this->lrFhssCr != RADIOLIB_SX126X_LR_FHSS_CR_1_3) { uint32_t matrix_index = 0; - uint8_t matrix[15] = { 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0 }; + const uint8_t matrix[15] = { 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0 }; uint8_t matrix_len = 0; switch(this->lrFhssCr) { case RADIOLIB_SX126X_LR_FHSS_CR_5_6: @@ -364,7 +364,7 @@ int16_t SX126x::setLRFHSSHop(uint8_t index) { } } - uint8_t frq[4] = { (uint8_t)((freq_raw >> 24) & 0xFF), (uint8_t)((freq_raw >> 16) & 0xFF), (uint8_t)((freq_raw >> 8) & 0xFF), (uint8_t)(freq_raw & 0xFF) }; + const uint8_t frq[4] = { (uint8_t)((freq_raw >> 24) & 0xFF), (uint8_t)((freq_raw >> 16) & 0xFF), (uint8_t)((freq_raw >> 8) & 0xFF), (uint8_t)(freq_raw & 0xFF) }; int16_t state = writeRegister(RADIOLIB_SX126X_REG_LR_FHSS_FREQX_0(index), frq, sizeof(freq_raw)); RADIOLIB_ASSERT(state); @@ -380,7 +380,7 @@ int16_t SX126x::setLRFHSSHop(uint8_t index) { } // write hop length in symbols - uint8_t sym[2] = { (uint8_t)((numSymbols >> 8) & 0xFF), (uint8_t)(numSymbols & 0xFF) }; + const uint8_t sym[2] = { (uint8_t)((numSymbols >> 8) & 0xFF), (uint8_t)(numSymbols & 0xFF) }; state = writeRegister(RADIOLIB_SX126X_REG_LR_FHSS_NUM_SYMBOLS_FREQX_MSB(index), sym, sizeof(uint16_t)); RADIOLIB_ASSERT(state);