From 96387f267a27d2dba78989cbf68c45c27071c431 Mon Sep 17 00:00:00 2001 From: Pranau-R Date: Sun, 30 Mar 2025 12:50:40 +0530 Subject: [PATCH 1/4] fix #917: pinmap for Model 4916 --- src/arduino_lmic_hal_boards.h | 1 + src/hal/getpinmap_catena4916.cpp | 101 +++++++++++++++++++++++++++++++ src/hal/getpinmap_thisboard.cpp | 4 ++ 3 files changed, 106 insertions(+) create mode 100644 src/hal/getpinmap_catena4916.cpp diff --git a/src/arduino_lmic_hal_boards.h b/src/arduino_lmic_hal_boards.h index 0cb98384..96b97c01 100644 --- a/src/arduino_lmic_hal_boards.h +++ b/src/arduino_lmic_hal_boards.h @@ -36,6 +36,7 @@ const HalPinmap_t *GetPinmap_Catena4618(); const HalPinmap_t *GetPinmap_Catena4630(); const HalPinmap_t *GetPinmap_Catena4801(); const HalPinmap_t *GetPinmap_Catena4802(); +const HalPinmap_t *GetPinmap_Catena4916(); const HalPinmap_t* GetPinmap_ttgo_lora32_v1(); const HalPinmap_t *GetPinmap_ttgo_lora32_v21(); const HalPinmap_t* GetPinmap_heltec_lora32(); diff --git a/src/hal/getpinmap_catena4916.cpp b/src/hal/getpinmap_catena4916.cpp new file mode 100644 index 00000000..7b0fbea7 --- /dev/null +++ b/src/hal/getpinmap_catena4916.cpp @@ -0,0 +1,101 @@ +/* + +Module: getconfig_catena4916.cpp + +Function: + Arduino-LMIC C++ HAL pinmaps for various boards + +Copyright & License: + See accompanying LICENSE file. + +Author: + Dhinesh Kumar Pitchai, MCCI November 2022 + +*/ + +#if defined(ARDUINO_MCCI_MODEL_4916) + +#include +#include + +#include "../lmic/oslmic.h" + +namespace Arduino_LMIC { + +class HalConfiguration_Catena4916_t : public HalConfiguration_t + { +public: + enum DIGITAL_PINS : uint8_t + { + PIN_SX1276_NSS = D7, + PIN_SX1276_NRESET = D8, + PIN_SX1276_DIO0 = D25, + PIN_SX1276_DIO1 = D26, + PIN_SX1276_DIO2 = D27, + PIN_SX1276_ANT_SWITCH_RX = D29, + PIN_SX1276_ANT_SWITCH_TX_BOOST = D30, + PIN_SX1276_ANT_SWITCH_TX_RFO = D31, + PIN_VDD_BOOST_ENABLE = A0, + PIN_TCXO_VDD = D33, + }; + + static constexpr ostime_t TCXO_DELAY_MS = 5; + + virtual void begin(void) override + { + digitalWrite(PIN_TCXO_VDD, 0); + pinMode(PIN_TCXO_VDD, OUTPUT); + } + + virtual void end(void) override + { + digitalWrite(PIN_TCXO_VDD, 0); + pinMode(PIN_TCXO_VDD, INPUT); + } + + virtual bool queryUsingTcxo(void) override { return true; }; + + virtual ostime_t setModuleActive(bool state) override + { + ostime_t result; + const int oldState = digitalRead(PIN_TCXO_VDD); + + // if turning on, we need to delay. + result = 0; + if (state && ! oldState) + result = ms2osticksCeil(TCXO_DELAY_MS); + + if (state != oldState) + digitalWrite(PIN_TCXO_VDD, state); + + return result; + } + }; + +// save some typing by bringing the pin numbers into scope +static HalConfiguration_Catena4916_t myConfig; + +static const HalPinmap_t myPinmap = + { + .nss = HalConfiguration_Catena4916_t::PIN_SX1276_NSS, // chip select is D7 + .rxtx = HalConfiguration_Catena4916_t::PIN_SX1276_ANT_SWITCH_RX, // RXTX is D29 + .rst = HalConfiguration_Catena4916_t::PIN_SX1276_NRESET, // NRESET is D8 + + .dio = {HalConfiguration_Catena4916_t::PIN_SX1276_DIO0, // DIO0 (IRQ) is D25 + HalConfiguration_Catena4916_t::PIN_SX1276_DIO1, // DIO1 is D26 + HalConfiguration_Catena4916_t::PIN_SX1276_DIO2, // DIO2 is D27 + }, + .rxtx_rx_active = 1, + .rssi_cal = 10, + .spi_freq = 8000000, /* 8MHz */ + .pConfig = &myConfig + }; + +const HalPinmap_t *GetPinmap_Catena4916(void) + { + return &myPinmap; + } + +}; // namespace Arduino_LMIC + +#endif /* defined(ARDUINO_MCCI_MODEL_4916)*/ \ No newline at end of file diff --git a/src/hal/getpinmap_thisboard.cpp b/src/hal/getpinmap_thisboard.cpp index 19b9a553..22289d96 100644 --- a/src/hal/getpinmap_thisboard.cpp +++ b/src/hal/getpinmap_thisboard.cpp @@ -57,6 +57,10 @@ const HalPinmap_t *GetPinmap_ThisBoard(void) return GetPinmap_Catena4801(); #elif defined(ARDUINO_MCCI_CATENA_4802) return GetPinmap_Catena4802(); +#elif defined(ARDUINO_MCCI_MODEL_4916) || \ + /* legacy names */ \ + defined(ARDUINO_MODEL_4916) + return GetPinmap_Catena4916(); #elif defined(ARDUINO_DISCO_L072CZ_LRWAN1) return GetPinmap_Disco_L072cz_Lrwan1(); #elif defined(PINNOCHIO_SCOUT) From 9247564f72e7e8058716154de781dc59bb92db61 Mon Sep 17 00:00:00 2001 From: Pranau-R Date: Sun, 30 Mar 2025 12:56:52 +0530 Subject: [PATCH 2/4] fix #915: added model4917 pinmapping --- src/arduino_lmic_hal_boards.h | 1 + src/hal/getpinmap_catena4917.cpp | 101 +++++++++++++++++++++++++++++++ src/hal/getpinmap_thisboard.cpp | 2 + 3 files changed, 104 insertions(+) create mode 100644 src/hal/getpinmap_catena4917.cpp diff --git a/src/arduino_lmic_hal_boards.h b/src/arduino_lmic_hal_boards.h index 96b97c01..fed7aead 100644 --- a/src/arduino_lmic_hal_boards.h +++ b/src/arduino_lmic_hal_boards.h @@ -37,6 +37,7 @@ const HalPinmap_t *GetPinmap_Catena4630(); const HalPinmap_t *GetPinmap_Catena4801(); const HalPinmap_t *GetPinmap_Catena4802(); const HalPinmap_t *GetPinmap_Catena4916(); +const HalPinmap_t *GetPinmap_Catena4917(); const HalPinmap_t* GetPinmap_ttgo_lora32_v1(); const HalPinmap_t *GetPinmap_ttgo_lora32_v21(); const HalPinmap_t* GetPinmap_heltec_lora32(); diff --git a/src/hal/getpinmap_catena4917.cpp b/src/hal/getpinmap_catena4917.cpp new file mode 100644 index 00000000..ee818461 --- /dev/null +++ b/src/hal/getpinmap_catena4917.cpp @@ -0,0 +1,101 @@ +/* + +Module: getconfig_catena4917.cpp + +Function: + Arduino-LMIC C++ HAL pinmaps for various boards + +Copyright & License: + See accompanying LICENSE file. + +Author: + Dhinesh Kumar Pitchai, MCCI November 2022 + +*/ + +#if defined(ARDUINO_MCCI_MODEL_4917) + +#include +#include + +#include "../lmic/oslmic.h" + +namespace Arduino_LMIC { + +class HalConfiguration_Catena4917_t : public HalConfiguration_t + { +public: + enum DIGITAL_PINS : uint8_t + { + PIN_SX1276_NSS = D7, + PIN_SX1276_NRESET = D8, + PIN_SX1276_DIO0 = D25, + PIN_SX1276_DIO1 = D26, + PIN_SX1276_DIO2 = D27, + PIN_SX1276_ANT_SWITCH_RX = D29, + PIN_SX1276_ANT_SWITCH_TX_BOOST = D30, + PIN_SX1276_ANT_SWITCH_TX_RFO = D31, + PIN_VDD_BOOST_ENABLE = A0, + PIN_TCXO_VDD = D33, + }; + + static constexpr ostime_t TCXO_DELAY_MS = 5; + + virtual void begin(void) override + { + digitalWrite(PIN_TCXO_VDD, 0); + pinMode(PIN_TCXO_VDD, OUTPUT); + } + + virtual void end(void) override + { + digitalWrite(PIN_TCXO_VDD, 0); + pinMode(PIN_TCXO_VDD, INPUT); + } + + virtual bool queryUsingTcxo(void) override { return true; }; + + virtual ostime_t setModuleActive(bool state) override + { + ostime_t result; + const int oldState = digitalRead(PIN_TCXO_VDD); + + // if turning on, we need to delay. + result = 0; + if (state && ! oldState) + result = ms2osticksCeil(TCXO_DELAY_MS); + + if (state != oldState) + digitalWrite(PIN_TCXO_VDD, state); + + return result; + } + }; + +// save some typing by bringing the pin numbers into scope +static HalConfiguration_Catena4917_t myConfig; + +static const HalPinmap_t myPinmap = + { + .nss = HalConfiguration_Catena4917_t::PIN_SX1276_NSS, // chip select is D7 + .rxtx = HalConfiguration_Catena4917_t::PIN_SX1276_ANT_SWITCH_RX, // RXTX is D29 + .rst = HalConfiguration_Catena4917_t::PIN_SX1276_NRESET, // NRESET is D8 + + .dio = {HalConfiguration_Catena4917_t::PIN_SX1276_DIO0, // DIO0 (IRQ) is D25 + HalConfiguration_Catena4917_t::PIN_SX1276_DIO1, // DIO1 is D26 + HalConfiguration_Catena4917_t::PIN_SX1276_DIO2, // DIO2 is D27 + }, + .rxtx_rx_active = 1, + .rssi_cal = 10, + .spi_freq = 8000000, /* 8MHz */ + .pConfig = &myConfig + }; + +const HalPinmap_t *GetPinmap_Catena4917(void) + { + return &myPinmap; + } + +}; // namespace Arduino_LMIC + +#endif /* defined(ARDUINO_MCCI_MODEL_4917)*/ \ No newline at end of file diff --git a/src/hal/getpinmap_thisboard.cpp b/src/hal/getpinmap_thisboard.cpp index 22289d96..c955ef33 100644 --- a/src/hal/getpinmap_thisboard.cpp +++ b/src/hal/getpinmap_thisboard.cpp @@ -61,6 +61,8 @@ const HalPinmap_t *GetPinmap_ThisBoard(void) /* legacy names */ \ defined(ARDUINO_MODEL_4916) return GetPinmap_Catena4916(); +#elif defined(ARDUINO_MCCI_MODEL_4917) + return GetPinmap_Catena4917(); #elif defined(ARDUINO_DISCO_L072CZ_LRWAN1) return GetPinmap_Disco_L072cz_Lrwan1(); #elif defined(PINNOCHIO_SCOUT) From be3af898eeb2903a07c79b7353f0f68777240f86 Mon Sep 17 00:00:00 2001 From: Pranau-R Date: Sun, 30 Mar 2025 13:05:12 +0530 Subject: [PATCH 3/4] fix #1003: added model4931 pinmapping --- src/arduino_lmic_hal_boards.h | 1 + src/hal/getpinmap_catena4931.cpp | 101 +++++++++++++++++++++++++++++++ src/hal/getpinmap_thisboard.cpp | 2 + 3 files changed, 104 insertions(+) create mode 100644 src/hal/getpinmap_catena4931.cpp diff --git a/src/arduino_lmic_hal_boards.h b/src/arduino_lmic_hal_boards.h index fed7aead..901faab9 100644 --- a/src/arduino_lmic_hal_boards.h +++ b/src/arduino_lmic_hal_boards.h @@ -38,6 +38,7 @@ const HalPinmap_t *GetPinmap_Catena4801(); const HalPinmap_t *GetPinmap_Catena4802(); const HalPinmap_t *GetPinmap_Catena4916(); const HalPinmap_t *GetPinmap_Catena4917(); +const HalPinmap_t *GetPinmap_Catena4931(); const HalPinmap_t* GetPinmap_ttgo_lora32_v1(); const HalPinmap_t *GetPinmap_ttgo_lora32_v21(); const HalPinmap_t* GetPinmap_heltec_lora32(); diff --git a/src/hal/getpinmap_catena4931.cpp b/src/hal/getpinmap_catena4931.cpp new file mode 100644 index 00000000..407050b7 --- /dev/null +++ b/src/hal/getpinmap_catena4931.cpp @@ -0,0 +1,101 @@ +/* + +Module: getpinmap_catena4931.cpp + +Function: + Arduino-LMIC C++ HAL pinmaps for various boards + +Copyright & License: + See accompanying LICENSE file. + +Author: + Pranau R, MCCI November 2023 + +*/ + +#if defined(ARDUINO_MCCI_MODEL_4931) + +#include +#include + +#include "../lmic/oslmic.h" + +namespace Arduino_LMIC { + +class HalConfiguration_Catena4931_t : public HalConfiguration_t + { +public: + enum DIGITAL_PINS : uint8_t + { + PIN_SX1276_NSS = D7, + PIN_SX1276_NRESET = D8, + PIN_SX1276_DIO0 = D25, + PIN_SX1276_DIO1 = D26, + PIN_SX1276_DIO2 = D27, + PIN_SX1276_ANT_SWITCH_RX = D29, + PIN_SX1276_ANT_SWITCH_TX_BOOST = D30, + PIN_SX1276_ANT_SWITCH_TX_RFO = D31, + PIN_VDD_BOOST_ENABLE = D12, + PIN_TCXO_VDD = D33, + }; + + static constexpr ostime_t TCXO_DELAY_MS = 5; + + virtual void begin(void) override + { + digitalWrite(PIN_TCXO_VDD, 0); + pinMode(PIN_TCXO_VDD, OUTPUT); + } + + virtual void end(void) override + { + digitalWrite(PIN_TCXO_VDD, 0); + pinMode(PIN_TCXO_VDD, INPUT); + } + + virtual bool queryUsingTcxo(void) override { return true; }; + + virtual ostime_t setModuleActive(bool state) override + { + ostime_t result; + const int oldState = digitalRead(PIN_TCXO_VDD); + + // if turning on, we need to delay. + result = 0; + if (state && ! oldState) + result = ms2osticksCeil(TCXO_DELAY_MS); + + if (state != oldState) + digitalWrite(PIN_TCXO_VDD, state); + + return result; + } + }; + +// save some typing by bringing the pin numbers into scope +static HalConfiguration_Catena4931_t myConfig; + +static const HalPinmap_t myPinmap = + { + .nss = HalConfiguration_Catena4931_t::PIN_SX1276_NSS, // chip select is D7 + .rxtx = HalConfiguration_Catena4931_t::PIN_SX1276_ANT_SWITCH_RX, // RXTX is D29 + .rst = HalConfiguration_Catena4931_t::PIN_SX1276_NRESET, // NRESET is D8 + + .dio = {HalConfiguration_Catena4931_t::PIN_SX1276_DIO0, // DIO0 (IRQ) is D25 + HalConfiguration_Catena4931_t::PIN_SX1276_DIO1, // DIO1 is D26 + HalConfiguration_Catena4931_t::PIN_SX1276_DIO2, // DIO2 is D27 + }, + .rxtx_rx_active = 1, + .rssi_cal = 10, + .spi_freq = 8000000, /* 8MHz */ + .pConfig = &myConfig + }; + +const HalPinmap_t *GetPinmap_Catena4931(void) + { + return &myPinmap; + } + +}; // namespace Arduino_LMIC + +#endif /* defined(ARDUINO_MCCI_MODEL_4931)*/ \ No newline at end of file diff --git a/src/hal/getpinmap_thisboard.cpp b/src/hal/getpinmap_thisboard.cpp index c955ef33..871a9806 100644 --- a/src/hal/getpinmap_thisboard.cpp +++ b/src/hal/getpinmap_thisboard.cpp @@ -63,6 +63,8 @@ const HalPinmap_t *GetPinmap_ThisBoard(void) return GetPinmap_Catena4916(); #elif defined(ARDUINO_MCCI_MODEL_4917) return GetPinmap_Catena4917(); +#elif defined(ARDUINO_MCCI_MODEL_4931) + return GetPinmap_Catena4931(); #elif defined(ARDUINO_DISCO_L072CZ_LRWAN1) return GetPinmap_Disco_L072cz_Lrwan1(); #elif defined(PINNOCHIO_SCOUT) From d6a06bcb551e537cdc3f51b787c154c52ec5851c Mon Sep 17 00:00:00 2001 From: Pranau-R Date: Sun, 30 Mar 2025 13:40:16 +0530 Subject: [PATCH 4/4] fix #1004: added model4933 pinmapping --- src/arduino_lmic_hal_boards.h | 1 + src/hal/getpinmap_catena4933.cpp | 101 +++++++++++++++++++++++++++++++ src/hal/getpinmap_thisboard.cpp | 2 + 3 files changed, 104 insertions(+) create mode 100644 src/hal/getpinmap_catena4933.cpp diff --git a/src/arduino_lmic_hal_boards.h b/src/arduino_lmic_hal_boards.h index 901faab9..cce0acab 100644 --- a/src/arduino_lmic_hal_boards.h +++ b/src/arduino_lmic_hal_boards.h @@ -39,6 +39,7 @@ const HalPinmap_t *GetPinmap_Catena4802(); const HalPinmap_t *GetPinmap_Catena4916(); const HalPinmap_t *GetPinmap_Catena4917(); const HalPinmap_t *GetPinmap_Catena4931(); +const HalPinmap_t *GetPinmap_Catena4933(); const HalPinmap_t* GetPinmap_ttgo_lora32_v1(); const HalPinmap_t *GetPinmap_ttgo_lora32_v21(); const HalPinmap_t* GetPinmap_heltec_lora32(); diff --git a/src/hal/getpinmap_catena4933.cpp b/src/hal/getpinmap_catena4933.cpp new file mode 100644 index 00000000..19a7eb1a --- /dev/null +++ b/src/hal/getpinmap_catena4933.cpp @@ -0,0 +1,101 @@ +/* + +Module: getpinmap_catena4933.cpp + +Function: + Arduino-LMIC C++ HAL pinmaps for various boards + +Copyright & License: + See accompanying LICENSE file. + +Author: + Pranau R, MCCI October 2023 + +*/ + +#if defined(ARDUINO_MCCI_MODEL_4933) + +#include +#include + +#include "../lmic/oslmic.h" + +namespace Arduino_LMIC { + +class HalConfiguration_Catena4933_t : public HalConfiguration_t + { +public: + enum DIGITAL_PINS : uint8_t + { + PIN_SX1276_NSS = D7, + PIN_SX1276_NRESET = D8, + PIN_SX1276_DIO0 = D25, + PIN_SX1276_DIO1 = D26, + PIN_SX1276_DIO2 = D27, + PIN_SX1276_ANT_SWITCH_RX = D29, + PIN_SX1276_ANT_SWITCH_TX_BOOST = D30, + PIN_SX1276_ANT_SWITCH_TX_RFO = D31, + PIN_VDD_BOOST_ENABLE = D12, + PIN_TCXO_VDD = D33, + }; + + static constexpr ostime_t TCXO_DELAY_MS = 5; + + virtual void begin(void) override + { + digitalWrite(PIN_TCXO_VDD, 0); + pinMode(PIN_TCXO_VDD, OUTPUT); + } + + virtual void end(void) override + { + digitalWrite(PIN_TCXO_VDD, 0); + pinMode(PIN_TCXO_VDD, INPUT); + } + + virtual bool queryUsingTcxo(void) override { return true; }; + + virtual ostime_t setModuleActive(bool state) override + { + ostime_t result; + const int oldState = digitalRead(PIN_TCXO_VDD); + + // if turning on, we need to delay. + result = 0; + if (state && ! oldState) + result = ms2osticksCeil(TCXO_DELAY_MS); + + if (state != oldState) + digitalWrite(PIN_TCXO_VDD, state); + + return result; + } + }; + +// save some typing by bringing the pin numbers into scope +static HalConfiguration_Catena4933_t myConfig; + +static const HalPinmap_t myPinmap = + { + .nss = HalConfiguration_Catena4933_t::PIN_SX1276_NSS, // chip select is D7 + .rxtx = HalConfiguration_Catena4933_t::PIN_SX1276_ANT_SWITCH_RX, // RXTX is D29 + .rst = HalConfiguration_Catena4933_t::PIN_SX1276_NRESET, // NRESET is D8 + + .dio = {HalConfiguration_Catena4933_t::PIN_SX1276_DIO0, // DIO0 (IRQ) is D25 + HalConfiguration_Catena4933_t::PIN_SX1276_DIO1, // DIO1 is D26 + HalConfiguration_Catena4933_t::PIN_SX1276_DIO2, // DIO2 is D27 + }, + .rxtx_rx_active = 1, + .rssi_cal = 10, + .spi_freq = 8000000, /* 8MHz */ + .pConfig = &myConfig + }; + +const HalPinmap_t *GetPinmap_Catena4933(void) + { + return &myPinmap; + } + +}; // namespace Arduino_LMIC + +#endif /* defined(ARDUINO_MCCI_MODEL_4933)*/ \ No newline at end of file diff --git a/src/hal/getpinmap_thisboard.cpp b/src/hal/getpinmap_thisboard.cpp index 871a9806..d004401a 100644 --- a/src/hal/getpinmap_thisboard.cpp +++ b/src/hal/getpinmap_thisboard.cpp @@ -65,6 +65,8 @@ const HalPinmap_t *GetPinmap_ThisBoard(void) return GetPinmap_Catena4917(); #elif defined(ARDUINO_MCCI_MODEL_4931) return GetPinmap_Catena4931(); +#elif defined(ARDUINO_MCCI_MODEL_4933) + return GetPinmap_Catena4933(); #elif defined(ARDUINO_DISCO_L072CZ_LRWAN1) return GetPinmap_Disco_L072cz_Lrwan1(); #elif defined(PINNOCHIO_SCOUT)