diff --git a/examples/simple_repeater/MyMesh.cpp b/examples/simple_repeater/MyMesh.cpp index 5fb1a729f..0dd94b687 100644 --- a/examples/simple_repeater/MyMesh.cpp +++ b/examples/simple_repeater/MyMesh.cpp @@ -716,6 +716,23 @@ 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) || defined(USE_SX1276) +#if defined(SX126X_CURRENT_LIMIT) +_prefs.sx12xx_current_limit = SX126X_CURRENT_LIMIT; +#elif defined(SX127X_CURRENT_LIMIT) +_prefs.sx12xx_current_limit = SX127X_CURRENT_LIMIT; +#else +_prefs.sx12xx_current_limit = 140; // mA +#endif +#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 +#endif } void MyMesh::begin(FILESYSTEM *fs) { @@ -736,6 +753,16 @@ 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) || defined(USE_SX1276) + radio_set_current_limit(_prefs.sx12xx_current_limit); + MESH_DEBUG_PRINTLN("SX12xx Current Limit: %d mA", radio_get_current_limit()); +#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 +#endif + updateAdvertTimer(); updateFloodAdvertTimer(); diff --git a/examples/simple_repeater/MyMesh.h b/examples/simple_repeater/MyMesh.h index ed9f0c5fc..b55d629db 100644 --- a/examples/simple_repeater/MyMesh.h +++ b/examples/simple_repeater/MyMesh.h @@ -225,4 +225,15 @@ class MyMesh : public mesh::Mesh, public CommonCLICallbacks { bridge.begin(); } #endif + +#if defined(USE_SX1262) || defined(USE_SX1268) || defined(USE_SX1276) + void setCurrentLimit(uint8_t ma) override { + radio_set_current_limit(ma); + } +#if defined(USE_SX1262) || defined(USE_SX1268) + void setRxBoostedGain(bool enable) override { + radio_set_rx_boosted_gain_mode(enable); + } +#endif +#endif }; diff --git a/src/helpers/CommonCLI.cpp b/src/helpers/CommonCLI.cpp index a3de990aa..08ffc98ec 100644 --- a/src/helpers/CommonCLI.cpp +++ b/src/helpers/CommonCLI.cpp @@ -43,19 +43,19 @@ 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(pad, 3); // 121 : 3 bytes 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 @@ -65,13 +65,16 @@ void CommonCLI::loadPrefsInt(FILESYSTEM* fs, const char* filename) { file.read((uint8_t *)&_prefs->bridge_baud, sizeof(_prefs->bridge_baud)); // 131 file.read((uint8_t *)&_prefs->bridge_channel, sizeof(_prefs->bridge_channel)); // 135 file.read((uint8_t *)&_prefs->bridge_secret, sizeof(_prefs->bridge_secret)); // 136 - file.read(pad, 4); // 152 + file.read(pad, 4); // 152 : 4 bytes unused file.read((uint8_t *)&_prefs->gps_enabled, sizeof(_prefs->gps_enabled)); // 156 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 - // 170 + file.read((uint8_t *)&_prefs->adc_multiplier, sizeof(_prefs->adc_multiplier)); // 166 + file.read(pad, 4); // 169 : 4 bytes unused + file.read((uint8_t *)&_prefs->sx12xx_current_limit, sizeof(_prefs->sx12xx_current_limit)); // 173 + file.read((uint8_t *)&_prefs->sx126x_rx_boosted_gain, sizeof(_prefs->sx126x_rx_boosted_gain)); // 174 + // next: 175 // sanitise bad pref values _prefs->rx_delay_base = constrain(_prefs->rx_delay_base, 0, 20.0f); @@ -96,6 +99,10 @@ 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 power settings + _prefs->sx12xx_current_limit = constrain(_prefs->sx12xx_current_limit, 0, 140); // mA + _prefs->sx126x_rx_boosted_gain = constrain(_prefs->sx126x_rx_boosted_gain, 0, 1); // boolean + file.close(); } } @@ -123,19 +130,19 @@ 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(pad, 3); // 121 : 3 bytes 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 @@ -145,13 +152,16 @@ void CommonCLI::savePrefs(FILESYSTEM* fs) { file.write((uint8_t *)&_prefs->bridge_baud, sizeof(_prefs->bridge_baud)); // 131 file.write((uint8_t *)&_prefs->bridge_channel, sizeof(_prefs->bridge_channel)); // 135 file.write((uint8_t *)&_prefs->bridge_secret, sizeof(_prefs->bridge_secret)); // 136 - file.write(pad, 4); // 152 + file.write(pad, 4); // 152 : 4 bytes unused file.write((uint8_t *)&_prefs->gps_enabled, sizeof(_prefs->gps_enabled)); // 156 file.write((uint8_t *)&_prefs->gps_interval, sizeof(_prefs->gps_interval)); // 157 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 - // 170 + file.write(pad, 4); // 169 : 4 bytes unused + file.write((uint8_t *)&_prefs->sx12xx_current_limit, sizeof(_prefs->sx12xx_current_limit)); // 173 + file.write((uint8_t *)&_prefs->sx126x_rx_boosted_gain, sizeof(_prefs->sx126x_rx_boosted_gain)); // 174 + // next: 175 file.close(); } @@ -284,6 +294,14 @@ 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) || defined(USE_SX1276) + } else if (memcmp(config, "radio.current", 13) == 0) { + sprintf(reply, "> %d mA", (uint8_t)_prefs->sx12xx_current_limit); +#if defined(USE_SX1262) || defined(USE_SX1268) + } else if (memcmp(config, "radio.rxbgm", 11) == 0) { + sprintf(reply, "> %s", _prefs->sx126x_rx_boosted_gain ? "on" : "off"); +#endif +#endif } else if (memcmp(config, "radio", 5) == 0) { char freq[16], bw[16]; strcpy(freq, StrHelper::ftoa(_prefs->freq)); @@ -413,6 +431,20 @@ 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) || defined(USE_SX1276) + } else if (memcmp(config, "radio.current ", 14) == 0) { + _prefs->sx12xx_current_limit = atoi(&config[14]); + strcpy(reply, "OK"); + savePrefs(); + _callbacks->setCurrentLimit(_prefs->sx12xx_current_limit); +#if defined(USE_SX1262) || defined(USE_SX1268) + } else if (memcmp(config, "radio.rxbgm ", 12) == 0) { + _prefs->sx126x_rx_boosted_gain = memcmp(&config[12], "on", 2) == 0; + strcpy(reply, "OK"); + savePrefs(); + _callbacks->setRxBoostedGain(_prefs->sx126x_rx_boosted_gain); +#endif +#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 068783ab1..a0363f758 100644 --- a/src/helpers/CommonCLI.h +++ b/src/helpers/CommonCLI.h @@ -48,6 +48,9 @@ struct NodePrefs { // persisted to file uint8_t advert_loc_policy; uint32_t discovery_mod_timestamp; float adc_multiplier; + // Power settings + uint8_t sx12xx_current_limit; + uint8_t sx126x_rx_boosted_gain; }; class CommonCLICallbacks { @@ -83,6 +86,14 @@ class CommonCLICallbacks { virtual void restartBridge() { // no op by default }; + + virtual void setCurrentLimit(uint8_t ma) { + // 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..7b400f8d6 100644 --- a/variants/ebyte_eora_s3/target.cpp +++ b/variants/ebyte_eora_s3/target.cpp @@ -83,3 +83,19 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..a0c897d79 100644 --- a/variants/ebyte_eora_s3/target.h +++ b/variants/ebyte_eora_s3/target.h @@ -27,3 +27,8 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +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..e2ab38a9a 100644 --- a/variants/heltec_ct62/target.cpp +++ b/variants/heltec_ct62/target.cpp @@ -34,4 +34,20 @@ 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_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..aba1504d7 100644 --- a/variants/heltec_ct62/target.h +++ b/variants/heltec_ct62/target.h @@ -17,4 +17,9 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +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..989bb7d14 100644 --- a/variants/heltec_e213/target.cpp +++ b/variants/heltec_e213/target.cpp @@ -52,3 +52,19 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..efc73068e 100644 --- a/variants/heltec_e213/target.h +++ b/variants/heltec_e213/target.h @@ -26,4 +26,9 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +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..044ba76e0 100644 --- a/variants/heltec_e290/target.cpp +++ b/variants/heltec_e290/target.cpp @@ -52,3 +52,19 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..d01237569 100644 --- a/variants/heltec_e290/target.h +++ b/variants/heltec_e290/target.h @@ -26,4 +26,9 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +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..cffd24610 100644 --- a/variants/heltec_mesh_solar/target.cpp +++ b/variants/heltec_mesh_solar/target.cpp @@ -121,3 +121,19 @@ bool SolarSensorManager::setSettingValue(const char* name, const char* value) { } return false; // not supported } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..2432cde87 100644 --- a/variants/heltec_mesh_solar/target.h +++ b/variants/heltec_mesh_solar/target.h @@ -44,3 +44,8 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +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..a4ab6d7ec 100644 --- a/variants/heltec_t114/target.cpp +++ b/variants/heltec_t114/target.cpp @@ -131,3 +131,19 @@ bool T114SensorManager::setSettingValue(const char* name, const char* value) { } return false; // not supported } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..cb2c20ba2 100644 --- a/variants/heltec_t114/target.h +++ b/variants/heltec_t114/target.h @@ -52,3 +52,8 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +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..e7d7e5b09 100644 --- a/variants/heltec_t190/target.cpp +++ b/variants/heltec_t190/target.cpp @@ -52,3 +52,19 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..e9726a28f 100644 --- a/variants/heltec_t190/target.h +++ b/variants/heltec_t190/target.h @@ -26,4 +26,9 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +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..40ae03726 100644 --- a/variants/heltec_tracker/target.cpp +++ b/variants/heltec_tracker/target.cpp @@ -124,3 +124,19 @@ bool HWTSensorManager::setSettingValue(const char* name, const char* value) { } return false; // not supported } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..9813eaf47 100644 --- a/variants/heltec_tracker/target.h +++ b/variants/heltec_tracker/target.h @@ -45,3 +45,8 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +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..5604fef8a 100644 --- a/variants/heltec_tracker_v2/target.cpp +++ b/variants/heltec_tracker_v2/target.cpp @@ -58,3 +58,19 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..34357f1bf 100644 --- a/variants/heltec_tracker_v2/target.h +++ b/variants/heltec_tracker_v2/target.h @@ -28,3 +28,8 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +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..9d0948f3e 100644 --- a/variants/heltec_v2/target.cpp +++ b/variants/heltec_v2/target.cpp @@ -51,3 +51,11 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} \ No newline at end of file diff --git a/variants/heltec_v2/target.h b/variants/heltec_v2/target.h index 48d750be4..ca77eb26b 100644 --- a/variants/heltec_v2/target.h +++ b/variants/heltec_v2/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_current_limit(uint8_t ma); diff --git a/variants/heltec_v3/target.cpp b/variants/heltec_v3/target.cpp index 78b881972..9eea0627d 100644 --- a/variants/heltec_v3/target.cpp +++ b/variants/heltec_v3/target.cpp @@ -58,3 +58,19 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..65e06dd5a 100644 --- a/variants/heltec_v3/target.h +++ b/variants/heltec_v3/target.h @@ -28,3 +28,8 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +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..0c0736078 100644 --- a/variants/ikoka_nano_nrf/target.cpp +++ b/variants/ikoka_nano_nrf/target.cpp @@ -42,3 +42,19 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..382190beb 100644 --- a/variants/ikoka_nano_nrf/target.h +++ b/variants/ikoka_nano_nrf/target.h @@ -26,3 +26,8 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +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..34809f163 100644 --- a/variants/ikoka_stick_nrf/target.cpp +++ b/variants/ikoka_stick_nrf/target.cpp @@ -42,3 +42,19 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..aaccfb0f6 100644 --- a/variants/ikoka_stick_nrf/target.h +++ b/variants/ikoka_stick_nrf/target.h @@ -26,3 +26,8 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +void radio_set_rx_boosted_gain_mode(bool rxbgm); diff --git a/variants/lilygo_t3s3_sx1276/target.cpp b/variants/lilygo_t3s3_sx1276/target.cpp index 042ff2062..f1e80c202 100644 --- a/variants/lilygo_t3s3_sx1276/target.cpp +++ b/variants/lilygo_t3s3_sx1276/target.cpp @@ -51,4 +51,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_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); } \ No newline at end of file diff --git a/variants/lilygo_t3s3_sx1276/target.h b/variants/lilygo_t3s3_sx1276/target.h index 98a0fe359..2612d1bc1 100644 --- a/variants/lilygo_t3s3_sx1276/target.h +++ b/variants/lilygo_t3s3_sx1276/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_current_limit(uint8_t ma); \ No newline at end of file diff --git a/variants/lilygo_tbeam_SX1276/target.cpp b/variants/lilygo_tbeam_SX1276/target.cpp index 0a7517a21..e6b22128f 100644 --- a/variants/lilygo_tbeam_SX1276/target.cpp +++ b/variants/lilygo_tbeam_SX1276/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_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} \ No newline at end of file diff --git a/variants/lilygo_tbeam_SX1276/target.h b/variants/lilygo_tbeam_SX1276/target.h index b382b652d..c9bf8f630 100644 --- a/variants/lilygo_tbeam_SX1276/target.h +++ b/variants/lilygo_tbeam_SX1276/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_current_limit(uint8_t ma); \ No newline at end of file diff --git a/variants/lilygo_techo/target.cpp b/variants/lilygo_techo/target.cpp index 2ebc0641f..5a191e86d 100644 --- a/variants/lilygo_techo/target.cpp +++ b/variants/lilygo_techo/target.cpp @@ -51,3 +51,19 @@ mesh::LocalIdentity radio_new_identity() { return mesh::LocalIdentity(&rng); // create new random identity } +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..e1c06a77b 100644 --- a/variants/lilygo_techo/target.h +++ b/variants/lilygo_techo/target.h @@ -29,3 +29,8 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +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..04c3ffcaa 100644 --- a/variants/lilygo_tlora_v2_1/target.cpp +++ b/variants/lilygo_tlora_v2_1/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_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} \ 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..9cda43aa4 100644 --- a/variants/lilygo_tlora_v2_1/target.h +++ b/variants/lilygo_tlora_v2_1/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_current_limit(uint8_t ma); \ No newline at end of file diff --git a/variants/mesh_pocket/target.cpp b/variants/mesh_pocket/target.cpp index a7f6c7fb1..2a874de7d 100644 --- a/variants/mesh_pocket/target.cpp +++ b/variants/mesh_pocket/target.cpp @@ -42,3 +42,19 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..54d981df8 100644 --- a/variants/mesh_pocket/target.h +++ b/variants/mesh_pocket/target.h @@ -31,3 +31,8 @@ mesh::LocalIdentity radio_new_identity(); extern SensorManager sensors; +bool radio_get_rx_boosted_gain_mode(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +void radio_set_rx_boosted_gain_mode(bool rxbgm); + diff --git a/variants/promicro/target.cpp b/variants/promicro/target.cpp index b26320e47..91e4d2ac8 100644 --- a/variants/promicro/target.cpp +++ b/variants/promicro/target.cpp @@ -49,3 +49,19 @@ mesh::LocalIdentity radio_new_identity() { return mesh::LocalIdentity(&rng); // create new random identity } +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..c05be0258 100644 --- a/variants/promicro/target.h +++ b/variants/promicro/target.h @@ -28,3 +28,8 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +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..c88866cac 100644 --- a/variants/sensecap_solar/target.cpp +++ b/variants/sensecap_solar/target.cpp @@ -37,3 +37,19 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..1bc0783aa 100644 --- a/variants/sensecap_solar/target.h +++ b/variants/sensecap_solar/target.h @@ -19,3 +19,8 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +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..f2f759877 100644 --- a/variants/tenstar_c3/target.cpp +++ b/variants/tenstar_c3/target.cpp @@ -46,3 +46,19 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..a707010d5 100644 --- a/variants/tenstar_c3/target.h +++ b/variants/tenstar_c3/target.h @@ -19,3 +19,8 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +void radio_set_rx_boosted_gain_mode(bool rxbgm); diff --git a/variants/thinknode_m1/target.cpp b/variants/thinknode_m1/target.cpp index 2b04d7c6e..783a9c6ae 100644 --- a/variants/thinknode_m1/target.cpp +++ b/variants/thinknode_m1/target.cpp @@ -150,3 +150,19 @@ bool ThinkNodeM1SensorManager::setSettingValue(const char* name, const char* val } return false; // not supported } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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 1e4e1381f..a7cb97758 100644 --- a/variants/thinknode_m1/target.h +++ b/variants/thinknode_m1/target.h @@ -46,3 +46,8 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +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..4cc6be379 100644 --- a/variants/thinknode_m2/target.cpp +++ b/variants/thinknode_m2/target.cpp @@ -55,3 +55,19 @@ mesh::LocalIdentity radio_new_identity() { return mesh::LocalIdentity(&rng); // create new random identity } +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..1d6300dba 100644 --- a/variants/thinknode_m2/target.h +++ b/variants/thinknode_m2/target.h @@ -29,4 +29,8 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +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..7e3281fd4 100644 --- a/variants/waveshare_rp2040_lora/target.cpp +++ b/variants/waveshare_rp2040_lora/target.cpp @@ -47,3 +47,19 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..6905c899e 100644 --- a/variants/waveshare_rp2040_lora/target.h +++ b/variants/waveshare_rp2040_lora/target.h @@ -19,3 +19,8 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +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..54256fc01 100644 --- a/variants/wio-tracker-l1/target.cpp +++ b/variants/wio-tracker-l1/target.cpp @@ -52,3 +52,19 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..2dad2f93e 100644 --- a/variants/wio-tracker-l1/target.h +++ b/variants/wio-tracker-l1/target.h @@ -35,3 +35,8 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +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..3758ff819 100644 --- a/variants/xiao_c3/target.cpp +++ b/variants/xiao_c3/target.cpp @@ -54,3 +54,19 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..a1fb484de 100644 --- a/variants/xiao_c3/target.h +++ b/variants/xiao_c3/target.h @@ -18,3 +18,8 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +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..0c7a45d4f 100644 --- a/variants/xiao_rp2040/target.cpp +++ b/variants/xiao_rp2040/target.cpp @@ -47,3 +47,19 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + +void radio_set_current_limit(uint8_t ma) { + radio.setCurrentLimit(ma); +} + +uint8_t radio_get_current_limit() { + return radio.getCurrentLimit(); +} + +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..29ab4e8d2 100644 --- a/variants/xiao_rp2040/target.h +++ b/variants/xiao_rp2040/target.h @@ -19,3 +19,8 @@ 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(); +uint8_t radio_get_current_limit(); +void radio_set_current_limit(uint8_t ma); +void radio_set_rx_boosted_gain_mode(bool rxbgm);