Skip to content

Commit 587d9d8

Browse files
author
Scott Powell
committed
* added CustomSX1262::std_init()
* refactored variants to use std_init(): heltec_v3, t114, xiao_c3
1 parent b3184eb commit 587d9d8

File tree

4 files changed

+49
-92
lines changed

4 files changed

+49
-92
lines changed

src/helpers/CustomSX1262.h

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,48 @@ class CustomSX1262 : public SX1262 {
99
public:
1010
CustomSX1262(Module *mod) : SX1262(mod) { }
1111

12+
bool std_init(SPIClass* spi = NULL) {
13+
#ifdef SX126X_DIO3_TCXO_VOLTAGE
14+
float tcxo = SX126X_DIO3_TCXO_VOLTAGE;
15+
#else
16+
float tcxo = 1.6f;
17+
#endif
18+
19+
#ifdef LORA_CR
20+
uint8_t cr = LORA_CR;
21+
#else
22+
uint8_t cr = 5;
23+
#endif
24+
25+
#if defined(P_LORA_SCLK)
26+
#ifdef NRF52_PLATFORM
27+
if (spi) { spi->setPins(P_LORA_MISO, P_LORA_SCLK, P_LORA_MOSI); spi->begin(); }
28+
#else
29+
if (spi) spi->begin(P_LORA_SCLK, P_LORA_MISO, P_LORA_MOSI);
30+
#endif
31+
#endif
32+
int status = begin(LORA_FREQ, LORA_BW, LORA_SF, cr, RADIOLIB_SX126X_SYNC_WORD_PRIVATE, LORA_TX_POWER, 8, tcxo);
33+
if (status != RADIOLIB_ERR_NONE) {
34+
Serial.print("ERROR: radio init failed: ");
35+
Serial.println(status);
36+
return false; // fail
37+
}
38+
39+
setCRC(1);
40+
41+
#ifdef SX126X_CURRENT_LIMIT
42+
setCurrentLimit(SX126X_CURRENT_LIMIT);
43+
#endif
44+
#ifdef SX126X_DIO2_AS_RF_SWITCH
45+
setDio2AsRfSwitch(SX126X_DIO2_AS_RF_SWITCH);
46+
#endif
47+
#ifdef SX126X_RX_BOOSTED_GAIN
48+
setRxBoostedGainMode(SX126X_RX_BOOSTED_GAIN);
49+
#endif
50+
51+
return true; // success
52+
}
53+
1254
bool isReceiving() {
1355
uint16_t irq = getIrqFlags();
1456
bool detected = (irq & SX126X_IRQ_HEADER_VALID) || (irq & SX126X_IRQ_PREAMBLE_DETECTED);

variants/heltec_v3/target.cpp

Lines changed: 3 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -20,43 +20,16 @@ EnvironmentSensorManager sensors;
2020
DISPLAY_CLASS display;
2121
#endif
2222

23-
#ifndef LORA_CR
24-
#define LORA_CR 5
25-
#endif
26-
2723
bool radio_init() {
2824
fallback_clock.begin();
2925
rtc_clock.begin(Wire);
3026

31-
#ifdef SX126X_DIO3_TCXO_VOLTAGE
32-
float tcxo = SX126X_DIO3_TCXO_VOLTAGE;
33-
#else
34-
float tcxo = 1.6f;
35-
#endif
36-
3727
#if defined(P_LORA_SCLK)
3828
spi.begin(P_LORA_SCLK, P_LORA_MISO, P_LORA_MOSI);
29+
return radio.std_init(&spi);
30+
#else
31+
return radio.std_init();
3932
#endif
40-
int status = radio.begin(LORA_FREQ, LORA_BW, LORA_SF, LORA_CR, RADIOLIB_SX126X_SYNC_WORD_PRIVATE, LORA_TX_POWER, 8, tcxo);
41-
if (status != RADIOLIB_ERR_NONE) {
42-
Serial.print("ERROR: radio init failed: ");
43-
Serial.println(status);
44-
return false; // fail
45-
}
46-
47-
radio.setCRC(1);
48-
49-
#ifdef SX126X_CURRENT_LIMIT
50-
radio.setCurrentLimit(SX126X_CURRENT_LIMIT);
51-
#endif
52-
#ifdef SX126X_DIO2_AS_RF_SWITCH
53-
radio.setDio2AsRfSwitch(SX126X_DIO2_AS_RF_SWITCH);
54-
#endif
55-
#ifdef SX126X_RX_BOOSTED_GAIN
56-
radio.setRxBoostedGainMode(SX126X_RX_BOOSTED_GAIN);
57-
#endif
58-
59-
return true; // success
6033
}
6134

6235
uint32_t radio_get_rng_seed() {

variants/t114/target.cpp

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -18,41 +18,10 @@ T114SensorManager sensors = T114SensorManager(nmea);
1818
DISPLAY_CLASS display;
1919
#endif
2020

21-
#ifndef LORA_CR
22-
#define LORA_CR 5
23-
#endif
24-
2521
bool radio_init() {
2622
rtc_clock.begin(Wire);
27-
28-
#ifdef SX126X_DIO3_TCXO_VOLTAGE
29-
float tcxo = SX126X_DIO3_TCXO_VOLTAGE;
30-
#else
31-
float tcxo = 1.6f;
32-
#endif
33-
34-
SPI.setPins(P_LORA_MISO, P_LORA_SCLK, P_LORA_MOSI);
35-
SPI.begin();
36-
int status = radio.begin(LORA_FREQ, LORA_BW, LORA_SF, LORA_CR, RADIOLIB_SX126X_SYNC_WORD_PRIVATE, LORA_TX_POWER, 8, tcxo);
37-
if (status != RADIOLIB_ERR_NONE) {
38-
Serial.print("ERROR: radio init failed: ");
39-
Serial.println(status);
40-
return false; // fail
41-
}
42-
43-
radio.setCRC(1);
44-
45-
#ifdef SX126X_CURRENT_LIMIT
46-
radio.setCurrentLimit(SX126X_CURRENT_LIMIT);
47-
#endif
48-
#ifdef SX126X_DIO2_AS_RF_SWITCH
49-
radio.setDio2AsRfSwitch(SX126X_DIO2_AS_RF_SWITCH);
50-
#endif
51-
#ifdef SX126X_RX_BOOSTED_GAIN
52-
radio.setRxBoostedGainMode(SX126X_RX_BOOSTED_GAIN);
53-
#endif
5423

55-
return true; // success
24+
return radio.std_init(&SPI);
5625
}
5726

5827
uint32_t radio_get_rng_seed() {

variants/xiao_c3/target.cpp

Lines changed: 3 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -16,43 +16,16 @@ ESP32RTCClock fallback_clock;
1616
AutoDiscoverRTCClock rtc_clock(fallback_clock);
1717
SensorManager sensors;
1818

19-
#ifndef LORA_CR
20-
#define LORA_CR 5
21-
#endif
22-
2319
bool radio_init() {
2420
fallback_clock.begin();
2521
rtc_clock.begin(Wire);
26-
27-
#ifdef SX126X_DIO3_TCXO_VOLTAGE
28-
float tcxo = SX126X_DIO3_TCXO_VOLTAGE;
29-
#else
30-
float tcxo = 1.6f;
31-
#endif
3222

3323
#if defined(P_LORA_SCLK)
3424
spi.begin(P_LORA_SCLK, P_LORA_MISO, P_LORA_MOSI);
25+
return radio.std_init(&spi);
26+
#else
27+
return radio.std_init();
3528
#endif
36-
int status = radio.begin(LORA_FREQ, LORA_BW, LORA_SF, LORA_CR, RADIOLIB_SX126X_SYNC_WORD_PRIVATE, LORA_TX_POWER, 8, tcxo);
37-
if (status != RADIOLIB_ERR_NONE) {
38-
Serial.print("ERROR: radio init failed: ");
39-
Serial.println(status);
40-
return false; // fail
41-
}
42-
43-
radio.setCRC(1);
44-
45-
#ifdef SX126X_CURRENT_LIMIT
46-
radio.setCurrentLimit(SX126X_CURRENT_LIMIT);
47-
#endif
48-
#ifdef SX126X_DIO2_AS_RF_SWITCH
49-
radio.setDio2AsRfSwitch(SX126X_DIO2_AS_RF_SWITCH);
50-
#endif
51-
#ifdef SX126X_RX_BOOSTED_GAIN
52-
radio.setRxBoostedGainMode(SX126X_RX_BOOSTED_GAIN);
53-
#endif
54-
55-
return true; // success
5629
}
5730

5831
uint32_t radio_get_rng_seed() {

0 commit comments

Comments
 (0)