From e11dc1e0598be21cdf83a6587a3d7bf41f96b056 Mon Sep 17 00:00:00 2001 From: Jens Dede Date: Thu, 15 Jul 2021 22:33:27 +0200 Subject: [PATCH] Fix for esp8266 ACK problem. Solution as suggested in #49 and #105 --- RFM69.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/RFM69.cpp b/RFM69.cpp index 418f7e1..67619eb 100644 --- a/RFM69.cpp +++ b/RFM69.cpp @@ -304,7 +304,12 @@ void RFM69::sendACK(const void* buffer, uint8_t bufferSize) { int16_t _RSSI = RSSI; // save payload received RSSI value writeReg(REG_PACKETCONFIG2, (readReg(REG_PACKETCONFIG2) & 0xFB) | RF_PACKET2_RXRESTART); // avoid RX deadlocks uint32_t now = millis(); - while (!canSend() && millis() - now < RF69_CSMA_LIMIT_MS) receiveDone(); + while (!canSend() && millis() - now < RF69_CSMA_LIMIT_MS){ + receiveDone(); +#ifdef ESP8266 + delay(1); // Give esp8266-based boards to handle background tasks +#endif + } SENDERID = sender; // TWS: Restore SenderID after it gets wiped out by receiveDone() sendFrame(sender, buffer, bufferSize, false, true); RSSI = _RSSI; // restore payload RSSI