Skip to content

Commit 8d39ba8

Browse files
authored
Fix RPI GW poor RSSI on RFM69 (#1077)
fix #1077 Use radio auto standby mode to get correct RSSI value. Details #1077 (comment)
1 parent aa76d26 commit 8d39ba8

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

hal/transport/RFM69/driver/new/RFM69_new.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -250,8 +250,9 @@ LOCAL void IRQ_HANDLER_ATTR RFM69_interruptHandler(void)
250250

251251
LOCAL void RFM69_interruptHandling(void)
252252
{
253+
const uint8_t regIrqFlags1 = RFM69_readReg(RFM69_REG_IRQFLAGS1);
253254
const uint8_t regIrqFlags2 = RFM69_readReg(RFM69_REG_IRQFLAGS2);
254-
if (RFM69.radioMode == RFM69_RADIO_MODE_RX && (regIrqFlags2 & RFM69_IRQFLAGS2_PAYLOADREADY)) {
255+
if (RFM69.radioMode == RFM69_RADIO_MODE_RX && (regIrqFlags1 & RFM69_IRQFLAGS1_AUTOMODE)) {
255256
(void)RFM69_setRadioMode(RFM69_RADIO_MODE_STDBY);
256257
// use the fifo level irq as indicator if header bytes received
257258
if (regIrqFlags2 & RFM69_IRQFLAGS2_FIFOLEVEL) {
@@ -733,6 +734,7 @@ LOCAL void RFM69_setConfiguration(void)
733734
{ RFM69_REG_PAYLOADLENGTH, RFM69_MAX_PACKET_LEN }, // in variable length mode: the max frame size, not used in TX
734735
{ RFM69_REG_NODEADRS, RFM69_BROADCAST_ADDRESS }, // init
735736
{ RFM69_REG_BROADCASTADRS, RFM69_BROADCAST_ADDRESS },
737+
{ RFM69_REG_AUTOMODES , RFM69_AUTOMODES_ENTER_PAYLOADREADY | RFM69_AUTOMODES_EXIT_FIFOEMPTY | RFM69_AUTOMODES_INTERMEDIATE_STANDBY },
736738
{ RFM69_REG_FIFOTHRESH, RFM69_FIFOTHRESH_TXSTART_FIFOTHRESH | (RFM69_HEADER_LEN - 1) }, // start transmitting when rfm69 header loaded, fifo level irq when header bytes received (irq asserted when n bytes exceeded)
737739
{ RFM69_REG_PACKETCONFIG2, RFM69_PACKET2_RXRESTARTDELAY_2BITS | RFM69_PACKET2_AUTORXRESTART_OFF | RFM69_PACKET2_AES_OFF },
738740
{ RFM69_REG_TESTDAGC, RFM69_DAGC_IMPROVED_LOWBETA0 }, // continuous DAGC mode, use 0x30 if afc offset == 0

0 commit comments

Comments
 (0)