From eb71582a96ee4bd5abb99914bf762358e2658579 Mon Sep 17 00:00:00 2001 From: jgromes Date: Wed, 1 Apr 2020 14:01:57 +0200 Subject: [PATCH] [XBee] Added missing calls to yield --- src/modules/XBee/XBee.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/modules/XBee/XBee.cpp b/src/modules/XBee/XBee.cpp index cefc7dff..aa365ea3 100644 --- a/src/modules/XBee/XBee.cpp +++ b/src/modules/XBee/XBee.cpp @@ -405,6 +405,7 @@ int16_t XBee::readApiFrame(uint8_t frameID, uint8_t codePos, uint16_t timeout) { // wait until all response bytes are available (5s timeout) uint32_t start = millis(); while(_mod->ModuleSerial->available() < (int16_t)numBytes) { + yield(); if(millis() - start >= timeout/2) { return(ERR_FRAME_MALFORMED); } @@ -456,6 +457,7 @@ uint16_t XBee::getNumBytes(uint32_t timeout, size_t minBytes) { // wait for available data uint32_t start = millis(); while((size_t)_mod->ModuleSerial->available() < minBytes) { + yield(); if(millis() - start >= timeout) { return(0); } @@ -466,6 +468,7 @@ uint16_t XBee::getNumBytes(uint32_t timeout, size_t minBytes) { uint8_t i = 0; RADIOLIB_DEBUG_PRINT(F("reading frame length: ")); while(_mod->ModuleSerial->available() > 0) { + yield(); uint8_t b = _mod->ModuleSerial->read(); RADIOLIB_DEBUG_PRINT(b, HEX); RADIOLIB_DEBUG_PRINT('\t');