Merge pull request #1 from weebl2000/2026/remote-lna

Fix remote LNA toggle bugs: correct register comparison, add missing implementation & wire up companion radio
This commit is contained in:
João Brázio 2026-02-27 10:11:46 +00:00 committed by GitHub
commit 3a81837845
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 32 additions and 15 deletions

View file

@ -228,6 +228,7 @@ void DataStore::loadPrefsInt(const char *filename, NodePrefs& _prefs, double& no
file.read((uint8_t *)&_prefs.gps_enabled, sizeof(_prefs.gps_enabled)); // 85
file.read((uint8_t *)&_prefs.gps_interval, sizeof(_prefs.gps_interval)); // 86
file.read((uint8_t *)&_prefs.autoadd_config, sizeof(_prefs.autoadd_config)); // 87
file.read((uint8_t *)&_prefs.sx126x_rx_boosted_gain, sizeof(_prefs.sx126x_rx_boosted_gain)); // 88
file.close();
}
@ -263,6 +264,7 @@ void DataStore::savePrefs(const NodePrefs& _prefs, double node_lat, double node_
file.write((uint8_t *)&_prefs.gps_enabled, sizeof(_prefs.gps_enabled)); // 85
file.write((uint8_t *)&_prefs.gps_interval, sizeof(_prefs.gps_interval)); // 86
file.write((uint8_t *)&_prefs.autoadd_config, sizeof(_prefs.autoadd_config)); // 87
file.write((uint8_t *)&_prefs.sx126x_rx_boosted_gain, sizeof(_prefs.sx126x_rx_boosted_gain)); // 88
file.close();
}

View file

@ -803,6 +803,13 @@ MyMesh::MyMesh(mesh::Radio &radio, mesh::RNG &rng, mesh::RTCClock &rtc, SimpleMe
_prefs.gps_enabled = 0; // GPS disabled by default
_prefs.gps_interval = 0; // No automatic GPS updates by default
//_prefs.rx_delay_base = 10.0f; enable once new algo fixed
#if defined(USE_SX1262) || defined(USE_SX1268)
#ifdef SX126X_RX_BOOSTED_GAIN
_prefs.sx126x_rx_boosted_gain = SX126X_RX_BOOSTED_GAIN;
#else
_prefs.sx126x_rx_boosted_gain = 1; // enabled by default
#endif
#endif
}
void MyMesh::begin(bool has_display) {
@ -869,6 +876,11 @@ void MyMesh::begin(bool has_display) {
radio_set_params(_prefs.freq, _prefs.bw, _prefs.sf, _prefs.cr);
radio_set_tx_power(_prefs.tx_power_dbm);
#if defined(USE_SX1262) || defined(USE_SX1268)
radio_set_rx_boosted_gain_mode(_prefs.sx126x_rx_boosted_gain);
MESH_DEBUG_PRINTLN("SX126x RX Boosted Gain Mode: %s",
radio_get_rx_boosted_gain_mode() ? "Enabled" : "Disabled");
#endif
}
const char *MyMesh::getNodeName() {

View file

@ -28,4 +28,5 @@ struct NodePrefs { // persisted to file
uint8_t gps_enabled; // GPS enabled flag (0=disabled, 1=enabled)
uint32_t gps_interval; // GPS read interval in seconds
uint8_t autoadd_config; // bitmask for auto-add contacts config
uint8_t sx126x_rx_boosted_gain; // SX126x RX boosted gain mode (0=power saving, 1=boosted)
};

View file

@ -93,9 +93,9 @@ class CustomSX1262 : public SX1262 {
return detected;
}
uint8_t getRxBoostedGainMode() {
bool getRxBoostedGainMode() {
uint8_t rxGain = 0;
readRegister(RADIOLIB_SX126X_REG_RX_GAIN, &rxGain, 1);
return rxGain;
return (rxGain == RADIOLIB_SX126X_RX_GAIN_BOOSTED);
}
};

View file

@ -85,9 +85,9 @@ class CustomSX1268 : public SX1268 {
return detected;
}
uint8_t getRxBoostedGainMode() {
bool getRxBoostedGainMode() {
uint8_t rxGain = 0;
readRegister(RADIOLIB_SX126X_REG_RX_GAIN, &rxGain, 1);
return rxGain;
return (rxGain == RADIOLIB_SX126X_RX_GAIN_BOOSTED);
}
};

View file

@ -27,5 +27,3 @@ 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(int8_t dbm);
mesh::LocalIdentity radio_new_identity();
bool radio_get_rx_boosted_gain_mode();

View file

@ -26,6 +26,4 @@ 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(int8_t dbm);
mesh::LocalIdentity radio_new_identity();
bool radio_get_rx_boosted_gain_mode();
mesh::LocalIdentity radio_new_identity();

View file

@ -26,6 +26,4 @@ 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(int8_t dbm);
mesh::LocalIdentity radio_new_identity();
bool radio_get_rx_boosted_gain_mode();
mesh::LocalIdentity radio_new_identity();

View file

@ -26,6 +26,4 @@ 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(int8_t dbm);
mesh::LocalIdentity radio_new_identity();
bool radio_get_rx_boosted_gain_mode();
mesh::LocalIdentity radio_new_identity();

View file

@ -47,3 +47,13 @@ mesh::LocalIdentity radio_new_identity() {
RadioNoiseListener rng(radio);
return mesh::LocalIdentity(&rng); // create new random identity
}
#if defined(USE_SX1262) || defined(USE_SX1268)
void radio_set_rx_boosted_gain_mode(bool rxbgm) {
radio.setRxBoostedGainMode(rxbgm);
}
bool radio_get_rx_boosted_gain_mode() {
return radio.getRxBoostedGainMode();
}
#endif