sforkowany z mirror/meshtastic-firmware
				
			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>raspi-portduino
							rodzic
							
								
									187f3969c2
								
							
						
					
					
						commit
						95bbcd2cb7
					
				| 
						 | 
				
			
			@ -2,6 +2,6 @@
 | 
			
		|||
#ifdef USE_RF95
 | 
			
		||||
#define RF95_RESET LORA_RESET
 | 
			
		||||
#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
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -409,7 +409,7 @@ void setup()
 | 
			
		|||
 | 
			
		||||
#if defined(RF95_IRQ)
 | 
			
		||||
    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()) {
 | 
			
		||||
            LOG_WARN("Failed to find RF95 radio\n");
 | 
			
		||||
            delete rIf;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,8 +11,9 @@
 | 
			
		|||
 | 
			
		||||
#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)
 | 
			
		||||
    : RadioLibInterface(cs, irq, rst, RADIOLIB_NC, spi)
 | 
			
		||||
RF95Interface::RF95Interface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE busy,
 | 
			
		||||
                             SPIClass &spi)
 | 
			
		||||
    : RadioLibInterface(cs, irq, rst, busy, spi)
 | 
			
		||||
{
 | 
			
		||||
    // 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
 | 
			
		||||
 | 
			
		||||
  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
 | 
			
		||||
    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
 | 
			
		||||
            } else {
 | 
			
		||||
                if (isChannelActive()) { // check if there is currently a LoRa packet on the channel
 | 
			
		||||
                    // LOG_DEBUG("Channel is active: set random delay\n");
 | 
			
		||||
                    setTransmitDelay(); // reset random delay
 | 
			
		||||
                    // LOG_DEBUG("Channel is active, try receiving first.\n");
 | 
			
		||||
                    startReceive(); // try receiving this packet, afterwards we'll be trying to transmit again
 | 
			
		||||
                    setTransmitDelay();
 | 
			
		||||
                } else {
 | 
			
		||||
                    // Send any outgoing packets we have ready
 | 
			
		||||
                    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");
 | 
			
		||||
        packetPool.release(txp);
 | 
			
		||||
    } else {
 | 
			
		||||
        setStandby(); // Cancel any already in process receives
 | 
			
		||||
 | 
			
		||||
        configHardwareForSend(); // must be after setStandby
 | 
			
		||||
 | 
			
		||||
        size_t numbytes = beginSending(txp);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,8 +20,8 @@
 | 
			
		|||
#ifndef USE_JTAG
 | 
			
		||||
#define LORA_RESET 14
 | 
			
		||||
#endif
 | 
			
		||||
#define LORA_DIO1 35 // Not really used
 | 
			
		||||
#define LORA_DIO2 34 // Not really used
 | 
			
		||||
#define LORA_DIO1 RADIOLIB_NC
 | 
			
		||||
#define LORA_DIO2 32 // Not really used
 | 
			
		||||
 | 
			
		||||
// ratio of voltage divider = 3.20 (R1=100k, R2=220k)
 | 
			
		||||
#define ADC_MULTIPLIER 3.2
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@
 | 
			
		|||
#ifndef USE_JTAG
 | 
			
		||||
#define LORA_RESET 14
 | 
			
		||||
#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 ADC_MULTIPLIER 3.8
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,7 +21,7 @@
 | 
			
		|||
#ifndef USE_JTAG
 | 
			
		||||
#define LORA_RESET 14
 | 
			
		||||
#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
 | 
			
		||||
 | 
			
		||||
// ratio of voltage divider = 3.20 (R12=100k, R10=220k)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,7 +10,7 @@
 | 
			
		|||
#define USE_RF95
 | 
			
		||||
#define LORA_DIO0 26 // a No connect on the SX1262 module
 | 
			
		||||
#define LORA_RESET 23
 | 
			
		||||
#define LORA_DIO1 33 // Not really used
 | 
			
		||||
#define LORA_DIO1 33
 | 
			
		||||
#define LORA_DIO2 32 // Not really used
 | 
			
		||||
 | 
			
		||||
// This board has different GPS pins than all other boards
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,5 +15,5 @@
 | 
			
		|||
#define USE_RF95
 | 
			
		||||
#define LORA_DIO0 26 // a No connect on the SX1262 module
 | 
			
		||||
#define LORA_RESET 14
 | 
			
		||||
#define LORA_DIO1 35 // Not really used
 | 
			
		||||
#define LORA_DIO2 34 // 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 32 // Not really used
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,5 +18,5 @@
 | 
			
		|||
#define USE_RF95
 | 
			
		||||
#define LORA_DIO0 26 // a No connect on the SX1262 module
 | 
			
		||||
#define LORA_RESET 14
 | 
			
		||||
#define LORA_DIO1 35 // Not really used
 | 
			
		||||
#define LORA_DIO2 34 // 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 32 // Not really used
 | 
			
		||||
| 
						 | 
				
			
			@ -18,5 +18,5 @@
 | 
			
		|||
#define USE_RF95
 | 
			
		||||
#define LORA_DIO0 26 // a No connect on the SX1262 module
 | 
			
		||||
#define LORA_RESET 14
 | 
			
		||||
#define LORA_DIO1 35 // Not really used
 | 
			
		||||
#define LORA_DIO2 34 // 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 32 // Not really used
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,3 +18,5 @@
 | 
			
		|||
#define USE_RF95
 | 
			
		||||
#define LORA_DIO0 26 // a No connect on the SX1262 module
 | 
			
		||||
#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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue