[SX126x] Added missing calls to yield

This commit is contained in:
jgromes 2020-04-01 14:01:27 +02:00
parent 901783cf39
commit a46a1f5f1c

View file

@ -219,6 +219,7 @@ int16_t SX126x::transmit(uint8_t* data, size_t len, uint8_t addr) {
// wait for packet transmission or timeout // wait for packet transmission or timeout
uint32_t start = micros(); uint32_t start = micros();
while(!digitalRead(_mod->getIrq())) { while(!digitalRead(_mod->getIrq())) {
yield();
if(micros() - start > timeout) { if(micros() - start > timeout) {
clearIrqStatus(); clearIrqStatus();
standby(); standby();
@ -278,6 +279,7 @@ int16_t SX126x::receive(uint8_t* data, size_t len) {
// wait for packet reception or timeout // wait for packet reception or timeout
uint32_t start = micros(); uint32_t start = micros();
while(!digitalRead(_mod->getIrq())) { while(!digitalRead(_mod->getIrq())) {
yield();
if(micros() - start > timeout) { if(micros() - start > timeout) {
fixImplicitTimeout(); fixImplicitTimeout();
clearIrqStatus(); 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) // ensure BUSY is low (state machine ready)
uint32_t start = millis(); uint32_t start = millis();
while(digitalRead(_mod->getGpio())) { while(digitalRead(_mod->getGpio())) {
yield();
if(millis() - start >= timeout) { if(millis() - start >= timeout) {
return(ERR_SPI_CMD_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); delayMicroseconds(1);
start = millis(); start = millis();
while(digitalRead(_mod->getGpio())) { while(digitalRead(_mod->getGpio())) {
yield();
if(millis() - start >= timeout) { if(millis() - start >= timeout) {
status = SX126X_STATUS_CMD_TIMEOUT; status = SX126X_STATUS_CMD_TIMEOUT;
break; break;