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:
@@ -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_enabled, sizeof(_prefs.gps_enabled)); // 85
|
||||||
file.read((uint8_t *)&_prefs.gps_interval, sizeof(_prefs.gps_interval)); // 86
|
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.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();
|
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_enabled, sizeof(_prefs.gps_enabled)); // 85
|
||||||
file.write((uint8_t *)&_prefs.gps_interval, sizeof(_prefs.gps_interval)); // 86
|
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.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();
|
file.close();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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_enabled = 0; // GPS disabled by default
|
||||||
_prefs.gps_interval = 0; // No automatic GPS updates by default
|
_prefs.gps_interval = 0; // No automatic GPS updates by default
|
||||||
//_prefs.rx_delay_base = 10.0f; enable once new algo fixed
|
//_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) {
|
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_params(_prefs.freq, _prefs.bw, _prefs.sf, _prefs.cr);
|
||||||
radio_set_tx_power(_prefs.tx_power_dbm);
|
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() {
|
const char *MyMesh::getNodeName() {
|
||||||
|
|||||||
@@ -28,4 +28,5 @@ struct NodePrefs { // persisted to file
|
|||||||
uint8_t gps_enabled; // GPS enabled flag (0=disabled, 1=enabled)
|
uint8_t gps_enabled; // GPS enabled flag (0=disabled, 1=enabled)
|
||||||
uint32_t gps_interval; // GPS read interval in seconds
|
uint32_t gps_interval; // GPS read interval in seconds
|
||||||
uint8_t autoadd_config; // bitmask for auto-add contacts config
|
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)
|
||||||
};
|
};
|
||||||
@@ -93,9 +93,9 @@ class CustomSX1262 : public SX1262 {
|
|||||||
return detected;
|
return detected;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t getRxBoostedGainMode() {
|
bool getRxBoostedGainMode() {
|
||||||
uint8_t rxGain = 0;
|
uint8_t rxGain = 0;
|
||||||
readRegister(RADIOLIB_SX126X_REG_RX_GAIN, &rxGain, 1);
|
readRegister(RADIOLIB_SX126X_REG_RX_GAIN, &rxGain, 1);
|
||||||
return rxGain;
|
return (rxGain == RADIOLIB_SX126X_RX_GAIN_BOOSTED);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -85,9 +85,9 @@ class CustomSX1268 : public SX1268 {
|
|||||||
return detected;
|
return detected;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t getRxBoostedGainMode() {
|
bool getRxBoostedGainMode() {
|
||||||
uint8_t rxGain = 0;
|
uint8_t rxGain = 0;
|
||||||
readRegister(RADIOLIB_SX126X_REG_RX_GAIN, &rxGain, 1);
|
readRegister(RADIOLIB_SX126X_REG_RX_GAIN, &rxGain, 1);
|
||||||
return rxGain;
|
return (rxGain == RADIOLIB_SX126X_RX_GAIN_BOOSTED);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -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_params(float freq, float bw, uint8_t sf, uint8_t cr);
|
||||||
void radio_set_tx_power(int8_t dbm);
|
void radio_set_tx_power(int8_t dbm);
|
||||||
mesh::LocalIdentity radio_new_identity();
|
mesh::LocalIdentity radio_new_identity();
|
||||||
|
|
||||||
bool radio_get_rx_boosted_gain_mode();
|
|
||||||
|
|||||||
@@ -26,6 +26,4 @@ bool radio_init();
|
|||||||
uint32_t radio_get_rng_seed();
|
uint32_t radio_get_rng_seed();
|
||||||
void radio_set_params(float freq, float bw, uint8_t sf, uint8_t cr);
|
void radio_set_params(float freq, float bw, uint8_t sf, uint8_t cr);
|
||||||
void radio_set_tx_power(int8_t dbm);
|
void radio_set_tx_power(int8_t dbm);
|
||||||
mesh::LocalIdentity radio_new_identity();
|
mesh::LocalIdentity radio_new_identity();
|
||||||
|
|
||||||
bool radio_get_rx_boosted_gain_mode();
|
|
||||||
@@ -26,6 +26,4 @@ bool radio_init();
|
|||||||
uint32_t radio_get_rng_seed();
|
uint32_t radio_get_rng_seed();
|
||||||
void radio_set_params(float freq, float bw, uint8_t sf, uint8_t cr);
|
void radio_set_params(float freq, float bw, uint8_t sf, uint8_t cr);
|
||||||
void radio_set_tx_power(int8_t dbm);
|
void radio_set_tx_power(int8_t dbm);
|
||||||
mesh::LocalIdentity radio_new_identity();
|
mesh::LocalIdentity radio_new_identity();
|
||||||
|
|
||||||
bool radio_get_rx_boosted_gain_mode();
|
|
||||||
@@ -26,6 +26,4 @@ bool radio_init();
|
|||||||
uint32_t radio_get_rng_seed();
|
uint32_t radio_get_rng_seed();
|
||||||
void radio_set_params(float freq, float bw, uint8_t sf, uint8_t cr);
|
void radio_set_params(float freq, float bw, uint8_t sf, uint8_t cr);
|
||||||
void radio_set_tx_power(int8_t dbm);
|
void radio_set_tx_power(int8_t dbm);
|
||||||
mesh::LocalIdentity radio_new_identity();
|
mesh::LocalIdentity radio_new_identity();
|
||||||
|
|
||||||
bool radio_get_rx_boosted_gain_mode();
|
|
||||||
@@ -47,3 +47,13 @@ mesh::LocalIdentity radio_new_identity() {
|
|||||||
RadioNoiseListener rng(radio);
|
RadioNoiseListener rng(radio);
|
||||||
return mesh::LocalIdentity(&rng); // create new random identity
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user