mirror of
https://github.com/meshcore-dev/MeshCore.git
synced 2026-04-20 22:13:47 +00:00
Merge pull request #1961 from weebl2000/dutycycle-command
Some checks failed
PR Build Check / build (Heltec_v3_companion_radio_ble) (push) Has been cancelled
PR Build Check / build (Heltec_v3_repeater) (push) Has been cancelled
PR Build Check / build (Heltec_v3_room_server) (push) Has been cancelled
PR Build Check / build (LilyGo_Tlora_C6_repeater_) (push) Has been cancelled
PR Build Check / build (PicoW_repeater) (push) Has been cancelled
PR Build Check / build (RAK_4631_companion_radio_ble) (push) Has been cancelled
PR Build Check / build (RAK_4631_repeater) (push) Has been cancelled
PR Build Check / build (RAK_4631_room_server) (push) Has been cancelled
PR Build Check / build (wio-e5-mini_repeater) (push) Has been cancelled
Some checks failed
PR Build Check / build (Heltec_v3_companion_radio_ble) (push) Has been cancelled
PR Build Check / build (Heltec_v3_repeater) (push) Has been cancelled
PR Build Check / build (Heltec_v3_room_server) (push) Has been cancelled
PR Build Check / build (LilyGo_Tlora_C6_repeater_) (push) Has been cancelled
PR Build Check / build (PicoW_repeater) (push) Has been cancelled
PR Build Check / build (RAK_4631_companion_radio_ble) (push) Has been cancelled
PR Build Check / build (RAK_4631_repeater) (push) Has been cancelled
PR Build Check / build (RAK_4631_room_server) (push) Has been cancelled
PR Build Check / build (wio-e5-mini_repeater) (push) Has been cancelled
Add get/set dutycycle command
This commit is contained in:
commit
517f2f1efd
3 changed files with 49 additions and 5 deletions
|
|
@ -500,7 +500,29 @@ This document provides an overview of CLI commands that can be sent to MeshCore
|
|||
|
||||
---
|
||||
|
||||
#### View or change the duty cycle limit
|
||||
**Usage:**
|
||||
- `get dutycycle`
|
||||
- `set dutycycle <value>`
|
||||
|
||||
**Parameters:**
|
||||
- `value`: Duty cycle percentage (1-100)
|
||||
|
||||
**Default:** `50%` (equivalent to airtime factor 1.0)
|
||||
|
||||
**Examples:**
|
||||
- `set dutycycle 100` — no duty cycle limit
|
||||
- `set dutycycle 50` — 50% duty cycle (default)
|
||||
- `set dutycycle 10` — 10% duty cycle
|
||||
- `set dutycycle 1` — 1% duty cycle (strictest EU requirement)
|
||||
|
||||
> **Note:** Added in firmware v1.15.0
|
||||
|
||||
---
|
||||
|
||||
#### View or change the airtime factor (duty cycle limit)
|
||||
> **Deprecated** as of firmware v1.15.0. Use [`get/set dutycycle`](#view-or-change-the-duty-cycle-limit) instead.
|
||||
|
||||
**Usage:**
|
||||
- `get af`
|
||||
- `set af <value>`
|
||||
|
|
@ -510,8 +532,8 @@ This document provides an overview of CLI commands that can be sent to MeshCore
|
|||
- `af = 1` → ~50% duty
|
||||
- `af = 2` → ~33% duty
|
||||
- `af = 3` → ~25% duty
|
||||
- `af = 9` → ~10% duty
|
||||
Yyou are responsible for choosing a value that is appropriate for your jurisdiction and channel plan (for example EU 868 Mhz 10% duty cycle regulation).
|
||||
- `af = 9` → ~10% duty
|
||||
You are responsible for choosing a value that is appropriate for your jurisdiction and channel plan (for example EU 868 Mhz 10% duty cycle regulation).
|
||||
|
||||
**Default:** `1.0`
|
||||
|
||||
|
|
|
|||
|
|
@ -27,10 +27,15 @@ set lon {longitude}
|
|||
```
|
||||
Sets your advertisement map longitude. (decimal degrees)
|
||||
|
||||
```
|
||||
set dutycycle {percent}
|
||||
```
|
||||
Sets the transmit duty cycle limit (1-100%). Example: `set dutycycle 10` for 10%.
|
||||
|
||||
```
|
||||
set af {air-time-factor}
|
||||
```
|
||||
Sets the transmit air-time-factor.
|
||||
Sets the transmit air-time-factor. Deprecated — use `set dutycycle` instead.
|
||||
|
||||
|
||||
```
|
||||
|
|
|
|||
|
|
@ -294,7 +294,12 @@ void CommonCLI::handleCommand(uint32_t sender_timestamp, const char* command, ch
|
|||
*/
|
||||
} else if (memcmp(command, "get ", 4) == 0) {
|
||||
const char* config = &command[4];
|
||||
if (memcmp(config, "af", 2) == 0) {
|
||||
if (memcmp(config, "dutycycle", 9) == 0) {
|
||||
float dc = 100.0f / (_prefs->airtime_factor + 1.0f);
|
||||
int dc_int = (int)dc;
|
||||
int dc_frac = (int)((dc - dc_int) * 10.0f + 0.5f);
|
||||
sprintf(reply, "> %d.%d%%", dc_int, dc_frac);
|
||||
} else if (memcmp(config, "af", 2) == 0) {
|
||||
sprintf(reply, "> %s", StrHelper::ftoa(_prefs->airtime_factor));
|
||||
} else if (memcmp(config, "int.thresh", 10) == 0) {
|
||||
sprintf(reply, "> %d", (uint32_t) _prefs->interference_threshold);
|
||||
|
|
@ -451,7 +456,19 @@ void CommonCLI::handleCommand(uint32_t sender_timestamp, const char* command, ch
|
|||
*/
|
||||
} else if (memcmp(command, "set ", 4) == 0) {
|
||||
const char* config = &command[4];
|
||||
if (memcmp(config, "af ", 3) == 0) {
|
||||
if (memcmp(config, "dutycycle ", 10) == 0) {
|
||||
float dc = atof(&config[10]);
|
||||
if (dc < 1 || dc > 100) {
|
||||
strcpy(reply, "ERROR: dutycycle must be 1-100");
|
||||
} else {
|
||||
_prefs->airtime_factor = (100.0f / dc) - 1.0f;
|
||||
savePrefs();
|
||||
float actual = 100.0f / (_prefs->airtime_factor + 1.0f);
|
||||
int a_int = (int)actual;
|
||||
int a_frac = (int)((actual - a_int) * 10.0f + 0.5f);
|
||||
sprintf(reply, "OK - %d.%d%%", a_int, a_frac);
|
||||
}
|
||||
} else if (memcmp(config, "af ", 3) == 0) {
|
||||
_prefs->airtime_factor = atof(&config[3]);
|
||||
savePrefs();
|
||||
strcpy(reply, "OK");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue