From 884c3bc3d9ccfa8aec412c3de39527741361d803 Mon Sep 17 00:00:00 2001 From: jgromes Date: Tue, 18 Feb 2025 06:24:30 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=20648ec?= =?UTF-8?q?bed3b6f477ecf1f2cf96175cff1d0118326=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- class_s_x1272.html | 2 +- class_s_x1278.html | 2 +- coverage/amber.png | Bin 141 -> 0 bytes coverage/emerald.png | Bin 141 -> 0 bytes .../HardwareEmulation.hpp.func-sort-c.html | 84 --- .../include/HardwareEmulation.hpp.func.html | 84 --- .../include/HardwareEmulation.hpp.gcov.html | 147 ----- .../unit/include/TestHal.hpp.func-sort-c.html | 168 ----- .../test/unit/include/TestHal.hpp.func.html | 168 ----- .../test/unit/include/TestHal.hpp.gcov.html | 345 ---------- .../test/unit/include/index-sort-f.html | 103 --- .../test/unit/include/index-sort-l.html | 103 --- coverage/extras/test/unit/include/index.html | 103 --- .../tests/TestModule.cpp.func-sort-c.html | 112 ---- .../test/unit/tests/TestModule.cpp.func.html | 112 ---- .../test/unit/tests/TestModule.cpp.gcov.html | 305 --------- .../extras/test/unit/tests/index-sort-f.html | 93 --- .../extras/test/unit/tests/index-sort-l.html | 93 --- coverage/extras/test/unit/tests/index.html | 93 --- coverage/gcov.css | 519 --------------- coverage/glass.png | Bin 167 -> 0 bytes coverage/index-sort-f.html | 113 ---- coverage/index-sort-l.html | 113 ---- coverage/index.html | 113 ---- coverage/ruby.png | Bin 141 -> 0 bytes coverage/snow.png | Bin 141 -> 0 bytes coverage/src/Hal.cpp.func-sort-c.html | 100 --- coverage/src/Hal.cpp.func.html | 100 --- coverage/src/Hal.cpp.gcov.html | 111 ---- coverage/src/Module.cpp.func-sort-c.html | 164 ----- coverage/src/Module.cpp.func.html | 164 ----- coverage/src/Module.cpp.gcov.html | 616 ------------------ coverage/src/index-sort-f.html | 103 --- coverage/src/index-sort-l.html | 103 --- coverage/src/index.html | 103 --- coverage/updown.png | Bin 117 -> 0 bytes 36 files changed, 2 insertions(+), 4537 deletions(-) delete mode 100644 coverage/amber.png delete mode 100644 coverage/emerald.png delete mode 100644 coverage/extras/test/unit/include/HardwareEmulation.hpp.func-sort-c.html delete mode 100644 coverage/extras/test/unit/include/HardwareEmulation.hpp.func.html delete mode 100644 coverage/extras/test/unit/include/HardwareEmulation.hpp.gcov.html delete mode 100644 coverage/extras/test/unit/include/TestHal.hpp.func-sort-c.html delete mode 100644 coverage/extras/test/unit/include/TestHal.hpp.func.html delete mode 100644 coverage/extras/test/unit/include/TestHal.hpp.gcov.html delete mode 100644 coverage/extras/test/unit/include/index-sort-f.html delete mode 100644 coverage/extras/test/unit/include/index-sort-l.html delete mode 100644 coverage/extras/test/unit/include/index.html delete mode 100644 coverage/extras/test/unit/tests/TestModule.cpp.func-sort-c.html delete mode 100644 coverage/extras/test/unit/tests/TestModule.cpp.func.html delete mode 100644 coverage/extras/test/unit/tests/TestModule.cpp.gcov.html delete mode 100644 coverage/extras/test/unit/tests/index-sort-f.html delete mode 100644 coverage/extras/test/unit/tests/index-sort-l.html delete mode 100644 coverage/extras/test/unit/tests/index.html delete mode 100644 coverage/gcov.css delete mode 100644 coverage/glass.png delete mode 100644 coverage/index-sort-f.html delete mode 100644 coverage/index-sort-l.html delete mode 100644 coverage/index.html delete mode 100644 coverage/ruby.png delete mode 100644 coverage/snow.png delete mode 100644 coverage/src/Hal.cpp.func-sort-c.html delete mode 100644 coverage/src/Hal.cpp.func.html delete mode 100644 coverage/src/Hal.cpp.gcov.html delete mode 100644 coverage/src/Module.cpp.func-sort-c.html delete mode 100644 coverage/src/Module.cpp.func.html delete mode 100644 coverage/src/Module.cpp.gcov.html delete mode 100644 coverage/src/index-sort-f.html delete mode 100644 coverage/src/index-sort-l.html delete mode 100644 coverage/src/index.html delete mode 100644 coverage/updown.png diff --git a/class_s_x1272.html b/class_s_x1272.html index 43dd4009..de7a886a 100644 --- a/class_s_x1272.html +++ b/class_s_x1272.html @@ -1478,7 +1478,7 @@ size_t maxPacketLength
Parameters
- +
powerTransmission output power in dBm.
forceRfoWhether to force using the RFO pin for the RF output (true) or the lave the selection up to user (false) based on power output.
forceRfoWhether to force using the RFO pin for the RF output (true) or to leave the selection up to user (false) based on power output.
diff --git a/class_s_x1278.html b/class_s_x1278.html index 38f33a15..f61edcaa 100644 --- a/class_s_x1278.html +++ b/class_s_x1278.html @@ -1488,7 +1488,7 @@ size_t maxPacketLength
Parameters
- +
powerTransmission output power in dBm.
forceRfoWhether to force using the RFO pin for the RF output (true) or the lave the selection up to user (false) based on power output.
forceRfoWhether to force using the RFO pin for the RF output (true) or to leave the selection up to user (false) based on power output.
diff --git a/coverage/amber.png b/coverage/amber.png deleted file mode 100644 index 2cab170d8359081983a4e343848dfe06bc490f12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)ga>?NMQuI!iC1^G2tW}LqE04T&+ z;1OBOz`!j8!i<;h*8KqrvZOouIx;Y9?C1WI$O`1M1^9%x{(levWG?NMQuI!iC1^Jb!lvI6;R0X`wF(yt=9xVZRt1vCRixIA4P dLn>}1Cji+@42)0J?}79&c)I$ztaD0e0sy@GAL0N2 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 1900ee8b..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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - extras/test/unit/include - HardwareEmulation.hpp (source / functions)HitTotalCoverage
Test:lcov.infoLines:1414100.0 %
Date:2025-02-18 06:21:46Functions:33100.0 %
-
- -
- - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
_ZN13EmulatedRadio7connectEP13EmulatedPin_tS1_S1_S1_4
_ZN13EmulatedRadio10HandleGPIOEv2934
_ZN13EmulatedRadio9HandleSPIEh4197
-
-
- - - -
Generated by: LCOV version 1.14
-
- - - 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 068b2556..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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - extras/test/unit/include - HardwareEmulation.hpp (source / functions)HitTotalCoverage
Test:lcov.infoLines:1414100.0 %
Date:2025-02-18 06:21:46Functions:33100.0 %
-
- -
- - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
_ZN13EmulatedRadio10HandleGPIOEv2934
_ZN13EmulatedRadio7connectEP13EmulatedPin_tS1_S1_S1_4
_ZN13EmulatedRadio9HandleSPIEh4197
-
-
- - - -
Generated by: LCOV version 1.14
-
- - - 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 e30b5ef8..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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - extras/test/unit/include - HardwareEmulation.hpp (source / functions)HitTotalCoverage
Test:lcov.infoLines:1414100.0 %
Date:2025-02-18 06:21:46Functions:33100.0 %
-
- - - - - - - - -

-
          Line data    Source code
-
-       1             : #ifndef HARDWARE_EMULATION_HPP
-       2             : #define HARDWARE_EMULATION_HPP
-       3             : 
-       4             : #include <stdint.h>
-       5             : 
-       6             : // value that is returned by the emualted radio class when performing SPI transfer to it
-       7             : #define EMULATED_RADIO_SPI_RETURN (0xFF)
-       8             : 
-       9             : // pin indexes
-      10             : #define EMULATED_RADIO_NSS_PIN    (1)
-      11             : #define EMULATED_RADIO_IRQ_PIN    (2)
-      12             : #define EMULATED_RADIO_RST_PIN    (3)
-      13             : #define EMULATED_RADIO_GPIO_PIN   (4)
-      14             : 
-      15             : enum PinFunction_t {
-      16             :   PIN_UNASSIGNED = 0,
-      17             :   PIN_CS,
-      18             :   PIN_IRQ,
-      19             :   PIN_RST,
-      20             :   PIN_GPIO,
-      21             : };
-      22             : 
-      23             : // structure for emulating GPIO pins
-      24             : struct EmulatedPin_t {
-      25             :   uint32_t mode;
-      26             :   uint32_t value;
-      27             :   bool event;
-      28             :   PinFunction_t func; 
-      29             : };
-      30             : 
-      31             : // structure for emulating SPI registers
-      32             : struct EmulatedRegister_t {
-      33             :   uint8_t value;
-      34             :   uint8_t readOnlyBitFlags;
-      35             :   bool bufferAccess;
-      36             : };
-      37             : 
-      38             : // base class for emulated radio modules (SX126x etc.)
-      39             : class EmulatedRadio {
-      40             :   public:
-      41           4 :     void connect(EmulatedPin_t* csPin, EmulatedPin_t* irqPin, EmulatedPin_t* rstPin, EmulatedPin_t* gpioPin) {
-      42           4 :       this->cs = csPin;
-      43           4 :       this->cs->func = PIN_CS;
-      44           4 :       this->irq = irqPin;
-      45           4 :       this->irq->func = PIN_IRQ;
-      46           4 :       this->rst = rstPin;
-      47           4 :       this->rst->func = PIN_RST;
-      48           4 :       this->gpio = gpioPin;
-      49           4 :       this->gpio->func = PIN_GPIO;
-      50           4 :     }
-      51             : 
-      52        4197 :     virtual uint8_t HandleSPI(uint8_t b) {
-      53             :       (void)b;
-      54             :       // handle the SPI input and generate output here
-      55        4197 :       return(EMULATED_RADIO_SPI_RETURN);
-      56             :     }
-      57             : 
-      58        2934 :     virtual void HandleGPIO() {
-      59             :       // handle discrete GPIO signals here (e.g. reset state machine on NSS falling edge)
-      60        2934 :     }
-      61             :   
-      62             :   protected:
-      63             :     // pointers to emulated GPIO pins
-      64             :     // this is done via pointers so that the same GPIO entity is shared, like with a real hardware
-      65             :     EmulatedPin_t* cs;
-      66             :     EmulatedPin_t* irq;
-      67             :     EmulatedPin_t* rst;
-      68             :     EmulatedPin_t* gpio;
-      69             : };
-      70             : 
-      71             : #endif
-
-
-
- - - - -
Generated by: LCOV version 1.14
-
- - - 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 a4bca1b0..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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - extras/test/unit/include - TestHal.hpp (source / functions)HitTotalCoverage
Test:lcov.infoLines:699175.8 %
Date:2025-02-18 06:21:46Functions:152462.5 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
_ZN7TestHal15attachInterruptEjPFvvEj0
_ZN7TestHal15detachInterruptEj0
_ZN7TestHal4toneEjjm0
_ZN7TestHal5delayEm0
_ZN7TestHal5yieldEv0
_ZN7TestHal6noToneEj0
_ZN7TestHal6spiEndEv0
_ZN7TestHal7pulseInEjjm0
_ZN7TestHal8spiBeginEv0
_ZN7TestHal12connectRadioEP13EmulatedRadio4
_ZN7TestHal4initEv4
_ZN7TestHal4termEv4
_ZN7TestHal7pinModeEjj4
_ZN7TestHalC2Ev4
_ZN7TestHal12spiLogMemcmpEPKvm12
_ZN7TestHal10spiLogWipeEv16
_ZN7TestHal11digitalReadEj848
_ZN7TestHal6millisEv848
_ZN7TestHal6microsEv1463
_ZN7TestHal11spiTransferEPhmS0_1465
_ZN7TestHal17spiEndTransactionEv1465
_ZN7TestHal19spiBeginTransactionEv1465
_ZN7TestHal12digitalWriteEjj2934
_ZN7TestHal17delayMicrosecondsEm4621
-
-
- - - -
Generated by: LCOV version 1.14
-
- - - 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 e0634351..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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - extras/test/unit/include - TestHal.hpp (source / functions)HitTotalCoverage
Test:lcov.infoLines:699175.8 %
Date:2025-02-18 06:21:46Functions:152462.5 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
_ZN7TestHal10spiLogWipeEv16
_ZN7TestHal11digitalReadEj848
_ZN7TestHal11spiTransferEPhmS0_1465
_ZN7TestHal12connectRadioEP13EmulatedRadio4
_ZN7TestHal12digitalWriteEjj2934
_ZN7TestHal12spiLogMemcmpEPKvm12
_ZN7TestHal15attachInterruptEjPFvvEj0
_ZN7TestHal15detachInterruptEj0
_ZN7TestHal17delayMicrosecondsEm4621
_ZN7TestHal17spiEndTransactionEv1465
_ZN7TestHal19spiBeginTransactionEv1465
_ZN7TestHal4initEv4
_ZN7TestHal4termEv4
_ZN7TestHal4toneEjjm0
_ZN7TestHal5delayEm0
_ZN7TestHal5yieldEv0
_ZN7TestHal6microsEv1463
_ZN7TestHal6millisEv848
_ZN7TestHal6noToneEj0
_ZN7TestHal6spiEndEv0
_ZN7TestHal7pinModeEjj4
_ZN7TestHal7pulseInEjjm0
_ZN7TestHal8spiBeginEv0
_ZN7TestHalC2Ev4
-
-
- - - -
Generated by: LCOV version 1.14
-
- - - 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 70d5174d..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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - extras/test/unit/include - TestHal.hpp (source / functions)HitTotalCoverage
Test:lcov.infoLines:699175.8 %
Date:2025-02-18 06:21:46Functions:152462.5 %
-
- - - - - - - - -

-
          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        2934 :     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        2934 :       BOOST_ASSERT_MSG(pin < TEST_HAL_NUM_GPIO_PINS, "Pin number out of range");
-      77             : 
-      78             :       // check it is output
-      79        2934 :       BOOST_ASSERT_MSG(this->gpio[pin].mode == TEST_HAL_OUTPUT, "GPIO is not output!");
-      80             : 
-      81             :       // check known values
-      82        2934 :       BOOST_ASSERT_MSG(((value == TEST_HAL_LOW) || (value == TEST_HAL_HIGH)), "Invalid output value");
-      83             : 
-      84             :       // set value
-      85        2934 :       this->gpio[pin].value = value;
-      86        2934 :       this->gpio[pin].event = true;
-      87        2934 :       if(radio) {
-      88        2934 :         this->radio->HandleGPIO();
-      89             :       }
-      90        2934 :       this->gpio[pin].event = false;
-      91        2934 :     }
-      92             : 
-      93         848 :     uint32_t digitalRead(uint32_t pin) override {
-      94             :       HAL_LOG("TestHal::digitalRead(pin=" << pin << ")");
-      95             : 
-      96             :       // check the range
-      97         848 :       BOOST_ASSERT_MSG(pin < TEST_HAL_NUM_GPIO_PINS, "Pin number out of range");
-      98             : 
-      99             :       // check it is input
-     100         848 :       BOOST_ASSERT_MSG(this->gpio[pin].mode == TEST_HAL_INPUT, "GPIO is not input");
-     101             : 
-     102             :       // read the value
-     103         848 :       uint32_t value = this->gpio[pin].value;
-     104             :       HAL_LOG("TestHal::digitalRead(pin=" << pin << ")=" << value << " [" << ((value == TEST_HAL_LOW) ? "LOW" : "HIGH") << "]");
-     105         848 :       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        4621 :     void delayMicroseconds(unsigned long us) override {
-     138             :       HAL_LOG("TestHal::delayMicroseconds(us=" << us << ")");
-     139        4621 :       const auto start = std::chrono::high_resolution_clock::now();
-     140             : 
-     141             :       // busy wait is needed for microseconds precision
-     142        4621 :       const auto len = std::chrono::microseconds(us);
-     143     6694366 :       while(std::chrono::high_resolution_clock::now() - start < len);
-     144             : 
-     145             :       // measure and print
-     146        4621 :       const auto end = std::chrono::high_resolution_clock::now();
-     147        4621 :       const std::chrono::duration<double, std::micro> elapsed = end - start;
-     148             :       HAL_LOG("TestHal::delayMicroseconds(us=" << us << ")=" << elapsed.count() << "us");
-     149        4621 :     }
-     150             : 
-     151           0 :     void yield() override {
-     152             :       HAL_LOG("TestHal::yield()");
-     153           0 :     }
-     154             : 
-     155         848 :     unsigned long millis() override {
-     156             :       HAL_LOG("TestHal::millis()");
-     157         848 :       std::chrono::time_point now = std::chrono::high_resolution_clock::now();
-     158         848 :       auto res = std::chrono::duration_cast<std::chrono::milliseconds>(now - this->start);
-     159             :       HAL_LOG("TestHal::millis()=" << res.count());
-     160         848 :       return(res.count());
-     161             :     }
-     162             : 
-     163        1463 :     unsigned long micros() override {
-     164             :       HAL_LOG("TestHal::micros()");
-     165        1463 :       std::chrono::time_point now = std::chrono::high_resolution_clock::now();
-     166        1463 :       auto res = std::chrono::duration_cast<std::chrono::microseconds>(now - this->start);
-     167             :       HAL_LOG("TestHal::micros()=" << res.count());
-     168        1463 :       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        1465 :     void spiBeginTransaction() {
-     186             :       HAL_LOG("TestHal::spiBeginTransaction()");
-     187        1465 :     }
-     188             : 
-     189        1465 :     void spiTransfer(uint8_t* out, size_t len, uint8_t* in) {
-     190             :       HAL_LOG("TestHal::spiTransfer(len=" << len << ")");
-     191             :       
-     192        5662 :       for(size_t i = 0; i < len; i++) {
-     193             :         // append to log
-     194        4197 :         (*this->spiLogPtr++) = out[i];
-     195             : 
-     196             :         // process the SPI byte
-     197        4197 :         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        4197 :         this->delayMicroseconds(100);
-     203             : 
-     204             :         // output debug
-     205             :         HAL_LOG(fmt::format("out={:#02x}, in={:#02x}", out[i], in[i]));
-     206             :       }
-     207        1465 :     }
-     208             : 
-     209        1465 :     void spiEndTransaction() {
-     210             :       HAL_LOG("TestHal::spiEndTransaction()");
-     211        1465 :     }
-     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
-
-
-
- - - - -
Generated by: LCOV version 1.14
-
- - - 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 73bac911..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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - extras/test/unit/includeHitTotalCoverage
Test:lcov.infoLines:8310579.0 %
Date:2025-02-18 06:21:46Functions:182766.7 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverage
TestHal.hpp -
75.8%75.8%
-
75.8 %69 / 9162.5 %15 / 24
HardwareEmulation.hpp -
100.0%
-
100.0 %14 / 14100.0 %3 / 3
-
-
- - - - -
Generated by: LCOV version 1.14
-
- - - 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 25ac8be1..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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - extras/test/unit/includeHitTotalCoverage
Test:lcov.infoLines:8310579.0 %
Date:2025-02-18 06:21:46Functions:182766.7 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverage
TestHal.hpp -
75.8%75.8%
-
75.8 %69 / 9162.5 %15 / 24
HardwareEmulation.hpp -
100.0%
-
100.0 %14 / 14100.0 %3 / 3
-
-
- - - - -
Generated by: LCOV version 1.14
-
- - - diff --git a/coverage/extras/test/unit/include/index.html b/coverage/extras/test/unit/include/index.html deleted file mode 100644 index 5ede08fd..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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - extras/test/unit/includeHitTotalCoverage
Test:lcov.infoLines:8310579.0 %
Date:2025-02-18 06:21:46Functions:182766.7 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverage
HardwareEmulation.hpp -
100.0%
-
100.0 %14 / 14100.0 %3 / 3
TestHal.hpp -
75.8%75.8%
-
75.8 %69 / 9162.5 %15 / 24
-
-
- - - - -
Generated by: LCOV version 1.14
-
- - - 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 ce9dba4d..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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - extras/test/unit/tests - TestModule.cpp (source / functions)HitTotalCoverage
Test:lcov.infoLines:142142100.0 %
Date:2025-02-18 06:21:46Functions:1010100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
_ZN12suite_Module25Module_SPIgetRegValue_reg11test_methodEv1
_ZN12suite_Module25Module_SPIsetRegValue_reg11test_methodEv1
_ZN12suite_Module28Module_SPIgetRegValue_stream11test_methodEv1
_ZN12suite_Module28Module_SPIsetRegValue_stream11test_methodEv1
_ZN12suite_ModuleL33Module_SPIgetRegValue_reg_invokerEv1
_ZN12suite_ModuleL33Module_SPIsetRegValue_reg_invokerEv1
_ZN12suite_ModuleL36Module_SPIgetRegValue_stream_invokerEv1
_ZN12suite_ModuleL36Module_SPIsetRegValue_stream_invokerEv1
_ZN13ModuleFixtureC2Ev4
_ZN13ModuleFixtureD2Ev4
-
-
- - - -
Generated by: LCOV version 1.14
-
- - - 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 7574b49b..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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - extras/test/unit/tests - TestModule.cpp (source / functions)HitTotalCoverage
Test:lcov.infoLines:142142100.0 %
Date:2025-02-18 06:21:46Functions:1010100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
_ZN12suite_Module25Module_SPIgetRegValue_reg11test_methodEv1
_ZN12suite_Module25Module_SPIsetRegValue_reg11test_methodEv1
_ZN12suite_Module28Module_SPIgetRegValue_stream11test_methodEv1
_ZN12suite_Module28Module_SPIsetRegValue_stream11test_methodEv1
_ZN12suite_ModuleL33Module_SPIgetRegValue_reg_invokerEv1
_ZN12suite_ModuleL33Module_SPIsetRegValue_reg_invokerEv1
_ZN12suite_ModuleL36Module_SPIgetRegValue_stream_invokerEv1
_ZN12suite_ModuleL36Module_SPIsetRegValue_stream_invokerEv1
_ZN13ModuleFixtureC2Ev4
_ZN13ModuleFixtureD2Ev4
-
-
- - - -
Generated by: LCOV version 1.14
-
- - - 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 c6921ee6..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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - extras/test/unit/tests - TestModule.cpp (source / functions)HitTotalCoverage
Test:lcov.infoLines:142142100.0 %
Date:2025-02-18 06:21:46Functions:1010100.0 %
-
- - - - - - - - -

-
          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()
-
-
-
- - - - -
Generated by: LCOV version 1.14
-
- - - 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 21ed1272..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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - extras/test/unit/testsHitTotalCoverage
Test:lcov.infoLines:142142100.0 %
Date:2025-02-18 06:21:46Functions:1010100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverage
TestModule.cpp -
100.0%
-
100.0 %142 / 142100.0 %10 / 10
-
-
- - - - -
Generated by: LCOV version 1.14
-
- - - 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 9f5f9c12..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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - extras/test/unit/testsHitTotalCoverage
Test:lcov.infoLines:142142100.0 %
Date:2025-02-18 06:21:46Functions:1010100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverage
TestModule.cpp -
100.0%
-
100.0 %142 / 142100.0 %10 / 10
-
-
- - - - -
Generated by: LCOV version 1.14
-
- - - diff --git a/coverage/extras/test/unit/tests/index.html b/coverage/extras/test/unit/tests/index.html deleted file mode 100644 index 753ba7b9..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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - extras/test/unit/testsHitTotalCoverage
Test:lcov.infoLines:142142100.0 %
Date:2025-02-18 06:21:46Functions:1010100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverage
TestModule.cpp -
100.0%
-
100.0 %142 / 142100.0 %10 / 10
-
-
- - - - -
Generated by: LCOV version 1.14
-
- - - 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 e1abc00680a3093c49fdb775ae6bdb6764c95af2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)gaEa{HEjtmSN`?>!lvI6;R0X`wF z|Ns97GD8ntt^-nxB|(0{3=Yq3q=7g|-tI089jvk*Kn`btM`SSr1Gf+eGhVt|_XjA* zUgGKN%6^Gmn4d%Ph(nkFP>9RZ#WAE}PI3Z}&BVayv3^M*kj3EX>gTe~DWM4f=_Dpv diff --git a/coverage/index-sort-f.html b/coverage/index-sort-f.html deleted file mode 100644 index 672d36e9..00000000 --- a/coverage/index-sort-f.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - LCOV - lcov.info - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top levelHitTotalCoverage
Test:lcov.infoLines:33748569.5 %
Date:2025-02-18 06:21:46Functions:386756.7 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Directory Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverage
src -
47.1%47.1%
-
47.1 %112 / 23833.3 %10 / 30
extras/test/unit/include -
79.0%79.0%
-
79.0 %83 / 10566.7 %18 / 27
extras/test/unit/tests -
100.0%
-
100.0 %142 / 142100.0 %10 / 10
-
-
- - - - -
Generated by: LCOV version 1.14
-
- - - diff --git a/coverage/index-sort-l.html b/coverage/index-sort-l.html deleted file mode 100644 index d3e6a63a..00000000 --- a/coverage/index-sort-l.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - LCOV - lcov.info - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top levelHitTotalCoverage
Test:lcov.infoLines:33748569.5 %
Date:2025-02-18 06:21:46Functions:386756.7 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Directory Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverage
src -
47.1%47.1%
-
47.1 %112 / 23833.3 %10 / 30
extras/test/unit/include -
79.0%79.0%
-
79.0 %83 / 10566.7 %18 / 27
extras/test/unit/tests -
100.0%
-
100.0 %142 / 142100.0 %10 / 10
-
-
- - - - -
Generated by: LCOV version 1.14
-
- - - diff --git a/coverage/index.html b/coverage/index.html deleted file mode 100644 index db998735..00000000 --- a/coverage/index.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - LCOV - lcov.info - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top levelHitTotalCoverage
Test:lcov.infoLines:33748569.5 %
Date:2025-02-18 06:21:46Functions:386756.7 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Directory Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverage
extras/test/unit/include -
79.0%79.0%
-
79.0 %83 / 10566.7 %18 / 27
extras/test/unit/tests -
100.0%
-
100.0 %142 / 142100.0 %10 / 10
src -
47.1%47.1%
-
47.1 %112 / 23833.3 %10 / 30
-
-
- - - - -
Generated by: LCOV version 1.14
-
- - - diff --git a/coverage/ruby.png b/coverage/ruby.png deleted file mode 100644 index 991b6d4ec9e78be165e3ef757eed1aada287364d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)ga>?NMQuI!iC1^FceV#7`HfI^%F z9+AZi4BSE>%y{W;-5;PJOS+@4BLl<6e(pbstUx|nfKQ0)e^Y%R^MdiLxj>4`)5S5Q b;#P73kj=!v_*DHKNFRfztDnm{r-UW|iOwIS diff --git a/coverage/snow.png b/coverage/snow.png deleted file mode 100644 index 2cdae107fceec6e7f02ac7acb4a34a82a540caa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)ga>?NMQuI!iC1^MM!lvI6;R0X`wF|Ns97GD8ntt^-nBo-U3d c6}OTTfNUlP#;5A{K>8RwUHx3vIVCg!071?oo&W#< 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 2e8d8833..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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src - Hal.cpp (source / functions)HitTotalCoverage
Test:lcov.infoLines:71936.8 %
Date:2025-02-18 06:21:46Functions:1714.3 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
_ZN11RadioLibHal14pinToInterruptEj0
_ZN11RadioLibHal4initEv0
_ZN11RadioLibHal4termEv0
_ZN11RadioLibHal4toneEjjm0
_ZN11RadioLibHal5yieldEv0
_ZN11RadioLibHal6noToneEj0
_ZN11RadioLibHalC2Ejjjjjj4
-
-
- - - -
Generated by: LCOV version 1.14
-
- - - diff --git a/coverage/src/Hal.cpp.func.html b/coverage/src/Hal.cpp.func.html deleted file mode 100644 index 522c2b24..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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src - Hal.cpp (source / functions)HitTotalCoverage
Test:lcov.infoLines:71936.8 %
Date:2025-02-18 06:21:46Functions:1714.3 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
_ZN11RadioLibHal14pinToInterruptEj0
_ZN11RadioLibHal4initEv0
_ZN11RadioLibHal4termEv0
_ZN11RadioLibHal4toneEjjm0
_ZN11RadioLibHal5yieldEv0
_ZN11RadioLibHal6noToneEj0
_ZN11RadioLibHalC2Ejjjjjj4
-
-
- - - -
Generated by: LCOV version 1.14
-
- - - diff --git a/coverage/src/Hal.cpp.gcov.html b/coverage/src/Hal.cpp.gcov.html deleted file mode 100644 index 7ed0f3dd..00000000 --- a/coverage/src/Hal.cpp.gcov.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - LCOV - lcov.info - src/Hal.cpp - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src - Hal.cpp (source / functions)HitTotalCoverage
Test:lcov.infoLines:71936.8 %
Date:2025-02-18 06:21:46Functions:1714.3 %
-
- - - - - - - - -

-
          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             : }
-
-
-
- - - - -
Generated by: LCOV version 1.14
-
- - - 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 64de3045..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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src - Module.cpp (source / functions)HitTotalCoverage
Test:lcov.infoLines:10521947.9 %
Date:2025-02-18 06:21:46Functions:92339.1 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
_ZN6Module13SPIreadStreamEPKhhPhmbb0
_ZN6Module13SPIreadStreamEtPhmbb0
_ZN6Module14SPIcheckStreamEv0
_ZN6Module14SPIwriteStreamEPKhhS1_mbb0
_ZN6Module14SPIwriteStreamEtPKhmbb0
_ZN6Module15setRfSwitchPinsEjj0
_ZN6Module16setRfSwitchStateEh0
_ZN6Module16setRfSwitchTableERA5_KjPKNS_14RfSwitchMode_tE0
_ZN6Module19waitForMicrosecondsEmm0
_ZN6Module20SPIreadRegisterBurstEjmPh0
_ZN6Module21SPIwriteRegisterBurstEjPKhm0
_ZN6ModuleC2ERKS_0
_ZN6ModuleaSERKS_0
_ZNK6Module16findRfSwitchModeEh0
_ZN6Module4initEv4
_ZN6Module4termEv4
_ZN6ModuleC2EP11RadioLibHaljjjj4
_ZN6Module14SPIgetRegValueEjhh10
_ZN6Module16SPIwriteRegisterEjh10
_ZN6Module14SPIsetRegValueEjhhhhhb16
_ZN6Module17SPItransferStreamEPKhhbS1_Phmb424
_ZN6Module11SPItransferEtjPKhPhm1041
_ZN6Module15SPIreadRegisterEj1455
-
-
- - - -
Generated by: LCOV version 1.14
-
- - - diff --git a/coverage/src/Module.cpp.func.html b/coverage/src/Module.cpp.func.html deleted file mode 100644 index 17459de7..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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src - Module.cpp (source / functions)HitTotalCoverage
Test:lcov.infoLines:10521947.9 %
Date:2025-02-18 06:21:46Functions:92339.1 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
_ZN6Module11SPItransferEtjPKhPhm1041
_ZN6Module13SPIreadStreamEPKhhPhmbb0
_ZN6Module13SPIreadStreamEtPhmbb0
_ZN6Module14SPIcheckStreamEv0
_ZN6Module14SPIgetRegValueEjhh10
_ZN6Module14SPIsetRegValueEjhhhhhb16
_ZN6Module14SPIwriteStreamEPKhhS1_mbb0
_ZN6Module14SPIwriteStreamEtPKhmbb0
_ZN6Module15SPIreadRegisterEj1455
_ZN6Module15setRfSwitchPinsEjj0
_ZN6Module16SPIwriteRegisterEjh10
_ZN6Module16setRfSwitchStateEh0
_ZN6Module16setRfSwitchTableERA5_KjPKNS_14RfSwitchMode_tE0
_ZN6Module17SPItransferStreamEPKhhbS1_Phmb424
_ZN6Module19waitForMicrosecondsEmm0
_ZN6Module20SPIreadRegisterBurstEjmPh0
_ZN6Module21SPIwriteRegisterBurstEjPKhm0
_ZN6Module4initEv4
_ZN6Module4termEv4
_ZN6ModuleC2EP11RadioLibHaljjjj4
_ZN6ModuleC2ERKS_0
_ZN6ModuleaSERKS_0
_ZNK6Module16findRfSwitchModeEh0
-
-
- - - -
Generated by: LCOV version 1.14
-
- - - diff --git a/coverage/src/Module.cpp.gcov.html b/coverage/src/Module.cpp.gcov.html deleted file mode 100644 index 3d872383..00000000 --- a/coverage/src/Module.cpp.gcov.html +++ /dev/null @@ -1,616 +0,0 @@ - - - - - - - LCOV - lcov.info - src/Module.cpp - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src - Module.cpp (source / functions)HitTotalCoverage
Test:lcov.infoLines:10521947.9 %
Date:2025-02-18 06:21:46Functions:92339.1 %
-
- - - - - - - - -

-
          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        1449 :     while(this->hal->micros() - start < (checkInterval * 1000)) {
-      85        1441 :       uint8_t val = SPIreadRegister(reg);
-      86        1441 :       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        1455 : uint8_t Module::SPIreadRegister(uint32_t reg) {
-     128        1455 :   uint8_t resp = 0;
-     129        1455 :   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         419 :     uint8_t* cmdPtr = cmd;
-     134         838 :     for(int8_t i = (int8_t)this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_CMD]/8 - 1; i >= 0; i--) {
-     135         419 :       *(cmdPtr++) = (this->spiConfig.cmds[RADIOLIB_MODULE_SPI_COMMAND_READ] >> 8*i) & 0xFF;
-     136             :     }
-     137        1257 :     for(int8_t i = (int8_t)((this->spiConfig.widths[RADIOLIB_MODULE_SPI_WIDTH_ADDR]/8) - 1); i >= 0; i--) {
-     138         838 :       *(cmdPtr++) = (reg >> 8*i) & 0xFF;
-     139             :     }
-     140         419 :     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        1455 :   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         424 : 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         424 :   size_t buffLen = cmdLen + numBytes;
-     321         424 :   if(!write) {
-     322         419 :     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         424 :     uint8_t* buffOut = new uint8_t[buffLen];
-     328             :   #endif
-     329         424 :   uint8_t* buffOutPtr = buffOut;
-     330             : 
-     331             :   // copy the command
-     332        1696 :   for(uint8_t n = 0; n < cmdLen; n++) {
-     333        1272 :     *(buffOutPtr++) = cmd[n];
-     334             :   }
-     335             : 
-     336             :   // copy the data
-     337         424 :   if(write) {
-     338           5 :     memcpy(buffOutPtr, dataOut, numBytes);
-     339             :   } else {
-     340         419 :     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         424 :   if(waitForGpio) {
-     345         424 :     if(this->gpioPin == RADIOLIB_NC) {
-     346           0 :       this->hal->delay(50);
-     347             :     } else {
-     348         424 :       RadioLibTime_t start = this->hal->millis();
-     349         424 :       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         424 :     uint8_t* buffIn = new uint8_t[buffLen];
-     371             :   #endif
-     372             : 
-     373             :   // do the transfer
-     374         424 :   this->hal->spiBeginTransaction();
-     375         424 :   this->hal->digitalWrite(this->csPin, this->hal->GpioLevelLow);
-     376         424 :   this->hal->spiTransfer(buffOut, buffLen, buffIn);
-     377         424 :   this->hal->digitalWrite(this->csPin, this->hal->GpioLevelHigh);
-     378         424 :   this->hal->spiEndTransaction();
-     379             : 
-     380             :   // wait for GPIO to go high and then low
-     381         424 :   if(waitForGpio) {
-     382         424 :     if(this->gpioPin == RADIOLIB_NC) {
-     383           0 :       this->hal->delay(1);
-     384             :     } else {
-     385         424 :       this->hal->delayMicroseconds(1);
-     386         424 :       RadioLibTime_t start = this->hal->millis();
-     387         424 :       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         424 :   int16_t state = RADIOLIB_ERR_NONE;
-     407         424 :   if((this->spiConfig.parseStatusCb != nullptr) && (numBytes > 0)) {
-     408           0 :     state = this->spiConfig.parseStatusCb(buffIn[this->spiConfig.statusPos]);
-     409             :   }
-     410             :   
-     411             :   // copy the data
-     412         424 :   if(!write) {
-     413             :     // skip the status bytes if present
-     414         419 :     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         424 :     delete[] buffOut;
-     450         424 :     delete[] buffIn;
-     451             :   #endif
-     452             : 
-     453         424 :   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             : }
-
-
-
- - - - -
Generated by: LCOV version 1.14
-
- - - diff --git a/coverage/src/index-sort-f.html b/coverage/src/index-sort-f.html deleted file mode 100644 index a1843116..00000000 --- a/coverage/src/index-sort-f.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - LCOV - lcov.info - src - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - srcHitTotalCoverage
Test:lcov.infoLines:11223847.1 %
Date:2025-02-18 06:21:46Functions:103033.3 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverage
Hal.cpp -
36.8%36.8%
-
36.8 %7 / 1914.3 %1 / 7
Module.cpp -
47.9%47.9%
-
47.9 %105 / 21939.1 %9 / 23
-
-
- - - - -
Generated by: LCOV version 1.14
-
- - - diff --git a/coverage/src/index-sort-l.html b/coverage/src/index-sort-l.html deleted file mode 100644 index 400797bc..00000000 --- a/coverage/src/index-sort-l.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - LCOV - lcov.info - src - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - srcHitTotalCoverage
Test:lcov.infoLines:11223847.1 %
Date:2025-02-18 06:21:46Functions:103033.3 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverage
Hal.cpp -
36.8%36.8%
-
36.8 %7 / 1914.3 %1 / 7
Module.cpp -
47.9%47.9%
-
47.9 %105 / 21939.1 %9 / 23
-
-
- - - - -
Generated by: LCOV version 1.14
-
- - - diff --git a/coverage/src/index.html b/coverage/src/index.html deleted file mode 100644 index b4c8b30a..00000000 --- a/coverage/src/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - LCOV - lcov.info - src - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - srcHitTotalCoverage
Test:lcov.infoLines:11223847.1 %
Date:2025-02-18 06:21:46Functions:103033.3 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverage
Hal.cpp -
36.8%36.8%
-
36.8 %7 / 1914.3 %1 / 7
Module.cpp -
47.9%47.9%
-
47.9 %105 / 21939.1 %9 / 23
-
-
- - - - -
Generated by: LCOV version 1.14
-
- - - diff --git a/coverage/updown.png b/coverage/updown.png deleted file mode 100644 index aa56a238b3e6c435265250f9266cd1b8caba0f20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^AT}Qd8;}%R+`Ae`*?77*hG?8mPH5^{)z4*}Q$iB}huR`+