sforkowany z mirror/meshtastic-firmware
cleanup so eventually rf95 can share common msg code with sx1262
rodzic
4693302d82
commit
8d985cfd37
|
@ -118,7 +118,7 @@ static uint32_t ledBlinker()
|
|||
|
||||
Periodic ledPeriodic(ledBlinker);
|
||||
|
||||
#include "RadioLibInterface.h"
|
||||
#include "SX1262Interface.h"
|
||||
#include "variant.h"
|
||||
|
||||
void setup()
|
||||
|
@ -196,7 +196,7 @@ void setup()
|
|||
#if defined(RF95_IRQ_GPIO)
|
||||
new CustomRF95();
|
||||
#elif defined(SX1262_CS)
|
||||
new RadioLibInterface(SX1262_CS, SX1262_DIO1, SX1262_RESET, SX1262_BUSY, SPI);
|
||||
new SX1262Interface(SX1262_CS, SX1262_DIO1, SX1262_RESET, SX1262_BUSY, SPI);
|
||||
#else
|
||||
new SimRadio();
|
||||
#endif
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
static SPISettings spiSettings(4000000, MSBFIRST, SPI_MODE0);
|
||||
|
||||
RadioLibInterface::RadioLibInterface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE busy,
|
||||
SPIClass &spi)
|
||||
: module(cs, irq, rst, busy, spi, spiSettings), lora(&module)
|
||||
SPIClass &spi, PhysicalLayer *_iface)
|
||||
: module(cs, irq, rst, busy, spi, spiSettings), iface(*_iface)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -15,23 +15,6 @@ ErrorCode RadioLibInterface::send(MeshPacket *p)
|
|||
return ERR_NONE;
|
||||
}
|
||||
|
||||
/// Initialise the Driver transport hardware and software.
|
||||
/// Make sure the Driver is properly configured before calling init().
|
||||
/// \return true if initialisation succeeded.
|
||||
bool RadioLibInterface::init()
|
||||
{
|
||||
// FIXME, move this to main
|
||||
SPI.begin();
|
||||
|
||||
float tcxoVoltage = 0; // None - we use an XTAL
|
||||
bool useRegulatorLDO = false; // Seems to depend on the connection to pin 9/DCC_SW - if an inductor DCDC?
|
||||
|
||||
int res = lora.begin(freq, bw, sf, cr, syncWord, power, currentLimit, preambleLength, tcxoVoltage, useRegulatorLDO);
|
||||
DEBUG_MSG("LORA init result %d\n", res);
|
||||
|
||||
return res == ERR_NONE;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
|
|
|
@ -6,11 +6,27 @@
|
|||
|
||||
class RadioLibInterface : public RadioInterface
|
||||
{
|
||||
protected:
|
||||
float freq = 915.0; // FIXME, init all these params from suer setings
|
||||
float bw = 125;
|
||||
uint8_t sf = 9;
|
||||
uint8_t cr = 7;
|
||||
uint8_t syncWord = 0; // FIXME, use a meshtastic sync word, but hashed with the Channel name
|
||||
int8_t power = 17;
|
||||
float currentLimit = 100; // FIXME
|
||||
uint16_t preambleLength = 8;
|
||||
|
||||
Module module; // The HW interface to the radio
|
||||
SX1262 lora;
|
||||
|
||||
/**
|
||||
* provides lowest common denominator RadioLib API
|
||||
*/
|
||||
PhysicalLayer &iface;
|
||||
|
||||
public:
|
||||
RadioLibInterface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE busy, SPIClass &spi);
|
||||
RadioLibInterface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE busy,
|
||||
SPIClass &spi,
|
||||
PhysicalLayer *iface);
|
||||
|
||||
virtual ErrorCode send(MeshPacket *p);
|
||||
|
||||
|
@ -30,7 +46,7 @@ class RadioLibInterface : public RadioInterface
|
|||
/// Initialise the Driver transport hardware and software.
|
||||
/// Make sure the Driver is properly configured before calling init().
|
||||
/// \return true if initialisation succeeded.
|
||||
virtual bool init();
|
||||
virtual bool init() { return true; }
|
||||
|
||||
/// Sets the transmitter and receiver
|
||||
/// centre frequency.
|
||||
|
@ -79,14 +95,4 @@ class RadioLibInterface : public RadioInterface
|
|||
/// \param[in] useRFO If true, enables the use of the RFO transmitter pins instead of
|
||||
/// the PA_BOOST pin (false). Choose the correct setting for your module.
|
||||
void setTxPower(int8_t power, bool useRFO = false) {}
|
||||
|
||||
private:
|
||||
float freq = 915.0; // FIXME, init all these params from suer setings
|
||||
float bw = 125;
|
||||
uint8_t sf = 9;
|
||||
uint8_t cr = 7;
|
||||
uint8_t syncWord = 0; // FIXME, use a meshtastic sync word, but hashed with the Channel name
|
||||
int8_t power = 17;
|
||||
float currentLimit = 100; // FIXME
|
||||
uint16_t preambleLength = 8;
|
||||
};
|
|
@ -0,0 +1,28 @@
|
|||
#include "SX1262Interface.h"
|
||||
#include <configuration.h>
|
||||
|
||||
SX1262Interface::SX1262Interface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE busy,
|
||||
SPIClass &spi)
|
||||
: RadioLibInterface(cs, irq, rst, busy, spi, &lora), lora(&module)
|
||||
{
|
||||
}
|
||||
|
||||
/// Initialise the Driver transport hardware and software.
|
||||
/// Make sure the Driver is properly configured before calling init().
|
||||
/// \return true if initialisation succeeded.
|
||||
bool SX1262Interface::init()
|
||||
{
|
||||
if (!RadioLibInterface::init())
|
||||
return false;
|
||||
|
||||
// FIXME, move this to main
|
||||
SPI.begin();
|
||||
|
||||
float tcxoVoltage = 0; // None - we use an XTAL
|
||||
bool useRegulatorLDO = false; // Seems to depend on the connection to pin 9/DCC_SW - if an inductor DCDC?
|
||||
|
||||
int res = lora.begin(freq, bw, sf, cr, syncWord, power, currentLimit, preambleLength, tcxoVoltage, useRegulatorLDO);
|
||||
DEBUG_MSG("LORA init result %d\n", res);
|
||||
|
||||
return res == ERR_NONE;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
#pragma once
|
||||
|
||||
#include "RadioLibInterface.h"
|
||||
|
||||
class SX1262Interface : public RadioLibInterface
|
||||
{
|
||||
SX1262 lora;
|
||||
|
||||
public:
|
||||
SX1262Interface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE busy, SPIClass &spi);
|
||||
|
||||
/// Initialise the Driver transport hardware and software.
|
||||
/// Make sure the Driver is properly configured before calling init().
|
||||
/// \return true if initialisation succeeded.
|
||||
virtual bool init();
|
||||
};
|
Ładowanie…
Reference in New Issue