diff --git a/_s_x1272_8h_source.html b/_s_x1272_8h_source.html
index 84460ac3..3628808c 100644
--- a/_s_x1272_8h_source.html
+++ b/_s_x1272_8h_source.html
@@ -220,78 +220,78 @@ $(document).ready(function(){initNavTree('_s_x1272_8h_source.html',''); initResi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 265 float getRSSI (
bool packet,
bool skipReceive =
false );
-
- 275 int16_t
setCRC (
bool enable,
bool mode =
false );
-
-
-
-
-
-
-
-
-
- 311 int16_t
setModem (ModemType_t modem)
override ;
-
-
-
-
- 316 int16_t setBandwidthRaw(uint8_t newBandwidth);
- 317 int16_t setSpreadingFactorRaw(uint8_t newSpreadingFactor);
- 318 int16_t setCodingRateRaw(uint8_t newCodingRate);
-
- 320 int16_t configFSK()
override ;
- 321 void errataFix(
bool rx)
override ;
-
-
-
-
- 326 bool ldroAuto =
true ;
- 327 bool ldroEnabled =
false ;
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 266 float getRSSI (
bool packet,
bool skipReceive =
false );
+
+ 276 int16_t
setCRC (
bool enable,
bool mode =
false );
+
+
+
+
+
+
+
+
+
+ 312 int16_t
setModem (ModemType_t modem)
override ;
+
+
+
+
+ 317 int16_t setBandwidthRaw(uint8_t newBandwidth);
+ 318 int16_t setSpreadingFactorRaw(uint8_t newSpreadingFactor);
+ 319 int16_t setCodingRateRaw(uint8_t newCodingRate);
+
+ 321 int16_t configFSK()
override ;
+ 322 void errataFix(
bool rx)
override ;
+
+
+
+
+ 327 bool ldroAuto =
true ;
+ 328 bool ldroEnabled =
false ;
+
+
-
-
-
-
+
+
+
+
Implements all common low-level methods to control the wireless module. Every module class contains o...
Definition Module.h:73
Derived class for SX1272 modules. Also used as base class for SX1273. Both modules use the same basic...
Definition SX1272.h:94
void reset() override
Reset method. Will reset the chip to the default state using RST pin.
Definition SX1272.cpp:76
int16_t setBandwidth(float bw)
Sets LoRa link bandwidth. Allowed values are 125, 250 and 500 kHz. Only available in LoRa mode.
Definition SX1272.cpp:96
-int16_t checkOutputPower(int8_t power, int8_t *clipped) override
Check if output power is configurable. This method is needed for compatibility with PhysicalLayer::ch...
Definition SX1272.cpp:317
+int16_t checkOutputPower(int8_t power, int8_t *clipped) override
Check if output power is configurable. This method is needed for compatibility with PhysicalLayer::ch...
Definition SX1272.cpp:318
int16_t checkDataRate(DataRate_t dr) override
Check the data rate can be configured by this module.
Definition SX1272.cpp:255
-int16_t setModem(ModemType_t modem) override
Set modem for the radio to use. Will perform full reset and reconfigure the radio using its default p...
Definition SX1272.cpp:571
-int16_t setDataShapingOOK(uint8_t sh)
Sets filter cutoff frequency that will be used for data shaping. Allowed values are 1 for frequency e...
Definition SX1272.cpp:405
-int16_t forceLDRO(bool enable)
Forces LoRa low data rate optimization. Only available in LoRa mode. After calling this method,...
Definition SX1272.cpp:476
-int16_t implicitHeader(size_t len)
Set implicit header mode for future reception/transmission. Required for spreading factor 6.
Definition SX1272.cpp:499
-float getRSSI() override
Gets recorded signal strength indicator. Overload with packet mode enabled for PhysicalLayer compatib...
Definition SX1272.cpp:439
+int16_t setModem(ModemType_t modem) override
Set modem for the radio to use. Will perform full reset and reconfigure the radio using its default p...
Definition SX1272.cpp:572
+int16_t setDataShapingOOK(uint8_t sh)
Sets filter cutoff frequency that will be used for data shaping. Allowed values are 1 for frequency e...
Definition SX1272.cpp:406
+int16_t forceLDRO(bool enable)
Forces LoRa low data rate optimization. Only available in LoRa mode. After calling this method,...
Definition SX1272.cpp:477
+int16_t implicitHeader(size_t len)
Set implicit header mode for future reception/transmission. Required for spreading factor 6.
Definition SX1272.cpp:500
+float getRSSI() override
Gets recorded signal strength indicator. Overload with packet mode enabled for PhysicalLayer compatib...
Definition SX1272.cpp:440
int16_t setDataRate(DataRate_t dr) override
Set data.
Definition SX1272.cpp:226
virtual int16_t setSpreadingFactor(uint8_t sf)
Sets LoRa link spreading factor. Allowed values range from 6 to 12. Only available in LoRa mode.
Definition SX1272.cpp:134
int16_t beginFSK(float freq=915.0, float br=4.8, float freqDev=5.0, float rxBw=125.0, int8_t power=10, uint16_t preambleLength=16, bool enableOOK=false)
FSK modem initialization method. Must be called at least once from Arduino sketch to initialize the m...
Definition SX1272.cpp:41
-int16_t setDataShaping(uint8_t sh) override
Sets Gaussian filter bandwidth-time product that will be used for data shaping. Only available in FSK...
Definition SX1272.cpp:374
+int16_t setDataShaping(uint8_t sh) override
Sets Gaussian filter bandwidth-time product that will be used for data shaping. Only available in FSK...
Definition SX1272.cpp:375
int16_t setCodingRate(uint8_t cr)
Sets LoRa link coding rate denominator. Allowed values range from 5 to 8. Only available in LoRa mode...
Definition SX1272.cpp:188
int16_t setBitRate(float br) override
Sets FSK bit rate. Allowed values range from 0.5 to 300 kbps. Only available in FSK mode.
Definition SX1272.cpp:222
-int16_t autoLDRO()
Re-enables automatic LDRO configuration. Only available in LoRa mode. After calling this method,...
Definition SX1272.cpp:490
-int16_t setCRC(bool enable, bool mode=false)
Enables/disables CRC check of received packets.
Definition SX1272.cpp:447
+int16_t autoLDRO()
Re-enables automatic LDRO configuration. Only available in LoRa mode. After calling this method,...
Definition SX1272.cpp:491
+int16_t setCRC(bool enable, bool mode=false)
Enables/disables CRC check of received packets.
Definition SX1272.cpp:448
int16_t setFrequency(float freq) override
Sets carrier frequency. Allowed values range from 860.0 MHz to 1020.0 MHz.
Definition SX1272.cpp:85
-int16_t setGain(uint8_t gain)
Sets gain of receiver LNA (low-noise amplifier). Can be set to any integer in range 1 to 6 where 1 is...
Definition SX1272.cpp:337
-int16_t explicitHeader()
Set explicit header mode for future reception/transmission.
Definition SX1272.cpp:504
+int16_t setGain(uint8_t gain)
Sets gain of receiver LNA (low-noise amplifier). Can be set to any integer in range 1 to 6 where 1 is...
Definition SX1272.cpp:338
+int16_t explicitHeader()
Set explicit header mode for future reception/transmission.
Definition SX1272.cpp:505
virtual int16_t begin(float freq=915.0, float bw=125.0, uint8_t sf=9, uint8_t cr=7, uint8_t syncWord=RADIOLIB_SX127X_SYNC_WORD, int8_t power=10, uint16_t preambleLength=8, uint8_t gain=0)
LoRa modem initialization method. Must be called at least once from Arduino sketch to initialize the ...
Definition SX1272.cpp:9
int16_t setOutputPower(int8_t power) override
Sets transmission output power. Allowed values range from -1 to 14 dBm (RFO pin) or +2 to +20 dBm (PA...
Definition SX1272.cpp:278
Base class for SX127x series. All derived classes for SX127x (e.g. SX1278 or SX1272) inherit from thi...
Definition SX127x.h:583
diff --git a/_s_x1278_8h_source.html b/_s_x1278_8h_source.html
index bd8e2288..5997f22a 100644
--- a/_s_x1278_8h_source.html
+++ b/_s_x1278_8h_source.html
@@ -231,82 +231,82 @@ $(document).ready(function(){initNavTree('_s_x1278_8h_source.html',''); initResi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 277 float getRSSI (
bool packet,
bool skipReceive =
false );
-
- 286 int16_t
setCRC (
bool enable,
bool mode =
false );
-
-
-
-
-
-
-
-
-
- 323 int16_t
setModem (ModemType_t modem)
override ;
-
-
-
-
- 328 int16_t setBandwidthRaw(uint8_t newBandwidth);
- 329 int16_t setSpreadingFactorRaw(uint8_t newSpreadingFactor);
- 330 int16_t setCodingRateRaw(uint8_t newCodingRate);
-
- 332 int16_t configFSK()
override ;
- 333 void errataFix(
bool rx)
override ;
-
-
-
-
- 338 bool ldroAuto =
true ;
- 339 bool ldroEnabled =
false ;
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 278 float getRSSI (
bool packet,
bool skipReceive =
false );
+
+ 287 int16_t
setCRC (
bool enable,
bool mode =
false );
+
+
+
+
+
+
+
+
+
+ 324 int16_t
setModem (ModemType_t modem)
override ;
+
+
+
+
+ 329 int16_t setBandwidthRaw(uint8_t newBandwidth);
+ 330 int16_t setSpreadingFactorRaw(uint8_t newSpreadingFactor);
+ 331 int16_t setCodingRateRaw(uint8_t newCodingRate);
+
+ 333 int16_t configFSK()
override ;
+ 334 void errataFix(
bool rx)
override ;
+
+
+
+
+ 339 bool ldroAuto =
true ;
+ 340 bool ldroEnabled =
false ;
+
+
-
-
-
-
-
-
+
+
+
+
+
+
Implements all common low-level methods to control the wireless module. Every module class contains o...
Definition Module.h:73
Only exists as alias for SX1278, since there seems to be no difference between RFM98 and SX1278 modul...
Derived class for SX1278 modules. Also used as base class for SX1276, SX1277, SX1279,...
Definition SX1278.h:105
-float getRSSI() override
Gets recorded signal strength indicator. Overload with packet mode enabled for PhysicalLayer compatib...
Definition SX1278.cpp:473
-int16_t setDataShapingOOK(uint8_t sh)
Sets filter cutoff frequency that will be used for data shaping. Allowed values are 1 for frequency e...
Definition SX1278.cpp:440
+float getRSSI() override
Gets recorded signal strength indicator. Overload with packet mode enabled for PhysicalLayer compatib...
Definition SX1278.cpp:474
+int16_t setDataShapingOOK(uint8_t sh)
Sets filter cutoff frequency that will be used for data shaping. Allowed values are 1 for frequency e...
Definition SX1278.cpp:441
int16_t setDataRate(DataRate_t dr) override
Set data.
Definition SX1278.cpp:240
int16_t setBandwidth(float bw)
Sets LoRa link bandwidth. Allowed values are 7.8, 10.4, 15.6, 20.8, 31.25, 41.7, 62....
Definition SX1278.cpp:96
-int16_t implicitHeader(size_t len)
Set implicit header mode for future reception/transmission. Required for spreading factor 6.
Definition SX1278.cpp:537
-int16_t setModem(ModemType_t modem) override
Set modem for the radio to use. Will perform full reset and reconfigure the radio using its default p...
Definition SX1278.cpp:691
+int16_t implicitHeader(size_t len)
Set implicit header mode for future reception/transmission. Required for spreading factor 6.
Definition SX1278.cpp:538
+int16_t setModem(ModemType_t modem) override
Set modem for the radio to use. Will perform full reset and reconfigure the radio using its default p...
Definition SX1278.cpp:692
int16_t setOutputPower(int8_t power) override
Sets transmission output power. Allowed values range from -4 to 15 dBm (RFO pin) or +2 to +17 dBm (PA...
Definition SX1278.cpp:292
void reset() override
Reset method. Will reset the chip to the default state using RST pin.
Definition SX1278.cpp:76
-int16_t forceLDRO(bool enable)
Forces LoRa low data rate optimization. Only available in LoRa mode. After calling this method,...
Definition SX1278.cpp:514
-int16_t explicitHeader()
Set explicit header mode for future reception/transmission.
Definition SX1278.cpp:542
+int16_t forceLDRO(bool enable)
Forces LoRa low data rate optimization. Only available in LoRa mode. After calling this method,...
Definition SX1278.cpp:515
+int16_t explicitHeader()
Set explicit header mode for future reception/transmission.
Definition SX1278.cpp:543
int16_t checkDataRate(DataRate_t dr) override
Check the data rate can be configured by this module.
Definition SX1278.cpp:269
int16_t setCodingRate(uint8_t cr)
Sets LoRa link coding rate denominator. Allowed values range from 5 to 8. Only available in LoRa mode...
Definition SX1278.cpp:202
virtual int16_t beginFSK(float freq=434.0, float br=4.8, float freqDev=5.0, float rxBw=125.0, int8_t power=10, uint16_t preambleLength=16, bool enableOOK=false)
FSK modem initialization method. Must be called at least once from Arduino sketch to initialize the m...
Definition SX1278.cpp:41
virtual int16_t begin(float freq=434.0, float bw=125.0, uint8_t sf=9, uint8_t cr=7, uint8_t syncWord=RADIOLIB_SX127X_SYNC_WORD, int8_t power=10, uint16_t preambleLength=8, uint8_t gain=0)
LoRa modem initialization method. Must be called at least once from Arduino sketch to initialize the ...
Definition SX1278.cpp:9
-int16_t setGain(uint8_t gain)
Sets gain of receiver LNA (low-noise amplifier). Can be set to any integer in range 1 to 6 where 1 is...
Definition SX1278.cpp:366
-int16_t checkOutputPower(int8_t power, int8_t *clipped) override
Check if output power is configurable. This method is needed for compatibility with PhysicalLayer::ch...
Definition SX1278.cpp:338
-int16_t setCRC(bool enable, bool mode=false)
Enables/disables CRC check of received packets.
Definition SX1278.cpp:485
+int16_t setGain(uint8_t gain)
Sets gain of receiver LNA (low-noise amplifier). Can be set to any integer in range 1 to 6 where 1 is...
Definition SX1278.cpp:367
+int16_t checkOutputPower(int8_t power, int8_t *clipped) override
Check if output power is configurable. This method is needed for compatibility with PhysicalLayer::ch...
Definition SX1278.cpp:339
+int16_t setCRC(bool enable, bool mode=false)
Enables/disables CRC check of received packets.
Definition SX1278.cpp:486
int16_t setFrequency(float freq) override
Sets carrier frequency. Allowed values range from 137.0 MHz to 525.0 MHz.
Definition SX1278.cpp:85
-int16_t autoLDRO()
Re-enables automatic LDRO configuration. Only available in LoRa mode. After calling this method,...
Definition SX1278.cpp:528
+int16_t autoLDRO()
Re-enables automatic LDRO configuration. Only available in LoRa mode. After calling this method,...
Definition SX1278.cpp:529
virtual int16_t setSpreadingFactor(uint8_t sf)
Sets LoRa link spreading factor. Allowed values range from 6 to 12. Only available in LoRa mode.
Definition SX1278.cpp:148
-int16_t setDataShaping(uint8_t sh) override
Sets Gaussian filter bandwidth-time product that will be used for data shaping. Only available in FSK...
Definition SX1278.cpp:404
+int16_t setDataShaping(uint8_t sh) override
Sets Gaussian filter bandwidth-time product that will be used for data shaping. Only available in FSK...
Definition SX1278.cpp:405
int16_t setBitRate(float br) override
Sets FSK bit rate. Allowed values range from 0.5 to 300 kbps. Only available in FSK mode.
Definition SX1278.cpp:236
Base class for SX127x series. All derived classes for SX127x (e.g. SX1278 or SX1272) inherit from thi...
Definition SX127x.h:583
Common data rate structure.
Definition PhysicalLayer.h:74
diff --git a/class_s_x1272-members.html b/class_s_x1272-members.html
index 6fb1a53e..9d266f1c 100644
--- a/class_s_x1272-members.html
+++ b/class_s_x1272-members.html
@@ -206,7 +206,7 @@ $(document).ready(function(){initNavTree('class_s_x1272.html',''); initResizable
setOokPeakThresholdStep (uint8_t value)SX127x
setOokThresholdType (uint8_t type)SX127x
setOutputPower (int8_t power) overrideSX1272 virtual
- setOutputPower (int8_t power, bool useRfo)SX1272
+ setOutputPower (int8_t power, bool forceRfo)SX1272
setPacketReceivedAction (void(*func)(void)) overrideSX127x virtual
setPacketSentAction (void(*func)(void)) overrideSX127x virtual
setPreambleLength (size_t preambleLength) overrideSX127x virtual
diff --git a/class_s_x1272.html b/class_s_x1272.html
index 84e976a1..43dd4009 100644
--- a/class_s_x1272.html
+++ b/class_s_x1272.html
@@ -151,9 +151,9 @@ Public Member Functions
int16_t setOutputPower (int8_t power) override
Sets transmission output power. Allowed values range from -1 to 14 dBm (RFO pin) or +2 to +20 dBm (PA_BOOST pin). High power +20 dBm operation is also supported, on the PA_BOOST pin. Defaults to PA_BOOST.
-int16_t setOutputPower (int8_t power, bool useRfo)
- Sets transmission output power. Allowed values range from -1 to 14 dBm (RFO pin) or +2 to +20 dBm (PA_BOOST pin).
-
+int16_t setOutputPower (int8_t power, bool forceRfo)
+ Sets transmission output power. Allowed values range from -1 to 14 dBm (RFO pin) or +2 to +20 dBm (PA_BOOST pin).
+
int16_t checkOutputPower (int8_t power, int8_t *clipped) override
Check if output power is configurable. This method is needed for compatibility with PhysicalLayer::checkOutputPower .
@@ -1448,8 +1448,8 @@ size_t maxPacketLength
-
-◆ setOutputPower() [2/2]
+
+◆ setOutputPower() [2/2]
@@ -1464,7 +1464,7 @@ size_t
maxPacketLength
bool
- useRfo
+ forceRfo
@@ -1478,7 +1478,7 @@ size_t maxPacketLength
Parameters
power Transmission output power in dBm.
- useRfo Whether to use the RFO (true) or the PA_BOOST (false) pin for the RF output.
+ forceRfo Whether to force using the RFO pin for the RF output (true) or the lave the selection up to user (false) based on power output.
diff --git a/class_s_x1272.js b/class_s_x1272.js
index 3f900e93..7a92073f 100644
--- a/class_s_x1272.js
+++ b/class_s_x1272.js
@@ -24,6 +24,6 @@ var class_s_x1272 =
[ "setGain", "class_s_x1272.html#ae1c57ad5e8496dc28cd3ba9852809852", null ],
[ "setModem", "class_s_x1272.html#a2c99afea2bb3bbb1146c8a4536b4843c", null ],
[ "setOutputPower", "class_s_x1272.html#aec51f08c0902145ff5f11e27e7cab638", null ],
- [ "setOutputPower", "class_s_x1272.html#a03f7073d710f18aad79b7d46f2fda659", null ],
+ [ "setOutputPower", "class_s_x1272.html#aac001c32a61d4eec0a49c472cac9ebc6", null ],
[ "setSpreadingFactor", "class_s_x1272.html#a82084ac58502c83d2ada998410307490", null ]
];
\ No newline at end of file
diff --git a/class_s_x1273-members.html b/class_s_x1273-members.html
index 59e1c29b..9ea09739 100644
--- a/class_s_x1273-members.html
+++ b/class_s_x1273-members.html
@@ -206,7 +206,7 @@ $(document).ready(function(){initNavTree('class_s_x1273.html',''); initResizable
setOokPeakThresholdStep (uint8_t value)SX127x
setOokThresholdType (uint8_t type)SX127x
setOutputPower (int8_t power) overrideSX1272 virtual
- setOutputPower (int8_t power, bool useRfo)SX1272
+ setOutputPower (int8_t power, bool forceRfo)SX1272
setPacketReceivedAction (void(*func)(void)) overrideSX127x virtual
setPacketSentAction (void(*func)(void)) overrideSX127x virtual
setPreambleLength (size_t preambleLength) overrideSX127x virtual
diff --git a/class_s_x1273.html b/class_s_x1273.html
index 3e36228c..8f99feba 100644
--- a/class_s_x1273.html
+++ b/class_s_x1273.html
@@ -158,9 +158,9 @@ Public Member Functions
int16_t setOutputPower (int8_t power) override
Sets transmission output power. Allowed values range from -1 to 14 dBm (RFO pin) or +2 to +20 dBm (PA_BOOST pin). High power +20 dBm operation is also supported, on the PA_BOOST pin. Defaults to PA_BOOST.
-int16_t setOutputPower (int8_t power, bool useRfo)
- Sets transmission output power. Allowed values range from -1 to 14 dBm (RFO pin) or +2 to +20 dBm (PA_BOOST pin).
-
+int16_t setOutputPower (int8_t power, bool forceRfo)
+ Sets transmission output power. Allowed values range from -1 to 14 dBm (RFO pin) or +2 to +20 dBm (PA_BOOST pin).
+
int16_t checkOutputPower (int8_t power, int8_t *clipped) override
Check if output power is configurable. This method is needed for compatibility with PhysicalLayer::checkOutputPower .
diff --git a/class_s_x1276-members.html b/class_s_x1276-members.html
index 56b3733c..31430e2c 100644
--- a/class_s_x1276-members.html
+++ b/class_s_x1276-members.html
@@ -206,7 +206,7 @@ $(document).ready(function(){initNavTree('class_s_x1276.html',''); initResizable
setOokPeakThresholdStep (uint8_t value)SX127x
setOokThresholdType (uint8_t type)SX127x
setOutputPower (int8_t power) overrideSX1278 virtual
- setOutputPower (int8_t power, bool useRfo)SX1278
+ setOutputPower (int8_t power, bool forceRfo)SX1278
setPacketReceivedAction (void(*func)(void)) overrideSX127x virtual
setPacketSentAction (void(*func)(void)) overrideSX127x virtual
setPreambleLength (size_t preambleLength) overrideSX127x virtual
diff --git a/class_s_x1276.html b/class_s_x1276.html
index 3a1c644e..f61b04d6 100644
--- a/class_s_x1276.html
+++ b/class_s_x1276.html
@@ -161,9 +161,9 @@ Public Member Functions
int16_t setOutputPower (int8_t power) override
Sets transmission output power. Allowed values range from -4 to 15 dBm (RFO pin) or +2 to +17 dBm (PA_BOOST pin). High power +20 dBm operation is also supported, on the PA_BOOST pin. Defaults to PA_BOOST.
-int16_t setOutputPower (int8_t power, bool useRfo)
- Sets transmission output power. Allowed values range from -4 to 15 dBm (RFO pin) or +2 to +17 dBm (PA_BOOST pin). High power +20 dBm operation is also supported, on the PA_BOOST pin.
-
+int16_t setOutputPower (int8_t power, bool forceRfo)
+ Sets transmission output power. Allowed values range from -4 to 15 dBm (RFO pin) or +2 to +17 dBm (PA_BOOST pin). High power +20 dBm operation is also supported, on the PA_BOOST pin.
+
int16_t checkOutputPower (int8_t power, int8_t *clipped) override
Check if output power is configurable. This method is needed for compatibility with PhysicalLayer::checkOutputPower .
diff --git a/class_s_x1277-members.html b/class_s_x1277-members.html
index c3429cb9..f0674cda 100644
--- a/class_s_x1277-members.html
+++ b/class_s_x1277-members.html
@@ -206,7 +206,7 @@ $(document).ready(function(){initNavTree('class_s_x1277.html',''); initResizable
setOokPeakThresholdStep (uint8_t value)SX127x
setOokThresholdType (uint8_t type)SX127x
setOutputPower (int8_t power) overrideSX1278 virtual
- setOutputPower (int8_t power, bool useRfo)SX1278
+ setOutputPower (int8_t power, bool forceRfo)SX1278
setPacketReceivedAction (void(*func)(void)) overrideSX127x virtual
setPacketSentAction (void(*func)(void)) overrideSX127x virtual
setPreambleLength (size_t preambleLength) overrideSX127x virtual
diff --git a/class_s_x1277.html b/class_s_x1277.html
index 6ca9a54d..9c4e75a8 100644
--- a/class_s_x1277.html
+++ b/class_s_x1277.html
@@ -167,9 +167,9 @@ Public Member Functions
int16_t setOutputPower (int8_t power) override
Sets transmission output power. Allowed values range from -4 to 15 dBm (RFO pin) or +2 to +17 dBm (PA_BOOST pin). High power +20 dBm operation is also supported, on the PA_BOOST pin. Defaults to PA_BOOST.
-int16_t setOutputPower (int8_t power, bool useRfo)
- Sets transmission output power. Allowed values range from -4 to 15 dBm (RFO pin) or +2 to +17 dBm (PA_BOOST pin). High power +20 dBm operation is also supported, on the PA_BOOST pin.
-
+int16_t setOutputPower (int8_t power, bool forceRfo)
+ Sets transmission output power. Allowed values range from -4 to 15 dBm (RFO pin) or +2 to +17 dBm (PA_BOOST pin). High power +20 dBm operation is also supported, on the PA_BOOST pin.
+
int16_t checkOutputPower (int8_t power, int8_t *clipped) override
Check if output power is configurable. This method is needed for compatibility with PhysicalLayer::checkOutputPower .
diff --git a/class_s_x1278-members.html b/class_s_x1278-members.html
index 1e1c1622..90f29ce6 100644
--- a/class_s_x1278-members.html
+++ b/class_s_x1278-members.html
@@ -206,7 +206,7 @@ $(document).ready(function(){initNavTree('class_s_x1278.html',''); initResizable
setOokPeakThresholdStep (uint8_t value)SX127x
setOokThresholdType (uint8_t type)SX127x
setOutputPower (int8_t power) overrideSX1278 virtual
- setOutputPower (int8_t power, bool useRfo)SX1278
+ setOutputPower (int8_t power, bool forceRfo)SX1278
setPacketReceivedAction (void(*func)(void)) overrideSX127x virtual
setPacketSentAction (void(*func)(void)) overrideSX127x virtual
setPreambleLength (size_t preambleLength) overrideSX127x virtual
diff --git a/class_s_x1278.html b/class_s_x1278.html
index c4cc7dc1..38f33a15 100644
--- a/class_s_x1278.html
+++ b/class_s_x1278.html
@@ -153,9 +153,9 @@ Public Member Functions
int16_t setOutputPower (int8_t power) override
Sets transmission output power. Allowed values range from -4 to 15 dBm (RFO pin) or +2 to +17 dBm (PA_BOOST pin). High power +20 dBm operation is also supported, on the PA_BOOST pin. Defaults to PA_BOOST.
-int16_t setOutputPower (int8_t power, bool useRfo)
- Sets transmission output power. Allowed values range from -4 to 15 dBm (RFO pin) or +2 to +17 dBm (PA_BOOST pin). High power +20 dBm operation is also supported, on the PA_BOOST pin.
-
+int16_t setOutputPower (int8_t power, bool forceRfo)
+ Sets transmission output power. Allowed values range from -4 to 15 dBm (RFO pin) or +2 to +17 dBm (PA_BOOST pin). High power +20 dBm operation is also supported, on the PA_BOOST pin.
+
int16_t checkOutputPower (int8_t power, int8_t *clipped) override
Check if output power is configurable. This method is needed for compatibility with PhysicalLayer::checkOutputPower .
@@ -1458,8 +1458,8 @@ size_t maxPacketLength
-
-◆ setOutputPower() [2/2]
+
+◆ setOutputPower() [2/2]
@@ -1474,7 +1474,7 @@ size_t
maxPacketLength
bool
- useRfo
+ forceRfo
@@ -1488,7 +1488,7 @@ size_t maxPacketLength
Parameters
power Transmission output power in dBm.
- useRfo Whether to use the RFO (true) or the PA_BOOST (false) pin for the RF output.
+ forceRfo Whether to force using the RFO pin for the RF output (true) or the lave the selection up to user (false) based on power output.
diff --git a/class_s_x1278.js b/class_s_x1278.js
index 1008275d..702500c5 100644
--- a/class_s_x1278.js
+++ b/class_s_x1278.js
@@ -24,6 +24,6 @@ var class_s_x1278 =
[ "setGain", "class_s_x1278.html#aa57b713988cfa224a6db2ff325052931", null ],
[ "setModem", "class_s_x1278.html#a609dd3faf2036e8c2d046fd191e0137d", null ],
[ "setOutputPower", "class_s_x1278.html#a69abc18e7fa0055e6b80024e8cde7db4", null ],
- [ "setOutputPower", "class_s_x1278.html#aca58a6c2e8fcef6414fdf3bc1eb62082", null ],
+ [ "setOutputPower", "class_s_x1278.html#ab206a23ac93f5687ba5f6741fa690130", null ],
[ "setSpreadingFactor", "class_s_x1278.html#af70c22fe38bc3b944070ccbc083fed08", null ]
];
\ No newline at end of file
diff --git a/class_s_x1279-members.html b/class_s_x1279-members.html
index 1f84e389..8b99bc7d 100644
--- a/class_s_x1279-members.html
+++ b/class_s_x1279-members.html
@@ -206,7 +206,7 @@ $(document).ready(function(){initNavTree('class_s_x1279.html',''); initResizable
setOokPeakThresholdStep (uint8_t value)SX127x
setOokThresholdType (uint8_t type)SX127x
setOutputPower (int8_t power) overrideSX1278 virtual
- setOutputPower (int8_t power, bool useRfo)SX1278
+ setOutputPower (int8_t power, bool forceRfo)SX1278
setPacketReceivedAction (void(*func)(void)) overrideSX127x virtual
setPacketSentAction (void(*func)(void)) overrideSX127x virtual
setPreambleLength (size_t preambleLength) overrideSX127x virtual
diff --git a/class_s_x1279.html b/class_s_x1279.html
index 79852397..4310f154 100644
--- a/class_s_x1279.html
+++ b/class_s_x1279.html
@@ -158,9 +158,9 @@ Public Member Functions
int16_t setOutputPower (int8_t power) override
Sets transmission output power. Allowed values range from -4 to 15 dBm (RFO pin) or +2 to +17 dBm (PA_BOOST pin). High power +20 dBm operation is also supported, on the PA_BOOST pin. Defaults to PA_BOOST.
-int16_t setOutputPower (int8_t power, bool useRfo)
- Sets transmission output power. Allowed values range from -4 to 15 dBm (RFO pin) or +2 to +17 dBm (PA_BOOST pin). High power +20 dBm operation is also supported, on the PA_BOOST pin.
-
+int16_t setOutputPower (int8_t power, bool forceRfo)
+ Sets transmission output power. Allowed values range from -4 to 15 dBm (RFO pin) or +2 to +17 dBm (PA_BOOST pin). High power +20 dBm operation is also supported, on the PA_BOOST pin.
+
int16_t checkOutputPower (int8_t power, int8_t *clipped) override
Check if output power is configurable. This method is needed for compatibility with PhysicalLayer::checkOutputPower .
diff --git a/coverage/amber.png b/coverage/amber.png
deleted file mode 100644
index 2cab170d..00000000
Binary files a/coverage/amber.png and /dev/null differ
diff --git a/coverage/emerald.png b/coverage/emerald.png
deleted file mode 100644
index 38ad4f40..00000000
Binary files a/coverage/emerald.png and /dev/null differ
diff --git a/coverage/extras/test/unit/include/HardwareEmulation.hpp.func-sort-c.html b/coverage/extras/test/unit/include/HardwareEmulation.hpp.func-sort-c.html
deleted file mode 100644
index ede30650..00000000
--- a/coverage/extras/test/unit/include/HardwareEmulation.hpp.func-sort-c.html
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - extras/test/unit/include/HardwareEmulation.hpp - functions
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/extras/test/unit/include/HardwareEmulation.hpp.func.html b/coverage/extras/test/unit/include/HardwareEmulation.hpp.func.html
deleted file mode 100644
index 82bbbb91..00000000
--- a/coverage/extras/test/unit/include/HardwareEmulation.hpp.func.html
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - extras/test/unit/include/HardwareEmulation.hpp - functions
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/extras/test/unit/include/HardwareEmulation.hpp.gcov.html b/coverage/extras/test/unit/include/HardwareEmulation.hpp.gcov.html
deleted file mode 100644
index 48c9a6e3..00000000
--- a/coverage/extras/test/unit/include/HardwareEmulation.hpp.gcov.html
+++ /dev/null
@@ -1,147 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - extras/test/unit/include/HardwareEmulation.hpp
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/extras/test/unit/include/TestHal.hpp.func-sort-c.html b/coverage/extras/test/unit/include/TestHal.hpp.func-sort-c.html
deleted file mode 100644
index 0b7fa246..00000000
--- a/coverage/extras/test/unit/include/TestHal.hpp.func-sort-c.html
+++ /dev/null
@@ -1,168 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - extras/test/unit/include/TestHal.hpp - functions
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/extras/test/unit/include/TestHal.hpp.func.html b/coverage/extras/test/unit/include/TestHal.hpp.func.html
deleted file mode 100644
index 278a15a6..00000000
--- a/coverage/extras/test/unit/include/TestHal.hpp.func.html
+++ /dev/null
@@ -1,168 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - extras/test/unit/include/TestHal.hpp - functions
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/extras/test/unit/include/TestHal.hpp.gcov.html b/coverage/extras/test/unit/include/TestHal.hpp.gcov.html
deleted file mode 100644
index 25553d53..00000000
--- a/coverage/extras/test/unit/include/TestHal.hpp.gcov.html
+++ /dev/null
@@ -1,345 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - extras/test/unit/include/TestHal.hpp
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Line data Source code
-
- 1 : #ifndef TEST_HAL_HPP
- 2 : #define TEST_HAL_HPP
- 3 :
- 4 : #include <chrono>
- 5 : #include <thread>
- 6 : #include <fmt/format.h>
- 7 :
- 8 : #include <RadioLib.h>
- 9 :
- 10 : #include <boost/log/trivial.hpp>
- 11 : #include <boost/format.hpp>
- 12 :
- 13 : #if defined(TEST_HAL_LOG)
- 14 : #define HAL_LOG(...) BOOST_TEST_MESSAGE(__VA_ARGS__)
- 15 : #else
- 16 : #define HAL_LOG(...) {}
- 17 : #endif
- 18 :
- 19 : #include "HardwareEmulation.hpp"
- 20 :
- 21 : #define TEST_HAL_INPUT (0)
- 22 : #define TEST_HAL_OUTPUT (1)
- 23 : #define TEST_HAL_LOW (0)
- 24 : #define TEST_HAL_HIGH (1)
- 25 : #define TEST_HAL_RISING (0)
- 26 : #define TEST_HAL_FALLING (1)
- 27 :
- 28 : // number of emulated GPIO pins
- 29 : #define TEST_HAL_NUM_GPIO_PINS (32)
- 30 :
- 31 : #define TEST_HAL_SPI_LOG_LENGTH (512)
- 32 :
- 33 : class TestHal : public RadioLibHal {
- 34 : public:
- 35 4 : TestHal() : RadioLibHal(TEST_HAL_INPUT, TEST_HAL_OUTPUT, TEST_HAL_LOW, TEST_HAL_HIGH, TEST_HAL_RISING, TEST_HAL_FALLING) { }
- 36 :
- 37 4 : void init() override {
- 38 : HAL_LOG("TestHal::init()");
- 39 :
- 40 : // save program start timestamp
- 41 4 : start = std::chrono::high_resolution_clock::now();
- 42 :
- 43 : // init emulated GPIO
- 44 132 : for(int i = 0; i < TEST_HAL_NUM_GPIO_PINS; i++) {
- 45 128 : this->gpio[i].mode = 0;
- 46 128 : this->gpio[i].value = 0;
- 47 128 : this->gpio[i].event = false;
- 48 128 : this->gpio[i].func = PIN_UNASSIGNED;
- 49 : }
- 50 :
- 51 : // wipe history log
- 52 4 : this->spiLogWipe();
- 53 4 : }
- 54 :
- 55 4 : void term() override {
- 56 : HAL_LOG("TestHal::term()");
- 57 4 : }
- 58 :
- 59 4 : void pinMode(uint32_t pin, uint32_t mode) override {
- 60 : HAL_LOG("TestHal::pinMode(pin=" << pin << ", mode=" << mode << " [" << ((mode == TEST_HAL_INPUT) ? "INPUT" : "OUTPUT") << "])");
- 61 :
- 62 : // check the range
- 63 4 : BOOST_ASSERT_MSG(pin < TEST_HAL_NUM_GPIO_PINS, "Pin number out of range");
- 64 :
- 65 : // check known modes
- 66 4 : BOOST_ASSERT_MSG(((mode == TEST_HAL_INPUT) || (mode == TEST_HAL_OUTPUT)), "Invalid pin mode");
- 67 :
- 68 : // set mode
- 69 4 : this->gpio[pin].mode = mode;
- 70 4 : }
- 71 :
- 72 2932 : void digitalWrite(uint32_t pin, uint32_t value) override {
- 73 : HAL_LOG("TestHal::digitalWrite(pin=" << pin << ", value=" << value << " [" << ((value == TEST_HAL_LOW) ? "LOW" : "HIGH") << "])");
- 74 :
- 75 : // check the range
- 76 2932 : BOOST_ASSERT_MSG(pin < TEST_HAL_NUM_GPIO_PINS, "Pin number out of range");
- 77 :
- 78 : // check it is output
- 79 2932 : BOOST_ASSERT_MSG(this->gpio[pin].mode == TEST_HAL_OUTPUT, "GPIO is not output!");
- 80 :
- 81 : // check known values
- 82 2932 : BOOST_ASSERT_MSG(((value == TEST_HAL_LOW) || (value == TEST_HAL_HIGH)), "Invalid output value");
- 83 :
- 84 : // set value
- 85 2932 : this->gpio[pin].value = value;
- 86 2932 : this->gpio[pin].event = true;
- 87 2932 : if(radio) {
- 88 2932 : this->radio->HandleGPIO();
- 89 : }
- 90 2932 : this->gpio[pin].event = false;
- 91 2932 : }
- 92 :
- 93 846 : uint32_t digitalRead(uint32_t pin) override {
- 94 : HAL_LOG("TestHal::digitalRead(pin=" << pin << ")");
- 95 :
- 96 : // check the range
- 97 846 : BOOST_ASSERT_MSG(pin < TEST_HAL_NUM_GPIO_PINS, "Pin number out of range");
- 98 :
- 99 : // check it is input
- 100 846 : BOOST_ASSERT_MSG(this->gpio[pin].mode == TEST_HAL_INPUT, "GPIO is not input");
- 101 :
- 102 : // read the value
- 103 846 : uint32_t value = this->gpio[pin].value;
- 104 : HAL_LOG("TestHal::digitalRead(pin=" << pin << ")=" << value << " [" << ((value == TEST_HAL_LOW) ? "LOW" : "HIGH") << "]");
- 105 846 : return(value);
- 106 : }
- 107 :
- 108 0 : void attachInterrupt(uint32_t interruptNum, void (*interruptCb)(void), uint32_t mode) override {
- 109 : HAL_LOG("TestHal::attachInterrupt(interruptNum=" << interruptNum << ", interruptCb=" << interruptCb << ", mode=" << mode << ")");
- 110 :
- 111 : // TODO implement
- 112 : (void)interruptNum;
- 113 : (void)interruptCb;
- 114 : (void)mode;
- 115 0 : }
- 116 :
- 117 0 : void detachInterrupt(uint32_t interruptNum) override {
- 118 : HAL_LOG("TestHal::detachInterrupt(interruptNum=" << interruptNum << ")");
- 119 :
- 120 : // TODO implement
- 121 : (void)interruptNum;
- 122 0 : }
- 123 :
- 124 0 : void delay(unsigned long ms) override {
- 125 : HAL_LOG("TestHal::delay(ms=" << ms << ")");
- 126 0 : const auto start = std::chrono::high_resolution_clock::now();
- 127 :
- 128 : // sleep_for is sufficient for ms-precision sleep
- 129 0 : std::this_thread::sleep_for(std::chrono::duration<unsigned long, std::milli>(ms));
- 130 :
- 131 : // measure and print
- 132 0 : const auto end = std::chrono::high_resolution_clock::now();
- 133 0 : const std::chrono::duration<double, std::milli> elapsed = end - start;
- 134 : HAL_LOG("TestHal::delay(ms=" << ms << ")=" << elapsed.count() << "ms");
- 135 0 : }
- 136 :
- 137 4615 : void delayMicroseconds(unsigned long us) override {
- 138 : HAL_LOG("TestHal::delayMicroseconds(us=" << us << ")");
- 139 4615 : const auto start = std::chrono::high_resolution_clock::now();
- 140 :
- 141 : // busy wait is needed for microseconds precision
- 142 4615 : const auto len = std::chrono::microseconds(us);
- 143 6689860 : while(std::chrono::high_resolution_clock::now() - start < len);
- 144 :
- 145 : // measure and print
- 146 4615 : const auto end = std::chrono::high_resolution_clock::now();
- 147 4615 : const std::chrono::duration<double, std::micro> elapsed = end - start;
- 148 : HAL_LOG("TestHal::delayMicroseconds(us=" << us << ")=" << elapsed.count() << "us");
- 149 4615 : }
- 150 :
- 151 0 : void yield() override {
- 152 : HAL_LOG("TestHal::yield()");
- 153 0 : }
- 154 :
- 155 846 : unsigned long millis() override {
- 156 : HAL_LOG("TestHal::millis()");
- 157 846 : std::chrono::time_point now = std::chrono::high_resolution_clock::now();
- 158 846 : auto res = std::chrono::duration_cast<std::chrono::milliseconds>(now - this->start);
- 159 : HAL_LOG("TestHal::millis()=" << res.count());
- 160 846 : return(res.count());
- 161 : }
- 162 :
- 163 1462 : unsigned long micros() override {
- 164 : HAL_LOG("TestHal::micros()");
- 165 1462 : std::chrono::time_point now = std::chrono::high_resolution_clock::now();
- 166 1462 : auto res = std::chrono::duration_cast<std::chrono::microseconds>(now - this->start);
- 167 : HAL_LOG("TestHal::micros()=" << res.count());
- 168 1462 : return(res.count());
- 169 : }
- 170 :
- 171 0 : long pulseIn(uint32_t pin, uint32_t state, unsigned long timeout) override {
- 172 : HAL_LOG("TestHal::pulseIn(pin=" << pin << ", state=" << state << ", timeout=" << timeout << ")");
- 173 :
- 174 : // TODO implement
- 175 : (void)pin;
- 176 : (void)state;
- 177 : (void)timeout;
- 178 0 : return(0);
- 179 : }
- 180 :
- 181 0 : void spiBegin() {
- 182 : HAL_LOG("TestHal::spiBegin()");
- 183 0 : }
- 184 :
- 185 1464 : void spiBeginTransaction() {
- 186 : HAL_LOG("TestHal::spiBeginTransaction()");
- 187 1464 : }
- 188 :
- 189 1464 : void spiTransfer(uint8_t* out, size_t len, uint8_t* in) {
- 190 : HAL_LOG("TestHal::spiTransfer(len=" << len << ")");
- 191 :
- 192 5656 : for(size_t i = 0; i < len; i++) {
- 193 : // append to log
- 194 4192 : (*this->spiLogPtr++) = out[i];
- 195 :
- 196 : // process the SPI byte
- 197 4192 : in[i] = this->radio->HandleSPI(out[i]);
- 198 :
- 199 : // artificial delay to emulate SPI running at a finite speed
- 200 : // this is added because timeouts are based on time duration,
- 201 : // so we need to make sure some time actually elapses
- 202 4192 : this->delayMicroseconds(100);
- 203 :
- 204 : // output debug
- 205 : HAL_LOG(fmt::format("out={:#02x}, in={:#02x}", out[i], in[i]));
- 206 : }
- 207 1464 : }
- 208 :
- 209 1464 : void spiEndTransaction() {
- 210 : HAL_LOG("TestHal::spiEndTransaction()");
- 211 1464 : }
- 212 :
- 213 0 : void spiEnd() {
- 214 : HAL_LOG("TestHal::spiEnd()");
- 215 0 : }
- 216 :
- 217 0 : void tone(uint32_t pin, unsigned int frequency, unsigned long duration = 0) {
- 218 : HAL_LOG("TestHal::tone(pin=" << pin << ", frequency=" << frequency << ", duration=" << duration << ")");
- 219 :
- 220 : // TODO implement
- 221 : (void)pin;
- 222 : (void)frequency;
- 223 : (void)duration;
- 224 0 : }
- 225 :
- 226 0 : void noTone(uint32_t pin) {
- 227 : HAL_LOG("TestHal::noTone(pin=" << pin << ")");
- 228 :
- 229 : // TODO implement
- 230 : (void)pin;
- 231 0 : }
- 232 :
- 233 : // method to compare buffer to the internal SPI log, for verifying SPI transactions
- 234 12 : int spiLogMemcmp(const void* in, size_t n) {
- 235 12 : int ret = memcmp(this->spiLog, in, n);
- 236 12 : this->spiLogWipe();
- 237 12 : return(ret);
- 238 : }
- 239 :
- 240 16 : void spiLogWipe() {
- 241 16 : memset(this->spiLog, 0x00, TEST_HAL_SPI_LOG_LENGTH);
- 242 16 : this->spiLogPtr = this->spiLog;
- 243 16 : }
- 244 :
- 245 : // method that "connects" the emualted radio hardware to this HAL
- 246 4 : void connectRadio(EmulatedRadio* r) {
- 247 4 : this->radio = r;
- 248 4 : this->radio->connect(&this->gpio[EMULATED_RADIO_NSS_PIN],
- 249 : &this->gpio[EMULATED_RADIO_IRQ_PIN],
- 250 : &this->gpio[EMULATED_RADIO_RST_PIN],
- 251 : &this->gpio[EMULATED_RADIO_GPIO_PIN]);
- 252 4 : }
- 253 :
- 254 : private:
- 255 : // array of emulated GPIO pins
- 256 : EmulatedPin_t gpio[TEST_HAL_NUM_GPIO_PINS];
- 257 :
- 258 : // start time point
- 259 : std::chrono::time_point<std::chrono::high_resolution_clock> start;
- 260 :
- 261 : // emulated radio hardware
- 262 : EmulatedRadio* radio;
- 263 :
- 264 : // SPI history log
- 265 : uint8_t spiLog[TEST_HAL_SPI_LOG_LENGTH];
- 266 : uint8_t* spiLogPtr;
- 267 : };
- 268 :
- 269 : #endif
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/extras/test/unit/include/index-sort-f.html b/coverage/extras/test/unit/include/index-sort-f.html
deleted file mode 100644
index acfa066d..00000000
--- a/coverage/extras/test/unit/include/index-sort-f.html
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - extras/test/unit/include
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filename
- Line Coverage
- Functions
-
-
- TestHal.hpp
-
-
-
- 75.8 %
- 69 / 91
- 62.5 %
- 15 / 24
-
-
- HardwareEmulation.hpp
-
-
-
- 100.0 %
- 14 / 14
- 100.0 %
- 3 / 3
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/extras/test/unit/include/index-sort-l.html b/coverage/extras/test/unit/include/index-sort-l.html
deleted file mode 100644
index 98749865..00000000
--- a/coverage/extras/test/unit/include/index-sort-l.html
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - extras/test/unit/include
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filename
- Line Coverage
- Functions
-
-
- TestHal.hpp
-
-
-
- 75.8 %
- 69 / 91
- 62.5 %
- 15 / 24
-
-
- HardwareEmulation.hpp
-
-
-
- 100.0 %
- 14 / 14
- 100.0 %
- 3 / 3
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/extras/test/unit/include/index.html b/coverage/extras/test/unit/include/index.html
deleted file mode 100644
index a73876ba..00000000
--- a/coverage/extras/test/unit/include/index.html
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - extras/test/unit/include
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filename
- Line Coverage
- Functions
-
-
- HardwareEmulation.hpp
-
-
-
- 100.0 %
- 14 / 14
- 100.0 %
- 3 / 3
-
-
- TestHal.hpp
-
-
-
- 75.8 %
- 69 / 91
- 62.5 %
- 15 / 24
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/extras/test/unit/tests/TestModule.cpp.func-sort-c.html b/coverage/extras/test/unit/tests/TestModule.cpp.func-sort-c.html
deleted file mode 100644
index 51f82f80..00000000
--- a/coverage/extras/test/unit/tests/TestModule.cpp.func-sort-c.html
+++ /dev/null
@@ -1,112 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - extras/test/unit/tests/TestModule.cpp - functions
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/extras/test/unit/tests/TestModule.cpp.func.html b/coverage/extras/test/unit/tests/TestModule.cpp.func.html
deleted file mode 100644
index d52419c5..00000000
--- a/coverage/extras/test/unit/tests/TestModule.cpp.func.html
+++ /dev/null
@@ -1,112 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - extras/test/unit/tests/TestModule.cpp - functions
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/extras/test/unit/tests/TestModule.cpp.gcov.html b/coverage/extras/test/unit/tests/TestModule.cpp.gcov.html
deleted file mode 100644
index 1a06d5b5..00000000
--- a/coverage/extras/test/unit/tests/TestModule.cpp.gcov.html
+++ /dev/null
@@ -1,305 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - extras/test/unit/tests/TestModule.cpp
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Line data Source code
-
- 1 : // boost test header
- 2 : #include <boost/test/unit_test.hpp>
- 3 :
- 4 : // mock HAL
- 5 : #include "TestHal.hpp"
- 6 :
- 7 : // testing fixture
- 8 : struct ModuleFixture {
- 9 : TestHal* hal = nullptr;
- 10 : Module* mod = nullptr;
- 11 : EmulatedRadio* radioHardware = nullptr;
- 12 :
- 13 4 : ModuleFixture() {
- 14 4 : BOOST_TEST_MESSAGE("--- Module fixture setup ---");
- 15 4 : hal = new TestHal();
- 16 4 : radioHardware = new EmulatedRadio();
- 17 4 : hal->connectRadio(radioHardware);
- 18 :
- 19 4 : mod = new Module(hal, EMULATED_RADIO_NSS_PIN, EMULATED_RADIO_IRQ_PIN, EMULATED_RADIO_RST_PIN, EMULATED_RADIO_GPIO_PIN);
- 20 4 : mod->init();
- 21 4 : }
- 22 :
- 23 4 : ~ModuleFixture() {
- 24 4 : BOOST_TEST_MESSAGE("--- Module fixture teardown ---");
- 25 4 : mod->term();
- 26 4 : delete[] mod;
- 27 4 : delete[] hal;
- 28 4 : }
- 29 : };
- 30 :
- 31 : BOOST_FIXTURE_TEST_SUITE(suite_Module, ModuleFixture)
- 32 :
- 33 2 : BOOST_FIXTURE_TEST_CASE(Module_SPIgetRegValue_reg, ModuleFixture)
- 34 : {
- 35 1 : BOOST_TEST_MESSAGE("--- Test Module::SPIgetRegValue register access ---");
- 36 : int16_t ret;
- 37 :
- 38 : // basic register read with default config
- 39 1 : const uint8_t address = 0x12;
- 40 1 : const uint8_t spiTxn[] = { address, 0x00 };
- 41 1 : ret = mod->SPIgetRegValue(address);
- 42 :
- 43 : // check return code, value and history log
- 44 1 : BOOST_TEST(ret >= RADIOLIB_ERR_NONE);
- 45 1 : BOOST_TEST(ret == EMULATED_RADIO_SPI_RETURN);
- 46 1 : BOOST_TEST(hal->spiLogMemcmp(spiTxn, sizeof(spiTxn)) == 0);
- 47 :
- 48 : // register read masking test
- 49 1 : const uint8_t msb = 5;
- 50 1 : const uint8_t lsb = 1;
- 51 1 : const uint8_t maskedValue = 0x3E;
- 52 1 : ret = mod->SPIgetRegValue(address, msb, lsb);
- 53 1 : BOOST_TEST(ret == maskedValue);
- 54 :
- 55 : // invalid mask tests (swapped MSB and LSB, out of range bit masks)
- 56 1 : ret = mod->SPIgetRegValue(address, lsb, msb);
- 57 1 : BOOST_TEST(ret == RADIOLIB_ERR_INVALID_BIT_RANGE);
- 58 1 : ret = mod->SPIgetRegValue(address, 10, lsb);
- 59 1 : BOOST_TEST(ret == RADIOLIB_ERR_INVALID_BIT_RANGE);
- 60 1 : ret = mod->SPIgetRegValue(address, msb, 10);
- 61 1 : BOOST_TEST(ret == RADIOLIB_ERR_INVALID_BIT_RANGE);
- 62 1 : }
- 63 :
- 64 2 : BOOST_FIXTURE_TEST_CASE(Module_SPIsetRegValue_reg, ModuleFixture)
- 65 : {
- 66 1 : BOOST_TEST_MESSAGE("--- Test Module::SPIsetRegValue register access ---");
- 67 : int16_t ret;
- 68 :
- 69 : // basic register write with default config
- 70 1 : const uint8_t address = 0x12;
- 71 1 : const uint8_t value = 0xAB;
- 72 1 : const uint8_t spiTxn[] = { address, 0x00, 0x80 | address, value };
- 73 1 : ret = mod->SPIsetRegValue(address, value);
- 74 :
- 75 : // check return code and history log
- 76 : // this will return write error because the bare emulated radio has no internal logic
- 77 1 : BOOST_TEST(ret == RADIOLIB_ERR_SPI_WRITE_FAILED);
- 78 1 : BOOST_TEST(hal->spiLogMemcmp(spiTxn, sizeof(spiTxn)) == 0);
- 79 :
- 80 : // register write masking test
- 81 1 : const uint8_t msb = 5;
- 82 1 : const uint8_t lsb = 1;
- 83 1 : const uint8_t maskedValue = 0xEB;
- 84 1 : const uint8_t spiTxn2[] = { address, 0x00, 0x80 | address, maskedValue };
- 85 1 : ret = mod->SPIsetRegValue(address, value, msb, lsb);
- 86 1 : BOOST_TEST(ret == RADIOLIB_ERR_SPI_WRITE_FAILED);
- 87 1 : BOOST_TEST(hal->spiLogMemcmp(spiTxn2, sizeof(spiTxn2)) == 0);
- 88 :
- 89 : // invalid mask tests (swapped MSB and LSB, out of range bit masks)
- 90 1 : ret = mod->SPIsetRegValue(address, value, lsb, msb);
- 91 1 : BOOST_TEST(ret == RADIOLIB_ERR_INVALID_BIT_RANGE);
- 92 1 : ret = mod->SPIsetRegValue(address, value, 10, lsb);
- 93 1 : BOOST_TEST(ret == RADIOLIB_ERR_INVALID_BIT_RANGE);
- 94 1 : ret = mod->SPIsetRegValue(address, value, msb, 10);
- 95 1 : BOOST_TEST(ret == RADIOLIB_ERR_INVALID_BIT_RANGE);
- 96 :
- 97 : // check interval test
- 98 1 : const uint8_t interval = 200;
- 99 1 : const unsigned long start = hal->micros();
- 100 1 : ret = mod->SPIsetRegValue(address, value, 7, 0, interval);
- 101 1 : const unsigned long stop = hal->micros();
- 102 1 : BOOST_TEST(ret == RADIOLIB_ERR_SPI_WRITE_FAILED);
- 103 1 : BOOST_TEST(hal->spiLogMemcmp(spiTxn, sizeof(spiTxn)) == 0);
- 104 1 : const unsigned long elapsed = stop - start;
- 105 1 : BOOST_TEST(elapsed >= (unsigned long)interval*1000UL);
- 106 :
- 107 : // disabled check mask test
- 108 1 : ret = mod->SPIsetRegValue(address, value, 7, 0, 2, 0);
- 109 1 : BOOST_TEST(ret == RADIOLIB_ERR_NONE);
- 110 1 : BOOST_TEST(hal->spiLogMemcmp(spiTxn, sizeof(spiTxn)) == 0);
- 111 :
- 112 : // forced write test
- 113 1 : ret = mod->SPIsetRegValue(address, value, 7, 0, 2, 0xFF, true);
- 114 1 : BOOST_TEST(ret == RADIOLIB_ERR_SPI_WRITE_FAILED);
- 115 1 : BOOST_TEST(hal->spiLogMemcmp(spiTxn, sizeof(spiTxn)) == 0);
- 116 1 : }
- 117 :
- 118 2 : BOOST_FIXTURE_TEST_CASE(Module_SPIgetRegValue_stream, ModuleFixture)
- 119 : {
- 120 1 : BOOST_TEST_MESSAGE("--- Test Module::SPIgetRegValue stream access ---");
- 121 : int16_t ret;
- 122 :
- 123 : // change settings to stream type
- 124 1 : mod->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_ADDR] = Module::BITS_16;
- 125 1 : mod->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_CMD] = Module::BITS_8;
- 126 1 : mod->spiConfig.statusPos = 1;
- 127 1 : mod->spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_READ] = RADIOLIB_SX126X_CMD_READ_REGISTER;
- 128 1 : mod->spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_WRITE] = RADIOLIB_SX126X_CMD_WRITE_REGISTER;
- 129 1 : mod->spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_NOP] = RADIOLIB_SX126X_CMD_NOP;
- 130 1 : mod->spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_STATUS] = RADIOLIB_SX126X_CMD_GET_STATUS;
- 131 1 : mod->spiConfig.stream = true;
- 132 :
- 133 : // basic register read
- 134 1 : const uint8_t address = 0x12;
- 135 1 : const uint8_t spiTxn[] = { RADIOLIB_SX126X_CMD_READ_REGISTER, 0x00, address, 0x00, 0x00 };
- 136 1 : ret = mod->SPIgetRegValue(address);
- 137 :
- 138 : // check return code, value and history log
- 139 1 : BOOST_TEST(ret >= RADIOLIB_ERR_NONE);
- 140 1 : BOOST_TEST(ret == EMULATED_RADIO_SPI_RETURN);
- 141 1 : BOOST_TEST(hal->spiLogMemcmp(spiTxn, sizeof(spiTxn)) == 0);
- 142 :
- 143 : // register read masking test
- 144 1 : const uint8_t msb = 5;
- 145 1 : const uint8_t lsb = 1;
- 146 1 : const uint8_t maskedValue = 0x3E;
- 147 1 : ret = mod->SPIgetRegValue(address, msb, lsb);
- 148 1 : BOOST_TEST(ret == maskedValue);
- 149 :
- 150 : // invalid mask tests (swapped MSB and LSB, out of range bit masks)
- 151 1 : ret = mod->SPIgetRegValue(address, lsb, msb);
- 152 1 : BOOST_TEST(ret == RADIOLIB_ERR_INVALID_BIT_RANGE);
- 153 1 : ret = mod->SPIgetRegValue(address, 10, lsb);
- 154 1 : BOOST_TEST(ret == RADIOLIB_ERR_INVALID_BIT_RANGE);
- 155 1 : ret = mod->SPIgetRegValue(address, msb, 10);
- 156 1 : BOOST_TEST(ret == RADIOLIB_ERR_INVALID_BIT_RANGE);
- 157 1 : }
- 158 :
- 159 2 : BOOST_FIXTURE_TEST_CASE(Module_SPIsetRegValue_stream, ModuleFixture)
- 160 : {
- 161 1 : BOOST_TEST_MESSAGE("--- Test Module::SPIsetRegValue stream access ---");
- 162 : int16_t ret;
- 163 :
- 164 : // change settings to stream type
- 165 1 : mod->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_ADDR] = Module::BITS_16;
- 166 1 : mod->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_CMD] = Module::BITS_8;
- 167 1 : mod->spiConfig.statusPos = 1;
- 168 1 : mod->spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_READ] = RADIOLIB_SX126X_CMD_READ_REGISTER;
- 169 1 : mod->spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_WRITE] = RADIOLIB_SX126X_CMD_WRITE_REGISTER;
- 170 1 : mod->spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_NOP] = RADIOLIB_SX126X_CMD_NOP;
- 171 1 : mod->spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_STATUS] = RADIOLIB_SX126X_CMD_GET_STATUS;
- 172 1 : mod->spiConfig.stream = true;
- 173 :
- 174 : // basic register write with default config
- 175 1 : const uint8_t address = 0x12;
- 176 1 : const uint8_t value = 0xAB;
- 177 1 : const uint8_t spiTxn[] = {
- 178 : RADIOLIB_SX126X_CMD_READ_REGISTER, 0x00, address, 0x00, 0x00,
- 179 : RADIOLIB_SX126X_CMD_WRITE_REGISTER, 0x00, address, value,
- 180 : };
- 181 1 : ret = mod->SPIsetRegValue(address, value);
- 182 :
- 183 : // check return code and history log
- 184 : // this will return write error because the bare emulated radio has no internal logic
- 185 1 : BOOST_TEST(ret == RADIOLIB_ERR_SPI_WRITE_FAILED);
- 186 1 : BOOST_TEST(hal->spiLogMemcmp(spiTxn, sizeof(spiTxn)) == 0);
- 187 :
- 188 : // register write masking test
- 189 1 : const uint8_t msb = 5;
- 190 1 : const uint8_t lsb = 1;
- 191 1 : const uint8_t maskedValue = 0xEB;
- 192 1 : const uint8_t spiTxn2[] = {
- 193 : RADIOLIB_SX126X_CMD_READ_REGISTER, 0x00, address, 0x00, 0x00,
- 194 : RADIOLIB_SX126X_CMD_WRITE_REGISTER, 0x00, address, maskedValue,
- 195 : };
- 196 1 : ret = mod->SPIsetRegValue(address, value, msb, lsb);
- 197 1 : BOOST_TEST(ret == RADIOLIB_ERR_SPI_WRITE_FAILED);
- 198 1 : BOOST_TEST(hal->spiLogMemcmp(spiTxn2, sizeof(spiTxn2)) == 0);
- 199 :
- 200 : // invalid mask tests (swapped MSB and LSB, out of range bit masks)
- 201 1 : ret = mod->SPIsetRegValue(address, value, lsb, msb);
- 202 1 : BOOST_TEST(ret == RADIOLIB_ERR_INVALID_BIT_RANGE);
- 203 1 : ret = mod->SPIsetRegValue(address, value, 10, lsb);
- 204 1 : BOOST_TEST(ret == RADIOLIB_ERR_INVALID_BIT_RANGE);
- 205 1 : ret = mod->SPIsetRegValue(address, value, msb, 10);
- 206 1 : BOOST_TEST(ret == RADIOLIB_ERR_INVALID_BIT_RANGE);
- 207 :
- 208 : // check interval test
- 209 1 : const uint8_t interval = 200;
- 210 1 : const unsigned long start = hal->micros();
- 211 1 : ret = mod->SPIsetRegValue(address, value, 7, 0, interval);
- 212 1 : const unsigned long stop = hal->micros();
- 213 1 : BOOST_TEST(ret == RADIOLIB_ERR_SPI_WRITE_FAILED);
- 214 1 : BOOST_TEST(hal->spiLogMemcmp(spiTxn, sizeof(spiTxn)) == 0);
- 215 1 : const unsigned long elapsed = stop - start;
- 216 1 : BOOST_TEST(elapsed >= (unsigned long)interval*1000UL);
- 217 :
- 218 : // disabled check mask test
- 219 1 : ret = mod->SPIsetRegValue(address, value, 7, 0, 2, 0);
- 220 1 : BOOST_TEST(ret == RADIOLIB_ERR_NONE);
- 221 1 : BOOST_TEST(hal->spiLogMemcmp(spiTxn, sizeof(spiTxn)) == 0);
- 222 :
- 223 : // forced write test
- 224 1 : ret = mod->SPIsetRegValue(address, value, 7, 0, 2, 0xFF, true);
- 225 1 : BOOST_TEST(ret == RADIOLIB_ERR_SPI_WRITE_FAILED);
- 226 1 : BOOST_TEST(hal->spiLogMemcmp(spiTxn, sizeof(spiTxn)) == 0);
- 227 1 : }
- 228 :
- 229 : BOOST_AUTO_TEST_SUITE_END()
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/extras/test/unit/tests/index-sort-f.html b/coverage/extras/test/unit/tests/index-sort-f.html
deleted file mode 100644
index cf746316..00000000
--- a/coverage/extras/test/unit/tests/index-sort-f.html
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - extras/test/unit/tests
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filename
- Line Coverage
- Functions
-
-
- TestModule.cpp
-
-
-
- 100.0 %
- 142 / 142
- 100.0 %
- 10 / 10
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/extras/test/unit/tests/index-sort-l.html b/coverage/extras/test/unit/tests/index-sort-l.html
deleted file mode 100644
index eaff6603..00000000
--- a/coverage/extras/test/unit/tests/index-sort-l.html
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - extras/test/unit/tests
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filename
- Line Coverage
- Functions
-
-
- TestModule.cpp
-
-
-
- 100.0 %
- 142 / 142
- 100.0 %
- 10 / 10
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/extras/test/unit/tests/index.html b/coverage/extras/test/unit/tests/index.html
deleted file mode 100644
index d1fd24a5..00000000
--- a/coverage/extras/test/unit/tests/index.html
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - extras/test/unit/tests
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filename
- Line Coverage
- Functions
-
-
- TestModule.cpp
-
-
-
- 100.0 %
- 142 / 142
- 100.0 %
- 10 / 10
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/gcov.css b/coverage/gcov.css
deleted file mode 100644
index bfd0a83e..00000000
--- a/coverage/gcov.css
+++ /dev/null
@@ -1,519 +0,0 @@
-/* All views: initial background and text color */
-body
-{
- color: #000000;
- background-color: #FFFFFF;
-}
-
-/* All views: standard link format*/
-a:link
-{
- color: #284FA8;
- text-decoration: underline;
-}
-
-/* All views: standard link - visited format */
-a:visited
-{
- color: #00CB40;
- text-decoration: underline;
-}
-
-/* All views: standard link - activated format */
-a:active
-{
- color: #FF0040;
- text-decoration: underline;
-}
-
-/* All views: main title format */
-td.title
-{
- text-align: center;
- padding-bottom: 10px;
- font-family: sans-serif;
- font-size: 20pt;
- font-style: italic;
- font-weight: bold;
-}
-
-/* All views: header item format */
-td.headerItem
-{
- text-align: right;
- padding-right: 6px;
- font-family: sans-serif;
- font-weight: bold;
- vertical-align: top;
- white-space: nowrap;
-}
-
-/* All views: header item value format */
-td.headerValue
-{
- text-align: left;
- color: #284FA8;
- font-family: sans-serif;
- font-weight: bold;
- white-space: nowrap;
-}
-
-/* All views: header item coverage table heading */
-td.headerCovTableHead
-{
- text-align: center;
- padding-right: 6px;
- padding-left: 6px;
- padding-bottom: 0px;
- font-family: sans-serif;
- font-size: 80%;
- white-space: nowrap;
-}
-
-/* All views: header item coverage table entry */
-td.headerCovTableEntry
-{
- text-align: right;
- color: #284FA8;
- font-family: sans-serif;
- font-weight: bold;
- white-space: nowrap;
- padding-left: 12px;
- padding-right: 4px;
- background-color: #DAE7FE;
-}
-
-/* All views: header item coverage table entry for high coverage rate */
-td.headerCovTableEntryHi
-{
- text-align: right;
- color: #000000;
- font-family: sans-serif;
- font-weight: bold;
- white-space: nowrap;
- padding-left: 12px;
- padding-right: 4px;
- background-color: #A7FC9D;
-}
-
-/* All views: header item coverage table entry for medium coverage rate */
-td.headerCovTableEntryMed
-{
- text-align: right;
- color: #000000;
- font-family: sans-serif;
- font-weight: bold;
- white-space: nowrap;
- padding-left: 12px;
- padding-right: 4px;
- background-color: #FFEA20;
-}
-
-/* All views: header item coverage table entry for ow coverage rate */
-td.headerCovTableEntryLo
-{
- text-align: right;
- color: #000000;
- font-family: sans-serif;
- font-weight: bold;
- white-space: nowrap;
- padding-left: 12px;
- padding-right: 4px;
- background-color: #FF0000;
-}
-
-/* All views: header legend value for legend entry */
-td.headerValueLeg
-{
- text-align: left;
- color: #000000;
- font-family: sans-serif;
- font-size: 80%;
- white-space: nowrap;
- padding-top: 4px;
-}
-
-/* All views: color of horizontal ruler */
-td.ruler
-{
- background-color: #6688D4;
-}
-
-/* All views: version string format */
-td.versionInfo
-{
- text-align: center;
- padding-top: 2px;
- font-family: sans-serif;
- font-style: italic;
-}
-
-/* Directory view/File view (all)/Test case descriptions:
- table headline format */
-td.tableHead
-{
- text-align: center;
- color: #FFFFFF;
- background-color: #6688D4;
- font-family: sans-serif;
- font-size: 120%;
- font-weight: bold;
- white-space: nowrap;
- padding-left: 4px;
- padding-right: 4px;
-}
-
-span.tableHeadSort
-{
- padding-right: 4px;
-}
-
-/* Directory view/File view (all): filename entry format */
-td.coverFile
-{
- text-align: left;
- padding-left: 10px;
- padding-right: 20px;
- color: #284FA8;
- background-color: #DAE7FE;
- font-family: monospace;
-}
-
-/* Directory view/File view (all): bar-graph entry format*/
-td.coverBar
-{
- padding-left: 10px;
- padding-right: 10px;
- background-color: #DAE7FE;
-}
-
-/* Directory view/File view (all): bar-graph outline color */
-td.coverBarOutline
-{
- background-color: #000000;
-}
-
-/* Directory view/File view (all): percentage entry for files with
- high coverage rate */
-td.coverPerHi
-{
- text-align: right;
- padding-left: 10px;
- padding-right: 10px;
- background-color: #A7FC9D;
- font-weight: bold;
- font-family: sans-serif;
-}
-
-/* Directory view/File view (all): line count entry for files with
- high coverage rate */
-td.coverNumHi
-{
- text-align: right;
- padding-left: 10px;
- padding-right: 10px;
- background-color: #A7FC9D;
- white-space: nowrap;
- font-family: sans-serif;
-}
-
-/* Directory view/File view (all): percentage entry for files with
- medium coverage rate */
-td.coverPerMed
-{
- text-align: right;
- padding-left: 10px;
- padding-right: 10px;
- background-color: #FFEA20;
- font-weight: bold;
- font-family: sans-serif;
-}
-
-/* Directory view/File view (all): line count entry for files with
- medium coverage rate */
-td.coverNumMed
-{
- text-align: right;
- padding-left: 10px;
- padding-right: 10px;
- background-color: #FFEA20;
- white-space: nowrap;
- font-family: sans-serif;
-}
-
-/* Directory view/File view (all): percentage entry for files with
- low coverage rate */
-td.coverPerLo
-{
- text-align: right;
- padding-left: 10px;
- padding-right: 10px;
- background-color: #FF0000;
- font-weight: bold;
- font-family: sans-serif;
-}
-
-/* Directory view/File view (all): line count entry for files with
- low coverage rate */
-td.coverNumLo
-{
- text-align: right;
- padding-left: 10px;
- padding-right: 10px;
- background-color: #FF0000;
- white-space: nowrap;
- font-family: sans-serif;
-}
-
-/* File view (all): "show/hide details" link format */
-a.detail:link
-{
- color: #B8D0FF;
- font-size:80%;
-}
-
-/* File view (all): "show/hide details" link - visited format */
-a.detail:visited
-{
- color: #B8D0FF;
- font-size:80%;
-}
-
-/* File view (all): "show/hide details" link - activated format */
-a.detail:active
-{
- color: #FFFFFF;
- font-size:80%;
-}
-
-/* File view (detail): test name entry */
-td.testName
-{
- text-align: right;
- padding-right: 10px;
- background-color: #DAE7FE;
- font-family: sans-serif;
-}
-
-/* File view (detail): test percentage entry */
-td.testPer
-{
- text-align: right;
- padding-left: 10px;
- padding-right: 10px;
- background-color: #DAE7FE;
- font-family: sans-serif;
-}
-
-/* File view (detail): test lines count entry */
-td.testNum
-{
- text-align: right;
- padding-left: 10px;
- padding-right: 10px;
- background-color: #DAE7FE;
- font-family: sans-serif;
-}
-
-/* Test case descriptions: test name format*/
-dt
-{
- font-family: sans-serif;
- font-weight: bold;
-}
-
-/* Test case descriptions: description table body */
-td.testDescription
-{
- padding-top: 10px;
- padding-left: 30px;
- padding-bottom: 10px;
- padding-right: 30px;
- background-color: #DAE7FE;
-}
-
-/* Source code view: function entry */
-td.coverFn
-{
- text-align: left;
- padding-left: 10px;
- padding-right: 20px;
- color: #284FA8;
- background-color: #DAE7FE;
- font-family: monospace;
-}
-
-/* Source code view: function entry zero count*/
-td.coverFnLo
-{
- text-align: right;
- padding-left: 10px;
- padding-right: 10px;
- background-color: #FF0000;
- font-weight: bold;
- font-family: sans-serif;
-}
-
-/* Source code view: function entry nonzero count*/
-td.coverFnHi
-{
- text-align: right;
- padding-left: 10px;
- padding-right: 10px;
- background-color: #DAE7FE;
- font-weight: bold;
- font-family: sans-serif;
-}
-
-/* Source code view: source code format */
-pre.source
-{
- font-family: monospace;
- white-space: pre;
- margin-top: 2px;
-}
-
-/* Source code view: line number format */
-span.lineNum
-{
- background-color: #EFE383;
-}
-
-/* Source code view: format for lines which were executed */
-td.lineCov,
-span.lineCov
-{
- background-color: #CAD7FE;
-}
-
-/* Source code view: format for Cov legend */
-span.coverLegendCov
-{
- padding-left: 10px;
- padding-right: 10px;
- padding-bottom: 2px;
- background-color: #CAD7FE;
-}
-
-/* Source code view: format for lines which were not executed */
-td.lineNoCov,
-span.lineNoCov
-{
- background-color: #FF6230;
-}
-
-/* Source code view: format for NoCov legend */
-span.coverLegendNoCov
-{
- padding-left: 10px;
- padding-right: 10px;
- padding-bottom: 2px;
- background-color: #FF6230;
-}
-
-/* Source code view (function table): standard link - visited format */
-td.lineNoCov > a:visited,
-td.lineCov > a:visited
-{
- color: black;
- text-decoration: underline;
-}
-
-/* Source code view: format for lines which were executed only in a
- previous version */
-span.lineDiffCov
-{
- background-color: #B5F7AF;
-}
-
-/* Source code view: format for branches which were executed
- * and taken */
-span.branchCov
-{
- background-color: #CAD7FE;
-}
-
-/* Source code view: format for branches which were executed
- * but not taken */
-span.branchNoCov
-{
- background-color: #FF6230;
-}
-
-/* Source code view: format for branches which were not executed */
-span.branchNoExec
-{
- background-color: #FF6230;
-}
-
-/* Source code view: format for the source code heading line */
-pre.sourceHeading
-{
- white-space: pre;
- font-family: monospace;
- font-weight: bold;
- margin: 0px;
-}
-
-/* All views: header legend value for low rate */
-td.headerValueLegL
-{
- font-family: sans-serif;
- text-align: center;
- white-space: nowrap;
- padding-left: 4px;
- padding-right: 2px;
- background-color: #FF0000;
- font-size: 80%;
-}
-
-/* All views: header legend value for med rate */
-td.headerValueLegM
-{
- font-family: sans-serif;
- text-align: center;
- white-space: nowrap;
- padding-left: 2px;
- padding-right: 2px;
- background-color: #FFEA20;
- font-size: 80%;
-}
-
-/* All views: header legend value for hi rate */
-td.headerValueLegH
-{
- font-family: sans-serif;
- text-align: center;
- white-space: nowrap;
- padding-left: 2px;
- padding-right: 4px;
- background-color: #A7FC9D;
- font-size: 80%;
-}
-
-/* All views except source code view: legend format for low coverage */
-span.coverLegendCovLo
-{
- padding-left: 10px;
- padding-right: 10px;
- padding-top: 2px;
- background-color: #FF0000;
-}
-
-/* All views except source code view: legend format for med coverage */
-span.coverLegendCovMed
-{
- padding-left: 10px;
- padding-right: 10px;
- padding-top: 2px;
- background-color: #FFEA20;
-}
-
-/* All views except source code view: legend format for hi coverage */
-span.coverLegendCovHi
-{
- padding-left: 10px;
- padding-right: 10px;
- padding-top: 2px;
- background-color: #A7FC9D;
-}
diff --git a/coverage/glass.png b/coverage/glass.png
deleted file mode 100644
index e1abc006..00000000
Binary files a/coverage/glass.png and /dev/null differ
diff --git a/coverage/index-sort-f.html b/coverage/index-sort-f.html
deleted file mode 100644
index 18aaa5b2..00000000
--- a/coverage/index-sort-f.html
+++ /dev/null
@@ -1,113 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Directory
- Line Coverage
- Functions
-
-
- src
-
-
-
- 47.1 %
- 112 / 238
- 33.3 %
- 10 / 30
-
-
- extras/test/unit/include
-
-
-
- 79.0 %
- 83 / 105
- 66.7 %
- 18 / 27
-
-
- extras/test/unit/tests
-
-
-
- 100.0 %
- 142 / 142
- 100.0 %
- 10 / 10
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/index-sort-l.html b/coverage/index-sort-l.html
deleted file mode 100644
index a54bce20..00000000
--- a/coverage/index-sort-l.html
+++ /dev/null
@@ -1,113 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Directory
- Line Coverage
- Functions
-
-
- src
-
-
-
- 47.1 %
- 112 / 238
- 33.3 %
- 10 / 30
-
-
- extras/test/unit/include
-
-
-
- 79.0 %
- 83 / 105
- 66.7 %
- 18 / 27
-
-
- extras/test/unit/tests
-
-
-
- 100.0 %
- 142 / 142
- 100.0 %
- 10 / 10
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/index.html b/coverage/index.html
deleted file mode 100644
index 380f9649..00000000
--- a/coverage/index.html
+++ /dev/null
@@ -1,113 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Directory
- Line Coverage
- Functions
-
-
- extras/test/unit/include
-
-
-
- 79.0 %
- 83 / 105
- 66.7 %
- 18 / 27
-
-
- extras/test/unit/tests
-
-
-
- 100.0 %
- 142 / 142
- 100.0 %
- 10 / 10
-
-
- src
-
-
-
- 47.1 %
- 112 / 238
- 33.3 %
- 10 / 30
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/ruby.png b/coverage/ruby.png
deleted file mode 100644
index 991b6d4e..00000000
Binary files a/coverage/ruby.png and /dev/null differ
diff --git a/coverage/snow.png b/coverage/snow.png
deleted file mode 100644
index 2cdae107..00000000
Binary files a/coverage/snow.png and /dev/null differ
diff --git a/coverage/src/Hal.cpp.func-sort-c.html b/coverage/src/Hal.cpp.func-sort-c.html
deleted file mode 100644
index 456c4fc0..00000000
--- a/coverage/src/Hal.cpp.func-sort-c.html
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - src/Hal.cpp - functions
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/src/Hal.cpp.func.html b/coverage/src/Hal.cpp.func.html
deleted file mode 100644
index 93ce3545..00000000
--- a/coverage/src/Hal.cpp.func.html
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - src/Hal.cpp - functions
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/src/Hal.cpp.gcov.html b/coverage/src/Hal.cpp.gcov.html
deleted file mode 100644
index be0e0a64..00000000
--- a/coverage/src/Hal.cpp.gcov.html
+++ /dev/null
@@ -1,111 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - src/Hal.cpp
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Line data Source code
-
- 1 : #include "Hal.h"
- 2 :
- 3 4 : RadioLibHal::RadioLibHal(const uint32_t input, const uint32_t output, const uint32_t low, const uint32_t high, const uint32_t rising, const uint32_t falling)
- 4 4 : : GpioModeInput(input),
- 5 4 : GpioModeOutput(output),
- 6 4 : GpioLevelLow(low),
- 7 4 : GpioLevelHigh(high),
- 8 4 : GpioInterruptRising(rising),
- 9 4 : GpioInterruptFalling(falling) {}
- 10 :
- 11 0 : void RadioLibHal::init() {
- 12 :
- 13 0 : }
- 14 :
- 15 0 : void RadioLibHal::term() {
- 16 :
- 17 0 : }
- 18 :
- 19 0 : void RadioLibHal::tone(uint32_t pin, unsigned int frequency, RadioLibTime_t duration) {
- 20 : (void)pin;
- 21 : (void)frequency;
- 22 : (void)duration;
- 23 0 : }
- 24 :
- 25 0 : void RadioLibHal::noTone(uint32_t pin) {
- 26 : (void)pin;
- 27 0 : }
- 28 :
- 29 0 : void RadioLibHal::yield() {
- 30 :
- 31 0 : }
- 32 :
- 33 0 : uint32_t RadioLibHal::pinToInterrupt(uint32_t pin) {
- 34 0 : return(pin);
- 35 : }
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/src/Module.cpp.func-sort-c.html b/coverage/src/Module.cpp.func-sort-c.html
deleted file mode 100644
index cadff126..00000000
--- a/coverage/src/Module.cpp.func-sort-c.html
+++ /dev/null
@@ -1,164 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - src/Module.cpp - functions
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/src/Module.cpp.func.html b/coverage/src/Module.cpp.func.html
deleted file mode 100644
index b0279d83..00000000
--- a/coverage/src/Module.cpp.func.html
+++ /dev/null
@@ -1,164 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - src/Module.cpp - functions
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/src/Module.cpp.gcov.html b/coverage/src/Module.cpp.gcov.html
deleted file mode 100644
index dd535c74..00000000
--- a/coverage/src/Module.cpp.gcov.html
+++ /dev/null
@@ -1,616 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - src/Module.cpp
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Line data Source code
-
- 1 : #include "Module.h"
- 2 :
- 3 : // the following is probably only needed on non-Arduino builds
- 4 : #include <stdio.h>
- 5 : #include <string.h>
- 6 :
- 7 : #if defined(RADIOLIB_BUILD_ARDUINO)
- 8 : #include "hal/Arduino/ArduinoHal.h"
- 9 :
- 10 : Module::Module(uint32_t cs, uint32_t irq, uint32_t rst, uint32_t gpio) : csPin(cs), irqPin(irq), rstPin(rst), gpioPin(gpio) {
- 11 : this->hal = new ArduinoHal();
- 12 : }
- 13 :
- 14 : Module::Module(uint32_t cs, uint32_t irq, uint32_t rst, uint32_t gpio, SPIClass& spi, SPISettings spiSettings) : csPin(cs), irqPin(irq), rstPin(rst), gpioPin(gpio) {
- 15 : this->hal = new ArduinoHal(spi, spiSettings);
- 16 : }
- 17 : #endif
- 18 :
- 19 4 : Module::Module(RadioLibHal *hal, uint32_t cs, uint32_t irq, uint32_t rst, uint32_t gpio) : csPin(cs), irqPin(irq), rstPin(rst), gpioPin(gpio) {
- 20 4 : this->hal = hal;
- 21 4 : }
- 22 :
- 23 0 : Module::Module(const Module& mod) {
- 24 0 : *this = mod;
- 25 0 : }
- 26 :
- 27 0 : Module& Module::operator=(const Module& mod) {
- 28 0 : memcpy(reinterpret_cast<void*>(&(const_cast<Module&>(mod)).spiConfig), &this->spiConfig, sizeof(SPIConfig_t));
- 29 0 : this->csPin = mod.csPin;
- 30 0 : this->irqPin = mod.irqPin;
- 31 0 : this->rstPin = mod.rstPin;
- 32 0 : this->gpioPin = mod.gpioPin;
- 33 0 : return(*this);
- 34 : }
- 35 :
- 36 : static volatile const char info[] = RADIOLIB_INFO;
- 37 4 : void Module::init() {
- 38 4 : this->hal->init();
- 39 4 : this->hal->pinMode(csPin, this->hal->GpioModeOutput);
- 40 4 : this->hal->digitalWrite(csPin, this->hal->GpioLevelHigh);
- 41 : RADIOLIB_DEBUG_BASIC_PRINTLN(RADIOLIB_INFO);
- 42 4 : }
- 43 :
- 44 4 : void Module::term() {
- 45 : // stop hardware interfaces (if they were initialized by the library)
- 46 4 : this->hal->term();
- 47 4 : }
- 48 :
- 49 10 : int16_t Module::SPIgetRegValue(uint32_t reg, uint8_t msb, uint8_t lsb) {
- 50 10 : if((msb > 7) || (lsb > 7) || (lsb > msb)) {
- 51 6 : return(RADIOLIB_ERR_INVALID_BIT_RANGE);
- 52 : }
- 53 :
- 54 4 : uint8_t rawValue = SPIreadRegister(reg);
- 55 4 : uint8_t maskedValue = rawValue & ((0b11111111 << lsb) & (0b11111111 >> (7 - msb)));
- 56 4 : return(maskedValue);
- 57 : }
- 58 :
- 59 16 : int16_t Module::SPIsetRegValue(uint32_t reg, uint8_t value, uint8_t msb, uint8_t lsb, uint8_t checkInterval, uint8_t checkMask, bool force) {
- 60 16 : if((msb > 7) || (lsb > 7) || (lsb > msb)) {
- 61 6 : return(RADIOLIB_ERR_INVALID_BIT_RANGE);
- 62 : }
- 63 :
- 64 : // read the current value
- 65 10 : uint8_t currentValue = SPIreadRegister(reg);
- 66 10 : uint8_t mask = ~((0b11111111 << (msb + 1)) | (0b11111111 >> (8 - lsb)));
- 67 :
- 68 : // check if we actually need to update the register
- 69 10 : if((currentValue & mask) == (value & mask) && !force) {
- 70 0 : return(RADIOLIB_ERR_NONE);
- 71 : }
- 72 :
- 73 : // update the register
- 74 10 : uint8_t newValue = (currentValue & ~mask) | (value & mask);
- 75 10 : SPIwriteRegister(reg, newValue);
- 76 :
- 77 : #if RADIOLIB_SPI_PARANOID
- 78 : // check register value each millisecond until check interval is reached
- 79 : // some registers need a bit of time to process the change (e.g. SX127X_REG_OP_MODE)
- 80 10 : RadioLibTime_t start = this->hal->micros();
- 81 : #if RADIOLIB_DEBUG_SPI
- 82 : uint8_t readValue = 0x00;
- 83 : #endif
- 84 1448 : while(this->hal->micros() - start < (checkInterval * 1000)) {
- 85 1440 : uint8_t val = SPIreadRegister(reg);
- 86 1440 : if((val & checkMask) == (newValue & checkMask)) {
- 87 : // check passed, we can stop the loop
- 88 2 : return(RADIOLIB_ERR_NONE);
- 89 : }
- 90 : #if RADIOLIB_DEBUG_SPI
- 91 : readValue = val;
- 92 : #endif
- 93 : }
- 94 :
- 95 : // check failed, print debug info
- 96 : RADIOLIB_DEBUG_SPI_PRINTLN();
- 97 : RADIOLIB_DEBUG_SPI_PRINTLN("address:\t0x%X", reg);
- 98 : RADIOLIB_DEBUG_SPI_PRINTLN("bits:\t\t%d %d", msb, lsb);
- 99 : RADIOLIB_DEBUG_SPI_PRINTLN("value:\t\t0x%X", value);
- 100 : RADIOLIB_DEBUG_SPI_PRINTLN("current:\t0x%X", currentValue);
- 101 : RADIOLIB_DEBUG_SPI_PRINTLN("mask:\t\t0x%X", mask);
- 102 : RADIOLIB_DEBUG_SPI_PRINTLN("new:\t\t0x%X", newValue);
- 103 : RADIOLIB_DEBUG_SPI_PRINTLN("read:\t\t0x%X", readValue);
- 104 :
- 105 8 : return(RADIOLIB_ERR_SPI_WRITE_FAILED);
- 106 : #else
- 107 : return(RADIOLIB_ERR_NONE);
- 108 : #endif
- 109 : }
- 110 :
- 111 0 : void Module::SPIreadRegisterBurst(uint32_t reg, size_t numBytes, uint8_t* inBytes) {
- 112 0 : if(!this->spiConfig.stream) {
- 113 0 : SPItransfer(this->spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_READ], reg, NULL, inBytes, numBytes);
- 114 : } else {
- 115 : uint8_t cmd[6];
- 116 0 : uint8_t* cmdPtr = cmd;
- 117 0 : for(int8_t i = (int8_t)this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_CMD]/8 - 1; i >= 0; i--) {
- 118 0 : *(cmdPtr++) = (this->spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_READ] >> 8*i) & 0xFF;
- 119 : }
- 120 0 : for(int8_t i = (int8_t)((this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_ADDR]/8) - 1); i >= 0; i--) {
- 121 0 : *(cmdPtr++) = (reg >> 8*i) & 0xFF;
- 122 : }
- 123 0 : SPItransferStream(cmd, this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_CMD]/8 + this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_ADDR]/8, false, NULL, inBytes, numBytes, true);
- 124 : }
- 125 0 : }
- 126 :
- 127 1454 : uint8_t Module::SPIreadRegister(uint32_t reg) {
- 128 1454 : uint8_t resp = 0;
- 129 1454 : if(!spiConfig.stream) {
- 130 1036 : SPItransfer(this->spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_READ], reg, NULL, &resp, 1);
- 131 : } else {
- 132 : uint8_t cmd[6];
- 133 418 : uint8_t* cmdPtr = cmd;
- 134 836 : for(int8_t i = (int8_t)this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_CMD]/8 - 1; i >= 0; i--) {
- 135 418 : *(cmdPtr++) = (this->spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_READ] >> 8*i) & 0xFF;
- 136 : }
- 137 1254 : for(int8_t i = (int8_t)((this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_ADDR]/8) - 1); i >= 0; i--) {
- 138 836 : *(cmdPtr++) = (reg >> 8*i) & 0xFF;
- 139 : }
- 140 418 : SPItransferStream(cmd, this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_CMD]/8 + this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_ADDR]/8, false, NULL, &resp, 1, true);
- 141 : }
- 142 1454 : return(resp);
- 143 : }
- 144 :
- 145 0 : void Module::SPIwriteRegisterBurst(uint32_t reg, const uint8_t* data, size_t numBytes) {
- 146 0 : if(!spiConfig.stream) {
- 147 0 : SPItransfer(spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_WRITE], reg, data, NULL, numBytes);
- 148 : } else {
- 149 : uint8_t cmd[6];
- 150 0 : uint8_t* cmdPtr = cmd;
- 151 0 : for(int8_t i = (int8_t)this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_CMD]/8 - 1; i >= 0; i--) {
- 152 0 : *(cmdPtr++) = (this->spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_WRITE] >> 8*i) & 0xFF;
- 153 : }
- 154 0 : for(int8_t i = (int8_t)((this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_ADDR]/8) - 1); i >= 0; i--) {
- 155 0 : *(cmdPtr++) = (reg >> 8*i) & 0xFF;
- 156 : }
- 157 0 : SPItransferStream(cmd, this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_CMD]/8 + this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_ADDR]/8, true, data, NULL, numBytes, true);
- 158 : }
- 159 0 : }
- 160 :
- 161 10 : void Module::SPIwriteRegister(uint32_t reg, uint8_t data) {
- 162 10 : if(!spiConfig.stream) {
- 163 5 : SPItransfer(spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_WRITE], reg, &data, NULL, 1);
- 164 : } else {
- 165 : uint8_t cmd[6];
- 166 5 : uint8_t* cmdPtr = cmd;
- 167 10 : for(int8_t i = (int8_t)this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_CMD]/8 - 1; i >= 0; i--) {
- 168 5 : *(cmdPtr++) = (this->spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_WRITE] >> 8*i) & 0xFF;
- 169 : }
- 170 15 : for(int8_t i = (int8_t)((this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_ADDR]/8) - 1); i >= 0; i--) {
- 171 10 : *(cmdPtr++) = (reg >> 8*i) & 0xFF;
- 172 : }
- 173 5 : SPItransferStream(cmd, this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_CMD]/8 + this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_ADDR]/8, true, &data, NULL, 1, true);
- 174 : }
- 175 10 : }
- 176 :
- 177 1041 : void Module::SPItransfer(uint16_t cmd, uint32_t reg, const uint8_t* dataOut, uint8_t* dataIn, size_t numBytes) {
- 178 : // prepare the buffers
- 179 1041 : size_t buffLen = this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_CMD]/8 + this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_ADDR]/8 + numBytes;
- 180 : #if RADIOLIB_STATIC_ONLY
- 181 : uint8_t buffOut[RADIOLIB_STATIC_ARRAY_SIZE];
- 182 : uint8_t buffIn[RADIOLIB_STATIC_ARRAY_SIZE];
- 183 : #else
- 184 1041 : uint8_t* buffOut = new uint8_t[buffLen];
- 185 1041 : uint8_t* buffIn = new uint8_t[buffLen];
- 186 : #endif
- 187 1041 : uint8_t* buffOutPtr = buffOut;
- 188 :
- 189 : // copy the command
- 190 : // TODO properly handle variable commands and addresses
- 191 1041 : if(this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_ADDR] <= 8) {
- 192 1041 : *(buffOutPtr++) = reg | cmd;
- 193 : } else {
- 194 0 : *(buffOutPtr++) = (reg >> 8) | cmd;
- 195 0 : *(buffOutPtr++) = reg & 0xFF;
- 196 : }
- 197 :
- 198 : // copy the data
- 199 1041 : if(cmd == spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_WRITE]) {
- 200 5 : memcpy(buffOutPtr, dataOut, numBytes);
- 201 : } else {
- 202 1036 : memset(buffOutPtr, this->spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_NOP], numBytes);
- 203 : }
- 204 :
- 205 : // do the transfer
- 206 1041 : this->hal->spiBeginTransaction();
- 207 1041 : this->hal->digitalWrite(this->csPin, this->hal->GpioLevelLow);
- 208 1041 : this->hal->spiTransfer(buffOut, buffLen, buffIn);
- 209 1041 : this->hal->digitalWrite(this->csPin, this->hal->GpioLevelHigh);
- 210 1041 : this->hal->spiEndTransaction();
- 211 :
- 212 : // copy the data
- 213 1041 : if(cmd == spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_READ]) {
- 214 1036 : memcpy(dataIn, &buffIn[this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_ADDR]/8], numBytes);
- 215 : }
- 216 :
- 217 : // print debug information
- 218 : #if RADIOLIB_DEBUG_SPI
- 219 : const uint8_t* debugBuffPtr = NULL;
- 220 : if(cmd == spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_WRITE]) {
- 221 : RADIOLIB_DEBUG_SPI_PRINT("W\t%X\t", reg);
- 222 : debugBuffPtr = &buffOut[this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_ADDR]/8];
- 223 : } else if(cmd == spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_READ]) {
- 224 : RADIOLIB_DEBUG_SPI_PRINT("R\t%X\t", reg);
- 225 : debugBuffPtr = &buffIn[this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_ADDR]/8];
- 226 : }
- 227 : for(size_t n = 0; n < numBytes; n++) {
- 228 : RADIOLIB_DEBUG_SPI_PRINT_NOTAG("%X\t", debugBuffPtr[n]);
- 229 : }
- 230 : RADIOLIB_DEBUG_SPI_PRINTLN_NOTAG();
- 231 : #endif
- 232 :
- 233 : #if !RADIOLIB_STATIC_ONLY
- 234 1041 : delete[] buffOut;
- 235 1041 : delete[] buffIn;
- 236 : #endif
- 237 1041 : }
- 238 :
- 239 0 : int16_t Module::SPIreadStream(uint16_t cmd, uint8_t* data, size_t numBytes, bool waitForGpio, bool verify) {
- 240 : uint8_t cmdBuf[2];
- 241 0 : uint8_t* cmdPtr = cmdBuf;
- 242 0 : for(int8_t i = (int8_t)this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_CMD]/8 - 1; i >= 0; i--) {
- 243 0 : *(cmdPtr++) = (cmd >> 8*i) & 0xFF;
- 244 : }
- 245 0 : return(this->SPIreadStream(cmdBuf, this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_CMD]/8, data, numBytes, waitForGpio, verify));
- 246 : }
- 247 :
- 248 0 : int16_t Module::SPIreadStream(const uint8_t* cmd, uint8_t cmdLen, uint8_t* data, size_t numBytes, bool waitForGpio, bool verify) {
- 249 : // send the command
- 250 0 : int16_t state = this->SPItransferStream(cmd, cmdLen, false, NULL, data, numBytes, waitForGpio);
- 251 0 : RADIOLIB_ASSERT(state);
- 252 :
- 253 : #if !RADIOLIB_SPI_PARANOID
- 254 : (void)verify;
- 255 : return(RADIOLIB_ERR_NONE);
- 256 : #else
- 257 :
- 258 : // check the status
- 259 0 : if(verify && (this->spiConfig.checkStatusCb != nullptr)) {
- 260 0 : state = this->spiConfig.checkStatusCb(this);
- 261 : }
- 262 :
- 263 0 : return(state);
- 264 : #endif
- 265 : }
- 266 :
- 267 0 : int16_t Module::SPIwriteStream(uint16_t cmd, const uint8_t* data, size_t numBytes, bool waitForGpio, bool verify) {
- 268 : uint8_t cmdBuf[2];
- 269 0 : uint8_t* cmdPtr = cmdBuf;
- 270 0 : for(int8_t i = (int8_t)this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_CMD]/8 - 1; i >= 0; i--) {
- 271 0 : *(cmdPtr++) = (cmd >> 8*i) & 0xFF;
- 272 : }
- 273 0 : return(this->SPIwriteStream(cmdBuf, this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_CMD]/8, data, numBytes, waitForGpio, verify));
- 274 : }
- 275 :
- 276 0 : int16_t Module::SPIwriteStream(const uint8_t* cmd, uint8_t cmdLen, const uint8_t* data, size_t numBytes, bool waitForGpio, bool verify) {
- 277 : // send the command
- 278 0 : int16_t state = this->SPItransferStream(cmd, cmdLen, true, data, NULL, numBytes, waitForGpio);
- 279 0 : RADIOLIB_ASSERT(state);
- 280 :
- 281 : #if !RADIOLIB_SPI_PARANOID
- 282 : (void)verify;
- 283 : return(RADIOLIB_ERR_NONE);
- 284 : #else
- 285 :
- 286 : // check the status
- 287 0 : if(verify && (this->spiConfig.checkStatusCb != nullptr)) {
- 288 0 : state = this->spiConfig.checkStatusCb(this);
- 289 : }
- 290 :
- 291 0 : return(state);
- 292 : #endif
- 293 : }
- 294 :
- 295 0 : int16_t Module::SPIcheckStream() {
- 296 0 : int16_t state = RADIOLIB_ERR_NONE;
- 297 :
- 298 : #if RADIOLIB_SPI_PARANOID
- 299 : // get the status
- 300 0 : uint8_t spiStatus = 0;
- 301 : uint8_t cmdBuf[2];
- 302 0 : uint8_t* cmdPtr = cmdBuf;
- 303 0 : for(int8_t i = (int8_t)this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_CMD]/8 - 1; i >= 0; i--) {
- 304 0 : *(cmdPtr++) = ( this->spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_STATUS] >> 8*i) & 0xFF;
- 305 : }
- 306 0 : state = this->SPItransferStream(cmdBuf, this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_CMD]/8, false, NULL, &spiStatus, 1, true);
- 307 0 : RADIOLIB_ASSERT(state);
- 308 :
- 309 : // translate to RadioLib status code
- 310 0 : if(this->spiConfig.parseStatusCb != nullptr) {
- 311 0 : this->spiConfig.err = this->spiConfig.parseStatusCb(spiStatus);
- 312 : }
- 313 : #endif
- 314 :
- 315 0 : return(state);
- 316 : }
- 317 :
- 318 423 : int16_t Module::SPItransferStream(const uint8_t* cmd, uint8_t cmdLen, bool write, const uint8_t* dataOut, uint8_t* dataIn, size_t numBytes, bool waitForGpio) {
- 319 : // prepare the output buffer
- 320 423 : size_t buffLen = cmdLen + numBytes;
- 321 423 : if(!write) {
- 322 418 : buffLen += (this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_STATUS] / 8);
- 323 : }
- 324 : #if RADIOLIB_STATIC_ONLY
- 325 : uint8_t buffOut[RADIOLIB_STATIC_ARRAY_SIZE];
- 326 : #else
- 327 423 : uint8_t* buffOut = new uint8_t[buffLen];
- 328 : #endif
- 329 423 : uint8_t* buffOutPtr = buffOut;
- 330 :
- 331 : // copy the command
- 332 1692 : for(uint8_t n = 0; n < cmdLen; n++) {
- 333 1269 : *(buffOutPtr++) = cmd[n];
- 334 : }
- 335 :
- 336 : // copy the data
- 337 423 : if(write) {
- 338 5 : memcpy(buffOutPtr, dataOut, numBytes);
- 339 : } else {
- 340 418 : memset(buffOutPtr, this->spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_NOP], numBytes + (this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_STATUS] / 8));
- 341 : }
- 342 :
- 343 : // ensure GPIO is low
- 344 423 : if(waitForGpio) {
- 345 423 : if(this->gpioPin == RADIOLIB_NC) {
- 346 0 : this->hal->delay(50);
- 347 : } else {
- 348 423 : RadioLibTime_t start = this->hal->millis();
- 349 423 : while(this->hal->digitalRead(this->gpioPin)) {
- 350 0 : this->hal->yield();
- 351 :
- 352 : // this timeout check triggers a false positive from cppcheck
- 353 : // cppcheck-suppress unsignedLessThanZero
- 354 0 : if(this->hal->millis() - start >= this->spiConfig.timeout) {
- 355 : RADIOLIB_DEBUG_BASIC_PRINTLN("GPIO pre-transfer timeout, is it connected?");
- 356 : #if !RADIOLIB_STATIC_ONLY
- 357 0 : delete[] buffOut;
- 358 : #endif
- 359 0 : return(RADIOLIB_ERR_SPI_CMD_TIMEOUT);
- 360 : }
- 361 :
- 362 : }
- 363 : }
- 364 : }
- 365 :
- 366 : // prepare the input buffer
- 367 : #if RADIOLIB_STATIC_ONLY
- 368 : uint8_t buffIn[RADIOLIB_STATIC_ARRAY_SIZE];
- 369 : #else
- 370 423 : uint8_t* buffIn = new uint8_t[buffLen];
- 371 : #endif
- 372 :
- 373 : // do the transfer
- 374 423 : this->hal->spiBeginTransaction();
- 375 423 : this->hal->digitalWrite(this->csPin, this->hal->GpioLevelLow);
- 376 423 : this->hal->spiTransfer(buffOut, buffLen, buffIn);
- 377 423 : this->hal->digitalWrite(this->csPin, this->hal->GpioLevelHigh);
- 378 423 : this->hal->spiEndTransaction();
- 379 :
- 380 : // wait for GPIO to go high and then low
- 381 423 : if(waitForGpio) {
- 382 423 : if(this->gpioPin == RADIOLIB_NC) {
- 383 0 : this->hal->delay(1);
- 384 : } else {
- 385 423 : this->hal->delayMicroseconds(1);
- 386 423 : RadioLibTime_t start = this->hal->millis();
- 387 423 : while(this->hal->digitalRead(this->gpioPin)) {
- 388 0 : this->hal->yield();
- 389 :
- 390 : // this timeout check triggers a false positive from cppcheck
- 391 : // cppcheck-suppress unsignedLessThanZero
- 392 0 : if(this->hal->millis() - start >= this->spiConfig.timeout) {
- 393 : RADIOLIB_DEBUG_BASIC_PRINTLN("GPIO post-transfer timeout, is it connected?");
- 394 : #if !RADIOLIB_STATIC_ONLY
- 395 0 : delete[] buffOut;
- 396 0 : delete[] buffIn;
- 397 : #endif
- 398 0 : return(RADIOLIB_ERR_SPI_CMD_TIMEOUT);
- 399 : }
- 400 :
- 401 : }
- 402 : }
- 403 : }
- 404 :
- 405 : // parse status
- 406 423 : int16_t state = RADIOLIB_ERR_NONE;
- 407 423 : if((this->spiConfig.parseStatusCb != nullptr) && (numBytes > 0)) {
- 408 0 : state = this->spiConfig.parseStatusCb(buffIn[this->spiConfig.statusPos]);
- 409 : }
- 410 :
- 411 : // copy the data
- 412 423 : if(!write) {
- 413 : // skip the status bytes if present
- 414 418 : memcpy(dataIn, &buffIn[cmdLen + (this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_STATUS] / 8)], numBytes);
- 415 : }
- 416 :
- 417 : // print debug information
- 418 : #if RADIOLIB_DEBUG_SPI
- 419 : // print command byte(s)
- 420 : RADIOLIB_DEBUG_SPI_PRINT("CMD");
- 421 : if(write) {
- 422 : RADIOLIB_DEBUG_SPI_PRINT_NOTAG("W\t");
- 423 : } else {
- 424 : RADIOLIB_DEBUG_SPI_PRINT_NOTAG("R\t");
- 425 : }
- 426 : size_t n = 0;
- 427 : for(; n < cmdLen; n++) {
- 428 : RADIOLIB_DEBUG_SPI_PRINT_NOTAG("%X\t", cmd[n]);
- 429 : }
- 430 : RADIOLIB_DEBUG_SPI_PRINTLN_NOTAG();
- 431 :
- 432 : // print data bytes
- 433 : RADIOLIB_DEBUG_SPI_PRINT("SI\t");
- 434 : for(n = 0; n < cmdLen; n++) {
- 435 : RADIOLIB_DEBUG_SPI_PRINT_NOTAG("\t");
- 436 : }
- 437 : for(; n < buffLen; n++) {
- 438 : RADIOLIB_DEBUG_SPI_PRINT_NOTAG("%X\t", buffOut[n]);
- 439 : }
- 440 : RADIOLIB_DEBUG_SPI_PRINTLN_NOTAG();
- 441 : RADIOLIB_DEBUG_SPI_PRINT("SO\t");
- 442 : for(n = 0; n < buffLen; n++) {
- 443 : RADIOLIB_DEBUG_SPI_PRINT_NOTAG("%X\t", buffIn[n]);
- 444 : }
- 445 : RADIOLIB_DEBUG_SPI_PRINTLN_NOTAG();
- 446 : #endif
- 447 :
- 448 : #if !RADIOLIB_STATIC_ONLY
- 449 423 : delete[] buffOut;
- 450 423 : delete[] buffIn;
- 451 : #endif
- 452 :
- 453 423 : return(state);
- 454 : }
- 455 :
- 456 0 : void Module::waitForMicroseconds(RadioLibTime_t start, RadioLibTime_t len) {
- 457 : #if RADIOLIB_INTERRUPT_TIMING
- 458 : (void)start;
- 459 : if((this->TimerSetupCb != nullptr) && (len != this->prevTimingLen)) {
- 460 : prevTimingLen = len;
- 461 : this->TimerSetupCb(len);
- 462 : }
- 463 : this->TimerFlag = false;
- 464 : while(!this->TimerFlag) {
- 465 : this->hal->yield();
- 466 : }
- 467 : #else
- 468 0 : while(this->hal->micros() - start < len) {
- 469 0 : this->hal->yield();
- 470 : }
- 471 : #endif
- 472 0 : }
- 473 :
- 474 : #if RADIOLIB_DEBUG
- 475 : void Module::regdump(const char* level, uint16_t start, size_t len) {
- 476 : #if RADIOLIB_STATIC_ONLY
- 477 : uint8_t buff[RADIOLIB_STATIC_ARRAY_SIZE];
- 478 : #else
- 479 : uint8_t* buff = new uint8_t[len];
- 480 : #endif
- 481 : SPIreadRegisterBurst(start, len, buff);
- 482 : rlb_hexdump(level, buff, len, start);
- 483 : #if !RADIOLIB_STATIC_ONLY
- 484 : delete[] buff;
- 485 : #endif
- 486 : }
- 487 : #endif
- 488 :
- 489 0 : void Module::setRfSwitchPins(uint32_t rxEn, uint32_t txEn) {
- 490 : // This can be on the stack, setRfSwitchTable copies the contents
- 491 0 : const uint32_t pins[] = {
- 492 : rxEn, txEn, RADIOLIB_NC, RADIOLIB_NC, RADIOLIB_NC,
- 493 0 : };
- 494 :
- 495 : // This must be static, since setRfSwitchTable stores a reference.
- 496 : static const RfSwitchMode_t table[] = {
- 497 0 : { MODE_IDLE, {this->hal->GpioLevelLow, this->hal->GpioLevelLow} },
- 498 0 : { MODE_RX, {this->hal->GpioLevelHigh, this->hal->GpioLevelLow} },
- 499 0 : { MODE_TX, {this->hal->GpioLevelLow, this->hal->GpioLevelHigh} },
- 500 : END_OF_MODE_TABLE,
- 501 0 : };
- 502 0 : setRfSwitchTable(pins, table);
- 503 0 : }
- 504 :
- 505 0 : void Module::setRfSwitchTable(const uint32_t (&pins)[RFSWITCH_MAX_PINS], const RfSwitchMode_t table[]) {
- 506 0 : memcpy(this->rfSwitchPins, pins, sizeof(this->rfSwitchPins));
- 507 0 : this->rfSwitchTable = table;
- 508 0 : for(size_t i = 0; i < RFSWITCH_MAX_PINS; i++) {
- 509 0 : this->hal->pinMode(pins[i], this->hal->GpioModeOutput);
- 510 : }
- 511 0 : }
- 512 :
- 513 0 : const Module::RfSwitchMode_t *Module::findRfSwitchMode(uint8_t mode) const {
- 514 0 : const RfSwitchMode_t *row = this->rfSwitchTable;
- 515 0 : while(row && row->mode != MODE_END_OF_TABLE) {
- 516 0 : if(row->mode == mode) {
- 517 0 : return row;
- 518 : }
- 519 0 : ++row;
- 520 : }
- 521 0 : return nullptr;
- 522 : }
- 523 :
- 524 0 : void Module::setRfSwitchState(uint8_t mode) {
- 525 0 : const RfSwitchMode_t *row = findRfSwitchMode(mode);
- 526 0 : if(!row) {
- 527 : // RF switch control is disabled or does not have this mode
- 528 0 : return;
- 529 : }
- 530 :
- 531 : // set pins
- 532 0 : const uint32_t *value = &row->values[0];
- 533 0 : for(size_t i = 0; i < RFSWITCH_MAX_PINS; i++) {
- 534 0 : uint32_t pin = this->rfSwitchPins[i];
- 535 0 : if(!(pin & RFSWITCH_PIN_FLAG)) {
- 536 0 : this->hal->digitalWrite(pin, *value);
- 537 : }
- 538 0 : ++value;
- 539 : }
- 540 : }
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/src/index-sort-f.html b/coverage/src/index-sort-f.html
deleted file mode 100644
index 3aaade82..00000000
--- a/coverage/src/index-sort-f.html
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - src
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filename
- Line Coverage
- Functions
-
-
- Hal.cpp
-
-
-
- 36.8 %
- 7 / 19
- 14.3 %
- 1 / 7
-
-
- Module.cpp
-
-
-
- 47.9 %
- 105 / 219
- 39.1 %
- 9 / 23
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/src/index-sort-l.html b/coverage/src/index-sort-l.html
deleted file mode 100644
index e3f19c95..00000000
--- a/coverage/src/index-sort-l.html
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - src
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filename
- Line Coverage
- Functions
-
-
- Hal.cpp
-
-
-
- 36.8 %
- 7 / 19
- 14.3 %
- 1 / 7
-
-
- Module.cpp
-
-
-
- 47.9 %
- 105 / 219
- 39.1 %
- 9 / 23
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/src/index.html b/coverage/src/index.html
deleted file mode 100644
index ca91a41a..00000000
--- a/coverage/src/index.html
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - src
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filename
- Line Coverage
- Functions
-
-
- Hal.cpp
-
-
-
- 36.8 %
- 7 / 19
- 14.3 %
- 1 / 7
-
-
- Module.cpp
-
-
-
- 47.9 %
- 105 / 219
- 39.1 %
- 9 / 23
-
-
-
-
-
-
-
-
-
-
diff --git a/coverage/updown.png b/coverage/updown.png
deleted file mode 100644
index aa56a238..00000000
Binary files a/coverage/updown.png and /dev/null differ
diff --git a/functions_func_s.html b/functions_func_s.html
index 3d34a64a..726e2caa 100644
--- a/functions_func_s.html
+++ b/functions_func_s.html
@@ -168,7 +168,7 @@ $(document).ready(function(){initNavTree('functions_func_s.html',''); initResiza
setOokPeakThresholdDecrement() : RF69 , SX127x
setOokPeakThresholdStep() : SX127x
setOokThresholdType() : RF69 , SX127x
-setOutputPower() : CC1101 , LR1110 , LR1120 , nRF24 , PhysicalLayer , RF69 , Si4430 , Si4431 , Si4432 , STM32WLx , SX1261 , SX1262 , SX1268 , SX1272 , SX1278 , SX128x
+setOutputPower() : CC1101 , LR1110 , LR1120 , nRF24 , PhysicalLayer , RF69 , Si4430 , Si4431 , Si4432 , STM32WLx , SX1261 , SX1262 , SX1268 , SX1272 , SX1278 , SX128x
setPacketReceivedAction() : CC1101 , LR11x0 , nRF24 , PhysicalLayer , RF69 , Si443x , STM32WLx , SX126x , SX127x , SX128x
setPacketSentAction() : CC1101 , LR11x0 , nRF24 , PhysicalLayer , RF69 , Si443x , STM32WLx , SX126x , SX127x , SX128x
setPaConfig() : SX126x
diff --git a/functions_s.html b/functions_s.html
index 70867832..4dccd073 100644
--- a/functions_s.html
+++ b/functions_s.html
@@ -174,7 +174,7 @@ $(document).ready(function(){initNavTree('functions_s.html',''); initResizable()
setOokPeakThresholdDecrement() : RF69 , SX127x
setOokPeakThresholdStep() : SX127x
setOokThresholdType() : RF69 , SX127x
-setOutputPower() : CC1101 , LR1110 , LR1120 , nRF24 , PhysicalLayer , RF69 , Si4430 , Si4431 , Si4432 , STM32WLx , SX1261 , SX1262 , SX1268 , SX1272 , SX1278 , SX128x
+setOutputPower() : CC1101 , LR1110 , LR1120 , nRF24 , PhysicalLayer , RF69 , Si4430 , Si4431 , Si4432 , STM32WLx , SX1261 , SX1262 , SX1268 , SX1272 , SX1278 , SX128x
setPacketReceivedAction() : CC1101 , LR11x0 , nRF24 , PhysicalLayer , RF69 , Si443x , STM32WLx , SX126x , SX127x , SX128x
setPacketSentAction() : CC1101 , LR11x0 , nRF24 , PhysicalLayer , RF69 , Si443x , STM32WLx , SX126x , SX127x , SX128x
setPaConfig() : SX126x
diff --git a/navtreeindex3.js b/navtreeindex3.js
index 01d2ef40..2fa4fa7d 100644
--- a/navtreeindex3.js
+++ b/navtreeindex3.js
@@ -138,7 +138,6 @@ var NAVTREEINDEX3 =
"class_s_x126x.html#afd3113858966e878e9c67a1e710bd586":[3,0,79,47],
"class_s_x126x.html#afdd901c5eac2ca8773d0977e2c493317":[3,0,79,18],
"class_s_x1272.html":[3,0,80],
-"class_s_x1272.html#a03f7073d710f18aad79b7d46f2fda659":[3,0,80,24],
"class_s_x1272.html#a0978cc9ecbb7b9d3a017c133506e57ac":[3,0,80,12],
"class_s_x1272.html#a0cc8eeb00241031796fc73b08711469b":[3,0,80,13],
"class_s_x1272.html#a171656d12a9909bbb04fc81be86ec2a6":[3,0,80,10],
@@ -156,6 +155,7 @@ var NAVTREEINDEX3 =
"class_s_x1272.html#a91aca64124321c07a67f26b3c6934aea":[3,0,80,18],
"class_s_x1272.html#a960913438feccad4c1913a9222384a5f":[3,0,80,15],
"class_s_x1272.html#a9ffe467a6baaeaa079e02c3f1f43f626":[3,0,80,0],
+"class_s_x1272.html#aac001c32a61d4eec0a49c472cac9ebc6":[3,0,80,24],
"class_s_x1272.html#ab5c9a79d72996c3d793cee812b0aded5":[3,0,80,14],
"class_s_x1272.html#abb4bbfe8acc6026c833d267d78417b63":[3,0,80,1],
"class_s_x1272.html#abd912314a977f92c464d36d862329ffc":[3,0,80,16],
@@ -205,9 +205,9 @@ var NAVTREEINDEX3 =
"class_s_x1278.html#aa57b713988cfa224a6db2ff325052931":[3,0,84,21],
"class_s_x1278.html#aac7b585c4a616a1cd6f89a8b46a7d9f8":[3,0,84,5],
"class_s_x1278.html#ab17357254073baeb7490c98faf10d991":[3,0,84,10],
+"class_s_x1278.html#ab206a23ac93f5687ba5f6741fa690130":[3,0,84,24],
"class_s_x1278.html#ac0be7586b8e40355bbd29d78ae9941d1":[3,0,84,16],
"class_s_x1278.html#ac6146c2a3d0a35662312165325fd97f8":[3,0,84,6],
-"class_s_x1278.html#aca58a6c2e8fcef6414fdf3bc1eb62082":[3,0,84,24],
"class_s_x1278.html#adb4d95d3b2798cf8ea94890ae71dcc59":[3,0,84,20],
"class_s_x1278.html#ae02adcde8c2978c0d1b157729dd5df1e":[3,0,84,1],
"class_s_x1278.html#af70c22fe38bc3b944070ccbc083fed08":[3,0,84,25],
diff --git a/search/all_10.js b/search/all_10.js
index 7b2ede1b..705b4d74 100644
--- a/search/all_10.js
+++ b/search/all_10.js
@@ -79,7 +79,7 @@ var searchData=
['setookpeakthresholddecrement_76',['setookpeakthresholddecrement',['../class_s_x127x.html#aac2f43d70b5f94e49e09b4c9f082f46d',1,'SX127x::setOokPeakThresholdDecrement()'],['../class_r_f69.html#a434420f2def6c383608223105469fda1',1,'RF69::setOokPeakThresholdDecrement()']]],
['setookpeakthresholdstep_77',['setOokPeakThresholdStep',['../class_s_x127x.html#a48ca43e6aad02815fa1507f0f0831c54',1,'SX127x']]],
['setookthresholdtype_78',['setookthresholdtype',['../class_r_f69.html#a219a046c10ddcc0a787ad19346ecad6a',1,'RF69::setOokThresholdType()'],['../class_s_x127x.html#a8b93142202167270db109d18b743c744',1,'SX127x::setOokThresholdType()']]],
- ['setoutputpower_79',['setoutputpower',['../class_c_c1101.html#a5d6dce30fc7da668975b6da663784cdf',1,'CC1101::setOutputPower()'],['../class_l_r1110.html#a65c08f0475f888537e55401b75e58b23',1,'LR1110::setOutputPower(int8_t power) override'],['../class_l_r1110.html#ae4eaaa6411bb1eeb131613fb3f43e5d1',1,'LR1110::setOutputPower(int8_t power, bool forceHighPower)'],['../class_l_r1120.html#a1b1321eb695e4a6b583074bb92c33193',1,'LR1120::setOutputPower(int8_t power) override'],['../class_l_r1120.html#a2e2ea0a2f6d3a8d81e0f2be35848bbc7',1,'LR1120::setOutputPower(int8_t power, bool forceHighPower)'],['../classn_r_f24.html#a4fa66ce5fb6d7b22bbb439c2f9103bf3',1,'nRF24::setOutputPower()'],['../class_r_f69.html#a721094611fa375e73bd0332ab2d7d113',1,'RF69::setOutputPower()'],['../class_si4430.html#ab1303e014a4b8d2307a2b1deb061fdeb',1,'Si4430::setOutputPower()'],['../class_si4431.html#ad1538dbe67ed5d3682591d1d780ab0e9',1,'Si4431::setOutputPower()'],['../class_si4432.html#a5e3017bce6d66d35b867e7878d108c68',1,'Si4432::setOutputPower()'],['../class_s_t_m32_w_lx.html#a9afbde1c466907598974cc3923784c5b',1,'STM32WLx::setOutputPower()'],['../class_s_x1262.html#aa455a7f0e69abdcca55cf35388d9dc52',1,'SX1262::setOutputPower()'],['../class_s_x1268.html#a6b6adaee1c8d76c3d766225298d84709',1,'SX1268::setOutputPower()'],['../class_s_x1272.html#aec51f08c0902145ff5f11e27e7cab638',1,'SX1272::setOutputPower(int8_t power) override'],['../class_s_x1272.html#a03f7073d710f18aad79b7d46f2fda659',1,'SX1272::setOutputPower(int8_t power, bool useRfo)'],['../class_s_x1278.html#a69abc18e7fa0055e6b80024e8cde7db4',1,'SX1278::setOutputPower(int8_t power) override'],['../class_s_x1278.html#aca58a6c2e8fcef6414fdf3bc1eb62082',1,'SX1278::setOutputPower(int8_t power, bool useRfo)'],['../class_s_x128x.html#a1bc3372c47a4e3c81ef15bee448ba6b6',1,'SX128x::setOutputPower()'],['../class_physical_layer.html#ad2286dc78dbf8e3084f38e9159b99ae5',1,'PhysicalLayer::setOutputPower()'],['../class_s_x1261.html#a3d197bb8a301f3594c7bfa1c9375aef1',1,'SX1261::setOutputPower()']]],
+ ['setoutputpower_79',['setoutputpower',['../class_c_c1101.html#a5d6dce30fc7da668975b6da663784cdf',1,'CC1101::setOutputPower()'],['../class_l_r1110.html#a65c08f0475f888537e55401b75e58b23',1,'LR1110::setOutputPower(int8_t power) override'],['../class_l_r1110.html#ae4eaaa6411bb1eeb131613fb3f43e5d1',1,'LR1110::setOutputPower(int8_t power, bool forceHighPower)'],['../class_l_r1120.html#a1b1321eb695e4a6b583074bb92c33193',1,'LR1120::setOutputPower(int8_t power) override'],['../class_l_r1120.html#a2e2ea0a2f6d3a8d81e0f2be35848bbc7',1,'LR1120::setOutputPower(int8_t power, bool forceHighPower)'],['../classn_r_f24.html#a4fa66ce5fb6d7b22bbb439c2f9103bf3',1,'nRF24::setOutputPower()'],['../class_r_f69.html#a721094611fa375e73bd0332ab2d7d113',1,'RF69::setOutputPower()'],['../class_si4430.html#ab1303e014a4b8d2307a2b1deb061fdeb',1,'Si4430::setOutputPower()'],['../class_si4431.html#ad1538dbe67ed5d3682591d1d780ab0e9',1,'Si4431::setOutputPower()'],['../class_si4432.html#a5e3017bce6d66d35b867e7878d108c68',1,'Si4432::setOutputPower()'],['../class_s_t_m32_w_lx.html#a9afbde1c466907598974cc3923784c5b',1,'STM32WLx::setOutputPower()'],['../class_s_x1262.html#aa455a7f0e69abdcca55cf35388d9dc52',1,'SX1262::setOutputPower()'],['../class_s_x1268.html#a6b6adaee1c8d76c3d766225298d84709',1,'SX1268::setOutputPower()'],['../class_s_x1272.html#aec51f08c0902145ff5f11e27e7cab638',1,'SX1272::setOutputPower(int8_t power) override'],['../class_s_x1272.html#aac001c32a61d4eec0a49c472cac9ebc6',1,'SX1272::setOutputPower(int8_t power, bool forceRfo)'],['../class_s_x1278.html#a69abc18e7fa0055e6b80024e8cde7db4',1,'SX1278::setOutputPower(int8_t power) override'],['../class_s_x1278.html#ab206a23ac93f5687ba5f6741fa690130',1,'SX1278::setOutputPower(int8_t power, bool forceRfo)'],['../class_s_x128x.html#a1bc3372c47a4e3c81ef15bee448ba6b6',1,'SX128x::setOutputPower()'],['../class_physical_layer.html#ad2286dc78dbf8e3084f38e9159b99ae5',1,'PhysicalLayer::setOutputPower()'],['../class_s_x1261.html#a3d197bb8a301f3594c7bfa1c9375aef1',1,'SX1261::setOutputPower()']]],
['setpacketreceivedaction_80',['setpacketreceivedaction',['../class_s_t_m32_w_lx.html#ad23dafdeb21b97165be74ef8f093866c',1,'STM32WLx::setPacketReceivedAction()'],['../class_physical_layer.html#aec928bb26f65752aa20cd236fbabb95c',1,'PhysicalLayer::setPacketReceivedAction()'],['../class_s_x128x.html#ad98c4526ef971f9aadb30e351a37eaf9',1,'SX128x::setPacketReceivedAction()'],['../class_s_x127x.html#ae236a467095fb5364d0fc4a98d85f96e',1,'SX127x::setPacketReceivedAction()'],['../class_s_x126x.html#a7603aa60ae8d975eb262a4b7e2aed1d0',1,'SX126x::setPacketReceivedAction()'],['../class_si443x.html#a0e098ea9aa3945f0c38f59efe43b147e',1,'Si443x::setPacketReceivedAction()'],['../class_r_f69.html#a74962c069e08890ac9566d48634c778e',1,'RF69::setPacketReceivedAction()'],['../classn_r_f24.html#a60df9afa489eabe3a3ca193ab7709165',1,'nRF24::setPacketReceivedAction()'],['../class_l_r11x0.html#ac2a8ece736198c966e3870dac09f4e87',1,'LR11x0::setPacketReceivedAction()'],['../class_c_c1101.html#a29a16e8ed85432c6fae8d9e45399de6e',1,'CC1101::setPacketReceivedAction(void(*func)(void)) override']]],
['setpacketsentaction_81',['setpacketsentaction',['../class_c_c1101.html#a336999da23e554073a9fa628131883f5',1,'CC1101::setPacketSentAction()'],['../class_l_r11x0.html#a92299e41f839590008b4e344776838a1',1,'LR11x0::setPacketSentAction()'],['../classn_r_f24.html#a26b5f873db167733df143a0608eea3ac',1,'nRF24::setPacketSentAction()'],['../class_r_f69.html#a97603856caada65676ff4b11630c7f72',1,'RF69::setPacketSentAction()'],['../class_si443x.html#af2d36121ca94736ef3ecb4c09aded753',1,'Si443x::setPacketSentAction()'],['../class_s_t_m32_w_lx.html#a7c0e3aef03f0b6834d0465d8f8568c32',1,'STM32WLx::setPacketSentAction()'],['../class_s_x126x.html#ac79f7ebab97ae91fff6933be3207c873',1,'SX126x::setPacketSentAction()'],['../class_s_x127x.html#a3530e8e19cfe4d96fe49ca4e6386b099',1,'SX127x::setPacketSentAction()'],['../class_s_x128x.html#a1e6f938ce715dad9a6609bf56626a50d',1,'SX128x::setPacketSentAction()'],['../class_physical_layer.html#a32b512b34f6575b2109ae3c3f35d1369',1,'PhysicalLayer::setPacketSentAction()']]],
['setpaconfig_82',['setPaConfig',['../class_s_x126x.html#a1623e7d5450c97ca092913ad79d62208',1,'SX126x']]],
diff --git a/search/functions_f.js b/search/functions_f.js
index 28728b16..87856e13 100644
--- a/search/functions_f.js
+++ b/search/functions_f.js
@@ -73,7 +73,7 @@ var searchData=
['setookpeakthresholddecrement_70',['setookpeakthresholddecrement',['../class_r_f69.html#a434420f2def6c383608223105469fda1',1,'RF69::setOokPeakThresholdDecrement()'],['../class_s_x127x.html#aac2f43d70b5f94e49e09b4c9f082f46d',1,'SX127x::setOokPeakThresholdDecrement(uint8_t value)']]],
['setookpeakthresholdstep_71',['setOokPeakThresholdStep',['../class_s_x127x.html#a48ca43e6aad02815fa1507f0f0831c54',1,'SX127x']]],
['setookthresholdtype_72',['setookthresholdtype',['../class_r_f69.html#a219a046c10ddcc0a787ad19346ecad6a',1,'RF69::setOokThresholdType()'],['../class_s_x127x.html#a8b93142202167270db109d18b743c744',1,'SX127x::setOokThresholdType()']]],
- ['setoutputpower_73',['setoutputpower',['../class_s_t_m32_w_lx.html#a9afbde1c466907598974cc3923784c5b',1,'STM32WLx::setOutputPower()'],['../class_physical_layer.html#ad2286dc78dbf8e3084f38e9159b99ae5',1,'PhysicalLayer::setOutputPower()'],['../class_s_x128x.html#a1bc3372c47a4e3c81ef15bee448ba6b6',1,'SX128x::setOutputPower()'],['../class_s_x1278.html#aca58a6c2e8fcef6414fdf3bc1eb62082',1,'SX1278::setOutputPower(int8_t power, bool useRfo)'],['../class_s_x1278.html#a69abc18e7fa0055e6b80024e8cde7db4',1,'SX1278::setOutputPower(int8_t power) override'],['../class_s_x1272.html#a03f7073d710f18aad79b7d46f2fda659',1,'SX1272::setOutputPower(int8_t power, bool useRfo)'],['../class_s_x1272.html#aec51f08c0902145ff5f11e27e7cab638',1,'SX1272::setOutputPower(int8_t power) override'],['../class_s_x1268.html#a6b6adaee1c8d76c3d766225298d84709',1,'SX1268::setOutputPower()'],['../class_s_x1262.html#aa455a7f0e69abdcca55cf35388d9dc52',1,'SX1262::setOutputPower()'],['../class_s_x1261.html#a3d197bb8a301f3594c7bfa1c9375aef1',1,'SX1261::setOutputPower()'],['../class_si4432.html#a5e3017bce6d66d35b867e7878d108c68',1,'Si4432::setOutputPower()'],['../class_si4431.html#ad1538dbe67ed5d3682591d1d780ab0e9',1,'Si4431::setOutputPower()'],['../class_si4430.html#ab1303e014a4b8d2307a2b1deb061fdeb',1,'Si4430::setOutputPower()'],['../class_r_f69.html#a721094611fa375e73bd0332ab2d7d113',1,'RF69::setOutputPower()'],['../classn_r_f24.html#a4fa66ce5fb6d7b22bbb439c2f9103bf3',1,'nRF24::setOutputPower()'],['../class_l_r1120.html#a2e2ea0a2f6d3a8d81e0f2be35848bbc7',1,'LR1120::setOutputPower(int8_t power, bool forceHighPower)'],['../class_l_r1120.html#a1b1321eb695e4a6b583074bb92c33193',1,'LR1120::setOutputPower(int8_t power) override'],['../class_l_r1110.html#ae4eaaa6411bb1eeb131613fb3f43e5d1',1,'LR1110::setOutputPower(int8_t power, bool forceHighPower)'],['../class_l_r1110.html#a65c08f0475f888537e55401b75e58b23',1,'LR1110::setOutputPower(int8_t power) override'],['../class_c_c1101.html#a5d6dce30fc7da668975b6da663784cdf',1,'CC1101::setOutputPower()']]],
+ ['setoutputpower_73',['setoutputpower',['../class_s_t_m32_w_lx.html#a9afbde1c466907598974cc3923784c5b',1,'STM32WLx::setOutputPower()'],['../class_physical_layer.html#ad2286dc78dbf8e3084f38e9159b99ae5',1,'PhysicalLayer::setOutputPower()'],['../class_s_x128x.html#a1bc3372c47a4e3c81ef15bee448ba6b6',1,'SX128x::setOutputPower()'],['../class_s_x1278.html#ab206a23ac93f5687ba5f6741fa690130',1,'SX1278::setOutputPower(int8_t power, bool forceRfo)'],['../class_s_x1278.html#a69abc18e7fa0055e6b80024e8cde7db4',1,'SX1278::setOutputPower(int8_t power) override'],['../class_s_x1272.html#aac001c32a61d4eec0a49c472cac9ebc6',1,'SX1272::setOutputPower(int8_t power, bool forceRfo)'],['../class_s_x1272.html#aec51f08c0902145ff5f11e27e7cab638',1,'SX1272::setOutputPower(int8_t power) override'],['../class_s_x1268.html#a6b6adaee1c8d76c3d766225298d84709',1,'SX1268::setOutputPower()'],['../class_s_x1262.html#aa455a7f0e69abdcca55cf35388d9dc52',1,'SX1262::setOutputPower()'],['../class_s_x1261.html#a3d197bb8a301f3594c7bfa1c9375aef1',1,'SX1261::setOutputPower()'],['../class_si4432.html#a5e3017bce6d66d35b867e7878d108c68',1,'Si4432::setOutputPower()'],['../class_si4431.html#ad1538dbe67ed5d3682591d1d780ab0e9',1,'Si4431::setOutputPower()'],['../class_si4430.html#ab1303e014a4b8d2307a2b1deb061fdeb',1,'Si4430::setOutputPower()'],['../class_r_f69.html#a721094611fa375e73bd0332ab2d7d113',1,'RF69::setOutputPower()'],['../classn_r_f24.html#a4fa66ce5fb6d7b22bbb439c2f9103bf3',1,'nRF24::setOutputPower()'],['../class_l_r1120.html#a2e2ea0a2f6d3a8d81e0f2be35848bbc7',1,'LR1120::setOutputPower(int8_t power, bool forceHighPower)'],['../class_l_r1120.html#a1b1321eb695e4a6b583074bb92c33193',1,'LR1120::setOutputPower(int8_t power) override'],['../class_l_r1110.html#ae4eaaa6411bb1eeb131613fb3f43e5d1',1,'LR1110::setOutputPower(int8_t power, bool forceHighPower)'],['../class_l_r1110.html#a65c08f0475f888537e55401b75e58b23',1,'LR1110::setOutputPower(int8_t power) override'],['../class_c_c1101.html#a5d6dce30fc7da668975b6da663784cdf',1,'CC1101::setOutputPower()']]],
['setpacketreceivedaction_74',['setpacketreceivedaction',['../class_physical_layer.html#aec928bb26f65752aa20cd236fbabb95c',1,'PhysicalLayer::setPacketReceivedAction()'],['../class_s_x128x.html#ad98c4526ef971f9aadb30e351a37eaf9',1,'SX128x::setPacketReceivedAction()'],['../class_s_x127x.html#ae236a467095fb5364d0fc4a98d85f96e',1,'SX127x::setPacketReceivedAction()'],['../class_s_x126x.html#a7603aa60ae8d975eb262a4b7e2aed1d0',1,'SX126x::setPacketReceivedAction()'],['../class_s_t_m32_w_lx.html#ad23dafdeb21b97165be74ef8f093866c',1,'STM32WLx::setPacketReceivedAction()'],['../class_r_f69.html#a74962c069e08890ac9566d48634c778e',1,'RF69::setPacketReceivedAction()'],['../class_si443x.html#a0e098ea9aa3945f0c38f59efe43b147e',1,'Si443x::setPacketReceivedAction()'],['../class_c_c1101.html#a29a16e8ed85432c6fae8d9e45399de6e',1,'CC1101::setPacketReceivedAction()'],['../classn_r_f24.html#a60df9afa489eabe3a3ca193ab7709165',1,'nRF24::setPacketReceivedAction()'],['../class_l_r11x0.html#ac2a8ece736198c966e3870dac09f4e87',1,'LR11x0::setPacketReceivedAction(void(*func)(void)) override']]],
['setpacketsentaction_75',['setpacketsentaction',['../class_l_r11x0.html#a92299e41f839590008b4e344776838a1',1,'LR11x0::setPacketSentAction()'],['../classn_r_f24.html#a26b5f873db167733df143a0608eea3ac',1,'nRF24::setPacketSentAction()'],['../class_r_f69.html#a97603856caada65676ff4b11630c7f72',1,'RF69::setPacketSentAction()'],['../class_si443x.html#af2d36121ca94736ef3ecb4c09aded753',1,'Si443x::setPacketSentAction()'],['../class_s_t_m32_w_lx.html#a7c0e3aef03f0b6834d0465d8f8568c32',1,'STM32WLx::setPacketSentAction()'],['../class_s_x126x.html#ac79f7ebab97ae91fff6933be3207c873',1,'SX126x::setPacketSentAction()'],['../class_s_x127x.html#a3530e8e19cfe4d96fe49ca4e6386b099',1,'SX127x::setPacketSentAction()'],['../class_s_x128x.html#a1e6f938ce715dad9a6609bf56626a50d',1,'SX128x::setPacketSentAction()'],['../class_physical_layer.html#a32b512b34f6575b2109ae3c3f35d1369',1,'PhysicalLayer::setPacketSentAction()'],['../class_c_c1101.html#a336999da23e554073a9fa628131883f5',1,'CC1101::setPacketSentAction()']]],
['setpaconfig_76',['setPaConfig',['../class_s_x126x.html#a1623e7d5450c97ca092913ad79d62208',1,'SX126x']]],