diff --git a/examples/simple_repeater/MyMesh.cpp b/examples/simple_repeater/MyMesh.cpp index 6d957cc09..853d6bfad 100644 --- a/examples/simple_repeater/MyMesh.cpp +++ b/examples/simple_repeater/MyMesh.cpp @@ -801,6 +801,14 @@ MyMesh::MyMesh(mesh::MainBoard &board, mesh::Radio &radio, mesh::MillisecondCloc _prefs.advert_loc_policy = ADVERT_LOC_PREFS; _prefs.adc_multiplier = 0.0f; // 0.0f means use default board multiplier + +#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(FILESYSTEM *fs) { @@ -821,6 +829,12 @@ void MyMesh::begin(FILESYSTEM *fs) { 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 + updateAdvertTimer(); updateFloodAdvertTimer(); diff --git a/examples/simple_repeater/MyMesh.h b/examples/simple_repeater/MyMesh.h index 0d5cd28a3..77f2be31d 100644 --- a/examples/simple_repeater/MyMesh.h +++ b/examples/simple_repeater/MyMesh.h @@ -234,4 +234,10 @@ class MyMesh : public mesh::Mesh, public CommonCLICallbacks { // To check if there is pending work bool hasPendingWork() const; + +#if defined(USE_SX1262) || defined(USE_SX1268) + void setRxBoostedGain(bool enable) override { + radio_set_rx_boosted_gain_mode(enable); + } +#endif }; diff --git a/src/helpers/CommonCLI.cpp b/src/helpers/CommonCLI.cpp index 10ab86691..bf198f371 100644 --- a/src/helpers/CommonCLI.cpp +++ b/src/helpers/CommonCLI.cpp @@ -51,19 +51,20 @@ void CommonCLI::loadPrefsInt(FILESYSTEM* fs, const char* filename) { file.read((uint8_t *)&_prefs->tx_power_dbm, sizeof(_prefs->tx_power_dbm)); // 76 file.read((uint8_t *)&_prefs->disable_fwd, sizeof(_prefs->disable_fwd)); // 77 file.read((uint8_t *)&_prefs->advert_interval, sizeof(_prefs->advert_interval)); // 78 - file.read((uint8_t *)pad, 1); // 79 was 'unused' + file.read((uint8_t *)pad, 1); // 79 : 1 byte unused file.read((uint8_t *)&_prefs->rx_delay_base, sizeof(_prefs->rx_delay_base)); // 80 file.read((uint8_t *)&_prefs->tx_delay_factor, sizeof(_prefs->tx_delay_factor)); // 84 file.read((uint8_t *)&_prefs->guest_password[0], sizeof(_prefs->guest_password)); // 88 file.read((uint8_t *)&_prefs->direct_tx_delay_factor, sizeof(_prefs->direct_tx_delay_factor)); // 104 - file.read(pad, 4); // 108 + file.read(pad, 4); // 108 : 4 bytes unused file.read((uint8_t *)&_prefs->sf, sizeof(_prefs->sf)); // 112 file.read((uint8_t *)&_prefs->cr, sizeof(_prefs->cr)); // 113 file.read((uint8_t *)&_prefs->allow_read_only, sizeof(_prefs->allow_read_only)); // 114 file.read((uint8_t *)&_prefs->multi_acks, sizeof(_prefs->multi_acks)); // 115 file.read((uint8_t *)&_prefs->bw, sizeof(_prefs->bw)); // 116 file.read((uint8_t *)&_prefs->agc_reset_interval, sizeof(_prefs->agc_reset_interval)); // 120 - file.read(pad, 3); // 121 + file.read((uint8_t *)&_prefs->sx126x_rx_boosted_gain, sizeof(_prefs->sx126x_rx_boosted_gain)); // 121 + file.read(pad, 2); // 122 : 2 byte unused file.read((uint8_t *)&_prefs->flood_max, sizeof(_prefs->flood_max)); // 124 file.read((uint8_t *)&_prefs->flood_advert_interval, sizeof(_prefs->flood_advert_interval)); // 125 file.read((uint8_t *)&_prefs->interference_threshold, sizeof(_prefs->interference_threshold)); // 126 @@ -79,9 +80,9 @@ void CommonCLI::loadPrefsInt(FILESYSTEM* fs, const char* filename) { file.read((uint8_t *)&_prefs->gps_interval, sizeof(_prefs->gps_interval)); // 157 file.read((uint8_t *)&_prefs->advert_loc_policy, sizeof (_prefs->advert_loc_policy)); // 161 file.read((uint8_t *)&_prefs->discovery_mod_timestamp, sizeof(_prefs->discovery_mod_timestamp)); // 162 - file.read((uint8_t *)&_prefs->adc_multiplier, sizeof(_prefs->adc_multiplier)); // 166 - file.read((uint8_t *)_prefs->owner_info, sizeof(_prefs->owner_info)); // 170 - // 290 + file.read((uint8_t *)&_prefs->adc_multiplier, sizeof(_prefs->adc_multiplier)); // 166 + file.read((uint8_t *)_prefs->owner_info, sizeof(_prefs->owner_info)); // 170 + // next: 290 // sanitise bad pref values _prefs->rx_delay_base = constrain(_prefs->rx_delay_base, 0, 20.0f); @@ -108,6 +109,9 @@ void CommonCLI::loadPrefsInt(FILESYSTEM* fs, const char* filename) { _prefs->gps_enabled = constrain(_prefs->gps_enabled, 0, 1); _prefs->advert_loc_policy = constrain(_prefs->advert_loc_policy, 0, 2); + // sanitise settings + _prefs->sx126x_rx_boosted_gain = constrain(_prefs->sx126x_rx_boosted_gain, 0, 1); // boolean + file.close(); } } @@ -135,19 +139,20 @@ void CommonCLI::savePrefs(FILESYSTEM* fs) { file.write((uint8_t *)&_prefs->tx_power_dbm, sizeof(_prefs->tx_power_dbm)); // 76 file.write((uint8_t *)&_prefs->disable_fwd, sizeof(_prefs->disable_fwd)); // 77 file.write((uint8_t *)&_prefs->advert_interval, sizeof(_prefs->advert_interval)); // 78 - file.write((uint8_t *)pad, 1); // 79 was 'unused' + file.write((uint8_t *)pad, 1); // 79 : 1 byte unused file.write((uint8_t *)&_prefs->rx_delay_base, sizeof(_prefs->rx_delay_base)); // 80 file.write((uint8_t *)&_prefs->tx_delay_factor, sizeof(_prefs->tx_delay_factor)); // 84 file.write((uint8_t *)&_prefs->guest_password[0], sizeof(_prefs->guest_password)); // 88 file.write((uint8_t *)&_prefs->direct_tx_delay_factor, sizeof(_prefs->direct_tx_delay_factor)); // 104 - file.write(pad, 4); // 108 + file.write(pad, 4); // 108 : 4 byte unused file.write((uint8_t *)&_prefs->sf, sizeof(_prefs->sf)); // 112 file.write((uint8_t *)&_prefs->cr, sizeof(_prefs->cr)); // 113 file.write((uint8_t *)&_prefs->allow_read_only, sizeof(_prefs->allow_read_only)); // 114 file.write((uint8_t *)&_prefs->multi_acks, sizeof(_prefs->multi_acks)); // 115 file.write((uint8_t *)&_prefs->bw, sizeof(_prefs->bw)); // 116 file.write((uint8_t *)&_prefs->agc_reset_interval, sizeof(_prefs->agc_reset_interval)); // 120 - file.write(pad, 3); // 121 + file.write((uint8_t *)&_prefs->sx126x_rx_boosted_gain, sizeof(_prefs->sx126x_rx_boosted_gain)); // 121 + file.write(pad, 2); // 122 : 2 byte unused file.write((uint8_t *)&_prefs->flood_max, sizeof(_prefs->flood_max)); // 124 file.write((uint8_t *)&_prefs->flood_advert_interval, sizeof(_prefs->flood_advert_interval)); // 125 file.write((uint8_t *)&_prefs->interference_threshold, sizeof(_prefs->interference_threshold)); // 126 @@ -164,8 +169,8 @@ void CommonCLI::savePrefs(FILESYSTEM* fs) { file.write((uint8_t *)&_prefs->advert_loc_policy, sizeof(_prefs->advert_loc_policy)); // 161 file.write((uint8_t *)&_prefs->discovery_mod_timestamp, sizeof(_prefs->discovery_mod_timestamp)); // 162 file.write((uint8_t *)&_prefs->adc_multiplier, sizeof(_prefs->adc_multiplier)); // 166 - file.write((uint8_t *)_prefs->owner_info, sizeof(_prefs->owner_info)); // 170 - // 290 + file.write((uint8_t *)_prefs->owner_info, sizeof(_prefs->owner_info)); // 170 + // next: 290 file.close(); } @@ -303,6 +308,10 @@ void CommonCLI::handleCommand(uint32_t sender_timestamp, const char* command, ch sprintf(reply, "> %s", StrHelper::ftoa(_prefs->node_lat)); } else if (memcmp(config, "lon", 3) == 0) { sprintf(reply, "> %s", StrHelper::ftoa(_prefs->node_lon)); +#if defined(USE_SX1262) || defined(USE_SX1268) + } else if (memcmp(config, "radio.lna", 9) == 0) { + sprintf(reply, "> %s", _prefs->sx126x_rx_boosted_gain ? "on" : "off"); +#endif } else if (memcmp(config, "radio", 5) == 0) { char freq[16], bw[16]; strcpy(freq, StrHelper::ftoa(_prefs->freq)); @@ -473,6 +482,13 @@ void CommonCLI::handleCommand(uint32_t sender_timestamp, const char* command, ch _prefs->disable_fwd = memcmp(&config[7], "off", 3) == 0; savePrefs(); strcpy(reply, _prefs->disable_fwd ? "OK - repeat is now OFF" : "OK - repeat is now ON"); +#if defined(USE_SX1262) || defined(USE_SX1268) + } else if (memcmp(config, "radio.lna ", 10) == 0) { + _prefs->sx126x_rx_boosted_gain = memcmp(&config[10], "on", 2) == 0; + strcpy(reply, "OK"); + savePrefs(); + _callbacks->setRxBoostedGain(_prefs->sx126x_rx_boosted_gain); +#endif } else if (memcmp(config, "radio ", 6) == 0) { strcpy(tmp, &config[6]); const char *parts[4]; diff --git a/src/helpers/CommonCLI.h b/src/helpers/CommonCLI.h index 8661d1e6d..2baa136f7 100644 --- a/src/helpers/CommonCLI.h +++ b/src/helpers/CommonCLI.h @@ -52,6 +52,8 @@ struct NodePrefs { // persisted to file uint32_t discovery_mod_timestamp; float adc_multiplier; char owner_info[120]; + // Power settings + uint8_t sx126x_rx_boosted_gain; }; class CommonCLICallbacks { @@ -87,6 +89,10 @@ class CommonCLICallbacks { virtual void restartBridge() { // no op by default }; + + virtual void setRxBoostedGain(bool enable) { + // no op by default + }; }; class CommonCLI { diff --git a/src/helpers/radiolib/CustomSX1262.h b/src/helpers/radiolib/CustomSX1262.h index bfaea7c76..2787e6415 100644 --- a/src/helpers/radiolib/CustomSX1262.h +++ b/src/helpers/radiolib/CustomSX1262.h @@ -2,9 +2,11 @@ #include -#define SX126X_IRQ_HEADER_VALID 0b0000010000 // 4 4 valid LoRa header received +#define SX126X_IRQ_HEADER_VALID 0b0000010000 // 4 4 valid LoRa header received #define SX126X_IRQ_PREAMBLE_DETECTED 0x04 +#define USE_SX1262 + class CustomSX1262 : public SX1262 { public: CustomSX1262(Module *mod) : SX1262(mod) { } @@ -84,4 +86,10 @@ class CustomSX1262 : public SX1262 { bool detected = (irq & SX126X_IRQ_HEADER_VALID) || (irq & SX126X_IRQ_PREAMBLE_DETECTED); return detected; } + + uint8_t getRxBoostedGainMode() { + uint8_t rxGain = 0; + readRegister(RADIOLIB_SX126X_REG_RX_GAIN, &rxGain, 1); + return rxGain; + } }; \ No newline at end of file diff --git a/src/helpers/radiolib/CustomSX1268.h b/src/helpers/radiolib/CustomSX1268.h index 1e2e26204..0ef17b1a2 100644 --- a/src/helpers/radiolib/CustomSX1268.h +++ b/src/helpers/radiolib/CustomSX1268.h @@ -2,9 +2,11 @@ #include -#define SX126X_IRQ_HEADER_VALID 0b0000010000 // 4 4 valid LoRa header received +#define SX126X_IRQ_HEADER_VALID 0b0000010000 // 4 4 valid LoRa header received #define SX126X_IRQ_PREAMBLE_DETECTED 0x04 +#define USE_SX1268 + class CustomSX1268 : public SX1268 { public: CustomSX1268(Module *mod) : SX1268(mod) { } @@ -84,4 +86,10 @@ class CustomSX1268 : public SX1268 { bool detected = (irq & SX126X_IRQ_HEADER_VALID) || (irq & SX126X_IRQ_PREAMBLE_DETECTED); return detected; } + + uint8_t getRxBoostedGainMode() { + uint8_t rxGain = 0; + readRegister(RADIOLIB_SX126X_REG_RX_GAIN, &rxGain, 1); + return rxGain; + } }; \ No newline at end of file diff --git a/src/helpers/radiolib/CustomSX1276.h b/src/helpers/radiolib/CustomSX1276.h index bee252743..2c2675afd 100644 --- a/src/helpers/radiolib/CustomSX1276.h +++ b/src/helpers/radiolib/CustomSX1276.h @@ -8,6 +8,8 @@ #define RH_RF95_MODEM_STATUS_SIGNAL_SYNCHRONIZED 0x02 #define RH_RF95_MODEM_STATUS_SIGNAL_DETECTED 0x01 +#define USE_SX1276 + class CustomSX1276 : public SX1276 { public: CustomSX1276(Module *mod) : SX1276(mod) { } @@ -87,4 +89,30 @@ class CustomSX1276 : public SX1276 { } return 0; // timed out } + + int16_t getCurrentLimit() { + // read the OCP register + int16_t state = this->mod->SPIgetRegValue(RADIOLIB_SX127X_REG_OCP); + if (state < 0) { + return (state); + } + uint8_t regVal = (uint8_t)state; + + // check if OCP is enabled + if ((regVal & RADIOLIB_SX127X_OCP_ON) == 0) { + return (0); + } + + // get the raw value (bits 0-4) + uint8_t raw = regVal & 0x1F; + + // determine the current limit based on the raw value + if (raw <= 15) { + // low range: currentLimit = 45 + raw * 5 + return (45 + raw * 5); + } else { + // high range: currentLimit = raw * 10 - 30 + return (raw * 10 - 30); + } + } }; diff --git a/variants/ebyte_eora_s3/target.cpp b/variants/ebyte_eora_s3/target.cpp index 647f59972..d3e0704f7 100644 --- a/variants/ebyte_eora_s3/target.cpp +++ b/variants/ebyte_eora_s3/target.cpp @@ -83,3 +83,11 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} \ No newline at end of file diff --git a/variants/ebyte_eora_s3/target.h b/variants/ebyte_eora_s3/target.h index f184c7575..2acb6487a 100644 --- a/variants/ebyte_eora_s3/target.h +++ b/variants/ebyte_eora_s3/target.h @@ -27,3 +27,6 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); \ No newline at end of file diff --git a/variants/heltec_ct62/target.cpp b/variants/heltec_ct62/target.cpp index a8c15f5ff..f208f8537 100644 --- a/variants/heltec_ct62/target.cpp +++ b/variants/heltec_ct62/target.cpp @@ -34,4 +34,12 @@ void radio_set_tx_power(uint8_t dbm) { mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity +} + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); } \ No newline at end of file diff --git a/variants/heltec_ct62/target.h b/variants/heltec_ct62/target.h index 9639ab2df..20e6e8f05 100644 --- a/variants/heltec_ct62/target.h +++ b/variants/heltec_ct62/target.h @@ -17,4 +17,7 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); \ No newline at end of file diff --git a/variants/heltec_e213/target.cpp b/variants/heltec_e213/target.cpp index 23561850e..b7ebada37 100644 --- a/variants/heltec_e213/target.cpp +++ b/variants/heltec_e213/target.cpp @@ -52,3 +52,11 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} \ No newline at end of file diff --git a/variants/heltec_e213/target.h b/variants/heltec_e213/target.h index 9ecdc212a..5d5116778 100644 --- a/variants/heltec_e213/target.h +++ b/variants/heltec_e213/target.h @@ -26,4 +26,7 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); \ No newline at end of file diff --git a/variants/heltec_e290/target.cpp b/variants/heltec_e290/target.cpp index 92b02092e..4d93a2452 100644 --- a/variants/heltec_e290/target.cpp +++ b/variants/heltec_e290/target.cpp @@ -52,3 +52,11 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} \ No newline at end of file diff --git a/variants/heltec_e290/target.h b/variants/heltec_e290/target.h index 607701127..2c8834ad2 100644 --- a/variants/heltec_e290/target.h +++ b/variants/heltec_e290/target.h @@ -26,4 +26,7 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); \ No newline at end of file diff --git a/variants/heltec_mesh_solar/target.cpp b/variants/heltec_mesh_solar/target.cpp index ad79f7171..76ef7685b 100644 --- a/variants/heltec_mesh_solar/target.cpp +++ b/variants/heltec_mesh_solar/target.cpp @@ -121,3 +121,11 @@ bool SolarSensorManager::setSettingValue(const char* name, const char* value) { } return false; // not supported } + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} \ No newline at end of file diff --git a/variants/heltec_mesh_solar/target.h b/variants/heltec_mesh_solar/target.h index e301a2735..e32a80599 100644 --- a/variants/heltec_mesh_solar/target.h +++ b/variants/heltec_mesh_solar/target.h @@ -44,3 +44,6 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); \ No newline at end of file diff --git a/variants/heltec_t114/target.cpp b/variants/heltec_t114/target.cpp index c3341103a..7e2af4792 100644 --- a/variants/heltec_t114/target.cpp +++ b/variants/heltec_t114/target.cpp @@ -131,3 +131,11 @@ bool T114SensorManager::setSettingValue(const char* name, const char* value) { } return false; // not supported } + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} \ No newline at end of file diff --git a/variants/heltec_t114/target.h b/variants/heltec_t114/target.h index 6306cd699..022222ee0 100644 --- a/variants/heltec_t114/target.h +++ b/variants/heltec_t114/target.h @@ -52,3 +52,6 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); \ No newline at end of file diff --git a/variants/heltec_t190/target.cpp b/variants/heltec_t190/target.cpp index b93575943..48a21bf0d 100644 --- a/variants/heltec_t190/target.cpp +++ b/variants/heltec_t190/target.cpp @@ -52,3 +52,11 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} \ No newline at end of file diff --git a/variants/heltec_t190/target.h b/variants/heltec_t190/target.h index 8a5fc716f..d5422f49a 100644 --- a/variants/heltec_t190/target.h +++ b/variants/heltec_t190/target.h @@ -26,4 +26,7 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); \ No newline at end of file diff --git a/variants/heltec_tracker/target.cpp b/variants/heltec_tracker/target.cpp index 5ba9a8fb4..667ad6633 100644 --- a/variants/heltec_tracker/target.cpp +++ b/variants/heltec_tracker/target.cpp @@ -124,3 +124,11 @@ bool HWTSensorManager::setSettingValue(const char* name, const char* value) { } return false; // not supported } + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} \ No newline at end of file diff --git a/variants/heltec_tracker/target.h b/variants/heltec_tracker/target.h index 23fab16e1..5cee995bb 100644 --- a/variants/heltec_tracker/target.h +++ b/variants/heltec_tracker/target.h @@ -45,3 +45,6 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); \ No newline at end of file diff --git a/variants/heltec_tracker_v2/target.cpp b/variants/heltec_tracker_v2/target.cpp index da397fb74..43e793f66 100644 --- a/variants/heltec_tracker_v2/target.cpp +++ b/variants/heltec_tracker_v2/target.cpp @@ -58,3 +58,11 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} diff --git a/variants/heltec_tracker_v2/target.h b/variants/heltec_tracker_v2/target.h index 190404ef9..b1547a000 100644 --- a/variants/heltec_tracker_v2/target.h +++ b/variants/heltec_tracker_v2/target.h @@ -28,3 +28,6 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); diff --git a/variants/heltec_v2/target.cpp b/variants/heltec_v2/target.cpp index df71d3f4b..91b88b148 100644 --- a/variants/heltec_v2/target.cpp +++ b/variants/heltec_v2/target.cpp @@ -50,4 +50,4 @@ void radio_set_tx_power(uint8_t dbm) { mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity -} +} \ No newline at end of file diff --git a/variants/heltec_v2/target.h b/variants/heltec_v2/target.h index 48d750be4..f48232365 100644 --- a/variants/heltec_v2/target.h +++ b/variants/heltec_v2/target.h @@ -27,3 +27,5 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); diff --git a/variants/heltec_v3/target.cpp b/variants/heltec_v3/target.cpp index 78b881972..8cbea8789 100644 --- a/variants/heltec_v3/target.cpp +++ b/variants/heltec_v3/target.cpp @@ -58,3 +58,11 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} diff --git a/variants/heltec_v3/target.h b/variants/heltec_v3/target.h index 739aecfe0..52ea6705c 100644 --- a/variants/heltec_v3/target.h +++ b/variants/heltec_v3/target.h @@ -28,3 +28,6 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); \ No newline at end of file diff --git a/variants/ikoka_nano_nrf/target.cpp b/variants/ikoka_nano_nrf/target.cpp index aed591823..30f23152a 100644 --- a/variants/ikoka_nano_nrf/target.cpp +++ b/variants/ikoka_nano_nrf/target.cpp @@ -42,3 +42,11 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} diff --git a/variants/ikoka_nano_nrf/target.h b/variants/ikoka_nano_nrf/target.h index 9b4e908ec..15d4542f3 100644 --- a/variants/ikoka_nano_nrf/target.h +++ b/variants/ikoka_nano_nrf/target.h @@ -26,3 +26,6 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); diff --git a/variants/ikoka_stick_nrf/target.cpp b/variants/ikoka_stick_nrf/target.cpp index bd803399b..dcbf73cc9 100644 --- a/variants/ikoka_stick_nrf/target.cpp +++ b/variants/ikoka_stick_nrf/target.cpp @@ -42,3 +42,11 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} diff --git a/variants/ikoka_stick_nrf/target.h b/variants/ikoka_stick_nrf/target.h index c276e89f2..15c0ab16f 100644 --- a/variants/ikoka_stick_nrf/target.h +++ b/variants/ikoka_stick_nrf/target.h @@ -26,3 +26,6 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); diff --git a/variants/lilygo_t3s3_sx1276/target.h b/variants/lilygo_t3s3_sx1276/target.h index 98a0fe359..5c693643e 100644 --- a/variants/lilygo_t3s3_sx1276/target.h +++ b/variants/lilygo_t3s3_sx1276/target.h @@ -26,4 +26,6 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); \ No newline at end of file diff --git a/variants/lilygo_tbeam_SX1276/target.cpp b/variants/lilygo_tbeam_SX1276/target.cpp index 0a7517a21..6c95f986a 100644 --- a/variants/lilygo_tbeam_SX1276/target.cpp +++ b/variants/lilygo_tbeam_SX1276/target.cpp @@ -57,4 +57,4 @@ void radio_set_tx_power(uint8_t dbm) { mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity -} +} \ No newline at end of file diff --git a/variants/lilygo_tbeam_SX1276/target.h b/variants/lilygo_tbeam_SX1276/target.h index b382b652d..c7e675314 100644 --- a/variants/lilygo_tbeam_SX1276/target.h +++ b/variants/lilygo_tbeam_SX1276/target.h @@ -27,3 +27,5 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); \ No newline at end of file diff --git a/variants/lilygo_techo/target.cpp b/variants/lilygo_techo/target.cpp index 2ebc0641f..faae38871 100644 --- a/variants/lilygo_techo/target.cpp +++ b/variants/lilygo_techo/target.cpp @@ -51,3 +51,11 @@ mesh::LocalIdentity radio_new_identity() { return mesh::LocalIdentity(&rng); // create new random identity } +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} + diff --git a/variants/lilygo_techo/target.h b/variants/lilygo_techo/target.h index 2b6ed45fc..74a7a9ff3 100644 --- a/variants/lilygo_techo/target.h +++ b/variants/lilygo_techo/target.h @@ -29,3 +29,6 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); diff --git a/variants/lilygo_tlora_v2_1/target.cpp b/variants/lilygo_tlora_v2_1/target.cpp index 65a78c194..848d88735 100644 --- a/variants/lilygo_tlora_v2_1/target.cpp +++ b/variants/lilygo_tlora_v2_1/target.cpp @@ -46,4 +46,4 @@ void radio_set_tx_power(uint8_t dbm) { mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random 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 326a0dee7..9307f1c55 100644 --- a/variants/lilygo_tlora_v2_1/target.h +++ b/variants/lilygo_tlora_v2_1/target.h @@ -27,3 +27,5 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); \ No newline at end of file diff --git a/variants/mesh_pocket/target.cpp b/variants/mesh_pocket/target.cpp index a7f6c7fb1..e749b5734 100644 --- a/variants/mesh_pocket/target.cpp +++ b/variants/mesh_pocket/target.cpp @@ -42,3 +42,11 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} diff --git a/variants/mesh_pocket/target.h b/variants/mesh_pocket/target.h index 2aa956693..ae0968891 100644 --- a/variants/mesh_pocket/target.h +++ b/variants/mesh_pocket/target.h @@ -31,3 +31,6 @@ mesh::LocalIdentity radio_new_identity(); extern SensorManager sensors; +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); + diff --git a/variants/promicro/target.cpp b/variants/promicro/target.cpp index b26320e47..e658cbe95 100644 --- a/variants/promicro/target.cpp +++ b/variants/promicro/target.cpp @@ -49,3 +49,11 @@ mesh::LocalIdentity radio_new_identity() { return mesh::LocalIdentity(&rng); // create new random identity } +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} + diff --git a/variants/promicro/target.h b/variants/promicro/target.h index 38c4b4e88..884982a06 100644 --- a/variants/promicro/target.h +++ b/variants/promicro/target.h @@ -28,3 +28,6 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); diff --git a/variants/sensecap_solar/target.cpp b/variants/sensecap_solar/target.cpp index 6bd7d31a7..eca1431f0 100644 --- a/variants/sensecap_solar/target.cpp +++ b/variants/sensecap_solar/target.cpp @@ -37,3 +37,11 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} diff --git a/variants/sensecap_solar/target.h b/variants/sensecap_solar/target.h index 90d60ba52..db88dc4d5 100644 --- a/variants/sensecap_solar/target.h +++ b/variants/sensecap_solar/target.h @@ -19,3 +19,6 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); diff --git a/variants/tenstar_c3/target.cpp b/variants/tenstar_c3/target.cpp index a29780f09..dc0ba2907 100644 --- a/variants/tenstar_c3/target.cpp +++ b/variants/tenstar_c3/target.cpp @@ -46,3 +46,11 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} diff --git a/variants/tenstar_c3/target.h b/variants/tenstar_c3/target.h index fa29e52bd..5b84239d7 100644 --- a/variants/tenstar_c3/target.h +++ b/variants/tenstar_c3/target.h @@ -19,3 +19,6 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); diff --git a/variants/thinknode_m1/target.cpp b/variants/thinknode_m1/target.cpp index c3b1abc21..f2dd19293 100644 --- a/variants/thinknode_m1/target.cpp +++ b/variants/thinknode_m1/target.cpp @@ -150,3 +150,11 @@ bool ThinkNodeM1SensorManager::setSettingValue(const char* name, const char* val } return false; // not supported } + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} diff --git a/variants/thinknode_m1/target.h b/variants/thinknode_m1/target.h index 8425369d8..92350aab7 100644 --- a/variants/thinknode_m1/target.h +++ b/variants/thinknode_m1/target.h @@ -47,3 +47,6 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); diff --git a/variants/thinknode_m2/target.cpp b/variants/thinknode_m2/target.cpp index cb3c1624d..c8422edb2 100644 --- a/variants/thinknode_m2/target.cpp +++ b/variants/thinknode_m2/target.cpp @@ -55,3 +55,11 @@ mesh::LocalIdentity radio_new_identity() { return mesh::LocalIdentity(&rng); // create new random identity } +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} + diff --git a/variants/thinknode_m2/target.h b/variants/thinknode_m2/target.h index b05def8aa..c2580a518 100644 --- a/variants/thinknode_m2/target.h +++ b/variants/thinknode_m2/target.h @@ -29,4 +29,6 @@ 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 +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); + diff --git a/variants/waveshare_rp2040_lora/target.cpp b/variants/waveshare_rp2040_lora/target.cpp index 7bc1d0430..9cc56651f 100644 --- a/variants/waveshare_rp2040_lora/target.cpp +++ b/variants/waveshare_rp2040_lora/target.cpp @@ -47,3 +47,11 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} diff --git a/variants/waveshare_rp2040_lora/target.h b/variants/waveshare_rp2040_lora/target.h index aed558939..7319d552d 100644 --- a/variants/waveshare_rp2040_lora/target.h +++ b/variants/waveshare_rp2040_lora/target.h @@ -19,3 +19,6 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); diff --git a/variants/wio-tracker-l1/target.cpp b/variants/wio-tracker-l1/target.cpp index 64866de00..21c91900f 100644 --- a/variants/wio-tracker-l1/target.cpp +++ b/variants/wio-tracker-l1/target.cpp @@ -52,3 +52,11 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} diff --git a/variants/wio-tracker-l1/target.h b/variants/wio-tracker-l1/target.h index 97e575d89..14f4098a9 100644 --- a/variants/wio-tracker-l1/target.h +++ b/variants/wio-tracker-l1/target.h @@ -35,3 +35,6 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); diff --git a/variants/xiao_c3/target.cpp b/variants/xiao_c3/target.cpp index fe3f7196a..5bf24f4df 100644 --- a/variants/xiao_c3/target.cpp +++ b/variants/xiao_c3/target.cpp @@ -54,3 +54,11 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} diff --git a/variants/xiao_c3/target.h b/variants/xiao_c3/target.h index a7ef44218..da5187315 100644 --- a/variants/xiao_c3/target.h +++ b/variants/xiao_c3/target.h @@ -18,3 +18,6 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm); diff --git a/variants/xiao_rp2040/target.cpp b/variants/xiao_rp2040/target.cpp index b7c199758..615d083a7 100644 --- a/variants/xiao_rp2040/target.cpp +++ b/variants/xiao_rp2040/target.cpp @@ -47,3 +47,11 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_rx_boosted_gain_mode(bool rxbgm) { + radio.setRxBoostedGainMode(rxbgm); +} + +bool radio_get_rx_boosted_gain_mode() { + return radio.getRxBoostedGainMode(); +} diff --git a/variants/xiao_rp2040/target.h b/variants/xiao_rp2040/target.h index 33b3766c2..ff9aec3f1 100644 --- a/variants/xiao_rp2040/target.h +++ b/variants/xiao_rp2040/target.h @@ -19,3 +19,6 @@ 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(); + +bool radio_get_rx_boosted_gain_mode(); +void radio_set_rx_boosted_gain_mode(bool rxbgm);