Skip to content

Commit 840d1b7

Browse files
committed
Also implement LR11x10 AGC reset
Similar to SX126x but simpler.
1 parent f283178 commit 840d1b7

2 files changed

Lines changed: 20 additions & 1 deletion

File tree

src/helpers/radiolib/CustomLR1110Wrapper.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
#include "CustomLR1110.h"
44
#include "RadioLibWrappers.h"
5+
#include "LR11x0Reset.h"
56

67
class CustomLR1110Wrapper : public RadioLibWrapper {
78
public:
89
CustomLR1110Wrapper(CustomLR1110& radio, mesh::MainBoard& board) : RadioLibWrapper(radio, board) { }
9-
bool isReceivingPacket() override {
10+
void doResetAGC() override { lr11x0ResetAGC((LR11x0 *)_radio); }
11+
bool isReceivingPacket() override {
1012
return ((CustomLR1110 *)_radio)->isReceiving();
1113
}
1214
float getCurrentRSSI() override {

src/helpers/radiolib/LR11x0Reset.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#pragma once
2+
3+
#include <RadioLib.h>
4+
5+
// Full receiver reset for LR11x0-family chips (LR1110, LR1120, LR1121).
6+
// Warm sleep powers down analog, calibrate(0x3F) refreshes all calibration blocks,
7+
// then re-applies RX settings that calibration may reset.
8+
inline void lr11x0ResetAGC(LR11x0* radio) {
9+
radio->sleep(true, 0);
10+
radio->standby(RADIOLIB_LR11X0_STANDBY_RC, true);
11+
12+
radio->calibrate(RADIOLIB_LR11X0_CALIBRATE_ALL);
13+
14+
#ifdef RX_BOOSTED_GAIN
15+
radio->setRxBoostedGainMode(RX_BOOSTED_GAIN);
16+
#endif
17+
}

0 commit comments

Comments
 (0)