Skip to content

Commit b71e037

Browse files
committed
feat(config): add dynamic coding rate settings
1 parent 249a808 commit b71e037

1 file changed

Lines changed: 80 additions & 0 deletions

File tree

meshtastic/config.proto

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1064,6 +1064,34 @@ message Config {
10641064
NOT_PRESENT = 2;
10651065
}
10661066

1067+
enum DynamicCodingRateMode {
1068+
/*
1069+
* Track received/transmitted coding rate statistics but do not alter TX coding rate.
1070+
* This is the rollout default: measure first, then enable DCR_AUTO explicitly.
1071+
*/
1072+
DCR_OBSERVE = 0;
1073+
1074+
/*
1075+
* Keep using the configured static coding rate.
1076+
*/
1077+
DCR_OFF = 1;
1078+
1079+
/*
1080+
* Select LoRa coding rate per packet using local airtime policy.
1081+
*/
1082+
DCR_AUTO = 2;
1083+
1084+
/*
1085+
* Only bias coding rate for priority/control/urgent packets; leave background traffic static.
1086+
*/
1087+
DCR_PRIORITY_ONLY = 3;
1088+
1089+
/*
1090+
* Enable experimental policy branches as they are added.
1091+
*/
1092+
DCR_EXPERIMENTAL = 4;
1093+
}
1094+
10671095
/*
10681096
* When enabled, the `modem_preset` fields will be adhered to, else the `bandwidth`/`spread_factor`/`coding_rate`
10691097
* will be taked from their respective manually defined fields
@@ -1188,6 +1216,58 @@ message Config {
11881216
* Set where LORA FEM is enabled, disabled, or not present
11891217
*/
11901218
FEM_LNA_Mode fem_lna_mode = 106;
1219+
1220+
/*
1221+
* Dynamic Coding Rate policy mode. DCR_OBSERVE is the rollout default so nodes first measure CR behavior
1222+
* without changing TX coding rate.
1223+
*/
1224+
DynamicCodingRateMode dcr_mode = 107;
1225+
1226+
/*
1227+
* Minimum CR denominator DCR may choose. 0 means firmware default, currently 5 (CR 4/5).
1228+
*/
1229+
uint32 dcr_min_cr = 108;
1230+
1231+
/*
1232+
* Maximum CR denominator DCR may choose. 0 means firmware default, currently 8 (CR 4/8).
1233+
*/
1234+
uint32 dcr_max_cr = 109;
1235+
1236+
/*
1237+
* Max percentage of local TX airtime in the rolling DCR window that may be CR 4/8 for non-urgent packets.
1238+
* 0 means firmware default, currently 10 percent.
1239+
*/
1240+
uint32 dcr_robust_airtime_pct = 110;
1241+
1242+
/*
1243+
* Disable local per-neighbor coding-rate tracking. Tracking is enabled by default and is local-only.
1244+
*/
1245+
bool dcr_disable_neighbor_tracking = 111;
1246+
1247+
/*
1248+
* Advertise DCR capability when a future telemetry surface consumes it. Not used by the initial scheduler.
1249+
*/
1250+
bool dcr_advertise_capability = 112;
1251+
1252+
/*
1253+
* Include DCR debug telemetry when a future telemetry surface consumes it. Disabled by default.
1254+
*/
1255+
bool dcr_debug_telemetry = 113;
1256+
1257+
/*
1258+
* Maximum CR denominator for routine telemetry/position/nodeinfo traffic. 0 means firmware default, currently 6.
1259+
*/
1260+
uint32 dcr_telemetry_max_cr = 114;
1261+
1262+
/*
1263+
* Minimum CR denominator for normal user-value packets such as text. 0 means firmware default, currently 6.
1264+
*/
1265+
uint32 dcr_user_min_cr = 115;
1266+
1267+
/*
1268+
* Minimum CR denominator for alert/urgent packets. 0 means firmware default, currently 7.
1269+
*/
1270+
uint32 dcr_alert_min_cr = 116;
11911271
}
11921272

11931273
message BluetoothConfig {

0 commit comments

Comments
 (0)