Clean up comments on kiss noise floor changes.
This commit is contained in:
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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];
|
||||||
|
|||||||
Reference in New Issue
Block a user