Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions docs/cli_commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -565,12 +565,14 @@ This document provides an overview of CLI commands that can be sent to MeshCore
**Parameters:**
- `value`: Duty cycle percentage (1-100)

**Default:** `50%` (equivalent to airtime factor 1.0)
**Default:** `10%` (equivalent to airtime factor 9.0), the ETSI EN 300 220-2 limit for the
869.4-869.65 MHz sub-band that the default frequency uses. Builds for regions without a duty
cycle limit can override this with the `MAX_DUTY_CYCLE` build flag.

**Examples:**
- `set dutycycle 100` — no duty cycle limit
- `set dutycycle 50` — 50% duty cycle (default)
- `set dutycycle 10` — 10% duty cycle
- `set dutycycle 50` — 50% duty cycle
- `set dutycycle 10` — 10% duty cycle (default)
- `set dutycycle 1` — 1% duty cycle (strictest EU requirement)

> **Note:** Added in firmware v1.15.0
Expand Down
2 changes: 1 addition & 1 deletion examples/companion_radio/MyMesh.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -943,7 +943,7 @@ MyMesh::MyMesh(mesh::Radio &radio, mesh::RNG &rng, mesh::RTCClock &rtc, SimpleMe
send_unscoped = false;

// defaults
_prefs.airtime_factor = 1.0;
_prefs.airtime_factor = DEFAULT_AIRTIME_FACTOR;
strcpy(_prefs.node_name, "NONAME");
_prefs.freq = LORA_FREQ;
_prefs.sf = LORA_SF;
Expand Down
2 changes: 1 addition & 1 deletion examples/simple_repeater/MyMesh.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -887,7 +887,7 @@ MyMesh::MyMesh(mesh::MainBoard &board, mesh::Radio &radio, mesh::MillisecondCloc
#endif

// defaults
_prefs.airtime_factor = 1.0;
_prefs.airtime_factor = DEFAULT_AIRTIME_FACTOR;
_prefs.rx_delay_base = 0.0f; // turn off by default, was 10.0;
_prefs.tx_delay_factor = 0.5f; // was 0.25f
_prefs.direct_tx_delay_factor = 0.3f; // was 0.2
Expand Down
2 changes: 1 addition & 1 deletion examples/simple_room_server/MyMesh.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -644,7 +644,7 @@ MyMesh::MyMesh(mesh::MainBoard &board, mesh::Radio &radio, mesh::MillisecondCloc
recv_pkt_region = NULL;

// defaults
_prefs.airtime_factor = 1.0;
_prefs.airtime_factor = DEFAULT_AIRTIME_FACTOR;
_prefs.rx_delay_base = 0.0f; // off by default, was 10.0
_prefs.tx_delay_factor = 0.5f; // was 0.25f;
_prefs.direct_tx_delay_factor = 0.2f; // was zero
Expand Down
2 changes: 1 addition & 1 deletion examples/simple_secure_chat/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ class MyMesh : public BaseChatMesh, ContactVisitor {
{
// defaults
memset(&_prefs, 0, sizeof(_prefs));
_prefs.airtime_factor = 1.0;
_prefs.airtime_factor = DEFAULT_AIRTIME_FACTOR;
strcpy(_prefs.node_name, "NONAME");
_prefs.freq = LORA_FREQ;
_prefs.tx_power_dbm = LORA_TX_POWER;
Expand Down
2 changes: 1 addition & 1 deletion examples/simple_sensor/SensorMesh.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -710,7 +710,7 @@ SensorMesh::SensorMesh(mesh::MainBoard& board, mesh::Radio& radio, mesh::Millise
set_radio_at = revert_radio_at = 0;

// defaults
_prefs.airtime_factor = 1.0;
_prefs.airtime_factor = DEFAULT_AIRTIME_FACTOR;
_prefs.rx_delay_base = 0.0f; // turn off by default, was 10.0;
_prefs.tx_delay_factor = 0.5f; // was 0.25f
_prefs.direct_tx_delay_factor = 0.2f; // was zero
Expand Down
2 changes: 1 addition & 1 deletion src/Dispatcher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ void Dispatcher::begin() {
}

float Dispatcher::getAirtimeBudgetFactor() const {
return 1.0;
return DEFAULT_AIRTIME_FACTOR;
}

void Dispatcher::updateTxBudget() {
Expand Down
10 changes: 10 additions & 0 deletions src/Dispatcher.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,16 @@
#include <Utils.h>
#include <string.h>

// Default transmit duty cycle limit, as a percentage of the duty cycle window.
// 10% is the ETSI EN 300 220-2 limit for the 869.4-869.65 MHz sub-band, which is where
// the default LORA_FREQ lives. Override per build for regions without a duty cycle limit.
#ifndef MAX_DUTY_CYCLE
#define MAX_DUTY_CYCLE 10
#endif

// Airtime budget factor equivalent of MAX_DUTY_CYCLE (see CommonCLI 'set dutycycle')
#define DEFAULT_AIRTIME_FACTOR ((100.0f / (MAX_DUTY_CYCLE)) - 1.0f)

namespace mesh {

/**
Expand Down