|
|
|
@ -1,6 +1,5 @@ |
|
|
|
#include <Arduino.h> // needed for PlatformIO |
|
|
|
#include <Mesh.h> |
|
|
|
#include <SPIFFS.h> |
|
|
|
|
|
|
|
#define RADIOLIB_STATIC_ONLY 1 |
|
|
|
#include <RadioLib.h> |
|
|
|
@ -23,6 +22,9 @@ |
|
|
|
#ifndef LORA_CR |
|
|
|
#define LORA_CR 5 |
|
|
|
#endif |
|
|
|
#ifndef LORA_TX_POWER |
|
|
|
#define LORA_TX_POWER 20 |
|
|
|
#endif |
|
|
|
|
|
|
|
//#define RUN_AS_ALICE true
|
|
|
|
|
|
|
|
@ -38,7 +40,12 @@ |
|
|
|
|
|
|
|
#ifdef HELTEC_LORA_V3 |
|
|
|
#include <helpers/HeltecV3Board.h> |
|
|
|
#include <helpers/CustomSX1262Wrapper.h> |
|
|
|
static HeltecV3Board board; |
|
|
|
#elif defined(RAK_4631) |
|
|
|
#include <helpers/RAK4631Board.h> |
|
|
|
#include <helpers/CustomSX1262Wrapper.h> |
|
|
|
static RAK4631Board board; |
|
|
|
#else |
|
|
|
#error "need to provide a 'board' object" |
|
|
|
#endif |
|
|
|
@ -233,7 +240,7 @@ public: |
|
|
|
uint32_t expected_ack_crc; |
|
|
|
unsigned long last_msg_sent; |
|
|
|
|
|
|
|
MyMesh(mesh::Radio& radio, mesh::RNG& rng, mesh::RTCClock& rtc, SimpleMeshTables& tables) |
|
|
|
MyMesh(RadioLibWrapper& radio, mesh::RNG& rng, mesh::RTCClock& rtc, SimpleMeshTables& tables) |
|
|
|
: mesh::Mesh(radio, *new ArduinoMillis(), rng, rtc, *new StaticPoolPacketManager(16), tables) |
|
|
|
{ |
|
|
|
num_contacts = 0; |
|
|
|
@ -272,11 +279,17 @@ public: |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
#if defined(NRF52_PLATFORM) |
|
|
|
RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, SPI); |
|
|
|
#elif defined(P_LORA_SCLK) |
|
|
|
SPIClass spi; |
|
|
|
RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, spi); |
|
|
|
#else |
|
|
|
RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY); |
|
|
|
#endif |
|
|
|
StdRNG fast_rng; |
|
|
|
SimpleMeshTables tables; |
|
|
|
SX1262 radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, spi); |
|
|
|
MyMesh the_mesh(*new RadioLibWrapper(radio, board), fast_rng, *new VolatileRTCClock(), tables); |
|
|
|
MyMesh the_mesh(*new WRAPPER_CLASS(radio, board), fast_rng, *new VolatileRTCClock(), tables); |
|
|
|
|
|
|
|
void halt() { |
|
|
|
while (1) ; |
|
|
|
@ -294,12 +307,13 @@ void setup() { |
|
|
|
float tcxo = 1.6f; |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined(P_LORA_SCLK) |
|
|
|
#if defined(NRF52_PLATFORM) |
|
|
|
SPI.setPins(P_LORA_MISO, P_LORA_SCLK, P_LORA_MOSI); |
|
|
|
SPI.begin(); |
|
|
|
#elif defined(P_LORA_SCLK) |
|
|
|
spi.begin(P_LORA_SCLK, P_LORA_MISO, P_LORA_MOSI); |
|
|
|
int status = radio.begin(LORA_FREQ, LORA_BW, LORA_SF, LORA_CR, RADIOLIB_SX126X_SYNC_WORD_PRIVATE, 22, 8, tcxo); |
|
|
|
#else |
|
|
|
int status = radio.begin(LORA_FREQ, LORA_BW, LORA_SF, LORA_CR, RADIOLIB_SX126X_SYNC_WORD_PRIVATE, 22, 8, tcxo); |
|
|
|
#endif |
|
|
|
int status = radio.begin(LORA_FREQ, LORA_BW, LORA_SF, LORA_CR, RADIOLIB_SX126X_SYNC_WORD_PRIVATE, LORA_TX_POWER, 8, tcxo); |
|
|
|
if (status != RADIOLIB_ERR_NONE) { |
|
|
|
Serial.print("ERROR: radio init failed: "); |
|
|
|
Serial.println(status); |
|
|
|
|