diff --git a/examples/companion_radio/main.cpp b/examples/companion_radio/main.cpp index 48c53ddd..59d17056 100644 --- a/examples/companion_radio/main.cpp +++ b/examples/companion_radio/main.cpp @@ -21,7 +21,10 @@ static unsigned long lastComposeRefresh = 0; static bool composeNeedsRefresh = false; #define COMPOSE_REFRESH_INTERVAL 600 // ms between e-ink refreshes while typing (refresh takes ~650ms) - + // AGC reset - periodically re-assert RX boosted gain to prevent sensitivity drift + #define AGC_RESET_INTERVAL_MS 500 + static unsigned long lastAGCReset = 0; + // Emoji picker state #include "EmojiPicker.h" static bool emojiPickerMode = false; @@ -400,7 +403,11 @@ void loop() { #endif #endif rtc_clock.tick(); - + // Periodic AGC reset - re-assert boosted RX gain to prevent sensitivity drift + if ((millis() - lastAGCReset) >= AGC_RESET_INTERVAL_MS) { + radio_reset_agc(); + lastAGCReset = millis(); + } // Handle T-Deck Pro keyboard input #if defined(LilyGo_TDeck_Pro) handleKeyboardInput(); diff --git a/variants/lilygo_tdeck_pro/target.cpp b/variants/lilygo_tdeck_pro/target.cpp index 8b2de485..2e7bb9ff 100644 --- a/variants/lilygo_tdeck_pro/target.cpp +++ b/variants/lilygo_tdeck_pro/target.cpp @@ -72,4 +72,8 @@ void radio_set_tx_power(uint8_t dbm) { mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); +} + +void radio_reset_agc() { + radio.setRxBoostedGainMode(true); } \ No newline at end of file diff --git a/variants/lilygo_tdeck_pro/target.h b/variants/lilygo_tdeck_pro/target.h index 5e4193cc..83747c0d 100644 --- a/variants/lilygo_tdeck_pro/target.h +++ b/variants/lilygo_tdeck_pro/target.h @@ -41,4 +41,5 @@ bool radio_init(); uint32_t radio_get_rng_seed(); void radio_set_params(float freq, float bw, uint8_t sf, uint8_t cr); void radio_set_tx_power(uint8_t dbm); -mesh::LocalIdentity radio_new_identity(); \ No newline at end of file +mesh::LocalIdentity radio_new_identity(); +void radio_reset_agc(); \ No newline at end of file