Skip to content

Commit 846b166

Browse files
Added support for Catena5230
1 parent 01a880f commit 846b166

10 files changed

+529
-4
lines changed

project_config/lmic_project_config.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
// #define LMIC_COUNTRY_CODE LMIC_COUNTRY_CODE_JP /* for as923-JP; also define CFG_as923 */
77
//#define CFG_kr920 1
88
//#define CFG_in866 1
9-
#define CFG_sx1276_radio 1
9+
// #define CFG_sx1276_radio 1
1010
//#define CFG_sx1261_radio 1
11-
//#define CFG_sx1262_radio 1
11+
#define CFG_sx1262_radio 1
1212
//#define ARDUINO_heltec_wifi_lora_32_V3
1313
//#define LMIC_USE_INTERRUPTS

src/arduino_lmic_hal_boards.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ const HalPinmap_t *GetPinmap_Catena4618();
3636
const HalPinmap_t *GetPinmap_Catena4630();
3737
const HalPinmap_t *GetPinmap_Catena4801();
3838
const HalPinmap_t *GetPinmap_Catena4802();
39+
const HalPinmap_t *GetPinmap_Catena4916();
40+
const HalPinmap_t *GetPinmap_Catena4917();
41+
const HalPinmap_t *GetPinmap_Catena4931();
42+
const HalPinmap_t *GetPinmap_Catena4933();
43+
const HalPinmap_t *GetPinmap_Catena5230();
3944
const HalPinmap_t* GetPinmap_ttgo_lora32_v1();
4045
const HalPinmap_t *GetPinmap_ttgo_lora32_v21();
4146
const HalPinmap_t* GetPinmap_heltec_lora32();

src/arduino_lmic_hal_configuration.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,9 @@ class HalConfiguration_t
9090

9191
virtual void begin(void) {}
9292
virtual void end(void) {}
93-
virtual uint8_t queryBusyPin(void) { return HalPinmap_t::LMIC_UNUSED_PIN; }
93+
virtual uint8_t queryBusyPin(void) {
94+
return HalPinmap_t::LMIC_UNUSED_PIN; // SX127x has no BUSY pin
95+
}
9496
virtual bool queryUsingTcxo(void) { return false; }
9597
virtual bool queryUsingDcdc(void) { return false; }
9698
virtual bool queryUsingDIO2AsRfSwitch(void) { return false; }

src/hal/getpinmap_catena4916.cpp

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
/*
2+
3+
Module: getconfig_catena4916.cpp
4+
5+
Function:
6+
Arduino-LMIC C++ HAL pinmaps for various boards
7+
8+
Copyright & License:
9+
See accompanying LICENSE file.
10+
11+
Author:
12+
Dhinesh Kumar Pitchai, MCCI November 2022
13+
14+
*/
15+
16+
#if defined(ARDUINO_MCCI_MODEL_4916)
17+
18+
#include <arduino_lmic_hal_boards.h>
19+
#include <Arduino.h>
20+
21+
#include "../lmic/oslmic.h"
22+
23+
namespace Arduino_LMIC {
24+
25+
class HalConfiguration_Catena4916_t : public HalConfiguration_t
26+
{
27+
public:
28+
enum DIGITAL_PINS : uint8_t
29+
{
30+
PIN_SX1276_NSS = D7,
31+
PIN_SX1276_NRESET = D8,
32+
PIN_SX1276_DIO0 = D25,
33+
PIN_SX1276_DIO1 = D26,
34+
PIN_SX1276_DIO2 = D27,
35+
PIN_SX1276_ANT_SWITCH_RX = D29,
36+
PIN_SX1276_ANT_SWITCH_TX_BOOST = D30,
37+
PIN_SX1276_ANT_SWITCH_TX_RFO = D31,
38+
PIN_VDD_BOOST_ENABLE = A0,
39+
PIN_TCXO_VDD = D33,
40+
};
41+
42+
static constexpr ostime_t TCXO_DELAY_MS = 5;
43+
44+
virtual void begin(void) override
45+
{
46+
digitalWrite(PIN_TCXO_VDD, 0);
47+
pinMode(PIN_TCXO_VDD, OUTPUT);
48+
}
49+
50+
virtual void end(void) override
51+
{
52+
digitalWrite(PIN_TCXO_VDD, 0);
53+
pinMode(PIN_TCXO_VDD, INPUT);
54+
}
55+
56+
virtual bool queryUsingTcxo(void) override { return true; };
57+
58+
virtual ostime_t setModuleActive(bool state) override
59+
{
60+
ostime_t result;
61+
const int oldState = digitalRead(PIN_TCXO_VDD);
62+
63+
// if turning on, we need to delay.
64+
result = 0;
65+
if (state && ! oldState)
66+
result = ms2osticksCeil(TCXO_DELAY_MS);
67+
68+
if (state != oldState)
69+
digitalWrite(PIN_TCXO_VDD, state);
70+
71+
return result;
72+
}
73+
};
74+
75+
// save some typing by bringing the pin numbers into scope
76+
static HalConfiguration_Catena4916_t myConfig;
77+
78+
static const HalPinmap_t myPinmap =
79+
{
80+
.nss = HalConfiguration_Catena4916_t::PIN_SX1276_NSS, // chip select is D7
81+
.rxtx = HalConfiguration_Catena4916_t::PIN_SX1276_ANT_SWITCH_RX, // RXTX is D29
82+
.rst = HalConfiguration_Catena4916_t::PIN_SX1276_NRESET, // NRESET is D8
83+
84+
.dio = {HalConfiguration_Catena4916_t::PIN_SX1276_DIO0, // DIO0 (IRQ) is D25
85+
HalConfiguration_Catena4916_t::PIN_SX1276_DIO1, // DIO1 is D26
86+
HalConfiguration_Catena4916_t::PIN_SX1276_DIO2, // DIO2 is D27
87+
},
88+
.rxtx_rx_active = 1,
89+
.rssi_cal = 10,
90+
.spi_freq = 8000000, /* 8MHz */
91+
.pConfig = &myConfig
92+
};
93+
94+
const HalPinmap_t *GetPinmap_Catena4916(void)
95+
{
96+
return &myPinmap;
97+
}
98+
99+
}; // namespace Arduino_LMIC
100+
101+
#endif /* defined(ARDUINO_MCCI_MODEL_4916)*/

src/hal/getpinmap_catena4917.cpp

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
/*
2+
3+
Module: getconfig_catena4917.cpp
4+
5+
Function:
6+
Arduino-LMIC C++ HAL pinmaps for various boards
7+
8+
Copyright & License:
9+
See accompanying LICENSE file.
10+
11+
Author:
12+
Dhinesh Kumar Pitchai, MCCI November 2022
13+
14+
*/
15+
16+
#if defined(ARDUINO_MCCI_MODEL_4917)
17+
18+
#include <arduino_lmic_hal_boards.h>
19+
#include <Arduino.h>
20+
21+
#include "../lmic/oslmic.h"
22+
23+
namespace Arduino_LMIC {
24+
25+
class HalConfiguration_Catena4917_t : public HalConfiguration_t
26+
{
27+
public:
28+
enum DIGITAL_PINS : uint8_t
29+
{
30+
PIN_SX1276_NSS = D7,
31+
PIN_SX1276_NRESET = D8,
32+
PIN_SX1276_DIO0 = D25,
33+
PIN_SX1276_DIO1 = D26,
34+
PIN_SX1276_DIO2 = D27,
35+
PIN_SX1276_ANT_SWITCH_RX = D29,
36+
PIN_SX1276_ANT_SWITCH_TX_BOOST = D30,
37+
PIN_SX1276_ANT_SWITCH_TX_RFO = D31,
38+
PIN_VDD_BOOST_ENABLE = A0,
39+
PIN_TCXO_VDD = D33,
40+
};
41+
42+
static constexpr ostime_t TCXO_DELAY_MS = 5;
43+
44+
virtual void begin(void) override
45+
{
46+
digitalWrite(PIN_TCXO_VDD, 0);
47+
pinMode(PIN_TCXO_VDD, OUTPUT);
48+
}
49+
50+
virtual void end(void) override
51+
{
52+
digitalWrite(PIN_TCXO_VDD, 0);
53+
pinMode(PIN_TCXO_VDD, INPUT);
54+
}
55+
56+
virtual bool queryUsingTcxo(void) override { return true; };
57+
58+
virtual ostime_t setModuleActive(bool state) override
59+
{
60+
ostime_t result;
61+
const int oldState = digitalRead(PIN_TCXO_VDD);
62+
63+
// if turning on, we need to delay.
64+
result = 0;
65+
if (state && ! oldState)
66+
result = ms2osticksCeil(TCXO_DELAY_MS);
67+
68+
if (state != oldState)
69+
digitalWrite(PIN_TCXO_VDD, state);
70+
71+
return result;
72+
}
73+
};
74+
75+
// save some typing by bringing the pin numbers into scope
76+
static HalConfiguration_Catena4917_t myConfig;
77+
78+
static const HalPinmap_t myPinmap =
79+
{
80+
.nss = HalConfiguration_Catena4917_t::PIN_SX1276_NSS, // chip select is D7
81+
.rxtx = HalConfiguration_Catena4917_t::PIN_SX1276_ANT_SWITCH_RX, // RXTX is D29
82+
.rst = HalConfiguration_Catena4917_t::PIN_SX1276_NRESET, // NRESET is D8
83+
84+
.dio = {HalConfiguration_Catena4917_t::PIN_SX1276_DIO0, // DIO0 (IRQ) is D25
85+
HalConfiguration_Catena4917_t::PIN_SX1276_DIO1, // DIO1 is D26
86+
HalConfiguration_Catena4917_t::PIN_SX1276_DIO2, // DIO2 is D27
87+
},
88+
.rxtx_rx_active = 1,
89+
.rssi_cal = 10,
90+
.spi_freq = 8000000, /* 8MHz */
91+
.pConfig = &myConfig
92+
};
93+
94+
const HalPinmap_t *GetPinmap_Catena4917(void)
95+
{
96+
return &myPinmap;
97+
}
98+
99+
}; // namespace Arduino_LMIC
100+
101+
#endif /* defined(ARDUINO_MCCI_MODEL_4917)*/

src/hal/getpinmap_catena4931.cpp

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
/*
2+
3+
Module: getpinmap_catena4931.cpp
4+
5+
Function:
6+
Arduino-LMIC C++ HAL pinmaps for various boards
7+
8+
Copyright & License:
9+
See accompanying LICENSE file.
10+
11+
Author:
12+
Pranau R, MCCI November 2023
13+
14+
*/
15+
16+
#if defined(ARDUINO_MCCI_MODEL_4931)
17+
18+
#include <arduino_lmic_hal_boards.h>
19+
#include <Arduino.h>
20+
21+
#include "../lmic/oslmic.h"
22+
23+
namespace Arduino_LMIC {
24+
25+
class HalConfiguration_Catena4931_t : public HalConfiguration_t
26+
{
27+
public:
28+
enum DIGITAL_PINS : uint8_t
29+
{
30+
PIN_SX1276_NSS = D7,
31+
PIN_SX1276_NRESET = D8,
32+
PIN_SX1276_DIO0 = D25,
33+
PIN_SX1276_DIO1 = D26,
34+
PIN_SX1276_DIO2 = D27,
35+
PIN_SX1276_ANT_SWITCH_RX = D29,
36+
PIN_SX1276_ANT_SWITCH_TX_BOOST = D30,
37+
PIN_SX1276_ANT_SWITCH_TX_RFO = D31,
38+
PIN_VDD_BOOST_ENABLE = D12,
39+
PIN_TCXO_VDD = D33,
40+
};
41+
42+
static constexpr ostime_t TCXO_DELAY_MS = 5;
43+
44+
virtual void begin(void) override
45+
{
46+
digitalWrite(PIN_TCXO_VDD, 0);
47+
pinMode(PIN_TCXO_VDD, OUTPUT);
48+
}
49+
50+
virtual void end(void) override
51+
{
52+
digitalWrite(PIN_TCXO_VDD, 0);
53+
pinMode(PIN_TCXO_VDD, INPUT);
54+
}
55+
56+
virtual bool queryUsingTcxo(void) override { return true; };
57+
58+
virtual ostime_t setModuleActive(bool state) override
59+
{
60+
ostime_t result;
61+
const int oldState = digitalRead(PIN_TCXO_VDD);
62+
63+
// if turning on, we need to delay.
64+
result = 0;
65+
if (state && ! oldState)
66+
result = ms2osticksCeil(TCXO_DELAY_MS);
67+
68+
if (state != oldState)
69+
digitalWrite(PIN_TCXO_VDD, state);
70+
71+
return result;
72+
}
73+
};
74+
75+
// save some typing by bringing the pin numbers into scope
76+
static HalConfiguration_Catena4931_t myConfig;
77+
78+
static const HalPinmap_t myPinmap =
79+
{
80+
.nss = HalConfiguration_Catena4931_t::PIN_SX1276_NSS, // chip select is D7
81+
.rxtx = HalConfiguration_Catena4931_t::PIN_SX1276_ANT_SWITCH_RX, // RXTX is D29
82+
.rst = HalConfiguration_Catena4931_t::PIN_SX1276_NRESET, // NRESET is D8
83+
84+
.dio = {HalConfiguration_Catena4931_t::PIN_SX1276_DIO0, // DIO0 (IRQ) is D25
85+
HalConfiguration_Catena4931_t::PIN_SX1276_DIO1, // DIO1 is D26
86+
HalConfiguration_Catena4931_t::PIN_SX1276_DIO2, // DIO2 is D27
87+
},
88+
.rxtx_rx_active = 1,
89+
.rssi_cal = 10,
90+
.spi_freq = 8000000, /* 8MHz */
91+
.pConfig = &myConfig
92+
};
93+
94+
const HalPinmap_t *GetPinmap_Catena4931(void)
95+
{
96+
return &myPinmap;
97+
}
98+
99+
}; // namespace Arduino_LMIC
100+
101+
#endif /* defined(ARDUINO_MCCI_MODEL_4931)*/

0 commit comments

Comments
 (0)