mirror of
https://github.com/alexhopeoconnor/firmware.git
synced 2026-10-18 01:11:42 +10:00
SX1262: fix serious bug with detecting if we have a rx packet in progress
Could cause hangs on the way into sleep (and enormous power consumption). Instead of checking for rx packet length (which only changes at completion) check if we've received preamble bits but haven't yet received a completed packet interrupt. notes: wait to sleep loop problem radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 Can not send yet, busyRx radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 vs normal run radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 radio wait to sleep, txEmpty=0 Starting low level send (id=0x53fe1dd0 Fr0xe5 To0xff, WantAck0, HopLim3 encrypted) Completed sending (id=0x53fe1dd0 Fr0xe5 To0xff, WantAck0, HopLim3 encrypted)
This commit is contained in:
@@ -42,7 +42,7 @@ bool RF95Interface::init()
|
||||
power = MAX_POWER;
|
||||
|
||||
limitPower();
|
||||
|
||||
|
||||
iface = lora = new RadioLibRF95(&module);
|
||||
|
||||
#ifdef RF95_TCXO
|
||||
@@ -158,7 +158,7 @@ void RF95Interface::startReceive()
|
||||
|
||||
isReceiving = true;
|
||||
|
||||
// Must be done AFTER, starting transmit, because startTransmit clears (possibly stale) interrupt pending register bits
|
||||
// Must be done AFTER, starting receive, because startReceive clears (possibly stale) interrupt pending register bits
|
||||
enableInterrupt(isrRxLevel0);
|
||||
}
|
||||
|
||||
@@ -171,7 +171,7 @@ bool RF95Interface::isActivelyReceiving()
|
||||
bool RF95Interface::sleep()
|
||||
{
|
||||
// put chipset into sleep mode
|
||||
disableInterrupt();
|
||||
setStandby(); // First cancel any active receving/sending
|
||||
lora->sleep();
|
||||
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user