mirror of
https://github.com/meshtastic/firmware.git
synced 2025-04-29 02:51:17 +00:00
Use LORA_DIO1 as RadioLib GPIO for SX127x chips (#2290)
* When channel is active, first try receiving that packet Afterwards we'll try transmitting again * Remove setStandby in startSend Already done in isChannelActive() * Set LORA_DIO1 as RadioLib GPIO for SX127x * LORA_DIO1 for Heltec v1, overlaps with GPS_TX Set to RADIOLIB_NC for now * If receive was not successful, startReceive doesn't trigger the interrupt So we have to go back to transmitting anyway --------- Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
This commit is contained in:
parent
462ee3d921
commit
83a201fe86
@ -2,6 +2,6 @@
|
|||||||
#ifdef USE_RF95
|
#ifdef USE_RF95
|
||||||
#define RF95_RESET LORA_RESET
|
#define RF95_RESET LORA_RESET
|
||||||
#define RF95_IRQ LORA_DIO0 // on SX1262 version this is a no connect DIO0
|
#define RF95_IRQ LORA_DIO0 // on SX1262 version this is a no connect DIO0
|
||||||
#define RF95_DIO1 LORA_DIO1 // Note: not really used for RF95
|
#define RF95_DIO1 LORA_DIO1 // Note: not really used for RF95, but used for pure SX127x
|
||||||
#define RF95_DIO2 LORA_DIO2 // Note: not really used for RF95
|
#define RF95_DIO2 LORA_DIO2 // Note: not really used for RF95
|
||||||
#endif
|
#endif
|
@ -407,7 +407,7 @@ void setup()
|
|||||||
|
|
||||||
#if defined(RF95_IRQ)
|
#if defined(RF95_IRQ)
|
||||||
if (!rIf) {
|
if (!rIf) {
|
||||||
rIf = new RF95Interface(RF95_NSS, RF95_IRQ, RF95_RESET, SPI);
|
rIf = new RF95Interface(RF95_NSS, RF95_IRQ, RF95_RESET, RF95_DIO1, SPI);
|
||||||
if (!rIf->init()) {
|
if (!rIf->init()) {
|
||||||
LOG_WARN("Failed to find RF95 radio\n");
|
LOG_WARN("Failed to find RF95 radio\n");
|
||||||
delete rIf;
|
delete rIf;
|
||||||
|
@ -11,8 +11,9 @@
|
|||||||
|
|
||||||
#define POWER_DEFAULT 17 // How much power to use if the user hasn't set a power level
|
#define POWER_DEFAULT 17 // How much power to use if the user hasn't set a power level
|
||||||
|
|
||||||
RF95Interface::RF95Interface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, SPIClass &spi)
|
RF95Interface::RF95Interface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE busy,
|
||||||
: RadioLibInterface(cs, irq, rst, RADIOLIB_NC, spi)
|
SPIClass &spi)
|
||||||
|
: RadioLibInterface(cs, irq, rst, busy, spi)
|
||||||
{
|
{
|
||||||
// FIXME - we assume devices never get destroyed
|
// FIXME - we assume devices never get destroyed
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ class RF95Interface : public RadioLibInterface
|
|||||||
RadioLibRF95 *lora = NULL; // Either a RFM95 or RFM96 depending on what was stuffed on this board
|
RadioLibRF95 *lora = NULL; // Either a RFM95 or RFM96 depending on what was stuffed on this board
|
||||||
|
|
||||||
public:
|
public:
|
||||||
RF95Interface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, SPIClass &spi);
|
RF95Interface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE busy, SPIClass &spi);
|
||||||
|
|
||||||
// TODO: Verify that this irq flag works with RFM95 / SX1276 radios the way it used to
|
// TODO: Verify that this irq flag works with RFM95 / SX1276 radios the way it used to
|
||||||
bool isIRQPending() override { return lora->getIRQFlags() & RADIOLIB_SX127X_MASK_IRQ_FLAG_VALID_HEADER; }
|
bool isIRQPending() override { return lora->getIRQFlags() & RADIOLIB_SX127X_MASK_IRQ_FLAG_VALID_HEADER; }
|
||||||
|
@ -218,8 +218,9 @@ void RadioLibInterface::onNotify(uint32_t notification)
|
|||||||
setTransmitDelay(); // currently Rx/Tx-ing: reset random delay
|
setTransmitDelay(); // currently Rx/Tx-ing: reset random delay
|
||||||
} else {
|
} else {
|
||||||
if (isChannelActive()) { // check if there is currently a LoRa packet on the channel
|
if (isChannelActive()) { // check if there is currently a LoRa packet on the channel
|
||||||
// LOG_DEBUG("Channel is active: set random delay\n");
|
// LOG_DEBUG("Channel is active, try receiving first.\n");
|
||||||
setTransmitDelay(); // reset random delay
|
startReceive(); // try receiving this packet, afterwards we'll be trying to transmit again
|
||||||
|
setTransmitDelay();
|
||||||
} else {
|
} else {
|
||||||
// Send any outgoing packets we have ready
|
// Send any outgoing packets we have ready
|
||||||
meshtastic_MeshPacket *txp = txQueue.dequeue();
|
meshtastic_MeshPacket *txp = txQueue.dequeue();
|
||||||
@ -388,8 +389,6 @@ void RadioLibInterface::startSend(meshtastic_MeshPacket *txp)
|
|||||||
LOG_WARN("startSend is dropping tx packet because we are disabled\n");
|
LOG_WARN("startSend is dropping tx packet because we are disabled\n");
|
||||||
packetPool.release(txp);
|
packetPool.release(txp);
|
||||||
} else {
|
} else {
|
||||||
setStandby(); // Cancel any already in process receives
|
|
||||||
|
|
||||||
configHardwareForSend(); // must be after setStandby
|
configHardwareForSend(); // must be after setStandby
|
||||||
|
|
||||||
size_t numbytes = beginSending(txp);
|
size_t numbytes = beginSending(txp);
|
||||||
|
@ -20,8 +20,8 @@
|
|||||||
#ifndef USE_JTAG
|
#ifndef USE_JTAG
|
||||||
#define LORA_RESET 14
|
#define LORA_RESET 14
|
||||||
#endif
|
#endif
|
||||||
#define LORA_DIO1 35 // Not really used
|
#define LORA_DIO1 RADIOLIB_NC
|
||||||
#define LORA_DIO2 34 // Not really used
|
#define LORA_DIO2 32 // Not really used
|
||||||
|
|
||||||
// ratio of voltage divider = 3.20 (R1=100k, R2=220k)
|
// ratio of voltage divider = 3.20 (R1=100k, R2=220k)
|
||||||
#define ADC_MULTIPLIER 3.2
|
#define ADC_MULTIPLIER 3.2
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
#ifndef USE_JTAG
|
#ifndef USE_JTAG
|
||||||
#define LORA_RESET 14
|
#define LORA_RESET 14
|
||||||
#endif
|
#endif
|
||||||
#define LORA_DIO1 35 // Not really used
|
#define LORA_DIO1 35 // https://www.thethingsnetwork.org/forum/t/big-esp32-sx127x-topic-part-3/18436
|
||||||
#define LORA_DIO2 34 // Not really used
|
#define LORA_DIO2 34 // Not really used
|
||||||
|
|
||||||
#define ADC_MULTIPLIER 3.8
|
#define ADC_MULTIPLIER 3.8
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
#ifndef USE_JTAG
|
#ifndef USE_JTAG
|
||||||
#define LORA_RESET 14
|
#define LORA_RESET 14
|
||||||
#endif
|
#endif
|
||||||
#define LORA_DIO1 35 // Not really used
|
#define LORA_DIO1 35 // https://www.thethingsnetwork.org/forum/t/big-esp32-sx127x-topic-part-3/18436
|
||||||
#define LORA_DIO2 34 // Not really used
|
#define LORA_DIO2 34 // Not really used
|
||||||
|
|
||||||
// ratio of voltage divider = 3.20 (R12=100k, R10=220k)
|
// ratio of voltage divider = 3.20 (R12=100k, R10=220k)
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
#define USE_RF95
|
#define USE_RF95
|
||||||
#define LORA_DIO0 26 // a No connect on the SX1262 module
|
#define LORA_DIO0 26 // a No connect on the SX1262 module
|
||||||
#define LORA_RESET 23
|
#define LORA_RESET 23
|
||||||
#define LORA_DIO1 33 // Not really used
|
#define LORA_DIO1 33
|
||||||
#define LORA_DIO2 32 // Not really used
|
#define LORA_DIO2 32 // Not really used
|
||||||
|
|
||||||
// This board has different GPS pins than all other boards
|
// This board has different GPS pins than all other boards
|
||||||
|
@ -15,5 +15,5 @@
|
|||||||
#define USE_RF95
|
#define USE_RF95
|
||||||
#define LORA_DIO0 26 // a No connect on the SX1262 module
|
#define LORA_DIO0 26 // a No connect on the SX1262 module
|
||||||
#define LORA_RESET 14
|
#define LORA_RESET 14
|
||||||
#define LORA_DIO1 35 // Not really used
|
#define LORA_DIO1 33 // Must be manually wired: https://www.thethingsnetwork.org/forum/t/big-esp32-sx127x-topic-part-3/18436
|
||||||
#define LORA_DIO2 34 // Not really used
|
#define LORA_DIO2 32 // Not really used
|
||||||
|
@ -18,5 +18,5 @@
|
|||||||
#define USE_RF95
|
#define USE_RF95
|
||||||
#define LORA_DIO0 26 // a No connect on the SX1262 module
|
#define LORA_DIO0 26 // a No connect on the SX1262 module
|
||||||
#define LORA_RESET 14
|
#define LORA_RESET 14
|
||||||
#define LORA_DIO1 35 // Not really used
|
#define LORA_DIO1 33 // Prob. must be manually wired: https://www.thethingsnetwork.org/forum/t/big-esp32-sx127x-topic-part-3/18436
|
||||||
#define LORA_DIO2 34 // Not really used
|
#define LORA_DIO2 32 // Not really used
|
@ -18,5 +18,5 @@
|
|||||||
#define USE_RF95
|
#define USE_RF95
|
||||||
#define LORA_DIO0 26 // a No connect on the SX1262 module
|
#define LORA_DIO0 26 // a No connect on the SX1262 module
|
||||||
#define LORA_RESET 14
|
#define LORA_RESET 14
|
||||||
#define LORA_DIO1 35 // Not really used
|
#define LORA_DIO1 33 // Must be manually wired: https://www.thethingsnetwork.org/forum/t/big-esp32-sx127x-topic-part-3/18436
|
||||||
#define LORA_DIO2 34 // Not really used
|
#define LORA_DIO2 32 // Not really used
|
||||||
|
@ -18,3 +18,5 @@
|
|||||||
#define USE_RF95
|
#define USE_RF95
|
||||||
#define LORA_DIO0 26 // a No connect on the SX1262 module
|
#define LORA_DIO0 26 // a No connect on the SX1262 module
|
||||||
#define LORA_RESET 23
|
#define LORA_RESET 23
|
||||||
|
#define LORA_DIO1 33 // https://www.thethingsnetwork.org/forum/t/big-esp32-sx127x-topic-part-3/18436
|
||||||
|
#define LORA_DIO2 32 // Not really used
|
||||||
|
Loading…
Reference in New Issue
Block a user