From 3779faf6007fdc29d296aa0dad671cb33b4c3c9a Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Mon, 9 Jan 2023 09:40:27 +0100 Subject: [PATCH] Add setRfSwitchTable() wrapper methods This gives all radios that use an rfswitch (i.e. have a setRfSwitchPins() wrapper already) a wrapper method for setRfSwitchTable() too. This wrapper just calls the same method on Module, to make it easier for sketches to use it. --- src/modules/CC1101/CC1101.cpp | 4 ++++ src/modules/CC1101/CC1101.h | 3 +++ src/modules/RF69/RF69.cpp | 4 ++++ src/modules/RF69/RF69.h | 3 +++ src/modules/SX126x/SX126x.cpp | 4 ++++ src/modules/SX126x/SX126x.h | 3 +++ src/modules/SX127x/SX127x.cpp | 4 ++++ src/modules/SX127x/SX127x.h | 3 +++ src/modules/SX128x/SX128x.cpp | 4 ++++ src/modules/SX128x/SX128x.h | 3 +++ src/modules/Si443x/Si443x.cpp | 4 ++++ src/modules/Si443x/Si443x.h | 3 +++ 12 files changed, 42 insertions(+) diff --git a/src/modules/CC1101/CC1101.cpp b/src/modules/CC1101/CC1101.cpp index f943a470..b3cb622c 100644 --- a/src/modules/CC1101/CC1101.cpp +++ b/src/modules/CC1101/CC1101.cpp @@ -902,6 +902,10 @@ void CC1101::setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn) { _mod->setRfSwitchPins(rxEn, txEn); } +void CC1101::setRfSwitchTable(const RADIOLIB_PIN_TYPE (&pins)[Module::RFSWITCH_MAX_PINS], const Module::RfSwitchMode_t table[]) { + _mod->setRfSwitchTable(pins, table); +} + uint8_t CC1101::randomByte() { // set mode to Rx SPIsendCommand(RADIOLIB_CC1101_CMD_RX); diff --git a/src/modules/CC1101/CC1101.h b/src/modules/CC1101/CC1101.h index 558519c2..eb12b0be 100644 --- a/src/modules/CC1101/CC1101.h +++ b/src/modules/CC1101/CC1101.h @@ -931,6 +931,9 @@ class CC1101: public PhysicalLayer { /*! \copydoc Module::setRfSwitchPins */ void setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn); + /*! \copydoc Module::setRfSwitchTable */ + void setRfSwitchTable(const RADIOLIB_PIN_TYPE (&pins)[Module::RFSWITCH_MAX_PINS], const Module::RfSwitchMode_t table[]); + /*! \brief Get one truly random byte from RSSI noise. diff --git a/src/modules/RF69/RF69.cpp b/src/modules/RF69/RF69.cpp index ec1f3c42..b1ef42e3 100644 --- a/src/modules/RF69/RF69.cpp +++ b/src/modules/RF69/RF69.cpp @@ -916,6 +916,10 @@ void RF69::setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn) { _mod->setRfSwitchPins(rxEn, txEn); } +void RF69::setRfSwitchTable(const RADIOLIB_PIN_TYPE (&pins)[Module::RFSWITCH_MAX_PINS], const Module::RfSwitchMode_t table[]) { + _mod->setRfSwitchTable(pins, table); +} + uint8_t RF69::randomByte() { // set mode to Rx setMode(RADIOLIB_RF69_RX); diff --git a/src/modules/RF69/RF69.h b/src/modules/RF69/RF69.h index e799b716..d4767329 100644 --- a/src/modules/RF69/RF69.h +++ b/src/modules/RF69/RF69.h @@ -1013,6 +1013,9 @@ class RF69: public PhysicalLayer { /*! \copydoc Module::setRfSwitchPins */ void setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn); + /*! \copydoc Module::setRfSwitchTable */ + void setRfSwitchTable(const RADIOLIB_PIN_TYPE (&pins)[Module::RFSWITCH_MAX_PINS], const Module::RfSwitchMode_t table[]); + /*! \brief Get one truly random byte from RSSI noise. diff --git a/src/modules/SX126x/SX126x.cpp b/src/modules/SX126x/SX126x.cpp index f5de00b3..8d9f67aa 100644 --- a/src/modules/SX126x/SX126x.cpp +++ b/src/modules/SX126x/SX126x.cpp @@ -1199,6 +1199,10 @@ void SX126x::setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn) { _mod->setRfSwitchPins(rxEn, txEn); } +void SX126x::setRfSwitchTable(const RADIOLIB_PIN_TYPE (&pins)[Module::RFSWITCH_MAX_PINS], const Module::RfSwitchMode_t table[]) { + _mod->setRfSwitchTable(pins, table); +} + int16_t SX126x::forceLDRO(bool enable) { // check active modem if(getPacketType() != RADIOLIB_SX126X_PACKET_TYPE_LORA) { diff --git a/src/modules/SX126x/SX126x.h b/src/modules/SX126x/SX126x.h index 0c8d1756..47a9cb37 100644 --- a/src/modules/SX126x/SX126x.h +++ b/src/modules/SX126x/SX126x.h @@ -917,6 +917,9 @@ class SX126x: public PhysicalLayer { /*! \copydoc Module::setRfSwitchPins */ void setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn); + /*! \copydoc Module::setRfSwitchTable */ + void setRfSwitchTable(const RADIOLIB_PIN_TYPE (&pins)[Module::RFSWITCH_MAX_PINS], const Module::RfSwitchMode_t table[]); + /*! \brief Forces LoRa low data rate optimization. Only available in LoRa mode. After calling this method, LDRO will always be set to the provided value, regardless of symbol length. To re-enable automatic LDRO configuration, call SX126x::autoLDRO() diff --git a/src/modules/SX127x/SX127x.cpp b/src/modules/SX127x/SX127x.cpp index 9930841e..6d1b77e4 100644 --- a/src/modules/SX127x/SX127x.cpp +++ b/src/modules/SX127x/SX127x.cpp @@ -1258,6 +1258,10 @@ void SX127x::setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn) { _mod->setRfSwitchPins(rxEn, txEn); } +void SX127x::setRfSwitchTable(const RADIOLIB_PIN_TYPE (&pins)[Module::RFSWITCH_MAX_PINS], const Module::RfSwitchMode_t table[]) { + _mod->setRfSwitchTable(pins, table); +} + uint8_t SX127x::randomByte() { // check active modem uint8_t rssiValueReg = RADIOLIB_SX127X_REG_RSSI_WIDEBAND; diff --git a/src/modules/SX127x/SX127x.h b/src/modules/SX127x/SX127x.h index 4d68a2fa..e7502c15 100644 --- a/src/modules/SX127x/SX127x.h +++ b/src/modules/SX127x/SX127x.h @@ -1144,6 +1144,9 @@ class SX127x: public PhysicalLayer { /*! \copydoc Module::setRfSwitchPins */ void setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn); + /*! \copydoc Module::setRfSwitchTable */ + void setRfSwitchTable(const RADIOLIB_PIN_TYPE (&pins)[Module::RFSWITCH_MAX_PINS], const Module::RfSwitchMode_t table[]); + /*! \brief Get one truly random byte from RSSI noise. diff --git a/src/modules/SX128x/SX128x.cpp b/src/modules/SX128x/SX128x.cpp index 32a2970e..14313759 100644 --- a/src/modules/SX128x/SX128x.cpp +++ b/src/modules/SX128x/SX128x.cpp @@ -1243,6 +1243,10 @@ void SX128x::setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn) { _mod->setRfSwitchPins(rxEn, txEn); } +void SX128x::setRfSwitchTable(const RADIOLIB_PIN_TYPE (&pins)[Module::RFSWITCH_MAX_PINS], const Module::RfSwitchMode_t table[]) { + _mod->setRfSwitchTable(pins, table); +} + uint8_t SX128x::randomByte() { // it's unclear whether SX128x can measure RSSI while not receiving a packet // this method is implemented only for PhysicalLayer compatibility diff --git a/src/modules/SX128x/SX128x.h b/src/modules/SX128x/SX128x.h index 854ef06a..98bd7252 100644 --- a/src/modules/SX128x/SX128x.h +++ b/src/modules/SX128x/SX128x.h @@ -812,6 +812,9 @@ class SX128x: public PhysicalLayer { /*! \copydoc Module::setRfSwitchPins */ void setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn); + /*! \copydoc Module::setRfSwitchTable */ + void setRfSwitchTable(const RADIOLIB_PIN_TYPE (&pins)[Module::RFSWITCH_MAX_PINS], const Module::RfSwitchMode_t table[]); + /*! \brief Dummy random method, to ensure PhysicalLayer compatibility. diff --git a/src/modules/Si443x/Si443x.cpp b/src/modules/Si443x/Si443x.cpp index f7e81576..7cfca65b 100644 --- a/src/modules/Si443x/Si443x.cpp +++ b/src/modules/Si443x/Si443x.cpp @@ -568,6 +568,10 @@ void Si443x::setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn) { _mod->setRfSwitchPins(rxEn, txEn); } +void Si443x::setRfSwitchTable(const RADIOLIB_PIN_TYPE (&pins)[Module::RFSWITCH_MAX_PINS], const Module::RfSwitchMode_t table[]) { + _mod->setRfSwitchTable(pins, table); +} + uint8_t Si443x::randomByte() { // set mode to Rx _mod->SPIwriteRegister(RADIOLIB_SI443X_REG_OP_FUNC_CONTROL_1, RADIOLIB_SI443X_RX_ON | RADIOLIB_SI443X_XTAL_ON); diff --git a/src/modules/Si443x/Si443x.h b/src/modules/Si443x/Si443x.h index e3218c68..6945e510 100644 --- a/src/modules/Si443x/Si443x.h +++ b/src/modules/Si443x/Si443x.h @@ -788,6 +788,9 @@ class Si443x: public PhysicalLayer { /*! \copydoc Module::setRfSwitchPins */ void setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn); + /*! \copydoc Module::setRfSwitchTable */ + void setRfSwitchTable(const RADIOLIB_PIN_TYPE (&pins)[Module::RFSWITCH_MAX_PINS], const Module::RfSwitchMode_t table[]); + /*! \brief Get one truly random byte from RSSI noise.