Browse Source
Fix remote LNA toggle bugs: correct register comparison, add missing implementations, wire up companion radio
getRxBoostedGain was returned true because both 0x94 (power saving) and
0x96 (boosted gain = 1) return true
pull/1653/head
Wessel Nieboer
3 months ago
No known key found for this signature in database
GPG Key ID: 27BB1C3D63DEEFFF
10 changed files with
32 additions and
15 deletions
-
examples/companion_radio/DataStore.cpp
-
examples/companion_radio/MyMesh.cpp
-
examples/companion_radio/NodePrefs.h
-
src/helpers/radiolib/CustomSX1262.h
-
src/helpers/radiolib/CustomSX1268.h
-
variants/heltec_v2/target.h
-
variants/lilygo_t3s3_sx1276/target.h
-
variants/lilygo_tbeam_SX1276/target.h
-
variants/lilygo_tlora_v2_1/target.h
-
variants/m5stack_unit_c6l/UnitC6LBoard.cpp
|
|
|
@ -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(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -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() { |
|
|
|
|
|
|
|
@ -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)
|
|
|
|
}; |
|
|
|
@ -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); |
|
|
|
} |
|
|
|
}; |
|
|
|
@ -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); |
|
|
|
} |
|
|
|
}; |
|
|
|
@ -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(); |
|
|
|
|
|
|
|
@ -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(); |
|
|
|
@ -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(); |
|
|
|
@ -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(); |
|
|
|
@ -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 |
|
|
|
|