@@ -224,8 +224,6 @@ LOCAL bool RFM69_initialise(const uint32_t frequencyHz)
224
224
RFM69_DEBUG (PSTR (" !RFM69:INIT:SANCHK FAIL\n " ));
225
225
return false ;
226
226
}
227
- // clear FIFO and flags
228
- RFM69_clearFIFO ();
229
227
// IRQ
230
228
RFM69_irq = false ;
231
229
hwPinMode (MY_RFM69_IRQ_PIN, INPUT);
@@ -235,7 +233,7 @@ LOCAL bool RFM69_initialise(const uint32_t frequencyHz)
235
233
236
234
LOCAL void RFM69_clearFIFO (void )
237
235
{
238
- (void )RFM69_writeReg (RFM69_REG_IRQFLAGS2, 0x10u );
236
+ (void )RFM69_writeReg (RFM69_REG_IRQFLAGS2, RFM69_IRQFLAGS2_FIFOOVERRUN );
239
237
}
240
238
// IRQ handler: PayloadReady (RX) & PacketSent (TX) mapped to DI0
241
239
LOCAL void RFM69_interruptHandler (void )
@@ -621,7 +619,7 @@ LOCAL bool RFM69_sendWithRetry(const uint8_t recipient, const void *buffer,
621
619
}
622
620
// radio is in RX
623
621
const uint32_t enterMS = hwMillis ();
624
- while (hwMillis () - enterMS < retryWaitTimeMS) {
622
+ while (hwMillis () - enterMS < retryWaitTimeMS && !RFM69. dataReceived ) {
625
623
RFM69_handler ();
626
624
if (RFM69.ackReceived ) {
627
625
// radio is in stdby
@@ -719,7 +717,7 @@ LOCAL void RFM69_setConfiguration(void)
719
717
{ RFM69_REG_AFCBW, rfm69_modem_config[5 ] }, // same as rxbw, experimental, based on datasheet
720
718
// { RFM69_REG_DIOMAPPING1, RFM69_DIOMAPPING1_DIO0_01 },
721
719
{ RFM69_REG_DIOMAPPING2, RFM69_DIOMAPPING2_CLKOUT_OFF },
722
- { RFM69_REG_IRQFLAGS2, RFM69_IRQFLAGS2_FIFOOVERRUN },
720
+ { RFM69_REG_IRQFLAGS2, RFM69_IRQFLAGS2_FIFOOVERRUN }, // clear FIFO and flags
723
721
{ RFM69_REG_RSSITHRESH, RFM69_RSSITHRESH_VALUE },
724
722
{ RFM69_REG_PREAMBLEMSB, RFM69_PREAMBLESIZE_MSB_VALUE },
725
723
{ RFM69_REG_PREAMBLELSB, RFM69_PREAMBLESIZE_LSB_VALUE },
0 commit comments