Skip to content

Commit

Permalink
all: Add relay shared parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
adriansmares committed Oct 6, 2023
1 parent 79dceaf commit e736f37
Show file tree
Hide file tree
Showing 171 changed files with 553 additions and 180 deletions.
2 changes: 1 addition & 1 deletion pkg/band/as_923_rp2_v1_0_4.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,6 @@ var as923RP2104Band = func(id string, offset as923GroupOffset) Band {

Relay: as923RelayParameters(offset),

SharedParameters: universalSharedParameters,
SharedParameters: relayAwareSharedParameters,
}
}
2 changes: 1 addition & 1 deletion pkg/band/au_915_928_rp2_v1_0_4.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,5 +112,5 @@ var AU_915_928_RP2_v1_0_4 = Band{

Relay: au915928RelayParameters,

SharedParameters: universalSharedParameters,
SharedParameters: relayAwareSharedParameters,
}
2 changes: 1 addition & 1 deletion pkg/band/cn_470_510_20_a_rp2_v1_0_4.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,5 +90,5 @@ var CN_470_510_20_A_RP2_v1_0_4 = Band{

Relay: cn470510RelayParameters,

SharedParameters: universalSharedParameters,
SharedParameters: relayAwareSharedParameters,
}
2 changes: 1 addition & 1 deletion pkg/band/cn_470_510_20_b_rp2_v1_0_4.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,5 +90,5 @@ var CN_470_510_20_B_RP2_v1_0_4 = Band{

Relay: cn470510RelayParameters,

SharedParameters: universalSharedParameters,
SharedParameters: relayAwareSharedParameters,
}
2 changes: 1 addition & 1 deletion pkg/band/cn_470_510_26_a_rp2_v1_0_4.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,5 +92,5 @@ var CN_470_510_26_A_RP2_v1_0_4 = Band{

Relay: cn470510RelayParameters,

SharedParameters: universalSharedParameters,
SharedParameters: relayAwareSharedParameters,
}
2 changes: 1 addition & 1 deletion pkg/band/cn_470_510_26_b_rp2_v1_0_4.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,5 +92,5 @@ var CN_470_510_26_B_RP2_v1_0_4 = Band{

Relay: cn470510RelayParameters,

SharedParameters: universalSharedParameters,
SharedParameters: relayAwareSharedParameters,
}
2 changes: 1 addition & 1 deletion pkg/band/eu_433_rp2_v1_0_4.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,5 +88,5 @@ var EU_433_RP2_V1_0_4 = Band{
},
PingSlotFrequencies: eu433BeaconFrequencies,

SharedParameters: universalSharedParameters,
SharedParameters: relayAwareSharedParameters,
}
2 changes: 1 addition & 1 deletion pkg/band/eu_863_870_rp2_v1_0_4.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,5 +133,5 @@ var EU_863_870_RP2_V1_0_4 = Band{

Relay: eu863870RelayParameters,

SharedParameters: universalSharedParameters,
SharedParameters: relayAwareSharedParameters,
}
2 changes: 1 addition & 1 deletion pkg/band/in_865_867_rp2_v1_0_4.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,5 +100,5 @@ var IN_865_867_RP2_V1_0_4 = Band{

Relay: in865867RelayParameters,

SharedParameters: universalSharedParameters,
SharedParameters: relayAwareSharedParameters,
}
2 changes: 1 addition & 1 deletion pkg/band/ism_2400_universal.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,5 +86,5 @@ var ISM_2400_Universal = Band{
},
PingSlotFrequencies: ism2400BeaconFrequencies,

SharedParameters: universalSharedParameters,
SharedParameters: relayAwareSharedParameters,
}
2 changes: 1 addition & 1 deletion pkg/band/kr_920_923_rp2_v1_0_4.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,5 +89,5 @@ var KR_920_923_RP2_V1_0_4 = Band{

Relay: kr920923RelayParameters,

SharedParameters: universalSharedParameters,
SharedParameters: relayAwareSharedParameters,
}
2 changes: 1 addition & 1 deletion pkg/band/ma_869_870_draft_universal.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,5 +106,5 @@ var MA_869_870_Draft_Universal = Band{
},
PingSlotFrequencies: ma869870DraftBeaconFrequencies,

SharedParameters: universalSharedParameters,
SharedParameters: relayAwareSharedParameters,
}
2 changes: 1 addition & 1 deletion pkg/band/ru_864_870_rp2_v1_0_4.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,5 +92,5 @@ var RU_864_870_RP2_V1_0_4 = Band{

Relay: ru864870RelayParameters,

SharedParameters: universalSharedParameters,
SharedParameters: relayAwareSharedParameters,
}
36 changes: 25 additions & 11 deletions pkg/band/shared.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,16 +44,30 @@ type SharedParameters struct {
MinRetransmitTimeout time.Duration
// MaxRetransmitTimeout is the maximum retransmit timeout.
MaxRetransmitTimeout time.Duration
}

var universalSharedParameters = SharedParameters{
ReceiveDelay1: time.Second,
ReceiveDelay2: 2 * time.Second,
JoinAcceptDelay1: 5 * time.Second,
JoinAcceptDelay2: 6 * time.Second,
MaxFCntGap: 16384,
ADRAckLimit: ttnpb.ADRAckLimitExponent_ADR_ACK_LIMIT_64,
ADRAckDelay: ttnpb.ADRAckDelayExponent_ADR_ACK_DELAY_32,
MinRetransmitTimeout: time.Second,
MaxRetransmitTimeout: 3 * time.Second,
// RelayForwardDelay is the default delay between the end of the uplink transmission and the start of the
// relay transmission.
RelayForwardDelay time.Duration
// RelayReceiveDelay is the default RxR window timing in seconds.
RelayReceiveDelay time.Duration
}

var (
universalSharedParameters = SharedParameters{
ReceiveDelay1: time.Second,
ReceiveDelay2: 2 * time.Second,
JoinAcceptDelay1: 5 * time.Second,
JoinAcceptDelay2: 6 * time.Second,
MaxFCntGap: 16384,
ADRAckLimit: ttnpb.ADRAckLimitExponent_ADR_ACK_LIMIT_64,
ADRAckDelay: ttnpb.ADRAckDelayExponent_ADR_ACK_DELAY_32,
MinRetransmitTimeout: time.Second,
MaxRetransmitTimeout: 3 * time.Second,
}
relayAwareSharedParameters = func() SharedParameters {
parameters := universalSharedParameters
parameters.RelayForwardDelay = 50 * time.Millisecond
parameters.RelayReceiveDelay = 18 * time.Second
return parameters
}()
)
49 changes: 49 additions & 0 deletions pkg/band/shared_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
// Copyright © 2023 The Things Network Foundation, The Things Industries B.V.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package band_test

import (
"fmt"
"testing"
"time"

"github.com/smarty/assertions"
"go.thethings.network/lorawan-stack/v3/pkg/band"
"go.thethings.network/lorawan-stack/v3/pkg/ttnpb"
"go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should"
)

func TestRelaySharedParameters(t *testing.T) {
t.Parallel()
for name, versions := range band.All {
name := name
for version, phy := range versions {
version, phy := version, phy
t.Run(fmt.Sprintf("%v/%v", name, version), func(t *testing.T) {
t.Parallel()
a := assertions.New(t)
var expectedForwardDelay, expectedReceiveDelay time.Duration
switch {
case version == ttnpb.PHYVersion_RP002_V1_0_4,
name == band.ISM_2400,
name == band.MA_869_870_DRAFT:
expectedForwardDelay, expectedReceiveDelay = 50*time.Millisecond, 18*time.Second
}
a.So(phy.RelayForwardDelay, should.Equal, expectedForwardDelay)
a.So(phy.RelayReceiveDelay, should.Equal, expectedReceiveDelay)
})
}
}
}
4 changes: 3 additions & 1 deletion pkg/band/testdata/AS_923_2_RP002_V1_0_1.json
Original file line number Diff line number Diff line change
Expand Up @@ -702,6 +702,8 @@
"ADRAckLimit": "ADR_ACK_LIMIT_64",
"ADRAckDelay": "ADR_ACK_DELAY_32",
"MinRetransmitTimeout": 1000000000,
"MaxRetransmitTimeout": 3000000000
"MaxRetransmitTimeout": 3000000000,
"RelayForwardDelay": 0,
"RelayReceiveDelay": 0
}
}
4 changes: 3 additions & 1 deletion pkg/band/testdata/AS_923_2_RP002_V1_0_2.json
Original file line number Diff line number Diff line change
Expand Up @@ -702,6 +702,8 @@
"ADRAckLimit": "ADR_ACK_LIMIT_64",
"ADRAckDelay": "ADR_ACK_DELAY_32",
"MinRetransmitTimeout": 1000000000,
"MaxRetransmitTimeout": 3000000000
"MaxRetransmitTimeout": 3000000000,
"RelayForwardDelay": 0,
"RelayReceiveDelay": 0
}
}
4 changes: 3 additions & 1 deletion pkg/band/testdata/AS_923_2_RP002_V1_0_3.json
Original file line number Diff line number Diff line change
Expand Up @@ -702,6 +702,8 @@
"ADRAckLimit": "ADR_ACK_LIMIT_64",
"ADRAckDelay": "ADR_ACK_DELAY_32",
"MinRetransmitTimeout": 1000000000,
"MaxRetransmitTimeout": 3000000000
"MaxRetransmitTimeout": 3000000000,
"RelayForwardDelay": 0,
"RelayReceiveDelay": 0
}
}
4 changes: 3 additions & 1 deletion pkg/band/testdata/AS_923_2_RP002_V1_0_4.json
Original file line number Diff line number Diff line change
Expand Up @@ -708,6 +708,8 @@
"ADRAckLimit": "ADR_ACK_LIMIT_64",
"ADRAckDelay": "ADR_ACK_DELAY_32",
"MinRetransmitTimeout": 1000000000,
"MaxRetransmitTimeout": 3000000000
"MaxRetransmitTimeout": 3000000000,
"RelayForwardDelay": 50000000,
"RelayReceiveDelay": 18000000000
}
}
4 changes: 3 additions & 1 deletion pkg/band/testdata/AS_923_3_RP002_V1_0_1.json
Original file line number Diff line number Diff line change
Expand Up @@ -702,6 +702,8 @@
"ADRAckLimit": "ADR_ACK_LIMIT_64",
"ADRAckDelay": "ADR_ACK_DELAY_32",
"MinRetransmitTimeout": 1000000000,
"MaxRetransmitTimeout": 3000000000
"MaxRetransmitTimeout": 3000000000,
"RelayForwardDelay": 0,
"RelayReceiveDelay": 0
}
}
4 changes: 3 additions & 1 deletion pkg/band/testdata/AS_923_3_RP002_V1_0_2.json
Original file line number Diff line number Diff line change
Expand Up @@ -702,6 +702,8 @@
"ADRAckLimit": "ADR_ACK_LIMIT_64",
"ADRAckDelay": "ADR_ACK_DELAY_32",
"MinRetransmitTimeout": 1000000000,
"MaxRetransmitTimeout": 3000000000
"MaxRetransmitTimeout": 3000000000,
"RelayForwardDelay": 0,
"RelayReceiveDelay": 0
}
}
4 changes: 3 additions & 1 deletion pkg/band/testdata/AS_923_3_RP002_V1_0_3.json
Original file line number Diff line number Diff line change
Expand Up @@ -702,6 +702,8 @@
"ADRAckLimit": "ADR_ACK_LIMIT_64",
"ADRAckDelay": "ADR_ACK_DELAY_32",
"MinRetransmitTimeout": 1000000000,
"MaxRetransmitTimeout": 3000000000
"MaxRetransmitTimeout": 3000000000,
"RelayForwardDelay": 0,
"RelayReceiveDelay": 0
}
}
4 changes: 3 additions & 1 deletion pkg/band/testdata/AS_923_3_RP002_V1_0_4.json
Original file line number Diff line number Diff line change
Expand Up @@ -708,6 +708,8 @@
"ADRAckLimit": "ADR_ACK_LIMIT_64",
"ADRAckDelay": "ADR_ACK_DELAY_32",
"MinRetransmitTimeout": 1000000000,
"MaxRetransmitTimeout": 3000000000
"MaxRetransmitTimeout": 3000000000,
"RelayForwardDelay": 50000000,
"RelayReceiveDelay": 18000000000
}
}
4 changes: 3 additions & 1 deletion pkg/band/testdata/AS_923_4_RP002_V1_0_3.json
Original file line number Diff line number Diff line change
Expand Up @@ -702,6 +702,8 @@
"ADRAckLimit": "ADR_ACK_LIMIT_64",
"ADRAckDelay": "ADR_ACK_DELAY_32",
"MinRetransmitTimeout": 1000000000,
"MaxRetransmitTimeout": 3000000000
"MaxRetransmitTimeout": 3000000000,
"RelayForwardDelay": 0,
"RelayReceiveDelay": 0
}
}
4 changes: 3 additions & 1 deletion pkg/band/testdata/AS_923_4_RP002_V1_0_4.json
Original file line number Diff line number Diff line change
Expand Up @@ -708,6 +708,8 @@
"ADRAckLimit": "ADR_ACK_LIMIT_64",
"ADRAckDelay": "ADR_ACK_DELAY_32",
"MinRetransmitTimeout": 1000000000,
"MaxRetransmitTimeout": 3000000000
"MaxRetransmitTimeout": 3000000000,
"RelayForwardDelay": 50000000,
"RelayReceiveDelay": 18000000000
}
}
4 changes: 3 additions & 1 deletion pkg/band/testdata/AS_923_PHY_V1_0_2_REV_A.json
Original file line number Diff line number Diff line change
Expand Up @@ -700,6 +700,8 @@
"ADRAckLimit": "ADR_ACK_LIMIT_64",
"ADRAckDelay": "ADR_ACK_DELAY_32",
"MinRetransmitTimeout": 1000000000,
"MaxRetransmitTimeout": 3000000000
"MaxRetransmitTimeout": 3000000000,
"RelayForwardDelay": 0,
"RelayReceiveDelay": 0
}
}
4 changes: 3 additions & 1 deletion pkg/band/testdata/AS_923_PHY_V1_0_2_REV_B.json
Original file line number Diff line number Diff line change
Expand Up @@ -702,6 +702,8 @@
"ADRAckLimit": "ADR_ACK_LIMIT_64",
"ADRAckDelay": "ADR_ACK_DELAY_32",
"MinRetransmitTimeout": 1000000000,
"MaxRetransmitTimeout": 3000000000
"MaxRetransmitTimeout": 3000000000,
"RelayForwardDelay": 0,
"RelayReceiveDelay": 0
}
}
4 changes: 3 additions & 1 deletion pkg/band/testdata/AS_923_PHY_V1_0_3_REV_A.json
Original file line number Diff line number Diff line change
Expand Up @@ -702,6 +702,8 @@
"ADRAckLimit": "ADR_ACK_LIMIT_64",
"ADRAckDelay": "ADR_ACK_DELAY_32",
"MinRetransmitTimeout": 1000000000,
"MaxRetransmitTimeout": 3000000000
"MaxRetransmitTimeout": 3000000000,
"RelayForwardDelay": 0,
"RelayReceiveDelay": 0
}
}
4 changes: 3 additions & 1 deletion pkg/band/testdata/AS_923_PHY_V1_1_REV_A.json
Original file line number Diff line number Diff line change
Expand Up @@ -702,6 +702,8 @@
"ADRAckLimit": "ADR_ACK_LIMIT_64",
"ADRAckDelay": "ADR_ACK_DELAY_32",
"MinRetransmitTimeout": 1000000000,
"MaxRetransmitTimeout": 3000000000
"MaxRetransmitTimeout": 3000000000,
"RelayForwardDelay": 0,
"RelayReceiveDelay": 0
}
}
4 changes: 3 additions & 1 deletion pkg/band/testdata/AS_923_PHY_V1_1_REV_B.json
Original file line number Diff line number Diff line change
Expand Up @@ -702,6 +702,8 @@
"ADRAckLimit": "ADR_ACK_LIMIT_64",
"ADRAckDelay": "ADR_ACK_DELAY_32",
"MinRetransmitTimeout": 1000000000,
"MaxRetransmitTimeout": 3000000000
"MaxRetransmitTimeout": 3000000000,
"RelayForwardDelay": 0,
"RelayReceiveDelay": 0
}
}
4 changes: 3 additions & 1 deletion pkg/band/testdata/AS_923_RP002_V1_0_0.json
Original file line number Diff line number Diff line change
Expand Up @@ -702,6 +702,8 @@
"ADRAckLimit": "ADR_ACK_LIMIT_64",
"ADRAckDelay": "ADR_ACK_DELAY_32",
"MinRetransmitTimeout": 1000000000,
"MaxRetransmitTimeout": 3000000000
"MaxRetransmitTimeout": 3000000000,
"RelayForwardDelay": 0,
"RelayReceiveDelay": 0
}
}
4 changes: 3 additions & 1 deletion pkg/band/testdata/AS_923_RP002_V1_0_1.json
Original file line number Diff line number Diff line change
Expand Up @@ -702,6 +702,8 @@
"ADRAckLimit": "ADR_ACK_LIMIT_64",
"ADRAckDelay": "ADR_ACK_DELAY_32",
"MinRetransmitTimeout": 1000000000,
"MaxRetransmitTimeout": 3000000000
"MaxRetransmitTimeout": 3000000000,
"RelayForwardDelay": 0,
"RelayReceiveDelay": 0
}
}
4 changes: 3 additions & 1 deletion pkg/band/testdata/AS_923_RP002_V1_0_2.json
Original file line number Diff line number Diff line change
Expand Up @@ -702,6 +702,8 @@
"ADRAckLimit": "ADR_ACK_LIMIT_64",
"ADRAckDelay": "ADR_ACK_DELAY_32",
"MinRetransmitTimeout": 1000000000,
"MaxRetransmitTimeout": 3000000000
"MaxRetransmitTimeout": 3000000000,
"RelayForwardDelay": 0,
"RelayReceiveDelay": 0
}
}
4 changes: 3 additions & 1 deletion pkg/band/testdata/AS_923_RP002_V1_0_3.json
Original file line number Diff line number Diff line change
Expand Up @@ -702,6 +702,8 @@
"ADRAckLimit": "ADR_ACK_LIMIT_64",
"ADRAckDelay": "ADR_ACK_DELAY_32",
"MinRetransmitTimeout": 1000000000,
"MaxRetransmitTimeout": 3000000000
"MaxRetransmitTimeout": 3000000000,
"RelayForwardDelay": 0,
"RelayReceiveDelay": 0
}
}
Loading

0 comments on commit e736f37

Please sign in to comment.