From a46a1f5f1c10303620fa028db88e87421c6c19f1 Mon Sep 17 00:00:00 2001 From: jgromes Date: Wed, 1 Apr 2020 14:01:27 +0200 Subject: [PATCH] [SX126x] Added missing calls to yield --- src/modules/SX126x/SX126x.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/modules/SX126x/SX126x.cpp b/src/modules/SX126x/SX126x.cpp index 93b98dc7..1fdf6cc7 100644 --- a/src/modules/SX126x/SX126x.cpp +++ b/src/modules/SX126x/SX126x.cpp @@ -219,6 +219,7 @@ int16_t SX126x::transmit(uint8_t* data, size_t len, uint8_t addr) { // wait for packet transmission or timeout uint32_t start = micros(); while(!digitalRead(_mod->getIrq())) { + yield(); if(micros() - start > timeout) { clearIrqStatus(); standby(); @@ -278,6 +279,7 @@ int16_t SX126x::receive(uint8_t* data, size_t len) { // wait for packet reception or timeout uint32_t start = micros(); while(!digitalRead(_mod->getIrq())) { + yield(); if(micros() - start > timeout) { fixImplicitTimeout(); clearIrqStatus(); @@ -1516,6 +1518,7 @@ int16_t SX126x::SPItransfer(uint8_t* cmd, uint8_t cmdLen, bool write, uint8_t* d // ensure BUSY is low (state machine ready) uint32_t start = millis(); while(digitalRead(_mod->getGpio())) { + yield(); if(millis() - start >= timeout) { return(ERR_SPI_CMD_TIMEOUT); } @@ -1583,6 +1586,7 @@ int16_t SX126x::SPItransfer(uint8_t* cmd, uint8_t cmdLen, bool write, uint8_t* d delayMicroseconds(1); start = millis(); while(digitalRead(_mod->getGpio())) { + yield(); if(millis() - start >= timeout) { status = SX126X_STATUS_CMD_TIMEOUT; break;