Clean up comments on kiss noise floor changes.

This commit is contained in:
Adam Gessaman
2026-02-05 09:46:30 -08:00
parent 0fb570338f
commit c0b81b9ad8
2 changed files with 6 additions and 10 deletions

View File

@@ -28,8 +28,6 @@ Maximum unescaped frame size: 512 bytes.
## Commands ## Commands
Command and response codes below are taken from `examples/kiss_modem/KissModem.h` and the switch in `KissModem::processFrame()`.
### Request Commands (Host → Modem) ### Request Commands (Host → Modem)
| Command | Value | Data | | Command | Value | Data |
@@ -129,7 +127,7 @@ Response to `CMD_GET_NOISE_FLOOR` (0x13). Little-endian.
|--------------|------|--------------------------------| |--------------|------|--------------------------------|
| Noise floor | 2 | int16_t, dBm (signed), e.g. -120 | | Noise floor | 2 | int16_t, dBm (signed), e.g. -120 |
The modem recalibrates the noise floor periodically (every 2 s) from RX samples when idle. The receiver AGC is also reset periodically (every 30 s) so RSSI and noise floor do not drift to the minimum (-120). Typical range after calibration is about -120 to -90 dBm. Values may be 0 or briefly stale until the radio has been in receive mode long enough to collect 64 samples. The modem recalibrates the noise floor every two seconds with an AGC reset every 30 seconds.
### Stats (RESP_STATS) ### Stats (RESP_STATS)

View File

@@ -12,8 +12,8 @@
#include <SPIFFS.h> #include <SPIFFS.h>
#endif #endif
#define NOISE_FLOOR_CALIB_INTERVAL_MS 2000 // match Dispatcher default #define NOISE_FLOOR_CALIB_INTERVAL_MS 2000
#define AGC_RESET_INTERVAL_MS 30000 // periodic RX restart so AGC doesn't drift (repeater uses same via prefs) #define AGC_RESET_INTERVAL_MS 30000
StdRNG rng; StdRNG rng;
mesh::LocalIdentity identity; mesh::LocalIdentity identity;
@@ -100,11 +100,9 @@ void loop() {
uint8_t packet[KISS_MAX_PACKET_SIZE]; uint8_t packet[KISS_MAX_PACKET_SIZE];
uint16_t len; uint16_t len;
// Match Dispatcher order: noise floor calib + loop() first, so we never sample RSSI in the same // trigger noise floor calibration
// iteration as startReceive() (AGC reset -> recvRaw below). Sampling right after startReceive()
// can yield settling/cold RSSI and drive the floor toward -120.
if ((uint32_t)(millis() - next_noise_floor_calib_ms) >= NOISE_FLOOR_CALIB_INTERVAL_MS) { if ((uint32_t)(millis() - next_noise_floor_calib_ms) >= NOISE_FLOOR_CALIB_INTERVAL_MS) {
radio_driver.triggerNoiseFloorCalibrate(0); // 0 = no interference threshold (KISS has no prefs) radio_driver.triggerNoiseFloorCalibrate(0);
next_noise_floor_calib_ms = millis(); next_noise_floor_calib_ms = millis();
} }
radio_driver.loop(); radio_driver.loop();
@@ -119,7 +117,7 @@ void loop() {
} }
if ((uint32_t)(millis() - next_agc_reset_ms) >= AGC_RESET_INTERVAL_MS) { if ((uint32_t)(millis() - next_agc_reset_ms) >= AGC_RESET_INTERVAL_MS) {
radio_driver.resetAGC(); // next recvRaw() will startReceive() and reset AGC so RSSI/noise floor don't stick at -120 radio_driver.resetAGC();
next_agc_reset_ms = millis(); next_agc_reset_ms = millis();
} }
uint8_t rx_buf[256]; uint8_t rx_buf[256];