Skip to content

Commit f78617d

Browse files
Add periodic noise floor calibration and AGC reset
1 parent 5dcc377 commit f78617d

1 file changed

Lines changed: 16 additions & 3 deletions

File tree

examples/kiss_modem/main.cpp

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,14 @@
1212
#include <SPIFFS.h>
1313
#endif
1414

15+
#define NOISE_FLOOR_CALIB_INTERVAL_MS 2000
16+
#define AGC_RESET_INTERVAL_MS 30000
17+
1518
StdRNG rng;
1619
mesh::LocalIdentity identity;
1720
KissModem* modem;
21+
static uint32_t next_noise_floor_calib_ms = 0;
22+
static uint32_t next_agc_reset_ms = 0;
1823

1924
void halt() {
2025
while (1) ;
@@ -107,16 +112,24 @@ void setup() {
107112
void loop() {
108113
modem->loop();
109114

115+
if ((uint32_t)(millis() - next_noise_floor_calib_ms) >= NOISE_FLOOR_CALIB_INTERVAL_MS) {
116+
radio_driver.triggerNoiseFloorCalibrate(0);
117+
next_noise_floor_calib_ms = millis();
118+
}
119+
radio_driver.loop();
120+
110121
if (!modem->isTxBusy()) {
122+
if ((uint32_t)(millis() - next_agc_reset_ms) >= AGC_RESET_INTERVAL_MS) {
123+
radio_driver.resetAGC();
124+
next_agc_reset_ms = millis();
125+
}
126+
111127
uint8_t rx_buf[256];
112128
int rx_len = radio_driver.recvRaw(rx_buf, sizeof(rx_buf));
113-
114129
if (rx_len > 0) {
115130
int8_t snr = (int8_t)(radio_driver.getLastSNR() * 4);
116131
int8_t rssi = (int8_t)radio_driver.getLastRSSI();
117132
modem->onPacketReceived(snr, rssi, rx_buf, rx_len);
118133
}
119134
}
120-
121-
radio_driver.loop();
122135
}

0 commit comments

Comments
 (0)