From fc695540b00cf944566e30cb8cbfd280f57658a9 Mon Sep 17 00:00:00 2001 From: jgromes Date: Sat, 26 Oct 2024 08:48:22 +0100 Subject: [PATCH] [SX126x] Implement getModem --- src/modules/SX126x/SX126x.cpp | 21 +++++++++++++++++++++ src/modules/SX126x/SX126x.h | 7 +++++++ 2 files changed, 28 insertions(+) diff --git a/src/modules/SX126x/SX126x.cpp b/src/modules/SX126x/SX126x.cpp index 9c17cfed..135ed05c 100644 --- a/src/modules/SX126x/SX126x.cpp +++ b/src/modules/SX126x/SX126x.cpp @@ -1662,6 +1662,27 @@ int16_t SX126x::invertIQ(bool enable) { return(setPacketParams(this->preambleLengthLoRa, this->crcTypeLoRa, this->implicitLen, this->headerType, this->invertIQEnabled)); } +int16_t SX126x::getModem(ModemType_t* modem) { + if(!modem) { + return(RADIOLIB_ERR_MEMORY_ALLOCATION_FAILED); + } + + uint8_t packetType = getPacketType(); + switch(packetType) { + case(RADIOLIB_SX126X_PACKET_TYPE_LORA): + *modem = ModemType_t::LoRa; + return(RADIOLIB_ERR_NONE); + case(RADIOLIB_SX126X_PACKET_TYPE_GFSK): + *modem = ModemType_t::FSK; + return(RADIOLIB_ERR_NONE); + case(RADIOLIB_SX126X_PACKET_TYPE_LR_FHSS): + *modem = ModemType_t::LRFHSS; + return(RADIOLIB_ERR_NONE); + } + + return(RADIOLIB_ERR_WRONG_MODEM); +} + #if !RADIOLIB_EXCLUDE_DIRECT_RECEIVE void SX126x::setDirectAction(void (*func)(void)) { setDio1Action(func); diff --git a/src/modules/SX126x/SX126x.h b/src/modules/SX126x/SX126x.h index 766e0208..8a0348c3 100644 --- a/src/modules/SX126x/SX126x.h +++ b/src/modules/SX126x/SX126x.h @@ -1123,6 +1123,13 @@ class SX126x: public PhysicalLayer { */ int16_t invertIQ(bool enable) override; + /*! + \brief Get modem currently in use by the radio. + \param modem Pointer to a variable to save the retrieved configuration into. + \returns \ref status_codes + */ + int16_t getModem(ModemType_t* modem) override; + #if !RADIOLIB_EXCLUDE_DIRECT_RECEIVE /*! \brief Set interrupt service routine function to call when data bit is received in direct mode.