Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fine grained ADR NbTrans controls #6962

Merged
merged 2 commits into from
Mar 6, 2024
Merged
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
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ For details about compatibility between different releases, see the **Commitment

### Added

- Fine grained NbTrans overrides for the dynamic ADR mode. See the `--mac-settings.adr.mode.dynamic.overrides.data-rate-[index].min-nb-trans` and `--mac-settings.adr.mode.dynamic.overrides.data-rate-[index].max-nb-trans` family of parameters.

### Changed

### Deprecated
Expand Down
42 changes: 42 additions & 0 deletions api/ttn/lorawan/v3/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,8 @@
- [Message `ADRSettings.DynamicMode.ChannelSteeringSettings`](#ttn.lorawan.v3.ADRSettings.DynamicMode.ChannelSteeringSettings)
- [Message `ADRSettings.DynamicMode.ChannelSteeringSettings.DisabledMode`](#ttn.lorawan.v3.ADRSettings.DynamicMode.ChannelSteeringSettings.DisabledMode)
- [Message `ADRSettings.DynamicMode.ChannelSteeringSettings.LoRaNarrowMode`](#ttn.lorawan.v3.ADRSettings.DynamicMode.ChannelSteeringSettings.LoRaNarrowMode)
- [Message `ADRSettings.DynamicMode.Overrides`](#ttn.lorawan.v3.ADRSettings.DynamicMode.Overrides)
- [Message `ADRSettings.DynamicMode.PerDataRateIndexOverride`](#ttn.lorawan.v3.ADRSettings.DynamicMode.PerDataRateIndexOverride)
- [Message `ADRSettings.StaticMode`](#ttn.lorawan.v3.ADRSettings.StaticMode)
- [Message `BatchDeleteEndDevicesRequest`](#ttn.lorawan.v3.BatchDeleteEndDevicesRequest)
- [Message `BatchGetEndDevicesRequest`](#ttn.lorawan.v3.BatchGetEndDevicesRequest)
Expand Down Expand Up @@ -3710,6 +3712,7 @@ Configuration options for dynamic ADR.
| `min_nb_trans` | [`google.protobuf.UInt32Value`](#google.protobuf.UInt32Value) | | Minimum number of retransmissions. If unset, the default value from Network Server configuration will be used. |
| `max_nb_trans` | [`google.protobuf.UInt32Value`](#google.protobuf.UInt32Value) | | Maximum number of retransmissions. If unset, the default value from Network Server configuration will be used. |
| `channel_steering` | [`ADRSettings.DynamicMode.ChannelSteeringSettings`](#ttn.lorawan.v3.ADRSettings.DynamicMode.ChannelSteeringSettings) | | |
| `overrides` | [`ADRSettings.DynamicMode.Overrides`](#ttn.lorawan.v3.ADRSettings.DynamicMode.Overrides) | | |

#### Field Rules

Expand Down Expand Up @@ -3740,6 +3743,45 @@ Configuration options for LoRa narrow channels steering.
The narrow mode attempts to steer the end device towards
using the LoRa modulated, 125kHz bandwidth channels.

### <a name="ttn.lorawan.v3.ADRSettings.DynamicMode.Overrides">Message `ADRSettings.DynamicMode.Overrides`</a>

EXPERIMENTAL: Configuration overrides.

| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `data_rate_0` | [`ADRSettings.DynamicMode.PerDataRateIndexOverride`](#ttn.lorawan.v3.ADRSettings.DynamicMode.PerDataRateIndexOverride) | | |
| `data_rate_1` | [`ADRSettings.DynamicMode.PerDataRateIndexOverride`](#ttn.lorawan.v3.ADRSettings.DynamicMode.PerDataRateIndexOverride) | | |
| `data_rate_2` | [`ADRSettings.DynamicMode.PerDataRateIndexOverride`](#ttn.lorawan.v3.ADRSettings.DynamicMode.PerDataRateIndexOverride) | | |
| `data_rate_3` | [`ADRSettings.DynamicMode.PerDataRateIndexOverride`](#ttn.lorawan.v3.ADRSettings.DynamicMode.PerDataRateIndexOverride) | | |
| `data_rate_4` | [`ADRSettings.DynamicMode.PerDataRateIndexOverride`](#ttn.lorawan.v3.ADRSettings.DynamicMode.PerDataRateIndexOverride) | | |
| `data_rate_5` | [`ADRSettings.DynamicMode.PerDataRateIndexOverride`](#ttn.lorawan.v3.ADRSettings.DynamicMode.PerDataRateIndexOverride) | | |
| `data_rate_6` | [`ADRSettings.DynamicMode.PerDataRateIndexOverride`](#ttn.lorawan.v3.ADRSettings.DynamicMode.PerDataRateIndexOverride) | | |
| `data_rate_7` | [`ADRSettings.DynamicMode.PerDataRateIndexOverride`](#ttn.lorawan.v3.ADRSettings.DynamicMode.PerDataRateIndexOverride) | | |
| `data_rate_8` | [`ADRSettings.DynamicMode.PerDataRateIndexOverride`](#ttn.lorawan.v3.ADRSettings.DynamicMode.PerDataRateIndexOverride) | | |
| `data_rate_9` | [`ADRSettings.DynamicMode.PerDataRateIndexOverride`](#ttn.lorawan.v3.ADRSettings.DynamicMode.PerDataRateIndexOverride) | | |
| `data_rate_10` | [`ADRSettings.DynamicMode.PerDataRateIndexOverride`](#ttn.lorawan.v3.ADRSettings.DynamicMode.PerDataRateIndexOverride) | | |
| `data_rate_11` | [`ADRSettings.DynamicMode.PerDataRateIndexOverride`](#ttn.lorawan.v3.ADRSettings.DynamicMode.PerDataRateIndexOverride) | | |
| `data_rate_12` | [`ADRSettings.DynamicMode.PerDataRateIndexOverride`](#ttn.lorawan.v3.ADRSettings.DynamicMode.PerDataRateIndexOverride) | | |
| `data_rate_13` | [`ADRSettings.DynamicMode.PerDataRateIndexOverride`](#ttn.lorawan.v3.ADRSettings.DynamicMode.PerDataRateIndexOverride) | | |
| `data_rate_14` | [`ADRSettings.DynamicMode.PerDataRateIndexOverride`](#ttn.lorawan.v3.ADRSettings.DynamicMode.PerDataRateIndexOverride) | | |
| `data_rate_15` | [`ADRSettings.DynamicMode.PerDataRateIndexOverride`](#ttn.lorawan.v3.ADRSettings.DynamicMode.PerDataRateIndexOverride) | | |

### <a name="ttn.lorawan.v3.ADRSettings.DynamicMode.PerDataRateIndexOverride">Message `ADRSettings.DynamicMode.PerDataRateIndexOverride`</a>

EXPERIMENTAL: Data rate index override settings.

| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `min_nb_trans` | [`google.protobuf.UInt32Value`](#google.protobuf.UInt32Value) | | Minimum number of retransmissions. If unset, the default value from Network Server configuration will be used. |
| `max_nb_trans` | [`google.protobuf.UInt32Value`](#google.protobuf.UInt32Value) | | Maximum number of retransmissions. If unset, the default value from Network Server configuration will be used. |

#### Field Rules

| Field | Validations |
| ----- | ----------- |
| `min_nb_trans` | <p>`uint32.lte`: `3`</p><p>`uint32.gte`: `1`</p> |
| `max_nb_trans` | <p>`uint32.lte`: `3`</p><p>`uint32.gte`: `1`</p> |

### <a name="ttn.lorawan.v3.ADRSettings.StaticMode">Message `ADRSettings.StaticMode`</a>

Configuration options for static ADR.
Expand Down
73 changes: 73 additions & 0 deletions api/ttn/lorawan/v3/api.swagger.json
Original file line number Diff line number Diff line change
Expand Up @@ -14218,6 +14218,9 @@
},
"channel_steering": {
"$ref": "#/definitions/DynamicModeChannelSteeringSettings"
},
"overrides": {
"$ref": "#/definitions/DynamicModeOverrides"
}
},
"description": "Configuration options for dynamic ADR."
Expand Down Expand Up @@ -15002,6 +15005,76 @@
"type": "object",
"description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels."
},
"DynamicModeOverrides": {
"type": "object",
"properties": {
"data_rate_0": {
"$ref": "#/definitions/DynamicModePerDataRateIndexOverride"
},
"data_rate_1": {
"$ref": "#/definitions/DynamicModePerDataRateIndexOverride"
},
"data_rate_2": {
"$ref": "#/definitions/DynamicModePerDataRateIndexOverride"
},
"data_rate_3": {
"$ref": "#/definitions/DynamicModePerDataRateIndexOverride"
},
"data_rate_4": {
"$ref": "#/definitions/DynamicModePerDataRateIndexOverride"
},
"data_rate_5": {
"$ref": "#/definitions/DynamicModePerDataRateIndexOverride"
},
"data_rate_6": {
"$ref": "#/definitions/DynamicModePerDataRateIndexOverride"
},
"data_rate_7": {
"$ref": "#/definitions/DynamicModePerDataRateIndexOverride"
},
"data_rate_8": {
"$ref": "#/definitions/DynamicModePerDataRateIndexOverride"
},
"data_rate_9": {
"$ref": "#/definitions/DynamicModePerDataRateIndexOverride"
},
"data_rate_10": {
"$ref": "#/definitions/DynamicModePerDataRateIndexOverride"
},
"data_rate_11": {
"$ref": "#/definitions/DynamicModePerDataRateIndexOverride"
},
"data_rate_12": {
"$ref": "#/definitions/DynamicModePerDataRateIndexOverride"
},
"data_rate_13": {
"$ref": "#/definitions/DynamicModePerDataRateIndexOverride"
},
"data_rate_14": {
"$ref": "#/definitions/DynamicModePerDataRateIndexOverride"
},
"data_rate_15": {
"$ref": "#/definitions/DynamicModePerDataRateIndexOverride"
}
},
"description": "EXPERIMENTAL: Configuration overrides."
},
"DynamicModePerDataRateIndexOverride": {
"type": "object",
"properties": {
"min_nb_trans": {
"type": "integer",
"format": "int64",
"description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used."
},
"max_nb_trans": {
"type": "integer",
"format": "int64",
"description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used."
}
},
"description": "EXPERIMENTAL: Data rate index override settings."
},
"EndDeviceClaimingServerAuthorizeApplicationBody": {
"type": "object",
"properties": {
Expand Down
50 changes: 50 additions & 0 deletions api/ttn/lorawan/v3/end_device.proto
Original file line number Diff line number Diff line change
Expand Up @@ -493,6 +493,56 @@ message ADRSettings {
}

ChannelSteeringSettings channel_steering = 8;

// EXPERIMENTAL: Data rate index override settings.
message PerDataRateIndexOverride {
option (thethings.flags.message) = {
select: true,
set: true
};
reserved 1;
reserved "min_tx_power_index";
reserved 2;
reserved "max_tx_power_index";
// Minimum number of retransmissions.
// If unset, the default value from Network Server configuration will be used.
google.protobuf.UInt32Value min_nb_trans = 3 [(validate.rules).uint32 = {
gte: 1,
lte: 3
}];
// Maximum number of retransmissions.
// If unset, the default value from Network Server configuration will be used.
google.protobuf.UInt32Value max_nb_trans = 4 [(validate.rules).uint32 = {
gte: 1,
lte: 3
}];
}

// EXPERIMENTAL: Configuration overrides.
message Overrides {
option (thethings.flags.message) = {
select: true,
set: true
};
PerDataRateIndexOverride data_rate_0 = 1;
PerDataRateIndexOverride data_rate_1 = 2;
PerDataRateIndexOverride data_rate_2 = 3;
PerDataRateIndexOverride data_rate_3 = 4;
PerDataRateIndexOverride data_rate_4 = 5;
PerDataRateIndexOverride data_rate_5 = 6;
PerDataRateIndexOverride data_rate_6 = 7;
PerDataRateIndexOverride data_rate_7 = 8;
PerDataRateIndexOverride data_rate_8 = 9;
PerDataRateIndexOverride data_rate_9 = 10;
PerDataRateIndexOverride data_rate_10 = 11;
PerDataRateIndexOverride data_rate_11 = 12;
PerDataRateIndexOverride data_rate_12 = 13;
PerDataRateIndexOverride data_rate_13 = 14;
PerDataRateIndexOverride data_rate_14 = 15;
PerDataRateIndexOverride data_rate_15 = 16;
}

Overrides overrides = 9;
}

// Configuration options for cases in which ADR is to be disabled
Expand Down
Loading
Loading