diff --git a/examples/companion_radio/DataStore.cpp b/examples/companion_radio/DataStore.cpp index c0f2c021..72c5df8d 100644 --- a/examples/companion_radio/DataStore.cpp +++ b/examples/companion_radio/DataStore.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(); } diff --git a/examples/companion_radio/MyMesh.cpp b/examples/companion_radio/MyMesh.cpp index 96716091..3e4ea17f 100644 --- a/examples/companion_radio/MyMesh.cpp +++ b/examples/companion_radio/MyMesh.cpp @@ -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() { diff --git a/examples/companion_radio/NodePrefs.h b/examples/companion_radio/NodePrefs.h index d7ddd92a..a8a8a83c 100644 --- a/examples/companion_radio/NodePrefs.h +++ b/examples/companion_radio/NodePrefs.h @@ -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) }; \ No newline at end of file diff --git a/src/helpers/radiolib/CustomSX1262.h b/src/helpers/radiolib/CustomSX1262.h index e02f21c0..e9b98554 100644 --- a/src/helpers/radiolib/CustomSX1262.h +++ b/src/helpers/radiolib/CustomSX1262.h @@ -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); } }; \ No newline at end of file diff --git a/src/helpers/radiolib/CustomSX1268.h b/src/helpers/radiolib/CustomSX1268.h index 4187c8e4..f43dc12a 100644 --- a/src/helpers/radiolib/CustomSX1268.h +++ b/src/helpers/radiolib/CustomSX1268.h @@ -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); } }; \ No newline at end of file diff --git a/variants/heltec_v2/target.h b/variants/heltec_v2/target.h index 76f34b70..788dac72 100644 --- a/variants/heltec_v2/target.h +++ b/variants/heltec_v2/target.h @@ -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(); diff --git a/variants/lilygo_t3s3_sx1276/target.h b/variants/lilygo_t3s3_sx1276/target.h index 99a6da51..2df4b3ed 100644 --- a/variants/lilygo_t3s3_sx1276/target.h +++ b/variants/lilygo_t3s3_sx1276/target.h @@ -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(); \ No newline at end of file +mesh::LocalIdentity radio_new_identity(); \ No newline at end of file diff --git a/variants/lilygo_tbeam_SX1276/target.h b/variants/lilygo_tbeam_SX1276/target.h index a4552214..ad385645 100644 --- a/variants/lilygo_tbeam_SX1276/target.h +++ b/variants/lilygo_tbeam_SX1276/target.h @@ -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(); \ No newline at end of file +mesh::LocalIdentity radio_new_identity(); \ No newline at end of file diff --git a/variants/lilygo_tlora_v2_1/target.h b/variants/lilygo_tlora_v2_1/target.h index d797ae19..75823113 100644 --- a/variants/lilygo_tlora_v2_1/target.h +++ b/variants/lilygo_tlora_v2_1/target.h @@ -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(); \ No newline at end of file +mesh::LocalIdentity radio_new_identity(); \ No newline at end of file diff --git a/variants/m5stack_unit_c6l/UnitC6LBoard.cpp b/variants/m5stack_unit_c6l/UnitC6LBoard.cpp index 6538ef48..27c294fa 100644 --- a/variants/m5stack_unit_c6l/UnitC6LBoard.cpp +++ b/variants/m5stack_unit_c6l/UnitC6LBoard.cpp @@ -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