[CC1101] Fixed blocking receive always returning timeout (#348)

This commit is contained in:
jgromes 2021-08-18 17:23:08 +02:00
parent 4086afa691
commit 304e876c02
2 changed files with 5 additions and 13 deletions

View file

@ -77,6 +77,10 @@ void loop() {
Serial.print(F("[CC1101] LQI:\t\t")); Serial.print(F("[CC1101] LQI:\t\t"));
Serial.println(radio.getLQI()); Serial.println(radio.getLQI());
} else if (state == ERR_RX_TIMEOUT) {
// timeout occurred while waiting for a packet
Serial.println(F("timeout!"));
} else if (state == ERR_CRC_MISMATCH) { } else if (state == ERR_CRC_MISMATCH) {
// packet was received, but is malformed // packet was received, but is malformed
Serial.println(F("CRC error!")); Serial.println(F("CRC error!"));

View file

@ -144,7 +144,7 @@ int16_t CC1101::receive(uint8_t* data, size_t len) {
int16_t state = startReceive(); int16_t state = startReceive();
RADIOLIB_ASSERT(state); RADIOLIB_ASSERT(state);
// wait for sync word or timeout // wait for packet or timeout
uint32_t start = Module::micros(); uint32_t start = Module::micros();
while(!Module::digitalRead(_mod->getIrq())) { while(!Module::digitalRead(_mod->getIrq())) {
Module::yield(); Module::yield();
@ -156,18 +156,6 @@ int16_t CC1101::receive(uint8_t* data, size_t len) {
} }
} }
// wait for packet end or timeout
start = Module::micros();
while(Module::digitalRead(_mod->getIrq())) {
Module::yield();
if(Module::micros() - start > timeout) {
standby();
SPIsendCommand(CC1101_CMD_FLUSH_TX);
return(ERR_RX_TIMEOUT);
}
}
// read packet data // read packet data
return(readData(data, len)); return(readData(data, len));
} }