Skip to content

Commit

Permalink
Add a number of frequency plans and a test main.go function on /document
Browse files Browse the repository at this point in the history
  • Loading branch information
timcooijmans committed Feb 10, 2023
1 parent d41349c commit 56a0e53
Show file tree
Hide file tree
Showing 5 changed files with 311 additions and 19 deletions.
5 changes: 3 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@ go 1.19
require (
github.com/ThingsIXFoundation/h3-light v0.0.0-20221122151216-69018e780344
github.com/biter777/countries v1.5.6
github.com/brocaar/lorawan v0.0.0-20220715134808-3b283dda1534
github.com/brocaar/lorawan v0.0.0-20230210103351-84b137ed1908
github.com/sirupsen/logrus v1.9.0
github.com/stretchr/testify v1.8.0
github.com/tidwall/geojson v1.4.3
github.com/uber/h3-go/v4 v4.0.1
golang.org/x/exp v0.0.0-20230206171751-46f607a40771
)

require (
Expand All @@ -23,6 +24,6 @@ require (
github.com/tidwall/pretty v1.2.0 // indirect
github.com/tidwall/rtree v1.7.1 // indirect
github.com/tidwall/sjson v1.2.5 // indirect
golang.org/x/sys v0.0.0-20220908164124-27713097b956 // indirect
golang.org/x/sys v0.1.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
10 changes: 6 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ github.com/ThingsIXFoundation/h3-light v0.0.0-20221122151216-69018e780344 h1:faZ
github.com/ThingsIXFoundation/h3-light v0.0.0-20221122151216-69018e780344/go.mod h1:jSChfHi3fbZIAHTaPSEy+ghN/kF32U/f+NZdQt6oDD8=
github.com/biter777/countries v1.5.6 h1:YdvI0OYZR4gmI8BO+LrAuKmoZgiv4RrMdGBj6iORfn8=
github.com/biter777/countries v1.5.6/go.mod h1:1HSpZ526mYqKJcpT5Ti1kcGQ0L0SrXWIaptUWjFfv2E=
github.com/brocaar/lorawan v0.0.0-20220715134808-3b283dda1534 h1:vqq/suBJc3KWCDOfJFEMx3t83cBdjldR5yLGps/3DWo=
github.com/brocaar/lorawan v0.0.0-20220715134808-3b283dda1534/go.mod h1:Vlf3gOwizqX4y3snWe/i2EqRT83HvYuwBjRu39PevW0=
github.com/brocaar/lorawan v0.0.0-20230210103351-84b137ed1908 h1:lW8wqZvE1hoqq9hBEf02UmoKudWwQWWDncC4cQmi/s0=
github.com/brocaar/lorawan v0.0.0-20230210103351-84b137ed1908/go.mod h1:Vlf3gOwizqX4y3snWe/i2EqRT83HvYuwBjRu39PevW0=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
Expand Down Expand Up @@ -104,6 +104,8 @@ go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16g
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/exp v0.0.0-20230206171751-46f607a40771 h1:xP7rWLUr1e1n2xkK5YB4LI0hPEy3LJC6Wk+D4pGlOJg=
golang.org/x/exp v0.0.0-20230206171751-46f607a40771/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
Expand All @@ -128,8 +130,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220908164124-27713097b956 h1:XeJjHH1KiLpKGb6lvMiksZ9l0fVUh+AmGcm0nOMEBOY=
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
Expand Down
236 changes: 232 additions & 4 deletions go/frequency_plan/band.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (

"github.com/brocaar/lorawan"
"github.com/brocaar/lorawan/band"
"golang.org/x/exp/slices"
)

type BandName string
Expand Down Expand Up @@ -49,7 +50,23 @@ var AllBands []BandName = []BandName{
EU868,
US915,
CN779,
EU433,
AU915,
CN470,
AS923,
AS923_2,
AS923_3,
AS923_4,
//KR920,
//IN865,
RU864,
}

var SupportedBands []BandName = []BandName{
EU868,
US915,
AU915,
CN470,
AS923,
AS923_2,
AS923_3,
Expand All @@ -68,7 +85,7 @@ func FromBlockchain(in BlockchainFrequencyPlan) BandName {
case 2:
return US915
case 3:
return CN779
return CN470
case 4:
return EU433
case 5:
Expand Down Expand Up @@ -219,13 +236,140 @@ func GetBand(commonName string) (band.Band, error) {
return nil, err
}

return b, nil
case string(US915):
b, err := band.GetConfig(band.US915, false, lorawan.DwellTimeNoLimit)
if err != nil {
return nil, err
}

enabled := []int{8, 9, 10, 11, 12, 13, 14, 15, 65}

for _, chIndex := range b.GetUplinkChannelIndices() {
if slices.Contains(enabled, chIndex) {
b.EnableUplinkChannelIndex(chIndex)
} else {
b.DisableUplinkChannelIndex(chIndex)
}
}
return b, nil
case string(CN470):
b, err := band.GetConfig(band.CN470, false, lorawan.DwellTimeNoLimit)
if err != nil {
return nil, err
}

enabled := []int{80, 81, 82, 83, 84, 85, 86, 87}

for _, chIndex := range b.GetUplinkChannelIndices() {
if slices.Contains(enabled, chIndex) {
b.EnableUplinkChannelIndex(chIndex)
} else {
b.DisableUplinkChannelIndex(chIndex)
}
}
return b, nil
case string(AU915):
b, err := band.GetConfig(band.AU915, false, lorawan.DwellTime400ms)
if err != nil {
return nil, err
}
err = b.AddChannel(916800000, 0, 5)

enabled := []int{8, 9, 10, 11, 12, 13, 14, 15, 65}

for _, chIndex := range b.GetUplinkChannelIndices() {
if slices.Contains(enabled, chIndex) {
b.EnableUplinkChannelIndex(chIndex)
} else {
b.DisableUplinkChannelIndex(chIndex)
}
}
return b, nil
case string(AS923):
b, err := band.GetConfig("AS923", false, lorawan.DwellTimeNoLimit)
if err != nil {
return nil, err
}

err = b.AddChannel(922200000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(922400000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(922600000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(922800000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(923000000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(922000000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(922100000, 6, 6)
if err != nil {
return nil, err
}

return b, nil
case string(AS923_2):
b, err := band.GetConfig("AS923-2", false, lorawan.DwellTimeNoLimit)
if err != nil {
return nil, err
}

err = b.AddChannel(921800000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(922000000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(922200000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(922400000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(922600000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(922800000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(921400000, 6, 6)
if err != nil {
return nil, err
}
return b, nil
case string(AS923_3):
b, err := band.GetConfig("AS923-3", false, lorawan.DwellTimeNoLimit)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -260,12 +404,96 @@ func GetBand(commonName string) (band.Band, error) {
return nil, err
}

err = b.AddChannel(918200000, 0, 5)
err = b.AddChannel(916600000, 6, 6)
if err != nil {
return nil, err
}

return b, nil
case string(AS923_4):
b, err := band.GetConfig("AS923-4", false, lorawan.DwellTimeNoLimit)
if err != nil {
return nil, err
}

err = b.AddChannel(917700000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(917900000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(918100000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(918300000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(918500000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(918700000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(917300000, 6, 6)
if err != nil {
return nil, err
}

return b, nil
case string(RU864):
b, err := band.GetConfig(band.RU864, false, lorawan.DwellTimeNoLimit)
if err != nil {
return nil, err
}

err = b.AddChannel(869300000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(867300000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(867500000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(867700000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(867900000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(868100000, 0, 5)
if err != nil {
return nil, err
}

err = b.AddChannel(868900000, 6, 6)
if err != nil {
return nil, err
}

err = b.AddChannel(917500000, 6, 6)
err = b.AddChannel(868900000, 7, 7)
if err != nil {
return nil, err
}
Expand Down
31 changes: 31 additions & 0 deletions go/frequency_plan/band_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// Copyright 2022 Stichting ThingsIX Foundation
//
// 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.
//
// SPDX-License-Identifier: Apache-2.0

package frequency_plan

import (
"testing"
)

func TestGetBand(t *testing.T) {
for _, band := range AllBands {
_, err := GetBand(string(band))
if err != nil {
t.Logf("testing band: %s", band)
t.Error(err)
}
}
}
Loading

0 comments on commit 56a0e53

Please sign in to comment.