Compare commits

...

51 Commits

Author SHA1 Message Date
a811ec5c80 Bump version to 4.9.0-test.6 2024-08-07 15:11:09 +01:00
5794f41324 Fix clippy feedback (cargo clippy --fix). 2024-08-07 14:59:25 +01:00
7158c0c610 ui: Update codec template with JSDoc (#473) 2024-08-05 11:17:13 +01:00
eda6646b18 Update dependencies. 2024-08-05 10:15:23 +01:00
40a2b83bf5 Update redis dependency. 2024-08-05 10:06:48 +01:00
4e0106a4e8 Replace warp with axum.
The warp dependency was causing some issues with upgrading dependencies
as it depends on http v0.2, where other dependencies (e.g. tonic) have
already upgraded to http v1+.
2024-08-01 11:33:57 +01:00
98978135c4 ui: Fix formatting template after merging #460. 2024-07-30 11:18:52 +01:00
6a691c62e2 Update dependencies. 2024-07-24 14:12:50 +01:00
66ab41036b Update lapin crate.
This disables the default features (rustls), because lapin enables the
default rustls features, which pulls in the aws-lc-rs dependency besides
ring.

Most likely, the next lapin version will fix this by exposing feature
flags to either enable aws-lc-rs or ring backend for rustls.
2024-07-24 14:05:46 +01:00
dc57e6fe51 Update rustls to 0.23. 2024-07-23 14:03:09 +01:00
ebc4065ca2 Bump version to 4.9.0-test.5 2024-07-23 11:03:39 +01:00
a23797ddbb Fix updating dependencies.
The previous update dependencies commit contained a dependency that
pulled in the aws-lc-rs crate, which fails to build on ARMv7. See also
370b84cb09f0d55c9cc1d993df2474e579e7fa94.

This commit reverts the updates and only updates part of the crates.

A proper fix will be to update all dependencies to rustls 0.23 such that
we can enable the ring feature flag (which is the 0.22 default).
2024-07-23 10:39:58 +01:00
8fabfd925e Bump version to 4.9.0-test.4 2024-07-22 14:40:01 +01:00
2eb17bde92 Update install-nix-action workflow step. 2024-07-22 11:51:00 +01:00
a22ed43883 Update dependencies.
There are still a few dependencies left to update, but these updates
require additional code changes.
2024-07-22 11:48:08 +01:00
de656cf885 Add user_info config to region_... + format TOML.
Closes #462.
2024-07-22 10:48:43 +01:00
2a8e49bf8d ui: Replace moment with date-fns. (#460) 2024-07-22 10:16:08 +01:00
262f51da3f Update main.yml workflow. (#461) 2024-07-22 10:14:37 +01:00
4f0d2126d8 ui: Migrate from create-react-app to vite (#459) 2024-07-16 14:10:19 +01:00
3777de706d Make OIDC and OAuth2 scopes configurable. (#445)
Co-authored-by: Orne Brocaar <info@brocaar.com>
2024-07-11 10:51:37 +01:00
f76a4b7f83 lrwn: Allow empty string for AES128Key, DevAddr, EUI64 and NetID.
In case an empty string is provided, the default "null" value will be
used.

Fixes #453.
2024-07-11 10:05:23 +01:00
920f485734 Update openidconnect dependency.
Fixes #423.
2024-07-11 09:56:13 +01:00
2737284d2d Update oauth2 dependency. 2024-07-11 09:56:13 +01:00
d39fbea7af Fix typo in gateway stats handling. (#458) 2024-07-11 09:01:20 +01:00
15461d8cc5 Improved device activation api documentation (#454) 2024-07-10 15:06:01 +01:00
ad2fecd1d2 ui: Make tileserver + attribution configurable. (#451)
Co-authored-by: Orne Brocaar <info@brocaar.com>
2024-07-10 15:05:33 +01:00
4ef0fbbd8f Bump curve25519-dalek from 4.1.2 to 4.1.3 (#442)
Bumps [curve25519-dalek](https://github.com/dalek-cryptography/curve25519-dalek) from 4.1.2 to 4.1.3.
- [Release notes](https://github.com/dalek-cryptography/curve25519-dalek/releases)
- [Commits](https://github.com/dalek-cryptography/curve25519-dalek/compare/curve25519-4.1.2...curve25519-4.1.3)

---
updated-dependencies:
- dependency-name: curve25519-dalek
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-09 12:22:35 +01:00
264f51a190 Bump ws from 7.5.9 to 7.5.10 in /ui (#441)
Bumps [ws](https://github.com/websockets/ws) from 7.5.9 to 7.5.10.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-09 12:21:54 +01:00
abde97f46d Bump braces from 3.0.2 to 3.0.3 in /ui (#436)
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-09 12:21:35 +01:00
6c8e87f505 Bump @grpc/grpc-js from 1.10.4 to 1.10.9 in /api/js (#434)
Bumps [@grpc/grpc-js](https://github.com/grpc/grpc-node) from 1.10.4 to 1.10.9.
- [Release notes](https://github.com/grpc/grpc-node/releases)
- [Commits](https://github.com/grpc/grpc-node/compare/@grpc/grpc-js@1.10.4...@grpc/grpc-js@1.10.9)

---
updated-dependencies:
- dependency-name: "@grpc/grpc-js"
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-09 12:21:16 +01:00
c173ace8bc api: Remove generated PHP code. (#452) 2024-07-09 12:15:16 +01:00
f153eb8ca0 lrwn: Fix typo in snr clamp. 2024-07-09 11:57:20 +01:00
4a33f67ed6 lrwn: Fix cargo clippy feedback. 2024-07-09 11:39:32 +01:00
63bc1b57de ui: Fix isGatewayAdmin build error. 2024-07-09 11:25:10 +01:00
f854236b79 Bump version to 4.9.0-test.3 2024-06-26 14:57:17 +01:00
d25cc3ca6d Update mesh heartbeat MQTT topic. 2024-06-25 13:57:13 +01:00
68473906c9 Bump version to 4.9.0-test.2 2024-06-25 12:27:28 +01:00
3f1a47e1e2 Integrate Gateway Mesh feature.
This adds a Gateway Mesh section to the web-interface (+ API endpoints)
to see the status op each Relay Gateway within the Gateway Mesh.

The Gateway Mesh (https://github.com/chirpstack/chirpstack-gateway-mesh)
is an experimental feature to extend LoRaWAN coverage throug Relay
Gateways.
2024-06-25 11:37:57 +01:00
c0b148fecb Fix exposing full JS codec error.
In some cases tests would fail (I assume based on load / running
concurrent tests) without the full JS codec error.

Fixes #440.
2024-06-19 09:34:09 +01:00
6b9f7a9ea1 Fix cargo check / clippy warnings. 2024-06-19 09:27:15 +01:00
3b95a413a6 Update Rust, Diesel CLI and dev. environment. 2024-06-18 13:56:31 +01:00
38d544a5f7 api: add grpc php support (#431) 2024-06-11 11:50:02 +01:00
880b319bfd Update sslmode options in config template. (#433) 2024-06-10 15:09:34 +01:00
a0abd4a4bb ui: Fix empty string in revision column (#432) 2024-06-10 14:59:18 +01:00
52a08acf81 Add passive_roaming_validate_mic option.
This option does two things:

1) In case the passive-roaming agreement is not state-less, it will
   trigger the validation of MIC (this was already implemented at the
   roaming-session retrieval, but never used).
2) On PRStartAns, it will return the NwkSKey / FNwkSIntKey to the
   requester (such that the MIC validation can be performed).

For state-less passive-roaming, it is recommended to leave this option
set to false, such that no session-keys are exposed.
2024-05-27 11:27:26 +01:00
04ffcf88a1 backend: Fix sending HomeNSAns response to HomeNSReq request. 2024-05-16 13:18:55 +01:00
c7f1367bf8 api: Remove frame_log from __init__.py (Python).
Closes #422.
2024-05-16 11:54:39 +01:00
ae31e4d85f Update cross-rs image to :main.
The :latest tag points to a very old image versions, which are not
consistent with regards to the base-image. This is causing differences
in library versions across different target platforms.

Once a v0.3.0 release is available, :main can be changed into :0.3.0.

Closes #421.
2024-05-14 11:40:32 +01:00
4968f5d792 Bump version to 4.8.1 2024-05-13 16:47:14 +01:00
36bbf8f153 api: Fix empty JS packages.
NPM uses the .gitignore file, which includes the generated JS code. This
caused the v4.8.0 JS packages to be completely empty. Adding an empty
.npmignore file resolves the issue as if a .npmignore file is detected,
the .gitignore file is ignored.
2024-05-13 16:32:59 +01:00
c3de89a4a4 Bump version to 4.8.0 2024-05-13 15:35:00 +01:00
398 changed files with 11123 additions and 15846 deletions

View File

@ -16,15 +16,15 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4
-
name: Install Nix
uses: cachix/install-nix-action@v20
uses: cachix/install-nix-action@v27
with:
nix_path: nixpkgs=channel:nixos-22.11
nix_path: nixpkgs=channel:nixos-24.05
-
name: Cargo cache
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
@ -50,15 +50,15 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4
-
name: Install Nix
uses: cachix/install-nix-action@v20
uses: cachix/install-nix-action@v27
with:
nix_path: nixpkgs=channel:nixos-22.11
nix_path: nixpkgs=channel:nixos-24.05
-
name: Cargo cache
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/

1
.gitignore vendored
View File

@ -3,6 +3,7 @@
!/chirpstack/.rpm
!/.cargo
!/.env
!.npmignore
# Log files
*.log

1852
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,19 +1,19 @@
[workspace]
resolver = "2"
members = [
"chirpstack",
"chirpstack-integration",
"lrwn",
"lrwn-filters",
"backend",
"api/rust",
]
resolver = "2"
members = [
"chirpstack",
"chirpstack-integration",
"lrwn",
"lrwn-filters",
"backend",
"api/rust",
]
[profile.release]
opt-level = 'z'
lto = true
codegen-units = 1
opt-level = 'z'
lto = true
codegen-units = 1
[patch.crates-io]
# Remove if diesel-async > 0.4.1
diesel-async = { git = "https://github.com/weiznich/diesel_async.git", rev = "017ebe2fb7a2709ab5db92148dea5ce812a35e09" }
deadpool-redis = { git = "https://github.com/bikeshedder/deadpool.git", rev = "6c361a306059bc8b0d3426515991e253015af6be" }

View File

@ -8,25 +8,26 @@ dist:
# Install dev dependencies
dev-dependencies:
cargo install cross --version 0.2.5
cargo install diesel_cli --version 2.1.1 --no-default-features --features postgres
cargo install diesel_cli --version 2.2.1 --no-default-features --features postgres
cargo install cargo-deb --version 1.43.1
cargo install cargo-generate-rpm --version 0.12.1
# Set the versions
version:
test -n "$(VERSION)"
sed -i 's/^version.*/version = "$(VERSION)"/g' ./chirpstack/Cargo.toml
sed -i 's/^version.*/version = "$(VERSION)"/g' ./backend/Cargo.toml
sed -i 's/^version.*/version = "$(VERSION)"/g' ./lrwn/Cargo.toml
sed -i 's/^version.*/version = "$(VERSION)"/g' ./lrwn-filters/Cargo.toml
sed -i 's/^version.*/version = "$(VERSION)"/g' ./chirpstack-integration/Cargo.toml
sed -i 's/^ version.*/ version = "$(VERSION)"/g' ./chirpstack/Cargo.toml
sed -i 's/^ version.*/ version = "$(VERSION)"/g' ./backend/Cargo.toml
sed -i 's/^ version.*/ version = "$(VERSION)"/g' ./lrwn/Cargo.toml
sed -i 's/^ version.*/ version = "$(VERSION)"/g' ./lrwn-filters/Cargo.toml
sed -i 's/^ version.*/ version = "$(VERSION)"/g' ./chirpstack-integration/Cargo.toml
sed -i 's/"version.*/"version": "$(VERSION)",/g' ./ui/package.json
sed -i 's/"version.*/"version": "$(VERSION)",/g' ./api/grpc-web/package.json
sed -i 's/"version.*/"version": "$(VERSION)",/g' ./api/js/package.json
sed -i 's/version.*/version = "$(VERSION)",/g' ./api/python/src/setup.py
sed -i 's/^version.*/version = "$(VERSION)"/g' ./api/rust/Cargo.toml
sed -i 's/^ version.*/ version = "$(VERSION)"/g' ./api/rust/Cargo.toml
sed -i 's/^version.*/version = "$(VERSION)"/g' ./api/java/build.gradle.kts
sed -i 's/^version.*/version = "$(VERSION)"/g' ./api/kotlin/build.gradle.kts
sed -i 's/"version.*/"version": "$(VERSION)",/g' ./api/php/composer.json
cd api && make
make build-ui

9
api/Dockerfile-php vendored Normal file
View File

@ -0,0 +1,9 @@
FROM php:8.1-bookworm
RUN apt update -y
RUN apt install -y make protobuf-compiler protobuf-compiler-grpc
ENV PROJECT_PATH=/chirpstack/api
RUN mkdir -p PROJECT_PATH
WORKDIR $PROJECT_PATH

7
api/Makefile vendored
View File

@ -1,6 +1,6 @@
.PHONY: rust grpc-web go js python md java kotlin csharp
.PHONY: rust grpc-web go js python md java kotlin csharp php
all: rust grpc-web go js python md java kotlin csharp
all: rust grpc-web go js python md java kotlin csharp php
rust:
cd rust && make
@ -28,3 +28,6 @@ kotlin:
csharp:
docker compose run --rm chirpstack-csharp
php:
docker compose run --rm chirpstack-api-php

View File

@ -42,3 +42,10 @@ services:
command: bash -c "cd csharp && make all"
volumes:
- ./:/chirpstack/api
chirpstack-api-php:
build:
context: .
dockerfile: Dockerfile-php
command: bash -c "cd php && make all"
volumes:
- ./:/chirpstack/api

View File

@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc-gen-go v1.34.1
// protoc v4.24.4
// source: api/application.proto
@ -5622,14 +5622,17 @@ var file_api_application_proto_rawDesc = []byte{
0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69,
0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
0x6d, 0x71, 0x74, 0x74, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
0x42, 0x68, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63,
0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x10, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75,
0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b,
0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f,
0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0xaa, 0x02, 0x0e, 0x43, 0x68, 0x69, 0x72,
0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x33,
0x42, 0x96, 0x01, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61,
0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x10, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68,
0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63,
0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69,
0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0xaa, 0x02, 0x0e, 0x43, 0x68, 0x69,
0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70, 0x69, 0xca, 0x02, 0x0e, 0x43, 0x68,
0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x41, 0x70, 0x69, 0xe2, 0x02, 0x1a, 0x47,
0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5c, 0x43, 0x68, 0x69, 0x72, 0x70,
0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x41, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
}
var (

View File

@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc-gen-go v1.34.1
// protoc v4.24.4
// source: api/device.proto
@ -1116,6 +1116,8 @@ type DeviceActivation struct {
// Application session key (HEX encoded).
AppSKey string `protobuf:"bytes,3,opt,name=app_s_key,json=appSKey,proto3" json:"app_s_key,omitempty"`
// Network session encryption key (HEX encoded).
// Note: For ABP in LoRaWAN 1.0.x, use this, the serving and the forwarding
// network session integrity key fields with the LoRaWAN 1.0.x 'NwkSKey`!
NwkSEncKey string `protobuf:"bytes,4,opt,name=nwk_s_enc_key,json=nwkSEncKey,proto3" json:"nwk_s_enc_key,omitempty"`
// Serving network session integrity key (HEX encoded).
SNwkSIntKey string `protobuf:"bytes,8,opt,name=s_nwk_s_int_key,json=sNwkSIntKey,proto3" json:"s_nwk_s_int_key,omitempty"`
@ -2888,13 +2890,16 @@ var file_api_device_proto_rawDesc = []byte{
0xe4, 0x93, 0x02, 0x2f, 0x3a, 0x01, 0x2a, 0x22, 0x2a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x65,
0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x7d, 0x2f,
0x67, 0x65, 0x74, 0x2d, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x66, 0x2d, 0x63, 0x6e, 0x74, 0x2d, 0x64,
0x6f, 0x77, 0x6e, 0x42, 0x63, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73,
0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63,
0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f,
0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0xaa, 0x02, 0x0e, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73,
0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x6f, 0x77, 0x6e, 0x42, 0x91, 0x01, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70,
0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0b, 0x44, 0x65, 0x76, 0x69, 0x63,
0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f,
0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67,
0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0xaa, 0x02, 0x0e, 0x43, 0x68, 0x69, 0x72, 0x70,
0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70, 0x69, 0xca, 0x02, 0x0e, 0x43, 0x68, 0x69, 0x72,
0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x41, 0x70, 0x69, 0xe2, 0x02, 0x1a, 0x47, 0x50, 0x42,
0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5c, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74,
0x61, 0x63, 0x6b, 0x5c, 0x41, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc-gen-go v1.34.1
// protoc v4.24.4
// source: api/device_profile.proto
@ -2054,14 +2054,17 @@ var file_api_device_profile_proto_rawDesc = []byte{
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f,
0x61, 0x70, 0x69, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x66, 0x69,
0x6c, 0x65, 0x73, 0x2f, 0x61, 0x64, 0x72, 0x2d, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68,
0x6d, 0x73, 0x42, 0x6a, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74,
0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50,
0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67,
0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73,
0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f,
0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0xaa, 0x02, 0x0e,
0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70, 0x69, 0x62, 0x06,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x6d, 0x73, 0x42, 0x98, 0x01, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73,
0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e,
0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70,
0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b,
0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0xaa, 0x02,
0x0e, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70, 0x69, 0xca,
0x02, 0x0e, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x41, 0x70, 0x69,
0xe2, 0x02, 0x1a, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5c, 0x43,
0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x41, 0x70, 0x69, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc-gen-go v1.34.1
// protoc v4.24.4
// source: api/device_profile_template.proto
@ -1088,14 +1088,17 @@ var file_api_device_profile_template_proto_rawDesc = []byte{
0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82,
0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x65, 0x76, 0x69,
0x63, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x74, 0x65, 0x6d, 0x70, 0x6c,
0x61, 0x74, 0x65, 0x73, 0x42, 0x72, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70,
0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x1a, 0x44, 0x65, 0x76, 0x69, 0x63,
0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63,
0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f,
0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0xaa, 0x02, 0x0e, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73,
0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x61, 0x74, 0x65, 0x73, 0x42, 0xa0, 0x01, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72,
0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x1a, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f,
0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67,
0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0xaa, 0x02, 0x0e, 0x43, 0x68, 0x69, 0x72, 0x70,
0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70, 0x69, 0xca, 0x02, 0x0e, 0x43, 0x68, 0x69, 0x72,
0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x41, 0x70, 0x69, 0xe2, 0x02, 0x1a, 0x47, 0x50, 0x42,
0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5c, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74,
0x61, 0x63, 0x6b, 0x5c, 0x41, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

1074
api/go/api/gateway.pb.go vendored

File diff suppressed because it is too large Load Diff

View File

@ -28,6 +28,10 @@ const (
GatewayService_GenerateClientCertificate_FullMethodName = "/api.GatewayService/GenerateClientCertificate"
GatewayService_GetMetrics_FullMethodName = "/api.GatewayService/GetMetrics"
GatewayService_GetDutyCycleMetrics_FullMethodName = "/api.GatewayService/GetDutyCycleMetrics"
GatewayService_GetRelayGateway_FullMethodName = "/api.GatewayService/GetRelayGateway"
GatewayService_ListRelayGateways_FullMethodName = "/api.GatewayService/ListRelayGateways"
GatewayService_UpdateRelayGateway_FullMethodName = "/api.GatewayService/UpdateRelayGateway"
GatewayService_DeleteRelayGateway_FullMethodName = "/api.GatewayService/DeleteRelayGateway"
)
// GatewayServiceClient is the client API for GatewayService service.
@ -51,6 +55,14 @@ type GatewayServiceClient interface {
// GetDutyCycleMetrics returns the duty-cycle metrics.
// Note that only the last 2 hours of data are stored. Currently only per minute aggregation is available.
GetDutyCycleMetrics(ctx context.Context, in *GetGatewayDutyCycleMetricsRequest, opts ...grpc.CallOption) (*GetGatewayDutyCycleMetricsResponse, error)
// Get the given Relay Gateway.
GetRelayGateway(ctx context.Context, in *GetRelayGatewayRequest, opts ...grpc.CallOption) (*GetRelayGatewayResponse, error)
// List the detected Relay Gateways.
ListRelayGateways(ctx context.Context, in *ListRelayGatewaysRequest, opts ...grpc.CallOption) (*ListRelayGatewaysResponse, error)
// Update the given Relay Gateway.
UpdateRelayGateway(ctx context.Context, in *UpdateRelayGatewayRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
// Delete the given Relay Gateway.
DeleteRelayGateway(ctx context.Context, in *DeleteRelayGatewayRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
}
type gatewayServiceClient struct {
@ -133,6 +145,42 @@ func (c *gatewayServiceClient) GetDutyCycleMetrics(ctx context.Context, in *GetG
return out, nil
}
func (c *gatewayServiceClient) GetRelayGateway(ctx context.Context, in *GetRelayGatewayRequest, opts ...grpc.CallOption) (*GetRelayGatewayResponse, error) {
out := new(GetRelayGatewayResponse)
err := c.cc.Invoke(ctx, GatewayService_GetRelayGateway_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *gatewayServiceClient) ListRelayGateways(ctx context.Context, in *ListRelayGatewaysRequest, opts ...grpc.CallOption) (*ListRelayGatewaysResponse, error) {
out := new(ListRelayGatewaysResponse)
err := c.cc.Invoke(ctx, GatewayService_ListRelayGateways_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *gatewayServiceClient) UpdateRelayGateway(ctx context.Context, in *UpdateRelayGatewayRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
out := new(emptypb.Empty)
err := c.cc.Invoke(ctx, GatewayService_UpdateRelayGateway_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *gatewayServiceClient) DeleteRelayGateway(ctx context.Context, in *DeleteRelayGatewayRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
out := new(emptypb.Empty)
err := c.cc.Invoke(ctx, GatewayService_DeleteRelayGateway_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// GatewayServiceServer is the server API for GatewayService service.
// All implementations must embed UnimplementedGatewayServiceServer
// for forward compatibility
@ -154,6 +202,14 @@ type GatewayServiceServer interface {
// GetDutyCycleMetrics returns the duty-cycle metrics.
// Note that only the last 2 hours of data are stored. Currently only per minute aggregation is available.
GetDutyCycleMetrics(context.Context, *GetGatewayDutyCycleMetricsRequest) (*GetGatewayDutyCycleMetricsResponse, error)
// Get the given Relay Gateway.
GetRelayGateway(context.Context, *GetRelayGatewayRequest) (*GetRelayGatewayResponse, error)
// List the detected Relay Gateways.
ListRelayGateways(context.Context, *ListRelayGatewaysRequest) (*ListRelayGatewaysResponse, error)
// Update the given Relay Gateway.
UpdateRelayGateway(context.Context, *UpdateRelayGatewayRequest) (*emptypb.Empty, error)
// Delete the given Relay Gateway.
DeleteRelayGateway(context.Context, *DeleteRelayGatewayRequest) (*emptypb.Empty, error)
mustEmbedUnimplementedGatewayServiceServer()
}
@ -185,6 +241,18 @@ func (UnimplementedGatewayServiceServer) GetMetrics(context.Context, *GetGateway
func (UnimplementedGatewayServiceServer) GetDutyCycleMetrics(context.Context, *GetGatewayDutyCycleMetricsRequest) (*GetGatewayDutyCycleMetricsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetDutyCycleMetrics not implemented")
}
func (UnimplementedGatewayServiceServer) GetRelayGateway(context.Context, *GetRelayGatewayRequest) (*GetRelayGatewayResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetRelayGateway not implemented")
}
func (UnimplementedGatewayServiceServer) ListRelayGateways(context.Context, *ListRelayGatewaysRequest) (*ListRelayGatewaysResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListRelayGateways not implemented")
}
func (UnimplementedGatewayServiceServer) UpdateRelayGateway(context.Context, *UpdateRelayGatewayRequest) (*emptypb.Empty, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateRelayGateway not implemented")
}
func (UnimplementedGatewayServiceServer) DeleteRelayGateway(context.Context, *DeleteRelayGatewayRequest) (*emptypb.Empty, error) {
return nil, status.Errorf(codes.Unimplemented, "method DeleteRelayGateway not implemented")
}
func (UnimplementedGatewayServiceServer) mustEmbedUnimplementedGatewayServiceServer() {}
// UnsafeGatewayServiceServer may be embedded to opt out of forward compatibility for this service.
@ -342,6 +410,78 @@ func _GatewayService_GetDutyCycleMetrics_Handler(srv interface{}, ctx context.Co
return interceptor(ctx, in, info, handler)
}
func _GatewayService_GetRelayGateway_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetRelayGatewayRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GatewayServiceServer).GetRelayGateway(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: GatewayService_GetRelayGateway_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GatewayServiceServer).GetRelayGateway(ctx, req.(*GetRelayGatewayRequest))
}
return interceptor(ctx, in, info, handler)
}
func _GatewayService_ListRelayGateways_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListRelayGatewaysRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GatewayServiceServer).ListRelayGateways(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: GatewayService_ListRelayGateways_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GatewayServiceServer).ListRelayGateways(ctx, req.(*ListRelayGatewaysRequest))
}
return interceptor(ctx, in, info, handler)
}
func _GatewayService_UpdateRelayGateway_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateRelayGatewayRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GatewayServiceServer).UpdateRelayGateway(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: GatewayService_UpdateRelayGateway_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GatewayServiceServer).UpdateRelayGateway(ctx, req.(*UpdateRelayGatewayRequest))
}
return interceptor(ctx, in, info, handler)
}
func _GatewayService_DeleteRelayGateway_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteRelayGatewayRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GatewayServiceServer).DeleteRelayGateway(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: GatewayService_DeleteRelayGateway_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GatewayServiceServer).DeleteRelayGateway(ctx, req.(*DeleteRelayGatewayRequest))
}
return interceptor(ctx, in, info, handler)
}
// GatewayService_ServiceDesc is the grpc.ServiceDesc for GatewayService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
@ -381,6 +521,22 @@ var GatewayService_ServiceDesc = grpc.ServiceDesc{
MethodName: "GetDutyCycleMetrics",
Handler: _GatewayService_GetDutyCycleMetrics_Handler,
},
{
MethodName: "GetRelayGateway",
Handler: _GatewayService_GetRelayGateway_Handler,
},
{
MethodName: "ListRelayGateways",
Handler: _GatewayService_ListRelayGateways_Handler,
},
{
MethodName: "UpdateRelayGateway",
Handler: _GatewayService_UpdateRelayGateway_Handler,
},
{
MethodName: "DeleteRelayGateway",
Handler: _GatewayService_DeleteRelayGateway_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "api/gateway.proto",

View File

@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc-gen-go v1.34.1
// protoc v4.24.4
// source: api/internal.proto
@ -893,6 +893,10 @@ type SettingsResponse struct {
OpenidConnect *OpenIdConnect `protobuf:"bytes,1,opt,name=openid_connect,json=openidConnect,proto3" json:"openid_connect,omitempty"`
// OAuth2 settings.
Oauth2 *OAuth2 `protobuf:"bytes,2,opt,name=oauth2,proto3" json:"oauth2,omitempty"`
// Tileserver URL.
TileserverUrl string `protobuf:"bytes,3,opt,name=tileserver_url,json=tileserverUrl,proto3" json:"tileserver_url,omitempty"`
// Map attribution.
MapAttribution string `protobuf:"bytes,4,opt,name=map_attribution,json=mapAttribution,proto3" json:"map_attribution,omitempty"`
}
func (x *SettingsResponse) Reset() {
@ -941,6 +945,20 @@ func (x *SettingsResponse) GetOauth2() *OAuth2 {
return nil
}
func (x *SettingsResponse) GetTileserverUrl() string {
if x != nil {
return x.TileserverUrl
}
return ""
}
func (x *SettingsResponse) GetMapAttribution() string {
if x != nil {
return x.MapAttribution
}
return ""
}
type OpenIdConnect struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -2301,242 +2319,250 @@ var file_api_internal_proto_rawDesc = []byte{
0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61,
0x79, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x6e,
0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77,
0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x72, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0e, 0x6f, 0x70,
0x65, 0x6e, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x43,
0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x64, 0x43, 0x6f,
0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x41, 0x75, 0x74,
0x68, 0x32, 0x52, 0x06, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x22, 0xad, 0x01, 0x0a, 0x0d, 0x4f,
0x70, 0x65, 0x6e, 0x49, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07,
0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65,
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f,
0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x69, 0x6e,
0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x6c, 0x61, 0x62,
0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x4c,
0x61, 0x62, 0x65, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x5f, 0x75,
0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74,
0x55, 0x72, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x64,
0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x6f, 0x67,
0x69, 0x6e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x22, 0xa6, 0x01, 0x0a, 0x06, 0x4f,
0x41, 0x75, 0x74, 0x68, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12,
0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b,
0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1d, 0x0a,
0x0a, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28,
0x09, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x25, 0x0a, 0x0e,
0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x05,
0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x64, 0x69, 0x72,
0x65, 0x63, 0x74, 0x22, 0x45, 0x0a, 0x19, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x43, 0x6f, 0x6e,
0x6e, 0x65, 0x63, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x63, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x32, 0x0a, 0x1a, 0x4f, 0x70,
0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xc2, 0x01, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x74, 0x69,
0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0e, 0x6f,
0x70, 0x65, 0x6e, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x64,
0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x64, 0x43,
0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x41, 0x75,
0x74, 0x68, 0x32, 0x52, 0x06, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x12, 0x25, 0x0a, 0x0e, 0x74,
0x69, 0x6c, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55,
0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62,
0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x61, 0x70,
0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xad, 0x01, 0x0a, 0x0d,
0x4f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x18, 0x0a,
0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x69, 0x6e,
0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x69,
0x6e, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x6c, 0x61,
0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x69, 0x6e,
0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x5f,
0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x6f, 0x75,
0x74, 0x55, 0x72, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x72, 0x65,
0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x6f,
0x67, 0x69, 0x6e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x22, 0xa6, 0x01, 0x0a, 0x06,
0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a,
0x0b, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1d,
0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01,
0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x25, 0x0a,
0x0e, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18,
0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x64, 0x69,
0x72, 0x65, 0x63, 0x74, 0x22, 0x45, 0x0a, 0x19, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x43, 0x6f,
0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x32, 0x0a, 0x1a, 0x4f,
0x70, 0x65, 0x6e, 0x49, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4c, 0x6f, 0x67, 0x69,
0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b,
0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22,
0x3e, 0x0a, 0x12, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61,
0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22,
0x2b, 0x0a, 0x13, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x37, 0x0a, 0x18,
0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72,
0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61,
0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e,
0x61, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x93, 0x02, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76,
0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69,
0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d,
0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x46, 0x0a,
0x08, 0x64, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73,
0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e,
0x44, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x64, 0x72,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x5f, 0x73,
0x65, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x0e, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x53, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a,
0x3a, 0x0a, 0x0c, 0x44, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65,
0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x38, 0x0a, 0x19, 0x47,
0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72,
0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61,
0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e,
0x61, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x8e, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74,
0x65, 0x77, 0x61, 0x79, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6f, 0x6e, 0x6c, 0x69,
0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x66, 0x66, 0x6c, 0x69,
0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c,
0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10,
0x6e, 0x65, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x53, 0x65, 0x65,
0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xfc, 0x01, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x49, 0x74,
0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
0x69, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69,
0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70,
0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65,
0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70,
0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72,
0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3b, 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47,
0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79,
0x49, 0x64, 0x22, 0x34, 0x0a, 0x19, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x17, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x22, 0x34, 0x0a, 0x19, 0x53, 0x74, 0x72, 0x65,
0x61, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x22, 0x44,
0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x67,
0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x07, 0x72, 0x65, 0x67,
0x69, 0x6f, 0x6e, 0x73, 0x22, 0x6a, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x4c, 0x69,
0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x20,
0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
0x22, 0x22, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x02, 0x69, 0x64, 0x22, 0xb2, 0x03, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69,
0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x06, 0x72, 0x65,
0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x6d,
0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69,
0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18,
0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12,
0x3b, 0x0a, 0x0f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52,
0x65, 0x67, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x0e, 0x75, 0x70,
0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x1b, 0x0a, 0x09,
0x72, 0x78, 0x31, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x08, 0x72, 0x78, 0x31, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x22, 0x0a, 0x0d, 0x72, 0x78, 0x31,
0x5f, 0x64, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x0b, 0x72, 0x78, 0x31, 0x44, 0x72, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x15, 0x0a,
0x06, 0x72, 0x78, 0x32, 0x5f, 0x64, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x72,
0x78, 0x32, 0x44, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x78, 0x32, 0x5f, 0x66, 0x72, 0x65, 0x71,
0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x72, 0x78, 0x32,
0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x2e, 0x0a, 0x14, 0x63, 0x6c, 0x61,
0x73, 0x73, 0x5f, 0x62, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x64,
0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x50,
0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x44, 0x72, 0x12, 0x3c, 0x0a, 0x1b, 0x63, 0x6c, 0x61,
0x73, 0x73, 0x5f, 0x62, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x66,
0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x17,
0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x46, 0x72,
0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65,
0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5b, 0x0a, 0x0d, 0x52, 0x65, 0x67,
0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72,
0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x66,
0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x15, 0x0a, 0x06, 0x64, 0x72, 0x5f, 0x6d,
0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x64, 0x72, 0x4d, 0x69, 0x6e, 0x12,
0x15, 0x0a, 0x06, 0x64, 0x72, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x05, 0x64, 0x72, 0x4d, 0x61, 0x78, 0x22, 0x2e, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72,
0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07,
0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0xb9, 0x09, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x65, 0x72,
0x6e, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x4c, 0x6f,
0x67, 0x69, 0x6e, 0x12, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x67,
0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x07,
0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a,
0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0c, 0x47, 0x6c, 0x6f, 0x62, 0x61,
0x6c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x6c,
0x6f, 0x62, 0x61, 0x6c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x65,
0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45,
0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x18,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65,
0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43,
0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41,
0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65,
0x74, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0b, 0x4c, 0x69, 0x73,
0x74, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c,
0x69, 0x73, 0x74, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x69, 0x4b,
0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3b, 0x0a,
0x08, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
0x79, 0x1a, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x12, 0x4f, 0x70,
0x65, 0x6e, 0x49, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65,
0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3e,
0x0a, 0x12, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x2b,
0x0a, 0x13, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x37, 0x0a, 0x18, 0x47,
0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e,
0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61,
0x6e, 0x74, 0x49, 0x64, 0x22, 0x93, 0x02, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76,
0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x69,
0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x08,
0x64, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x53,
0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44,
0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x64, 0x72, 0x43,
0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x65,
0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e,
0x6e, 0x65, 0x76, 0x65, 0x72, 0x53, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x3a,
0x0a, 0x0c, 0x44, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79,
0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x38, 0x0a, 0x19, 0x47, 0x65,
0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e,
0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61,
0x6e, 0x74, 0x49, 0x64, 0x22, 0x8e, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65,
0x77, 0x61, 0x79, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6f, 0x6e, 0x6c, 0x69, 0x6e,
0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e,
0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6f,
0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x6e,
0x65, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x53, 0x65, 0x65, 0x6e,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xfc, 0x01, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x49, 0x74, 0x65,
0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
0x64, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d,
0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65,
0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x4c, 0x6f, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72,
0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65,
0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x3a, 0x02, 0x38, 0x01, 0x22, 0x3b, 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x61,
0x74, 0x65, 0x77, 0x61, 0x79, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49,
0x64, 0x22, 0x34, 0x0a, 0x19, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63,
0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x22, 0x34, 0x0a, 0x19, 0x53, 0x74, 0x72, 0x65, 0x61,
0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x22, 0x44, 0x0a,
0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18,
0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x67, 0x69,
0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x07, 0x72, 0x65, 0x67, 0x69,
0x6f, 0x6e, 0x73, 0x22, 0x6a, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73,
0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52,
0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a,
0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22,
0x22, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x02, 0x69, 0x64, 0x22, 0xb2, 0x03, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x6f,
0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x06, 0x72, 0x65, 0x67,
0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f,
0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03,
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3b,
0x0a, 0x0f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65,
0x67, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x0e, 0x75, 0x70, 0x6c,
0x69, 0x6e, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x72,
0x78, 0x31, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08,
0x72, 0x78, 0x31, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x22, 0x0a, 0x0d, 0x72, 0x78, 0x31, 0x5f,
0x64, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x0b, 0x72, 0x78, 0x31, 0x44, 0x72, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x15, 0x0a, 0x06,
0x72, 0x78, 0x32, 0x5f, 0x64, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x72, 0x78,
0x32, 0x44, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x78, 0x32, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75,
0x65, 0x6e, 0x63, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x72, 0x78, 0x32, 0x46,
0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x2e, 0x0a, 0x14, 0x63, 0x6c, 0x61, 0x73,
0x73, 0x5f, 0x62, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x64, 0x72,
0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x50, 0x69,
0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x44, 0x72, 0x12, 0x3c, 0x0a, 0x1b, 0x63, 0x6c, 0x61, 0x73,
0x73, 0x5f, 0x62, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x66, 0x72,
0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x17, 0x63,
0x6c, 0x61, 0x73, 0x73, 0x42, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x46, 0x72, 0x65,
0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73,
0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5b, 0x0a, 0x0d, 0x52, 0x65, 0x67, 0x69,
0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65,
0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x66, 0x72,
0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x15, 0x0a, 0x06, 0x64, 0x72, 0x5f, 0x6d, 0x69,
0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x64, 0x72, 0x4d, 0x69, 0x6e, 0x12, 0x15,
0x0a, 0x06, 0x64, 0x72, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05,
0x64, 0x72, 0x4d, 0x61, 0x78, 0x22, 0x2e, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73,
0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0xb9, 0x09, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e,
0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x4c, 0x6f, 0x67,
0x69, 0x6e, 0x12, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x67, 0x69,
0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x07, 0x50,
0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x14,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0c, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x6c, 0x6f,
0x62, 0x61, 0x6c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x65, 0x61,
0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a,
0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72,
0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70,
0x69, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74,
0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69,
0x73, 0x74, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x69, 0x4b, 0x65,
0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x08,
0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
0x1a, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x12, 0x4f, 0x70, 0x65,
0x6e, 0x49, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12,
0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x43, 0x6f, 0x6e, 0x6e,
0x65, 0x63, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x43, 0x6f, 0x6e, 0x6e,
0x65, 0x63, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x22, 0x00, 0x12, 0x42, 0x0a, 0x0b, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x4c, 0x6f, 0x67, 0x69,
0x6e, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x4c, 0x6f,
0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x1d, 0x2e, 0x61, 0x70,
0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x43, 0x6f, 0x6e,
0x6e, 0x65, 0x63, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x43, 0x6f, 0x6e,
0x6e, 0x65, 0x63, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0b, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x4c, 0x6f, 0x67,
0x69, 0x6e, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x4c,
0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x1d, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d,
0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d,
0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61,
0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x12,
0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61,
0x72, 0x79, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65,
0x77, 0x61, 0x79, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65,
0x77, 0x61, 0x79, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47,
0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79,
0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x00, 0x30, 0x01, 0x12,
0x46, 0x0a, 0x12, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46,
0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x72, 0x65,
0x61, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x67, 0x49,
0x74, 0x65, 0x6d, 0x22, 0x00, 0x30, 0x01, 0x12, 0x46, 0x0a, 0x12, 0x53, 0x74, 0x72, 0x65, 0x61,
0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1e, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x00, 0x30, 0x01, 0x12,
0x41, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73,
0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x22, 0x00, 0x12, 0x3c, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12,
0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74,
0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
0x12, 0x3f, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74,
0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
0x00, 0x42, 0x65, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61,
0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0d, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63,
0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f,
0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0xaa, 0x02, 0x0e, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73,
0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a,
0x12, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x53, 0x75, 0x6d, 0x6d,
0x61, 0x72, 0x79, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74,
0x65, 0x77, 0x61, 0x79, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74,
0x65, 0x77, 0x61, 0x79, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61,
0x79, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x00, 0x30, 0x01,
0x12, 0x46, 0x0a, 0x12, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x72,
0x65, 0x61, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x67,
0x49, 0x74, 0x65, 0x6d, 0x22, 0x00, 0x30, 0x01, 0x12, 0x46, 0x0a, 0x12, 0x53, 0x74, 0x72, 0x65,
0x61, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1e,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63,
0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x00, 0x30, 0x01,
0x12, 0x41, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x12,
0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69,
0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e,
0x12, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65,
0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
0x00, 0x12, 0x3f, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65,
0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x22, 0x00, 0x42, 0x93, 0x01, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73,
0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0d, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e,
0x61, 0x6c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75,
0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b,
0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f,
0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0xaa, 0x02, 0x0e, 0x43, 0x68, 0x69, 0x72,
0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70, 0x69, 0xca, 0x02, 0x0e, 0x43, 0x68, 0x69,
0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x41, 0x70, 0x69, 0xe2, 0x02, 0x1a, 0x47, 0x50,
0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5c, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73,
0x74, 0x61, 0x63, 0x6b, 0x5c, 0x41, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc-gen-go v1.34.1
// protoc v4.24.4
// source: api/multicast_group.proto
@ -1654,14 +1654,17 @@ var file_api_multicast_group_proto_rawDesc = []byte{
0x32, 0x12, 0x30, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73,
0x74, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63,
0x61, 0x73, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x71, 0x75,
0x65, 0x75, 0x65, 0x42, 0x6b, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73,
0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x13, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63,
0x61, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a,
0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72,
0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63,
0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0xaa,
0x02, 0x0e, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70, 0x69,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x65, 0x75, 0x65, 0x42, 0x99, 0x01, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70,
0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x13, 0x4d, 0x75, 0x6c, 0x74, 0x69,
0x63, 0x61, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69,
0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61,
0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69,
0xaa, 0x02, 0x0e, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70,
0x69, 0xca, 0x02, 0x0e, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x41,
0x70, 0x69, 0xe2, 0x02, 0x1a, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
0x5c, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x41, 0x70, 0x69, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc-gen-go v1.34.1
// protoc v4.24.4
// source: api/relay.proto
@ -595,14 +595,17 @@ var file_api_relay_proto_rawDesc = []byte{
0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4,
0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x73,
0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x7d,
0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x42, 0x62, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63,
0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0a, 0x52,
0x65, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74,
0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61,
0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70,
0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0xaa, 0x02, 0x0e, 0x43, 0x68,
0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x42, 0x90, 0x01, 0x0a, 0x11, 0x69, 0x6f, 0x2e,
0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0a,
0x52, 0x65, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69,
0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74,
0x61, 0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61,
0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0xaa, 0x02, 0x0e, 0x43,
0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70, 0x69, 0xca, 0x02, 0x0e,
0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x41, 0x70, 0x69, 0xe2, 0x02,
0x1a, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5c, 0x43, 0x68, 0x69,
0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x41, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x33,
}
var (

View File

@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc-gen-go v1.34.1
// protoc v4.24.4
// source: api/tenant.proto
@ -1565,14 +1565,16 @@ var file_api_tenant_proto_rawDesc = []byte{
0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3,
0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e,
0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75,
0x73, 0x65, 0x72, 0x73, 0x42, 0x63, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70,
0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0b, 0x54, 0x65, 0x6e, 0x61, 0x6e,
0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f,
0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67,
0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0xaa, 0x02, 0x0e, 0x43, 0x68, 0x69, 0x72, 0x70,
0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
0x73, 0x65, 0x72, 0x73, 0x42, 0x91, 0x01, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72,
0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0b, 0x54, 0x65, 0x6e, 0x61,
0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75,
0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b,
0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f,
0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0xaa, 0x02, 0x0e, 0x43, 0x68, 0x69, 0x72,
0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70, 0x69, 0xca, 0x02, 0x0e, 0x43, 0x68, 0x69,
0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x41, 0x70, 0x69, 0xe2, 0x02, 0x1a, 0x47, 0x50,
0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5c, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73,
0x74, 0x61, 0x63, 0x6b, 0x5c, 0x41, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

21
api/go/api/user.pb.go vendored
View File

@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc-gen-go v1.34.1
// protoc v4.24.4
// source: api/user.proto
@ -891,14 +891,17 @@ var file_api_user_proto_rawDesc = []byte{
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
0x70, 0x74, 0x79, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x22, 0x1d,
0x2f, 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72,
0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x42, 0x61, 0x0a,
0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61,
0x70, 0x69, 0x42, 0x09, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a,
0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72,
0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63,
0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0xaa,
0x02, 0x0e, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70, 0x69,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x42, 0x8f, 0x01,
0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e,
0x61, 0x70, 0x69, 0x42, 0x09, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69,
0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61,
0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69,
0xaa, 0x02, 0x0e, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70,
0x69, 0xca, 0x02, 0x0e, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x41,
0x70, 0x69, 0xe2, 0x02, 0x1a, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
0x5c, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x41, 0x70, 0x69, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc-gen-go v1.34.1
// protoc v4.24.4
// source: common/common.proto
@ -1076,14 +1076,17 @@ var file_common_common_proto_rawDesc = []byte{
0x01, 0x2a, 0x34, 0x0a, 0x0b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73,
0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x41, 0x10, 0x00, 0x12, 0x0b, 0x0a,
0x07, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x42, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4c,
0x41, 0x53, 0x53, 0x5f, 0x43, 0x10, 0x02, 0x42, 0x69, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68,
0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0b, 0x43, 0x6f,
0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x67, 0x69, 0x74,
0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61,
0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70,
0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0xaa, 0x02,
0x11, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x43, 0x6f, 0x6d, 0x6d,
0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x41, 0x53, 0x53, 0x5f, 0x43, 0x10, 0x02, 0x42, 0x9d, 0x01, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63,
0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0b, 0x43,
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x67, 0x69,
0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74,
0x61, 0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61,
0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0xaa,
0x02, 0x11, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x43, 0x6f, 0x6d,
0x6d, 0x6f, 0x6e, 0xca, 0x02, 0x11, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b,
0x5c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0xe2, 0x02, 0x1d, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74,
0x61, 0x64, 0x61, 0x74, 0x61, 0x5c, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b,
0x5c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

374
api/go/gw/gw.pb.go vendored
View File

@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc-gen-go v1.34.1
// protoc v4.24.4
// source: gw/gw.proto
@ -3548,6 +3548,148 @@ func (x *ConnState) GetState() ConnState_State {
return ConnState_OFFLINE
}
// Gateway Mesh heartbeat (sent periodically by the Relay Gateways).
type MeshHeartbeat struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Gateway ID (of the Border Gateway).
GatewayId string `protobuf:"bytes,1,opt,name=gateway_id,json=gatewayId,proto3" json:"gateway_id,omitempty"`
// Relay ID.
RelayId string `protobuf:"bytes,2,opt,name=relay_id,json=relayId,proto3" json:"relay_id,omitempty"`
// Timestamp (second precision).
Time *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=time,proto3" json:"time,omitempty"`
// Relay path.
RelayPath []*MeshHeartbeatRelayPath `protobuf:"bytes,4,rep,name=relay_path,json=relayPath,proto3" json:"relay_path,omitempty"`
}
func (x *MeshHeartbeat) Reset() {
*x = MeshHeartbeat{}
if protoimpl.UnsafeEnabled {
mi := &file_gw_gw_proto_msgTypes[35]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MeshHeartbeat) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MeshHeartbeat) ProtoMessage() {}
func (x *MeshHeartbeat) ProtoReflect() protoreflect.Message {
mi := &file_gw_gw_proto_msgTypes[35]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use MeshHeartbeat.ProtoReflect.Descriptor instead.
func (*MeshHeartbeat) Descriptor() ([]byte, []int) {
return file_gw_gw_proto_rawDescGZIP(), []int{35}
}
func (x *MeshHeartbeat) GetGatewayId() string {
if x != nil {
return x.GatewayId
}
return ""
}
func (x *MeshHeartbeat) GetRelayId() string {
if x != nil {
return x.RelayId
}
return ""
}
func (x *MeshHeartbeat) GetTime() *timestamppb.Timestamp {
if x != nil {
return x.Time
}
return nil
}
func (x *MeshHeartbeat) GetRelayPath() []*MeshHeartbeatRelayPath {
if x != nil {
return x.RelayPath
}
return nil
}
type MeshHeartbeatRelayPath struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Relay ID.
RelayId string `protobuf:"bytes,1,opt,name=relay_id,json=relayId,proto3" json:"relay_id,omitempty"`
// RSSI.
Rssi int32 `protobuf:"varint,2,opt,name=rssi,proto3" json:"rssi,omitempty"`
// SNR.
Snr int32 `protobuf:"varint,3,opt,name=snr,proto3" json:"snr,omitempty"`
}
func (x *MeshHeartbeatRelayPath) Reset() {
*x = MeshHeartbeatRelayPath{}
if protoimpl.UnsafeEnabled {
mi := &file_gw_gw_proto_msgTypes[36]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MeshHeartbeatRelayPath) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MeshHeartbeatRelayPath) ProtoMessage() {}
func (x *MeshHeartbeatRelayPath) ProtoReflect() protoreflect.Message {
mi := &file_gw_gw_proto_msgTypes[36]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use MeshHeartbeatRelayPath.ProtoReflect.Descriptor instead.
func (*MeshHeartbeatRelayPath) Descriptor() ([]byte, []int) {
return file_gw_gw_proto_rawDescGZIP(), []int{36}
}
func (x *MeshHeartbeatRelayPath) GetRelayId() string {
if x != nil {
return x.RelayId
}
return ""
}
func (x *MeshHeartbeatRelayPath) GetRssi() int32 {
if x != nil {
return x.Rssi
}
return 0
}
func (x *MeshHeartbeatRelayPath) GetSnr() int32 {
if x != nil {
return x.Snr
}
return 0
}
var File_gw_gw_proto protoreflect.FileDescriptor
var file_gw_gw_proto_rawDesc = []byte{
@ -4116,50 +4258,70 @@ var file_gw_gw_proto_rawDesc = []byte{
0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74,
0x61, 0x74, 0x65, 0x22, 0x20, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07,
0x4f, 0x46, 0x46, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x4e, 0x4c,
0x49, 0x4e, 0x45, 0x10, 0x01, 0x2a, 0xb5, 0x01, 0x0a, 0x08, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x61,
0x74, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x52, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e,
0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x5f, 0x34, 0x5f, 0x35, 0x10, 0x01,
0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x5f, 0x34, 0x5f, 0x36, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06,
0x43, 0x52, 0x5f, 0x34, 0x5f, 0x37, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x5f, 0x34,
0x5f, 0x38, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x5f, 0x33, 0x5f, 0x38, 0x10, 0x05,
0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x5f, 0x32, 0x5f, 0x36, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06,
0x43, 0x52, 0x5f, 0x31, 0x5f, 0x34, 0x10, 0x07, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x5f, 0x31,
0x5f, 0x36, 0x10, 0x08, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x5f, 0x35, 0x5f, 0x36, 0x10, 0x09,
0x12, 0x0d, 0x0a, 0x09, 0x43, 0x52, 0x5f, 0x4c, 0x49, 0x5f, 0x34, 0x5f, 0x35, 0x10, 0x0a, 0x12,
0x0d, 0x0a, 0x09, 0x43, 0x52, 0x5f, 0x4c, 0x49, 0x5f, 0x34, 0x5f, 0x36, 0x10, 0x0b, 0x12, 0x0d,
0x0a, 0x09, 0x43, 0x52, 0x5f, 0x4c, 0x49, 0x5f, 0x34, 0x5f, 0x38, 0x10, 0x0c, 0x2a, 0x3b, 0x0a,
0x0e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x12,
0x0f, 0x0a, 0x0b, 0x49, 0x4d, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x54, 0x45, 0x4c, 0x59, 0x10, 0x00,
0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x47,
0x50, 0x53, 0x5f, 0x45, 0x50, 0x4f, 0x43, 0x48, 0x10, 0x02, 0x2a, 0x37, 0x0a, 0x11, 0x46, 0x69,
0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12,
0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x4e, 0x43,
0x52, 0x59, 0x50, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x4c, 0x41, 0x49,
0x4e, 0x10, 0x02, 0x2a, 0x30, 0x0a, 0x09, 0x43, 0x52, 0x43, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x5f, 0x43, 0x52, 0x43, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07,
0x42, 0x41, 0x44, 0x5f, 0x43, 0x52, 0x43, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x43,
0x5f, 0x4f, 0x4b, 0x10, 0x02, 0x2a, 0xd5, 0x01, 0x0a, 0x0b, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x53,
0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45, 0x44,
0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x4f,
0x4f, 0x5f, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x4f, 0x4f, 0x5f,
0x45, 0x41, 0x52, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4c, 0x4c, 0x49,
0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x04, 0x12, 0x14, 0x0a,
0x10, 0x43, 0x4f, 0x4c, 0x4c, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f,
0x4e, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x58, 0x5f, 0x46, 0x52, 0x45, 0x51, 0x10, 0x06,
0x12, 0x0c, 0x0a, 0x08, 0x54, 0x58, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x10, 0x07, 0x12, 0x10,
0x0a, 0x0c, 0x47, 0x50, 0x53, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x08,
0x12, 0x0e, 0x0a, 0x0a, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x09,
0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52,
0x4f, 0x52, 0x10, 0x0a, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43,
0x4c, 0x45, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x0b, 0x42, 0x6a, 0x0a,
0x14, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x67, 0x77, 0x42, 0x0c, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x50, 0x72,
0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69,
0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76,
0x34, 0x2f, 0x67, 0x77, 0xaa, 0x02, 0x12, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63,
0x6b, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
0x49, 0x4e, 0x45, 0x10, 0x01, 0x22, 0xb4, 0x01, 0x0a, 0x0d, 0x4d, 0x65, 0x73, 0x68, 0x48, 0x65,
0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77,
0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61, 0x74,
0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x5f,
0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x49,
0x64, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d,
0x65, 0x12, 0x39, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18,
0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x77, 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x48,
0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x50, 0x61, 0x74,
0x68, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x50, 0x61, 0x74, 0x68, 0x22, 0x59, 0x0a, 0x16,
0x4d, 0x65, 0x73, 0x68, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x52, 0x65, 0x6c,
0x61, 0x79, 0x50, 0x61, 0x74, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x5f,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x49,
0x64, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x73, 0x73, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
0x04, 0x72, 0x73, 0x73, 0x69, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x6e, 0x72, 0x18, 0x03, 0x20, 0x01,
0x28, 0x05, 0x52, 0x03, 0x73, 0x6e, 0x72, 0x2a, 0xb5, 0x01, 0x0a, 0x08, 0x43, 0x6f, 0x64, 0x65,
0x52, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x52, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46,
0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x5f, 0x34, 0x5f, 0x35,
0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x5f, 0x34, 0x5f, 0x36, 0x10, 0x02, 0x12, 0x0a,
0x0a, 0x06, 0x43, 0x52, 0x5f, 0x34, 0x5f, 0x37, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52,
0x5f, 0x34, 0x5f, 0x38, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x5f, 0x33, 0x5f, 0x38,
0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x5f, 0x32, 0x5f, 0x36, 0x10, 0x06, 0x12, 0x0a,
0x0a, 0x06, 0x43, 0x52, 0x5f, 0x31, 0x5f, 0x34, 0x10, 0x07, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52,
0x5f, 0x31, 0x5f, 0x36, 0x10, 0x08, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x5f, 0x35, 0x5f, 0x36,
0x10, 0x09, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x52, 0x5f, 0x4c, 0x49, 0x5f, 0x34, 0x5f, 0x35, 0x10,
0x0a, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x52, 0x5f, 0x4c, 0x49, 0x5f, 0x34, 0x5f, 0x36, 0x10, 0x0b,
0x12, 0x0d, 0x0a, 0x09, 0x43, 0x52, 0x5f, 0x4c, 0x49, 0x5f, 0x34, 0x5f, 0x38, 0x10, 0x0c, 0x2a,
0x3b, 0x0a, 0x0e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x69, 0x6d, 0x69, 0x6e,
0x67, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4d, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x54, 0x45, 0x4c, 0x59,
0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x10, 0x01, 0x12, 0x0d, 0x0a,
0x09, 0x47, 0x50, 0x53, 0x5f, 0x45, 0x50, 0x4f, 0x43, 0x48, 0x10, 0x02, 0x2a, 0x37, 0x0a, 0x11,
0x46, 0x69, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x54, 0x79, 0x70,
0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x45,
0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x4c,
0x41, 0x49, 0x4e, 0x10, 0x02, 0x2a, 0x30, 0x0a, 0x09, 0x43, 0x52, 0x43, 0x53, 0x74, 0x61, 0x74,
0x75, 0x73, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x5f, 0x43, 0x52, 0x43, 0x10, 0x00, 0x12, 0x0b,
0x0a, 0x07, 0x42, 0x41, 0x44, 0x5f, 0x43, 0x52, 0x43, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43,
0x52, 0x43, 0x5f, 0x4f, 0x4b, 0x10, 0x02, 0x2a, 0xd5, 0x01, 0x0a, 0x0b, 0x54, 0x78, 0x41, 0x63,
0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x47, 0x4e, 0x4f, 0x52,
0x45, 0x44, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08,
0x54, 0x4f, 0x4f, 0x5f, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x4f,
0x4f, 0x5f, 0x45, 0x41, 0x52, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4c,
0x4c, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x04, 0x12,
0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4c, 0x4c, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x45, 0x41,
0x43, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x58, 0x5f, 0x46, 0x52, 0x45, 0x51,
0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x58, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x10, 0x07,
0x12, 0x10, 0x0a, 0x0c, 0x47, 0x50, 0x53, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44,
0x10, 0x08, 0x12, 0x0e, 0x0a, 0x0a, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x46, 0x55, 0x4c, 0x4c,
0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x45,
0x52, 0x52, 0x4f, 0x52, 0x10, 0x0a, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43,
0x59, 0x43, 0x4c, 0x45, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x0b, 0x42,
0xa0, 0x01, 0x0a, 0x14, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63,
0x6b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x67, 0x77, 0x42, 0x0c, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61,
0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f,
0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67,
0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x67, 0x77, 0xaa, 0x02, 0x12, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73,
0x74, 0x61, 0x63, 0x6b, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0xca, 0x02, 0x12, 0x43,
0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61,
0x79, 0xe2, 0x02, 0x1e, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5c,
0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x47, 0x61, 0x74, 0x65, 0x77,
0x61, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -4175,7 +4337,7 @@ func file_gw_gw_proto_rawDescGZIP() []byte {
}
var file_gw_gw_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
var file_gw_gw_proto_msgTypes = make([]protoimpl.MessageInfo, 42)
var file_gw_gw_proto_msgTypes = make([]protoimpl.MessageInfo, 44)
var file_gw_gw_proto_goTypes = []interface{}{
(CodeRate)(0), // 0: gw.CodeRate
(DownlinkTiming)(0), // 1: gw.DownlinkTiming
@ -4218,62 +4380,64 @@ var file_gw_gw_proto_goTypes = []interface{}{
(*RawPacketForwarderEvent)(nil), // 38: gw.RawPacketForwarderEvent
(*RawPacketForwarderCommand)(nil), // 39: gw.RawPacketForwarderCommand
(*ConnState)(nil), // 40: gw.ConnState
nil, // 41: gw.GatewayStats.MetadataEntry
nil, // 42: gw.GatewayStats.TxPacketsPerFrequencyEntry
nil, // 43: gw.GatewayStats.RxPacketsPerFrequencyEntry
nil, // 44: gw.GatewayStats.TxPacketsPerStatusEntry
nil, // 45: gw.UplinkRxInfoLegacy.MetadataEntry
nil, // 46: gw.UplinkRxInfo.MetadataEntry
nil, // 47: gw.GatewayCommandExecRequest.EnvironmentEntry
(common.Modulation)(0), // 48: common.Modulation
(*timestamppb.Timestamp)(nil), // 49: google.protobuf.Timestamp
(*common.Location)(nil), // 50: common.Location
(common.Regulation)(0), // 51: common.Regulation
(*durationpb.Duration)(nil), // 52: google.protobuf.Duration
(*MeshHeartbeat)(nil), // 41: gw.MeshHeartbeat
(*MeshHeartbeatRelayPath)(nil), // 42: gw.MeshHeartbeatRelayPath
nil, // 43: gw.GatewayStats.MetadataEntry
nil, // 44: gw.GatewayStats.TxPacketsPerFrequencyEntry
nil, // 45: gw.GatewayStats.RxPacketsPerFrequencyEntry
nil, // 46: gw.GatewayStats.TxPacketsPerStatusEntry
nil, // 47: gw.UplinkRxInfoLegacy.MetadataEntry
nil, // 48: gw.UplinkRxInfo.MetadataEntry
nil, // 49: gw.GatewayCommandExecRequest.EnvironmentEntry
(common.Modulation)(0), // 50: common.Modulation
(*timestamppb.Timestamp)(nil), // 51: google.protobuf.Timestamp
(*common.Location)(nil), // 52: common.Location
(common.Regulation)(0), // 53: common.Regulation
(*durationpb.Duration)(nil), // 54: google.protobuf.Duration
}
var file_gw_gw_proto_depIdxs = []int32{
9, // 0: gw.Modulation.lora:type_name -> gw.LoraModulationInfo
10, // 1: gw.Modulation.fsk:type_name -> gw.FskModulationInfo
11, // 2: gw.Modulation.lr_fhss:type_name -> gw.LrFhssModulationInfo
48, // 3: gw.UplinkTxInfoLegacy.modulation:type_name -> common.Modulation
50, // 3: gw.UplinkTxInfoLegacy.modulation:type_name -> common.Modulation
9, // 4: gw.UplinkTxInfoLegacy.lora_modulation_info:type_name -> gw.LoraModulationInfo
10, // 5: gw.UplinkTxInfoLegacy.fsk_modulation_info:type_name -> gw.FskModulationInfo
11, // 6: gw.UplinkTxInfoLegacy.lr_fhss_modulation_info:type_name -> gw.LrFhssModulationInfo
6, // 7: gw.UplinkTxInfo.modulation:type_name -> gw.Modulation
0, // 8: gw.LoraModulationInfo.code_rate:type_name -> gw.CodeRate
0, // 9: gw.LrFhssModulationInfo.code_rate:type_name -> gw.CodeRate
49, // 10: gw.PlainFineTimestamp.time:type_name -> google.protobuf.Timestamp
49, // 11: gw.GatewayStats.time:type_name -> google.protobuf.Timestamp
50, // 12: gw.GatewayStats.location:type_name -> common.Location
41, // 13: gw.GatewayStats.metadata:type_name -> gw.GatewayStats.MetadataEntry
42, // 14: gw.GatewayStats.tx_packets_per_frequency:type_name -> gw.GatewayStats.TxPacketsPerFrequencyEntry
43, // 15: gw.GatewayStats.rx_packets_per_frequency:type_name -> gw.GatewayStats.RxPacketsPerFrequencyEntry
51, // 10: gw.PlainFineTimestamp.time:type_name -> google.protobuf.Timestamp
51, // 11: gw.GatewayStats.time:type_name -> google.protobuf.Timestamp
52, // 12: gw.GatewayStats.location:type_name -> common.Location
43, // 13: gw.GatewayStats.metadata:type_name -> gw.GatewayStats.MetadataEntry
44, // 14: gw.GatewayStats.tx_packets_per_frequency:type_name -> gw.GatewayStats.TxPacketsPerFrequencyEntry
45, // 15: gw.GatewayStats.rx_packets_per_frequency:type_name -> gw.GatewayStats.RxPacketsPerFrequencyEntry
15, // 16: gw.GatewayStats.tx_packets_per_modulation:type_name -> gw.PerModulationCount
15, // 17: gw.GatewayStats.rx_packets_per_modulation:type_name -> gw.PerModulationCount
44, // 18: gw.GatewayStats.tx_packets_per_status:type_name -> gw.GatewayStats.TxPacketsPerStatusEntry
46, // 18: gw.GatewayStats.tx_packets_per_status:type_name -> gw.GatewayStats.TxPacketsPerStatusEntry
16, // 19: gw.GatewayStats.duty_cycle_stats:type_name -> gw.DutyCycleStats
6, // 20: gw.PerModulationCount.modulation:type_name -> gw.Modulation
51, // 21: gw.DutyCycleStats.regulation:type_name -> common.Regulation
52, // 22: gw.DutyCycleStats.window:type_name -> google.protobuf.Duration
53, // 21: gw.DutyCycleStats.regulation:type_name -> common.Regulation
54, // 22: gw.DutyCycleStats.window:type_name -> google.protobuf.Duration
17, // 23: gw.DutyCycleStats.bands:type_name -> gw.DutyCycleBand
52, // 24: gw.DutyCycleBand.load_max:type_name -> google.protobuf.Duration
52, // 25: gw.DutyCycleBand.load_tracked:type_name -> google.protobuf.Duration
49, // 26: gw.UplinkRxInfoLegacy.time:type_name -> google.protobuf.Timestamp
52, // 27: gw.UplinkRxInfoLegacy.time_since_gps_epoch:type_name -> google.protobuf.Duration
50, // 28: gw.UplinkRxInfoLegacy.location:type_name -> common.Location
54, // 24: gw.DutyCycleBand.load_max:type_name -> google.protobuf.Duration
54, // 25: gw.DutyCycleBand.load_tracked:type_name -> google.protobuf.Duration
51, // 26: gw.UplinkRxInfoLegacy.time:type_name -> google.protobuf.Timestamp
54, // 27: gw.UplinkRxInfoLegacy.time_since_gps_epoch:type_name -> google.protobuf.Duration
52, // 28: gw.UplinkRxInfoLegacy.location:type_name -> common.Location
2, // 29: gw.UplinkRxInfoLegacy.fine_timestamp_type:type_name -> gw.FineTimestampType
12, // 30: gw.UplinkRxInfoLegacy.encrypted_fine_timestamp:type_name -> gw.EncryptedFineTimestamp
13, // 31: gw.UplinkRxInfoLegacy.plain_fine_timestamp:type_name -> gw.PlainFineTimestamp
3, // 32: gw.UplinkRxInfoLegacy.crc_status:type_name -> gw.CRCStatus
45, // 33: gw.UplinkRxInfoLegacy.metadata:type_name -> gw.UplinkRxInfoLegacy.MetadataEntry
49, // 34: gw.UplinkRxInfo.gw_time:type_name -> google.protobuf.Timestamp
49, // 35: gw.UplinkRxInfo.ns_time:type_name -> google.protobuf.Timestamp
52, // 36: gw.UplinkRxInfo.time_since_gps_epoch:type_name -> google.protobuf.Duration
52, // 37: gw.UplinkRxInfo.fine_time_since_gps_epoch:type_name -> google.protobuf.Duration
50, // 38: gw.UplinkRxInfo.location:type_name -> common.Location
46, // 39: gw.UplinkRxInfo.metadata:type_name -> gw.UplinkRxInfo.MetadataEntry
47, // 33: gw.UplinkRxInfoLegacy.metadata:type_name -> gw.UplinkRxInfoLegacy.MetadataEntry
51, // 34: gw.UplinkRxInfo.gw_time:type_name -> google.protobuf.Timestamp
51, // 35: gw.UplinkRxInfo.ns_time:type_name -> google.protobuf.Timestamp
54, // 36: gw.UplinkRxInfo.time_since_gps_epoch:type_name -> google.protobuf.Duration
54, // 37: gw.UplinkRxInfo.fine_time_since_gps_epoch:type_name -> google.protobuf.Duration
52, // 38: gw.UplinkRxInfo.location:type_name -> common.Location
48, // 39: gw.UplinkRxInfo.metadata:type_name -> gw.UplinkRxInfo.MetadataEntry
3, // 40: gw.UplinkRxInfo.crc_status:type_name -> gw.CRCStatus
48, // 41: gw.DownlinkTxInfoLegacy.modulation:type_name -> common.Modulation
50, // 41: gw.DownlinkTxInfoLegacy.modulation:type_name -> common.Modulation
9, // 42: gw.DownlinkTxInfoLegacy.lora_modulation_info:type_name -> gw.LoraModulationInfo
10, // 43: gw.DownlinkTxInfoLegacy.fsk_modulation_info:type_name -> gw.FskModulationInfo
1, // 44: gw.DownlinkTxInfoLegacy.timing:type_name -> gw.DownlinkTiming
@ -4285,8 +4449,8 @@ var file_gw_gw_proto_depIdxs = []int32{
23, // 50: gw.Timing.immediately:type_name -> gw.ImmediatelyTimingInfo
24, // 51: gw.Timing.delay:type_name -> gw.DelayTimingInfo
25, // 52: gw.Timing.gps_epoch:type_name -> gw.GPSEpochTimingInfo
52, // 53: gw.DelayTimingInfo.delay:type_name -> google.protobuf.Duration
52, // 54: gw.GPSEpochTimingInfo.time_since_gps_epoch:type_name -> google.protobuf.Duration
54, // 53: gw.DelayTimingInfo.delay:type_name -> google.protobuf.Duration
54, // 54: gw.GPSEpochTimingInfo.time_since_gps_epoch:type_name -> google.protobuf.Duration
7, // 55: gw.UplinkFrame.tx_info_legacy:type_name -> gw.UplinkTxInfoLegacy
18, // 56: gw.UplinkFrame.rx_info_legacy:type_name -> gw.UplinkRxInfoLegacy
8, // 57: gw.UplinkFrame.tx_info:type_name -> gw.UplinkTxInfo
@ -4299,17 +4463,19 @@ var file_gw_gw_proto_depIdxs = []int32{
31, // 64: gw.DownlinkTxAck.items:type_name -> gw.DownlinkTxAckItem
4, // 65: gw.DownlinkTxAckItem.status:type_name -> gw.TxAckStatus
33, // 66: gw.GatewayConfiguration.channels:type_name -> gw.ChannelConfiguration
52, // 67: gw.GatewayConfiguration.stats_interval:type_name -> google.protobuf.Duration
48, // 68: gw.ChannelConfiguration.modulation_legacy:type_name -> common.Modulation
54, // 67: gw.GatewayConfiguration.stats_interval:type_name -> google.protobuf.Duration
50, // 68: gw.ChannelConfiguration.modulation_legacy:type_name -> common.Modulation
34, // 69: gw.ChannelConfiguration.lora_modulation_config:type_name -> gw.LoraModulationConfig
35, // 70: gw.ChannelConfiguration.fsk_modulation_config:type_name -> gw.FskModulationConfig
47, // 71: gw.GatewayCommandExecRequest.environment:type_name -> gw.GatewayCommandExecRequest.EnvironmentEntry
49, // 71: gw.GatewayCommandExecRequest.environment:type_name -> gw.GatewayCommandExecRequest.EnvironmentEntry
5, // 72: gw.ConnState.state:type_name -> gw.ConnState.State
73, // [73:73] is the sub-list for method output_type
73, // [73:73] is the sub-list for method input_type
73, // [73:73] is the sub-list for extension type_name
73, // [73:73] is the sub-list for extension extendee
0, // [0:73] is the sub-list for field type_name
51, // 73: gw.MeshHeartbeat.time:type_name -> google.protobuf.Timestamp
42, // 74: gw.MeshHeartbeat.relay_path:type_name -> gw.MeshHeartbeatRelayPath
75, // [75:75] is the sub-list for method output_type
75, // [75:75] is the sub-list for method input_type
75, // [75:75] is the sub-list for extension type_name
75, // [75:75] is the sub-list for extension extendee
0, // [0:75] is the sub-list for field type_name
}
func init() { file_gw_gw_proto_init() }
@ -4738,6 +4904,30 @@ func file_gw_gw_proto_init() {
return nil
}
}
file_gw_gw_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MeshHeartbeat); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_gw_gw_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MeshHeartbeatRelayPath); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_gw_gw_proto_msgTypes[0].OneofWrappers = []interface{}{
(*Modulation_Lora)(nil),
@ -4775,7 +4965,7 @@ func file_gw_gw_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_gw_gw_proto_rawDesc,
NumEnums: 6,
NumMessages: 42,
NumMessages: 44,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc-gen-go v1.34.1
// protoc v4.24.4
// source: integration/integration.proto
@ -1581,7 +1581,7 @@ var file_integration_integration_proto_rawDesc = []byte{
0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x10, 0x08, 0x12, 0x18,
0x0a, 0x14, 0x52, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x45, 0x4e, 0x44, 0x5f,
0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x46, 0x5f, 0x43, 0x4e,
0x54, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x0a, 0x42, 0x81, 0x01, 0x0a, 0x1d, 0x69, 0x6f, 0x2e,
0x54, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x0a, 0x42, 0xbf, 0x01, 0x0a, 0x1d, 0x69, 0x6f, 0x2e,
0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69,
0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x10, 0x49, 0x6e, 0x74, 0x65,
0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x33,
@ -1589,8 +1589,12 @@ var file_integration_integration_proto_rawDesc = []byte{
0x61, 0x72, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70,
0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0xaa, 0x02, 0x16, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b,
0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x16, 0x43,
0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x22, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64,
0x61, 0x74, 0x61, 0x5c, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x49,
0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x33,
}
var (

View File

@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc-gen-go v1.34.1
// protoc v4.24.4
// source: stream/api_request.proto
@ -110,15 +110,18 @@ var file_stream_api_request_proto_rawDesc = []byte{
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x74, 0x0a, 0x18, 0x69, 0x6f, 0x2e, 0x63, 0x68,
0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x72,
0x65, 0x61, 0x6d, 0x42, 0x0f, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50,
0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63, 0x68,
0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f,
0x76, 0x34, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xaa, 0x02, 0x11, 0x43, 0x68, 0x69, 0x72,
0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0xa8, 0x01, 0x0a, 0x18, 0x69, 0x6f, 0x2e, 0x63,
0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74,
0x72, 0x65, 0x61, 0x6d, 0x42, 0x0f, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63,
0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f,
0x2f, 0x76, 0x34, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xaa, 0x02, 0x11, 0x43, 0x68, 0x69,
0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xca, 0x02,
0x11, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x53, 0x74, 0x72, 0x65,
0x61, 0x6d, 0xe2, 0x02, 0x1d, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
0x5c, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x53, 0x74, 0x72, 0x65,
0x61, 0x6d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc-gen-go v1.34.1
// protoc v4.24.4
// source: stream/backend_interfaces.proto
@ -170,16 +170,19 @@ var file_stream_backend_interfaces_proto_rawDesc = []byte{
0x72, 0x72, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x42, 0x7b, 0x0a,
0x18, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x16, 0x42, 0x61, 0x63, 0x6b, 0x65,
0x6e, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74,
0x6f, 0x50, 0x01, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70,
0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f,
0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xaa, 0x02, 0x11, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74,
0x61, 0x63, 0x6b, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x33,
0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x42, 0xaf, 0x01,
0x0a, 0x18, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x16, 0x42, 0x61, 0x63, 0x6b,
0x65, 0x6e, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x50, 0x72, 0x6f,
0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72,
0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34,
0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xaa, 0x02, 0x11, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73,
0x74, 0x61, 0x63, 0x6b, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xca, 0x02, 0x11, 0x43, 0x68,
0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xe2,
0x02, 0x1d, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5c, 0x43, 0x68,
0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc-gen-go v1.34.1
// protoc v4.24.4
// source: stream/frame.proto
@ -328,15 +328,18 @@ var file_stream_frame_proto_rawDesc = []byte{
0x65, 0x78, 0x74, 0x46, 0x4f, 0x70, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x6c, 0x61, 0x69,
0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x72, 0x6d, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61,
0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x74, 0x65,
0x78, 0x74, 0x46, 0x72, 0x6d, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x6f, 0x0a, 0x18,
0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x0a, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x50,
0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63, 0x68,
0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f,
0x76, 0x34, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xaa, 0x02, 0x11, 0x43, 0x68, 0x69, 0x72,
0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
0x78, 0x74, 0x46, 0x72, 0x6d, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0xa3, 0x01, 0x0a,
0x18, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x0a, 0x46, 0x72, 0x61, 0x6d, 0x65,
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63,
0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f,
0x2f, 0x76, 0x34, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xaa, 0x02, 0x11, 0x43, 0x68, 0x69,
0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xca, 0x02,
0x11, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x53, 0x74, 0x72, 0x65,
0x61, 0x6d, 0xe2, 0x02, 0x1d, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
0x5c, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c, 0x53, 0x74, 0x72, 0x65,
0x61, 0x6d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc-gen-go v1.34.1
// protoc v4.24.4
// source: stream/meta.proto
@ -288,14 +288,17 @@ var file_stream_meta_proto_rawDesc = []byte{
0x4d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79,
0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64,
0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49,
0x64, 0x42, 0x6e, 0x0a, 0x18, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61,
0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x09, 0x4d,
0x65, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68,
0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63,
0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69,
0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xaa, 0x02, 0x11,
0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61,
0x6d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x64, 0x42, 0xa2, 0x01, 0x0a, 0x18, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74,
0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x09,
0x4d, 0x65, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x67, 0x69, 0x74,
0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61,
0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70,
0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xaa, 0x02,
0x11, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x53, 0x74, 0x72, 0x65,
0x61, 0x6d, 0xca, 0x02, 0x11, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c,
0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xe2, 0x02, 0x1d, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61,
0x64, 0x61, 0x74, 0x61, 0x5c, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5c,
0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

0
api/grpc-web/.npmignore vendored Normal file
View File

View File

@ -1,6 +1,6 @@
{
"name": "@chirpstack/chirpstack-api-grpc-web",
"version": "4.8.0-test.5",
"version": "4.9.0-test.6",
"description": "Chirpstack gRPC-web API",
"license": "MIT",
"devDependencies": {

View File

@ -8,7 +8,7 @@ plugins {
}
group = "io.chirpstack"
version = "4.8.0-test.5"
version = "4.9.0-test.6"
repositories {
mavenCentral()

0
api/js/.npmignore vendored Normal file
View File

2
api/js/package.json vendored
View File

@ -1,6 +1,6 @@
{
"name": "@chirpstack/chirpstack-api",
"version": "4.8.0-test.5",
"version": "4.9.0-test.6",
"description": "Chirpstack JS and TS API",
"license": "MIT",
"devDependencies": {

26
api/js/yarn.lock vendored
View File

@ -3,21 +3,21 @@
"@grpc/grpc-js@^1.10.4":
version "1.10.4"
resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.10.4.tgz#a33f743f69ed531e917c9eafb4fd8bc3e5f2e617"
integrity sha512-MqBisuxTkYvPFnEiu+dag3xG/NBUDzSbAFAWlzfkGnQkjVZ6by3h4atbBc+Ikqup1z5BfB4BN18gKWR1YyppNw==
version "1.10.9"
resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.10.9.tgz#468cc1549a3fe37b760a16745fb7685d91f4f10c"
integrity sha512-5tcgUctCG0qoNyfChZifz2tJqbRbXVO9J7X6duFcOjY3HUNCxg5D0ZCK7EP9vIcZ0zRpLU9bWkyCqVCLZ46IbQ==
dependencies:
"@grpc/proto-loader" "^0.7.10"
"@grpc/proto-loader" "^0.7.13"
"@js-sdsl/ordered-map" "^4.4.2"
"@grpc/proto-loader@^0.7.10":
version "0.7.12"
resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.12.tgz#787b58e3e3771df30b1567c057b6ab89e3a42911"
integrity sha512-DCVwMxqYzpUCiDMl7hQ384FqP4T3DbNpXU8pt681l3UWCip1WUiD5JrkImUwCB9a7f2cq4CUTmi5r/xIMRPY1Q==
"@grpc/proto-loader@^0.7.13":
version "0.7.13"
resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.13.tgz#f6a44b2b7c9f7b609f5748c6eac2d420e37670cf"
integrity sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==
dependencies:
lodash.camelcase "^4.3.0"
long "^5.0.0"
protobufjs "^7.2.4"
protobufjs "^7.2.5"
yargs "^17.7.2"
"@js-sdsl/ordered-map@^4.4.2":
@ -410,10 +410,10 @@ path-is-absolute@^1.0.0:
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
protobufjs@^7.2.4:
version "7.2.6"
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.6.tgz#4a0ccd79eb292717aacf07530a07e0ed20278215"
integrity sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==
protobufjs@^7.2.5:
version "7.3.0"
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.3.0.tgz#a32ec0422c039798c41a0700306a6e305b9cb32c"
integrity sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==
dependencies:
"@protobufjs/aspromise" "^1.1.2"
"@protobufjs/base64" "^1.1.2"

View File

@ -9,7 +9,7 @@ plugins {
}
group = "io.chirpstack"
version = "4.8.0-test.5"
version = "4.9.0-test.6"
repositories {
mavenCentral()

1
api/php/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/generated

40
api/php/Makefile vendored Normal file
View File

@ -0,0 +1,40 @@
.PHONY: requirements common gw api integration stream google
PROTOC_ARGS := -I=../proto --grpc_out=./generated --plugin=protoc-gen-grpc=/usr/bin/grpc_php_plugin --php_out=./generated
all: requirements common gw api integration stream google
requirements:
rm -rf generated
mkdir generated
common:
protoc ${PROTOC_ARGS} common/common.proto
gw:
protoc ${PROTOC_ARGS} gw/gw.proto
api:
protoc ${PROTOC_ARGS} api/internal.proto
protoc ${PROTOC_ARGS} api/user.proto
protoc ${PROTOC_ARGS} api/tenant.proto
protoc ${PROTOC_ARGS} api/application.proto
protoc ${PROTOC_ARGS} api/device_profile.proto
protoc ${PROTOC_ARGS} api/device_profile_template.proto
protoc ${PROTOC_ARGS} api/device.proto
protoc ${PROTOC_ARGS} api/gateway.proto
protoc ${PROTOC_ARGS} api/multicast_group.proto
protoc ${PROTOC_ARGS} api/relay.proto
integration:
protoc ${PROTOC_ARGS} integration/integration.proto
stream:
protoc ${PROTOC_ARGS} stream/meta.proto
protoc ${PROTOC_ARGS} stream/frame.proto
protoc ${PROTOC_ARGS} stream/api_request.proto
protoc ${PROTOC_ARGS} stream/backend_interfaces.proto
google:
protoc ${PROTOC_ARGS} google/api/annotations.proto
protoc ${PROTOC_ARGS} google/api/http.proto

44
api/php/README.md vendored Normal file
View File

@ -0,0 +1,44 @@
# chirpstack-api
ChirpStack gRPC API message and service wrappers for PHP.
## Install
With composer:
```sh
composer require chirpstack/chirpstack-api
```
## Usage
All messages, services, constants, etc. are auto-generated from the ChirpStack protobuf definitions. The result is that
this package structure matches that of the protobuf definitions.
The protobuf definitions can be found here: https://github.com/chirpstack/chirpstack/tree/master/api/proto
## Example
```php
<?php
namespace Test;
use Chirpstack\API\ApplicationServiceClient;
use Chirpstack\API\ListApplicationsRequest;
use Grpc\Channel;
use Grpc\ChannelCredentials;
require dirname(__FILE__) . '/vendor/autoload.php';
function main() {
$channel = new Channel('url', ['credentials' => ChannelCredentials::createInsecure()]);
$client = new ApplicationServiceClient('url', [], $channel);
$request = new ListApplicationsRequest();
$response = $client->List($request);
$data = $response->wait();
print_r($data);
}
main();
```

23
api/php/composer.json vendored Normal file
View File

@ -0,0 +1,23 @@
{
"name": "chirpstack/chirpstack-api",
"description": "Chirpstack PHP API",
"license": "MIT",
"type": "library",
"version": "4.9.0-test.6",
"require": {
"php": ">=7.0.0",
"grpc/grpc": "^v1.57.0",
"google/protobuf": "^v4.27.1"
},
"suggest": {
"ext-grpc": "To make it all work"
},
"autoload": {
"psr-4": {
"Chirpstack\\": "generated/Chirpstack/",
"Google\\": "generated/Google/",
"GPBMetadata\\Chirpstack\\": "generated/GPBMetadata/Chirpstack/",
"GPBMetadata\\Google\\": "generated/GPBMetadata/Google/"
}
}
}

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "ApplicationProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "DeviceProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "common/common.proto";
import "google/api/annotations.proto";
@ -382,6 +384,8 @@ message DeviceActivation {
string app_s_key = 3;
// Network session encryption key (HEX encoded).
// Note: For ABP in LoRaWAN 1.0.x, use this, the serving and the forwarding
// network session integrity key fields with the LoRaWAN 1.0.x 'NwkSKey`!
string nwk_s_enc_key = 4;
// Serving network session integrity key (HEX encoded).

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "DeviceProfileProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "DeviceProfileTemplateProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "GatewayProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";
@ -73,6 +75,35 @@ service GatewayService {
get: "/api/gateways/{gateway_id}/duty-cycle-metrics"
};
}
// Get the given Relay Gateway.
rpc GetRelayGateway(GetRelayGatewayRequest) returns (GetRelayGatewayResponse) {
option(google.api.http) = {
get: "/api/gateways/relay-gateways/{tenant_id}/{relay_id}"
};
}
// List the detected Relay Gateways.
rpc ListRelayGateways(ListRelayGatewaysRequest) returns (ListRelayGatewaysResponse) {
option(google.api.http) = {
get: "/api/gateways/relay-gateways"
};
}
// Update the given Relay Gateway.
rpc UpdateRelayGateway(UpdateRelayGatewayRequest) returns (google.protobuf.Empty) {
option(google.api.http) = {
put: "/api/gateways/relay-gateways/{relay_gateway.tenant_id}/{relay_gateway.relay_id}"
body: "*"
};
}
// Delete the given Relay Gateway.
rpc DeleteRelayGateway(DeleteRelayGatewayRequest) returns (google.protobuf.Empty) {
option(google.api.http) = {
delete: "/api/gateways/relay-gateways/{tenant_id}/{relay_id}"
};
}
}
enum GatewayState {
@ -133,11 +164,11 @@ message GatewayListItem {
// Gateway properties.
map<string, string> properties = 6;
// Created at timestamp.
google.protobuf.Timestamp created_at = 7;
// Created at timestamp.
google.protobuf.Timestamp created_at = 7;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 8;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 8;
// Last seen at timestamp.
google.protobuf.Timestamp last_seen_at = 9;
@ -282,3 +313,111 @@ message GetGatewayDutyCycleMetricsResponse {
// Percentage relative to tracking window.
common.Metric window_percentage = 2;
}
message GetRelayGatewayRequest {
// Tenant ID (UUID).
string tenant_id = 1;
// Relay ID (4 byte HEX).
string relay_id = 2;
}
message GetRelayGatewayResponse {
// Relay Gateway object.
RelayGateway relay_gateway = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
// Last seen at timestamp.
google.protobuf.Timestamp last_seen_at = 4;
}
message ListRelayGatewaysRequest {
// Max number of relay-gateways to return in the result-set.
uint32 limit = 1;
// Offset in the result-set (for pagination).
uint32 offset = 2;
// Tenant ID (UUID) to filter relay-gateways on.
// To list all relay-gateways as a global admin user, this field can be left blank.
string tenant_id = 3;
}
message ListRelayGatewaysResponse {
// Total number of relay-gateways.
uint32 total_count = 1;
// Result-set.
repeated RelayGatewayListItem result = 2;
}
message RelayGatewayListItem {
// Tenant ID.
string tenant_id = 1;
// Relay ID (4 byte HEX).
string relay_id = 2;
// Name.
string name = 3;
// Description.
string description = 4;
// Created at timestamp.
google.protobuf.Timestamp created_at = 5;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 6;
// Last seen at timestamp.
google.protobuf.Timestamp last_seen_at = 7;
// Gateway state.
// Please note that the state of the relay is driven by the last
// received stats packet sent by the relay-gateway.
GatewayState state = 10;
// Region configuration ID.
string region_config_id = 11;
}
message UpdateRelayGatewayRequest {
// Relay Gateway object.
RelayGateway relay_gateway = 1;
}
message DeleteRelayGatewayRequest {
// Tenant ID.
string tenant_id = 1;
// Relay ID (4 byte HEX).
string relay_id = 2;
}
message RelayGateway {
// Tenant ID.
string tenant_id = 1;
// Relay ID (4 byte HEX).
string relay_id = 2;
// Name.
string name = 3;
// Description.
string description = 4;
// Stats interval (seconds).
// This defines the expected interval in which the gateway sends its
// statistics.
uint32 stats_interval = 5;
// Region configuration ID.
string region_config_id = 6;
}

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "InternalProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto";
@ -221,6 +223,12 @@ message SettingsResponse {
// OAuth2 settings.
OAuth2 oauth2 = 2;
// Tileserver URL.
string tileserver_url = 3;
// Map attribution.
string map_attribution = 4;
}
message OpenIdConnect {

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "MulticastGroupProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "RelayProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "TenantProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "UserProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "CommonProto";
option csharp_namespace = "Chirpstack.Common";
option php_namespace = "Chirpstack\\Common";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Common";
import "google/protobuf/timestamp.proto";

28
api/proto/gw/gw.proto vendored
View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api.gw";
option java_multiple_files = true;
option java_outer_classname = "GatewayProto";
option csharp_namespace = "Chirpstack.Gateway";
option php_namespace = "Chirpstack\\Gateway";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Gateway";
import "common/common.proto";
import "google/protobuf/timestamp.proto";
@ -747,3 +749,29 @@ message ConnState {
State state = 2;
}
// Gateway Mesh heartbeat (sent periodically by the Relay Gateways).
message MeshHeartbeat {
// Gateway ID (of the Border Gateway).
string gateway_id = 1;
// Relay ID.
string relay_id = 2;
// Timestamp (second precision).
google.protobuf.Timestamp time = 3;
// Relay path.
repeated MeshHeartbeatRelayPath relay_path = 4;
}
message MeshHeartbeatRelayPath {
// Relay ID.
string relay_id = 1;
// RSSI.
int32 rssi = 2;
// SNR.
int32 snr = 3;
}

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api.integration";
option java_multiple_files = true;
option java_outer_classname = "IntegrationProto";
option csharp_namespace = "Chirpstack.Integration";
option php_namespace = "Chirpstack\\Integration";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Integration";
import "common/common.proto";
import "gw/gw.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api.stream";
option java_multiple_files = true;
option java_outer_classname = "ApiRequestProto";
option csharp_namespace = "Chirpstack.Stream";
option php_namespace = "Chirpstack\\Stream";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Stream";
import "google/protobuf/timestamp.proto";
import "common/common.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api.stream";
option java_multiple_files = true;
option java_outer_classname = "BackendInterfacesProto";
option csharp_namespace = "Chirpstack.Stream";
option php_namespace = "Chirpstack\\Stream";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Stream";
import "google/protobuf/timestamp.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api.stream";
option java_multiple_files = true;
option java_outer_classname = "FrameProto";
option csharp_namespace = "Chirpstack.Stream";
option php_namespace = "Chirpstack\\Stream";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Stream";
import "google/protobuf/timestamp.proto";
import "common/common.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api.stream";
option java_multiple_files = true;
option java_outer_classname = "MetaProto";
option csharp_namespace = "Chirpstack.Stream";
option php_namespace = "Chirpstack\\Stream";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Stream";
import "common/common.proto";
import "gw/gw.proto";

View File

@ -6,8 +6,6 @@ from .device_profile_pb2 import *
from .device_profile_pb2_grpc import *
from .device_profile_template_pb2 import *
from .device_profile_template_pb2_grpc import *
from .frame_log_pb2 import *
from .frame_log_pb2_grpc import *
from .gateway_pb2 import *
from .gateway_pb2_grpc import *
from .internal_pb2 import *

View File

@ -18,7 +18,7 @@ CLASSIFIERS = [
setup(
name='chirpstack-api',
version = "4.8.0-test.5",
version = "4.9.0-test.6",
url='https://github.com/brocaar/chirpstack-api',
author='Orne Brocaar',
author_email='info@brocaar.com',

55
api/rust/Cargo.toml vendored
View File

@ -1,33 +1,38 @@
[package]
name = "chirpstack_api"
description = "ChirpStack Protobuf / gRPC API definitions."
version = "4.8.0-test.5"
authors = ["Orne Brocaar <info@brocaar.com>"]
license = "MIT"
homepage = "https://www.chirpstack.io"
repository = "https://github.com/chirpstack/chirpstack"
edition = "2021"
name = "chirpstack_api"
description = "ChirpStack Protobuf / gRPC API definitions."
version = "4.9.0-test.6"
authors = ["Orne Brocaar <info@brocaar.com>"]
license = "MIT"
homepage = "https://www.chirpstack.io"
repository = "https://github.com/chirpstack/chirpstack"
edition = "2021"
[features]
default = ["api", "json"]
api = ["tonic/transport", "tonic-build/transport", "tokio"]
json = ["pbjson", "pbjson-types", "serde"]
diesel = ["dep:diesel"]
internal = []
default = ["api", "json"]
api = ["tonic/transport", "tonic-build/transport", "tokio"]
json = ["pbjson", "pbjson-types", "serde"]
diesel = ["dep:diesel"]
internal = []
[dependencies]
prost = "0.12"
prost-types = "0.12"
hex = "0.4"
rand = "0.8"
prost = "0.13"
prost-types = "0.13"
hex = "0.4"
rand = "0.8"
tonic = { version = "0.11", features = ["codegen", "prost"], default-features = false, optional = true }
tokio = { version = "1.37", features = ["macros"], optional = true }
pbjson = { version = "0.6", optional = true }
pbjson-types = { version = "0.6", optional = true }
serde = { version = "1.0", optional = true }
diesel = { version = "2.1", features = ["postgres_backend"], optional = true }
tonic = { version = "0.12", features = [
"codegen",
"prost",
], default-features = false, optional = true }
tokio = { version = "1.38", features = ["macros"], optional = true }
pbjson = { version = "0.7", optional = true }
pbjson-types = { version = "0.7", optional = true }
serde = { version = "1.0", optional = true }
diesel = { version = "2.2", features = ["postgres_backend"], optional = true }
[build-dependencies]
tonic-build = { version = "0.11", features = ["prost"], default-features = false }
pbjson-build = "0.6"
tonic-build = { version = "0.12", features = [
"prost",
], default-features = false }
pbjson-build = "0.7"

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "ApplicationProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "DeviceProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "common/common.proto";
import "google/api/annotations.proto";
@ -382,6 +384,8 @@ message DeviceActivation {
string app_s_key = 3;
// Network session encryption key (HEX encoded).
// Note: For ABP in LoRaWAN 1.0.x, use this, the serving and the forwarding
// network session integrity key fields with the LoRaWAN 1.0.x 'NwkSKey`!
string nwk_s_enc_key = 4;
// Serving network session integrity key (HEX encoded).

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "DeviceProfileProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "DeviceProfileTemplateProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "GatewayProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";
@ -73,6 +75,35 @@ service GatewayService {
get: "/api/gateways/{gateway_id}/duty-cycle-metrics"
};
}
// Get the given Relay Gateway.
rpc GetRelayGateway(GetRelayGatewayRequest) returns (GetRelayGatewayResponse) {
option(google.api.http) = {
get: "/api/gateways/relay-gateways/{tenant_id}/{relay_id}"
};
}
// List the detected Relay Gateways.
rpc ListRelayGateways(ListRelayGatewaysRequest) returns (ListRelayGatewaysResponse) {
option(google.api.http) = {
get: "/api/gateways/relay-gateways"
};
}
// Update the given Relay Gateway.
rpc UpdateRelayGateway(UpdateRelayGatewayRequest) returns (google.protobuf.Empty) {
option(google.api.http) = {
put: "/api/gateways/relay-gateways/{relay_gateway.tenant_id}/{relay_gateway.relay_id}"
body: "*"
};
}
// Delete the given Relay Gateway.
rpc DeleteRelayGateway(DeleteRelayGatewayRequest) returns (google.protobuf.Empty) {
option(google.api.http) = {
delete: "/api/gateways/relay-gateways/{tenant_id}/{relay_id}"
};
}
}
enum GatewayState {
@ -133,11 +164,11 @@ message GatewayListItem {
// Gateway properties.
map<string, string> properties = 6;
// Created at timestamp.
google.protobuf.Timestamp created_at = 7;
// Created at timestamp.
google.protobuf.Timestamp created_at = 7;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 8;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 8;
// Last seen at timestamp.
google.protobuf.Timestamp last_seen_at = 9;
@ -282,3 +313,111 @@ message GetGatewayDutyCycleMetricsResponse {
// Percentage relative to tracking window.
common.Metric window_percentage = 2;
}
message GetRelayGatewayRequest {
// Tenant ID (UUID).
string tenant_id = 1;
// Relay ID (4 byte HEX).
string relay_id = 2;
}
message GetRelayGatewayResponse {
// Relay Gateway object.
RelayGateway relay_gateway = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
// Last seen at timestamp.
google.protobuf.Timestamp last_seen_at = 4;
}
message ListRelayGatewaysRequest {
// Max number of relay-gateways to return in the result-set.
uint32 limit = 1;
// Offset in the result-set (for pagination).
uint32 offset = 2;
// Tenant ID (UUID) to filter relay-gateways on.
// To list all relay-gateways as a global admin user, this field can be left blank.
string tenant_id = 3;
}
message ListRelayGatewaysResponse {
// Total number of relay-gateways.
uint32 total_count = 1;
// Result-set.
repeated RelayGatewayListItem result = 2;
}
message RelayGatewayListItem {
// Tenant ID.
string tenant_id = 1;
// Relay ID (4 byte HEX).
string relay_id = 2;
// Name.
string name = 3;
// Description.
string description = 4;
// Created at timestamp.
google.protobuf.Timestamp created_at = 5;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 6;
// Last seen at timestamp.
google.protobuf.Timestamp last_seen_at = 7;
// Gateway state.
// Please note that the state of the relay is driven by the last
// received stats packet sent by the relay-gateway.
GatewayState state = 10;
// Region configuration ID.
string region_config_id = 11;
}
message UpdateRelayGatewayRequest {
// Relay Gateway object.
RelayGateway relay_gateway = 1;
}
message DeleteRelayGatewayRequest {
// Tenant ID.
string tenant_id = 1;
// Relay ID (4 byte HEX).
string relay_id = 2;
}
message RelayGateway {
// Tenant ID.
string tenant_id = 1;
// Relay ID (4 byte HEX).
string relay_id = 2;
// Name.
string name = 3;
// Description.
string description = 4;
// Stats interval (seconds).
// This defines the expected interval in which the gateway sends its
// statistics.
uint32 stats_interval = 5;
// Region configuration ID.
string region_config_id = 6;
}

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "InternalProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto";
@ -221,6 +223,12 @@ message SettingsResponse {
// OAuth2 settings.
OAuth2 oauth2 = 2;
// Tileserver URL.
string tileserver_url = 3;
// Map attribution.
string map_attribution = 4;
}
message OpenIdConnect {

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "MulticastGroupProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "RelayProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "TenantProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "UserProto";
option csharp_namespace = "Chirpstack.Api";
option php_namespace = "Chirpstack\\Api";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Api";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "CommonProto";
option csharp_namespace = "Chirpstack.Common";
option php_namespace = "Chirpstack\\Common";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Common";
import "google/protobuf/timestamp.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api.gw";
option java_multiple_files = true;
option java_outer_classname = "GatewayProto";
option csharp_namespace = "Chirpstack.Gateway";
option php_namespace = "Chirpstack\\Gateway";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Gateway";
import "common/common.proto";
import "google/protobuf/timestamp.proto";
@ -747,3 +749,29 @@ message ConnState {
State state = 2;
}
// Gateway Mesh heartbeat (sent periodically by the Relay Gateways).
message MeshHeartbeat {
// Gateway ID (of the Border Gateway).
string gateway_id = 1;
// Relay ID.
string relay_id = 2;
// Timestamp (second precision).
google.protobuf.Timestamp time = 3;
// Relay path.
repeated MeshHeartbeatRelayPath relay_path = 4;
}
message MeshHeartbeatRelayPath {
// Relay ID.
string relay_id = 1;
// RSSI.
int32 rssi = 2;
// SNR.
int32 snr = 3;
}

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api.integration";
option java_multiple_files = true;
option java_outer_classname = "IntegrationProto";
option csharp_namespace = "Chirpstack.Integration";
option php_namespace = "Chirpstack\\Integration";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Integration";
import "common/common.proto";
import "gw/gw.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api.stream";
option java_multiple_files = true;
option java_outer_classname = "ApiRequestProto";
option csharp_namespace = "Chirpstack.Stream";
option php_namespace = "Chirpstack\\Stream";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Stream";
import "google/protobuf/timestamp.proto";
import "common/common.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api.stream";
option java_multiple_files = true;
option java_outer_classname = "BackendInterfacesProto";
option csharp_namespace = "Chirpstack.Stream";
option php_namespace = "Chirpstack\\Stream";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Stream";
import "google/protobuf/timestamp.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api.stream";
option java_multiple_files = true;
option java_outer_classname = "FrameProto";
option csharp_namespace = "Chirpstack.Stream";
option php_namespace = "Chirpstack\\Stream";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Stream";
import "google/protobuf/timestamp.proto";
import "common/common.proto";

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api.stream";
option java_multiple_files = true;
option java_outer_classname = "MetaProto";
option csharp_namespace = "Chirpstack.Stream";
option php_namespace = "Chirpstack\\Stream";
option php_metadata_namespace = "GPBMetadata\\Chirpstack\\Stream";
import "common/common.proto";
import "gw/gw.proto";

24
api/rust/src/gw.rs vendored
View File

@ -95,7 +95,7 @@ impl UplinkFrame {
})
}
uplink_tx_info_legacy::ModulationInfo::FskModulationInfo(info) => {
modulation::Parameters::Fsk(info.clone())
modulation::Parameters::Fsk(*info)
}
uplink_tx_info_legacy::ModulationInfo::LrFhssModulationInfo(info) => {
modulation::Parameters::LrFhss(LrFhssModulationInfo {
@ -120,9 +120,9 @@ impl UplinkFrame {
self.rx_info = Some(UplinkRxInfo {
gateway_id: hex::encode(&rx_info.gateway_id),
uplink_id: rng.gen::<u32>(),
gw_time: rx_info.time.clone(),
gw_time: rx_info.time,
ns_time: None,
time_since_gps_epoch: rx_info.time_since_gps_epoch.clone(),
time_since_gps_epoch: rx_info.time_since_gps_epoch,
fine_time_since_gps_epoch: None,
rssi: rx_info.rssi,
snr: rx_info.lora_snr as f32,
@ -130,7 +130,7 @@ impl UplinkFrame {
rf_chain: rx_info.rf_chain,
board: rx_info.board,
antenna: rx_info.antenna,
location: rx_info.location.clone(),
location: rx_info.location,
context: rx_info.context.clone(),
metadata: rx_info.metadata.clone(),
crc_status: rx_info.crc_status,
@ -195,23 +195,19 @@ impl DownlinkFrame {
Some(timing::Parameters::Immediately(v)) => {
tx_info_legacy.timing = DownlinkTiming::Immediately.into();
tx_info_legacy.timing_info = Some(
downlink_tx_info_legacy::TimingInfo::ImmediatelyTimingInfo(
v.clone(),
),
downlink_tx_info_legacy::TimingInfo::ImmediatelyTimingInfo(*v),
);
}
Some(timing::Parameters::Delay(v)) => {
tx_info_legacy.timing = DownlinkTiming::Delay.into();
tx_info_legacy.timing_info = Some(
downlink_tx_info_legacy::TimingInfo::DelayTimingInfo(v.clone()),
);
tx_info_legacy.timing_info =
Some(downlink_tx_info_legacy::TimingInfo::DelayTimingInfo(*v));
}
Some(timing::Parameters::GpsEpoch(v)) => {
tx_info_legacy.timing = DownlinkTiming::GpsEpoch.into();
tx_info_legacy.timing_info =
Some(downlink_tx_info_legacy::TimingInfo::GpsEpochTimingInfo(
v.clone(),
));
tx_info_legacy.timing_info = Some(
downlink_tx_info_legacy::TimingInfo::GpsEpochTimingInfo(*v),
);
}
_ => {}
}

View File

@ -1,24 +1,29 @@
[package]
name = "backend"
version = "4.8.0-test.5"
authors = ["Orne Brocaar <info@brocaar.com>"]
edition = "2018"
publish = false
name = "backend"
version = "4.9.0-test.6"
authors = ["Orne Brocaar <info@brocaar.com>"]
edition = "2018"
publish = false
[dependencies]
serde = { version = "1.0", features = ["derive", "rc"] }
serde_json = "1.0"
thiserror = "1.0"
anyhow = "1.0"
tracing = "0.1"
hex = "0.4"
rand = "0.8"
aes-kw = "0.2"
reqwest = { version = "0.12", features = ["json", "rustls-tls"], default-features = false }
chrono = { version = "0.4", features = ["serde"] }
tokio = { version = "1.36", features = ["macros" ] }
chirpstack_api = { path = "../api/rust", default-features = false, features = ["json"] }
serde = { version = "1.0", features = ["derive", "rc"] }
serde_json = "1.0"
thiserror = "1.0"
anyhow = "1.0"
tracing = "0.1"
hex = "0.4"
rand = "0.8"
aes-kw = "0.2"
reqwest = { version = "0.12", features = [
"json",
"rustls-tls",
], default-features = false }
chrono = { version = "0.4", features = ["serde"] }
tokio = { version = "1.38", features = ["macros"] }
chirpstack_api = { path = "../api/rust", default-features = false, features = [
"json",
] }
# Development and testing
[dev-dependencies]
httpmock = "0.7.0"
httpmock = "0.7.0"

View File

@ -522,6 +522,7 @@ impl BasePayload {
MessageType::PRStartReq => MessageType::PRStartAns,
MessageType::PRStopReq => MessageType::PRStopAns,
MessageType::XmitDataReq => MessageType::XmitDataAns,
MessageType::HomeNSReq => MessageType::HomeNSAns,
_ => self.message_type,
},
sender_token: self.receiver_token.clone(),

View File

@ -3,14 +3,14 @@
description = "Library for building external ChirpStack integrations"
homepage = "https://www.chirpstack.io/"
license = "MIT"
version = "4.6.0"
version = "4.9.0-test.6"
authors = ["Orne Brocaar <info@brocaar.com>"]
edition = "2021"
repository = "https://github.com/chirpstack/chirpstack"
[dependencies]
chirpstack_api = { path = "../api/rust", version = "4.8.0-test.5" }
redis = { version = "0.25", features = [
chirpstack_api = { path = "../api/rust", version = "4.9.0-test.1" }
redis = { version = "0.26", features = [
"cluster-async",
"tokio-rustls-comp",
] }

View File

@ -215,7 +215,7 @@ impl Integration {
info!(key = %k, "Event received from Redis stream");
match k.as_ref() {
"up" => {
if let redis::Value::Data(b) = v {
if let redis::Value::BulkString(b) = v {
let pl = integration_pb::UplinkEvent::decode(
&mut Cursor::new(b),
)?;
@ -223,21 +223,21 @@ impl Integration {
}
}
"join" => {
if let redis::Value::Data(b) = v {
if let redis::Value::BulkString(b) = v {
let pl =
integration_pb::JoinEvent::decode(&mut Cursor::new(b))?;
tokio::spawn(join_event(pl));
}
}
"ack" => {
if let redis::Value::Data(b) = v {
if let redis::Value::BulkString(b) = v {
let pl =
integration_pb::AckEvent::decode(&mut Cursor::new(b))?;
tokio::spawn(ack_event(pl));
}
}
"txack" => {
if let redis::Value::Data(b) = v {
if let redis::Value::BulkString(b) = v {
let pl = integration_pb::TxAckEvent::decode(
&mut Cursor::new(b),
)?;
@ -245,7 +245,7 @@ impl Integration {
}
}
"status" => {
if let redis::Value::Data(b) = v {
if let redis::Value::BulkString(b) = v {
let pl = integration_pb::StatusEvent::decode(
&mut Cursor::new(b),
)?;
@ -253,14 +253,14 @@ impl Integration {
}
}
"log" => {
if let redis::Value::Data(b) = v {
if let redis::Value::BulkString(b) = v {
let pl =
integration_pb::LogEvent::decode(&mut Cursor::new(b))?;
tokio::spawn(log_event(pl));
}
}
"location" => {
if let redis::Value::Data(b) = v {
if let redis::Value::BulkString(b) = v {
let pl = integration_pb::LocationEvent::decode(
&mut Cursor::new(b),
)?;
@ -268,7 +268,7 @@ impl Integration {
}
}
"integration" => {
if let redis::Value::Data(b) = v {
if let redis::Value::BulkString(b) = v {
let pl = integration_pb::IntegrationEvent::decode(
&mut Cursor::new(b),
)?;

View File

@ -1,222 +1,249 @@
[package]
name = "chirpstack"
description = "ChirpStack is an open-source LoRaWAN(TM) Network Server"
repository = "https://github.com/chirpstack/chirpstack"
homepage = "https://www.chirpstack.io/"
version = "4.8.0-test.5"
authors = ["Orne Brocaar <info@brocaar.com>"]
edition = "2021"
publish = false
license = "MIT"
name = "chirpstack"
description = "ChirpStack is an open-source LoRaWAN(TM) Network Server"
repository = "https://github.com/chirpstack/chirpstack"
homepage = "https://www.chirpstack.io/"
version = "4.9.0-test.6"
authors = ["Orne Brocaar <info@brocaar.com>"]
edition = "2021"
publish = false
license = "MIT"
[dependencies]
# CLI interface
clap = { version = "4.5", features = ["derive"] }
# CLI interface
clap = { version = "4.5", features = ["derive"] }
# Configuration
serde = { version = "1.0", features = ["derive", "rc"] }
serde_yaml = "0.9"
serde_json = "1.0"
serde_urlencoded = "0.7"
humantime-serde = "1.1"
toml = "0.8"
handlebars = "5.1"
# Configuration
serde = { version = "1.0", features = ["derive", "rc"] }
serde_yaml = "0.9"
serde_json = "1.0"
serde_urlencoded = "0.7"
humantime-serde = "1.1"
toml = "0.8"
handlebars = "6.0"
# Database
email_address = "0.2"
diesel = { version = "2.1", features = [
"chrono",
"uuid",
"serde_json",
"numeric",
"64-column-tables",
"postgres_backend",
] }
diesel_migrations = { version = "2.1" }
diesel-async = { version = "0.4", features = ["deadpool", "postgres", "async-connection-wrapper"] }
tokio-postgres = "0.7"
tokio-postgres-rustls = "0.11"
bigdecimal = "0.4"
redis = { version = "0.25.2", features = [ "tls-rustls", "tokio-rustls-comp"] }
deadpool-redis = { version = "0.15", features = ["cluster"] }
# Database
email_address = "0.2"
diesel = { version = "2.2", features = [
"chrono",
"uuid",
"serde_json",
"numeric",
"64-column-tables",
"postgres_backend",
] }
diesel_migrations = { version = "2.2" }
diesel-async = { version = "0.5", features = [
"deadpool",
"postgres",
"async-connection-wrapper",
] }
tokio-postgres = "0.7"
tokio-postgres-rustls = "0.12"
bigdecimal = "0.4"
redis = { version = "0.26", features = ["tls-rustls", "tokio-rustls-comp"] }
deadpool-redis = { version = "0.15", features = ["cluster"] }
# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = [
"fmt",
"ansi",
"json",
], default-features = true }
# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = [
"fmt",
"ansi",
"json",
], default-features = true }
# ChirpStack API definitions
chirpstack_api = { path = "../api/rust", features = ["default", "internal", "diesel"] }
lrwn = { path = "../lrwn", features = ["serde", "diesel", "regions", "crypto"] }
backend = { path = "../backend" }
# ChirpStack API definitions
chirpstack_api = { path = "../api/rust", features = [
"default",
"internal",
"diesel",
] }
lrwn = { path = "../lrwn", features = [
"serde",
"diesel",
"regions",
"crypto",
] }
backend = { path = "../backend" }
# HTTP
reqwest = { version = "0.12", features = [
"json",
"rustls-tls-native-roots",
], default-features = false }
# HTTP
reqwest = { version = "0.12", features = [
"json",
"rustls-tls-native-roots",
], default-features = false }
# Integrations
aws-sign-v4 = "0.3"
hmac = "0.12"
sha2 = "0.10"
urlencoding = "2.1"
geohash = "0.13"
gcp_auth = "0.11"
lapin = "2.3"
tokio-executor-trait = "2.1"
tokio-reactor-trait = "1.1"
rdkafka = { version = "0.36", default-features = false, features = ["tokio", "cmake-build"] }
# Integrations
aws-sign-v4 = "0.3"
hmac = "0.12"
sha2 = "0.10"
urlencoding = "2.1"
geohash = "0.13"
gcp_auth = "0.12"
lapin = { version = "2.5", default-features = false }
tokio-executor-trait = "2.1"
tokio-reactor-trait = "1.1"
rdkafka = { version = "0.36", default-features = false, features = [
"tokio",
"cmake-build",
] }
# gRPC and Protobuf
tonic = "0.11"
tonic-web = "0.11"
tonic-reflection = "0.11"
tokio = { version = "1.36", features = ["macros", "rt-multi-thread"] }
tokio-stream = "0.1"
prost-types = "0.12"
prost = "0.12"
pbjson-types = "0.6"
# gRPC and Protobuf
tonic = "0.12"
tonic-web = "0.12"
tonic-reflection = "0.12"
tokio = { version = "1.38", features = ["macros", "rt-multi-thread"] }
tokio-stream = "0.1"
prost-types = "0.13"
prost = "0.13"
pbjson-types = "0.7"
# gRPC and HTTP multiplexing
warp = { version = "0.3", features = ["tls"], default-features = false }
hyper = "0.14"
tower = "0.4"
futures = "0.3"
futures-util = "0.3"
http = "0.2"
http-body = "0.4"
rust-embed = "8.3"
mime_guess = "2.0"
tower-http = { version = "0.4", features = ["trace", "auth"] }
# gRPC and HTTP multiplexing
axum = "0.7"
axum-server = { version = "0.7.1", features = ["tls-rustls-no-provider"] }
tower = { version = "0.4" }
futures = "0.3"
futures-util = "0.3"
http = "1.1"
http-body = "1.0"
rust-embed = "8.5"
mime_guess = "2.0"
tower-http = { version = "0.5", features = ["trace", "auth"] }
# Error handling
thiserror = "1.0"
anyhow = "1.0"
# Error handling
thiserror = "1.0"
anyhow = "1.0"
# Authentication
pbkdf2 = { version = "0.12", features = ["simple"] }
rand_core = { version = "0.6", features = ["std"] }
jsonwebtoken = "9.2"
rustls = "0.22"
rustls-native-certs = "0.7"
rustls-pemfile = "2.1"
pem = "3.0"
x509-parser = "0.16"
rsa = "0.9"
elliptic-curve = { version = "0.13", features = ["pem"] }
p256 = "0.13"
rcgen = { version = "0.13.1", features = [ "x509-parser" ] }
openidconnect = { version = "3.5", features = ["accept-rfc3339-timestamps"] }
oauth2 = "4.4"
# Authentication
pbkdf2 = { version = "0.12", features = ["simple"] }
rand_core = { version = "0.6", features = ["std"] }
jsonwebtoken = "9.2"
rustls = { version = "0.23", default-features = false, features = [
"logging",
"std",
"tls12",
"ring",
] }
rustls-native-certs = "0.7"
rustls-pemfile = "2.1"
pem = "3.0"
x509-parser = "0.16"
rsa = "0.9"
elliptic-curve = { version = "0.13", features = ["pem"] }
p256 = "0.13"
rcgen = { version = "0.13.1", features = ["x509-parser"] }
oauth2 = "5.0.0-alpha.4"
openidconnect = { version = "4.0.0-alpha.2", features = [
"accept-rfc3339-timestamps",
] }
# MQTT
rumqttc = { version = "0.24", features = ["url"] }
hex = "0.4"
# MQTT
rumqttc = { version = "0.24", features = ["url"] }
hex = "0.4"
# Codecs
rquickjs = { version = "0.6", features = [
"bindgen",
"loader",
"array-buffer",
"chrono",
] }
# Codecs
rquickjs = { version = "0.6", features = [
"bindgen",
"loader",
"array-buffer",
"chrono",
] }
# Misc
lazy_static = "1.4"
uuid = { version = "1.8", features = ["v4", "serde"] }
chrono = "0.4"
async-trait = "0.1"
aes = "0.8"
rand = "0.8"
base64 = "0.22"
async-recursion = "1.0"
regex = "1.10"
petgraph = "0.6"
prometheus-client = "0.22"
pin-project = "1.1"
# Misc
lazy_static = "1.5"
uuid = { version = "1.10", features = ["v4", "serde"] }
chrono = "0.4"
async-trait = "0.1"
aes = "0.8"
rand = "0.8"
base64 = "0.22"
async-recursion = "1.1"
regex = "1.10"
petgraph = "0.6"
prometheus-client = "0.22"
pin-project = "1.1"
# Development and testing
[dev-dependencies]
httpmock = "0.7.0"
bytes = "1.5"
dotenv = "0.15"
httpmock = "0.7.0"
bytes = "1.6"
dotenv = "0.15"
[features]
test-all-integrations = ["test-integration-amqp", "test-integration-kafka", "test-integration-mqtt"]
test-integration-amqp = []
test-integration-kafka = []
test-integration-mqtt = []
test-all-integrations = [
"test-integration-amqp",
"test-integration-kafka",
"test-integration-mqtt",
]
test-integration-amqp = []
test-integration-kafka = []
test-integration-mqtt = []
# Debian packaging.
[package.metadata.deb]
assets = [
[
"target/release/chirpstack",
"usr/bin/",
"755",
],
[
"configuration/*.toml",
"etc/chirpstack/",
"640",
],
]
conf-files = [
"/etc/chirpstack/chirpstack.toml",
"/etc/chirpstack/region_as923.toml",
"/etc/chirpstack/region_as923_2.toml",
"/etc/chirpstack/region_as923_3.toml",
"/etc/chirpstack/region_as923_4.toml",
"/etc/chirpstack/region_au915_0.toml",
"/etc/chirpstack/region_au915_1.toml",
"/etc/chirpstack/region_au915_2.toml",
"/etc/chirpstack/region_au915_3.toml",
"/etc/chirpstack/region_au915_4.toml",
"/etc/chirpstack/region_au915_5.toml",
"/etc/chirpstack/region_au915_6.toml",
"/etc/chirpstack/region_au915_7.toml",
"/etc/chirpstack/region_cn779.toml",
"/etc/chirpstack/region_eu433.toml",
"/etc/chirpstack/region_eu868.toml",
"/etc/chirpstack/region_in865.toml",
"/etc/chirpstack/region_ism2400.toml",
"/etc/chirpstack/region_kr920.toml",
"/etc/chirpstack/region_ru864.toml",
"/etc/chirpstack/region_us915_0.toml",
"/etc/chirpstack/region_us915_1.toml",
"/etc/chirpstack/region_us915_2.toml",
"/etc/chirpstack/region_us915_3.toml",
"/etc/chirpstack/region_us915_4.toml",
"/etc/chirpstack/region_us915_5.toml",
"/etc/chirpstack/region_us915_6.toml",
"/etc/chirpstack/region_us915_7.toml",
]
suggests = "postgresql, mosquitto, redis"
maintainer-scripts = "debian/"
systemd-units = { enable = true }
# Debian packaging.
[package.metadata.deb]
assets = [
[
"target/release/chirpstack",
"usr/bin/",
"755",
],
[
"configuration/*.toml",
"etc/chirpstack/",
"640",
],
]
conf-files = [
"/etc/chirpstack/chirpstack.toml",
"/etc/chirpstack/region_as923.toml",
"/etc/chirpstack/region_as923_2.toml",
"/etc/chirpstack/region_as923_3.toml",
"/etc/chirpstack/region_as923_4.toml",
"/etc/chirpstack/region_au915_0.toml",
"/etc/chirpstack/region_au915_1.toml",
"/etc/chirpstack/region_au915_2.toml",
"/etc/chirpstack/region_au915_3.toml",
"/etc/chirpstack/region_au915_4.toml",
"/etc/chirpstack/region_au915_5.toml",
"/etc/chirpstack/region_au915_6.toml",
"/etc/chirpstack/region_au915_7.toml",
"/etc/chirpstack/region_cn779.toml",
"/etc/chirpstack/region_eu433.toml",
"/etc/chirpstack/region_eu868.toml",
"/etc/chirpstack/region_in865.toml",
"/etc/chirpstack/region_ism2400.toml",
"/etc/chirpstack/region_kr920.toml",
"/etc/chirpstack/region_ru864.toml",
"/etc/chirpstack/region_us915_0.toml",
"/etc/chirpstack/region_us915_1.toml",
"/etc/chirpstack/region_us915_2.toml",
"/etc/chirpstack/region_us915_3.toml",
"/etc/chirpstack/region_us915_4.toml",
"/etc/chirpstack/region_us915_5.toml",
"/etc/chirpstack/region_us915_6.toml",
"/etc/chirpstack/region_us915_7.toml",
]
suggests = "postgresql, mosquitto, redis"
maintainer-scripts = "debian/"
systemd-units = { enable = true }
[package.metadata.generate-rpm]
auto-req = "no"
[package.metadata.generate-rpm]
auto-req = "no"
pre_install_script = '''
pre_install_script = '''
id chirpstack &>/dev/null
if [[ $? -ne 0 ]]; then
useradd --system -U -M chirpstack -s /bin/false -d /etc/chirpstack
fi
'''
post_install_script = '''
post_install_script = '''
chown -R chirpstack:chirpstack /etc/chirpstack
chmod 750 /etc/chirpstack
chmod 640 /etc/chirpstack/*.toml
'''
assets = [
{ source = "target/release/chirpstack", dest = "/usr/bin/chirpstack", mode = "755" },
{ source = "configuration/*", dest = "/etc/chirpstack"},
{ source = "rpm/chirpstack.service", dest = "/lib/systemd/system/chirpstack.service"},
]
assets = [
{ source = "target/release/chirpstack", dest = "/usr/bin/chirpstack", mode = "755" },
{ source = "configuration/*", dest = "/etc/chirpstack" },
{ source = "rpm/chirpstack.service", dest = "/lib/systemd/system/chirpstack.service" },
]

View File

@ -4,7 +4,7 @@
# Log level.
#
# Options are: trace, debug, info, warn error.
level="info"
level = "info"
# PostgreSQL configuration.
@ -19,19 +19,19 @@
# * require - Always SSL (skip verification)
# * verify-ca - Always SSL (verify that the certificate presented by the server was signed by a trusted CA)
# * verify-full - Always SSL (verify that the certification presented by the server was signed by a trusted CA and the server host name matches the one in the certificate)
dsn="postgres://chirpstack:chirpstack@localhost/chirpstack?sslmode=disable"
dsn = "postgres://chirpstack:chirpstack@localhost/chirpstack?sslmode=disable"
# Max open connections.
#
# This sets the max. number of open connections that are allowed in the
# PostgreSQL connection pool.
max_open_connections=10
max_open_connections = 10
# Min idle connections.
#
# This sets the min. number of idle connections in the PostgreSQL connection
# pool (0 = equal to max_open_connections).
min_idle_connections=0
min_idle_connections = 0
# Redis configuration.
@ -40,28 +40,26 @@
# Server address or addresses.
#
# Set multiple addresses when connecting to a cluster.
servers=[
"redis://localhost/",
]
servers = ["redis://localhost/"]
# Redis Cluster.
#
# Set this to true when the provided URLs are pointing to a Redis Cluster
# instance.
cluster=false
cluster = false
# Network related configuration.
[network]
# Network identifier (NetID, 3 bytes) encoded as HEX (e.g. 010203).
net_id="000000"
net_id = "000000"
# Enabled regions.
#
# Multiple regions can be enabled simultaneously. Each region must match
# the 'name' parameter of the region configuration in '[[regions]]'.
enabled_regions=[
enabled_regions = [
"as923",
"as923_2",
"as923_3",
@ -84,7 +82,7 @@
[api]
# interface:port to bind the API interface to.
bind="0.0.0.0:8080"
bind = "0.0.0.0:8080"
# Secret.
#
@ -92,12 +90,12 @@
# is never exposed. Changing this secret will invalidate all login and API
# tokens. The following command can be used to generate a random secret:
# openssl rand -base64 32
secret="you-must-replace-this"
secret = "you-must-replace-this"
[integration]
enabled=["mqtt"]
enabled = ["mqtt"]
[integration.mqtt]
server="tcp://localhost:1883/"
json=true
server = "tcp://localhost:1883/"
json = true

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an user-defined identifier for this region.
id="as923"
id = "as923"
# Description is a short description for this region.
description="AS923"
description = "AS923"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="AS923"
common_name = "AS923"
# User-defined region information.
#
# This information will be displayed on top of the region page in then
# ChirpStack web-interface. For example, it can contain information about
# how users should connect their gateways when using this region (e.g. MQTT
# end-point, MQTT topic prefix, TLS configuration etc). Markdown syntax can
# be used for formatting.
user_info = ""
# Gateway configuration.
@ -18,14 +27,14 @@
# Force gateways as private.
#
# If enabled, gateways can only be used by devices under the same tenant.
force_gws_private=false
force_gws_private = false
# Gateway backend configuration.
[regions.gateway.backend]
# The enabled backend type.
enabled="mqtt"
enabled = "mqtt"
# MQTT configuration.
[regions.gateway.backend.mqtt]
@ -35,7 +44,7 @@
# The topic prefix can be used to define the region of the gateway.
# Note, there is no need to add a trailing '/' to the prefix. The trailing
# '/' is automatically added to the prefix if it is configured.
topic_prefix="as923"
topic_prefix = "as923"
# Shared subscription name.
#
@ -45,16 +54,16 @@
# test-environment connected to the same MQTT broker, make sure that
# each environment has its own subscription name, for example:
# chirpstack_prod and chirpstack_tst.
share_name="chirpstack"
share_name = "chirpstack"
# MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
server="tcp://localhost:1883"
server = "tcp://localhost:1883"
# Connect with the given username (optional)
username=""
username = ""
# Connect with the given password (optional)
password=""
password = ""
# Quality of service level
#
@ -64,40 +73,40 @@
#
# Note: an increase of this value will decrease the performance.
# For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
qos=0
qos = 0
# Clean session
#
# Set the "clean session" flag in the connect message when this client
# connects to an MQTT broker. By setting this flag you are indicating
# that no messages saved by the broker for this client should be delivered.
clean_session=false
clean_session = false
# Client ID
#
# Set the client id to be used by this client when connecting to the MQTT
# broker. A client id must be no longer than 23 characters. If left blank,
# a random id will be generated by ChirpStack.
client_id=""
client_id = ""
# Keep alive interval.
#
# This defines the maximum time that that should pass without communication
# between the client and server.
keep_alive_interval="30s"
keep_alive_interval = "30s"
# CA certificate file (optional)
#
# Use this when setting up a secure connection (when server uses ssl://...)
# but the certificate used by the server is not trusted by any CA certificate
# on the server (e.g. when self generated).
ca_cert=""
ca_cert = ""
# TLS certificate file (optional)
tls_cert=""
tls_cert = ""
# TLS key file (optional)
tls_key=""
tls_key = ""
# Gateway channel configuration.
@ -106,16 +115,16 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=923200000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 923200000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=923400000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 923400000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
# Region specific network configuration.
@ -127,7 +136,7 @@
# resulting in a lower data-rate but decreasing the chance that the
# device gets disconnected because it is unable to reach one of the
# surrounded gateways.
installation_margin=10
installation_margin = 10
# RX window (Class-A).
#
@ -135,19 +144,19 @@
# 0: RX1 / RX2
# 1: RX1 only
# 2: RX2 only
rx_window=0
rx_window = 0
# RX1 delay (1 - 15 seconds).
rx1_delay=1
rx1_delay = 1
# RX1 data-rate offset
rx1_dr_offset=0
rx1_dr_offset = 0
# RX2 data-rate
rx2_dr=2
rx2_dr = 2
# RX2 frequency (Hz)
rx2_frequency=923200000
rx2_frequency = 923200000
# Prefer RX2 on RX1 data-rate less than.
#
@ -155,13 +164,13 @@
# is smaller than the configured value, then the Network Server will
# first try to schedule the downlink for RX2, failing that (e.g. the gateway
# has already a payload scheduled at the RX2 timing) it will try RX1.
rx2_prefer_on_rx1_dr_lt=0
rx2_prefer_on_rx1_dr_lt = 0
# Prefer RX2 on link budget.
#
# When the link-budget is better for RX2 than for RX1, the Network Server will first
# try to schedule the downlink in RX2, failing that it will try RX1.
rx2_prefer_on_link_budget=false
rx2_prefer_on_link_budget = false
# Downlink TX Power (in dBm EIRP)
#
@ -171,44 +180,44 @@
# Please consult the LoRaWAN Regional Parameters and local regulations
# for valid and legal options. Note that the configured TX Power must be
# supported by your gateway(s).
downlink_tx_power=-1
downlink_tx_power = -1
# ADR is disabled.
adr_disabled=false
adr_disabled = false
# Minimum data-rate.
min_dr=0
min_dr = 0
# Maximum data-rate.
max_dr=5
max_dr = 5
# Rejoin-request configuration (LoRaWAN 1.1)
[regions.network.rejoin_request]
# Request devices to periodically send rejoin-requests.
enabled=false
enabled = false
# The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
# uplink messages. Valid values are 0 to 15.
max_count_n=0
max_count_n = 0
# The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
# seconds. Valid values are 0 to 15.
#
# 0 = roughly 17 minutes
# 15 = about 1 year
max_time_n=0
max_time_n = 0
# Class-B configuration.
[regions.network.class_b]
# Ping-slot data-rate.
ping_slot_dr=3
ping_slot_dr = 3
# Ping-slot frequency (Hz)
#
# set this to 0 to use the default frequency plan for the configured region
# (which could be frequency hopping).
ping_slot_frequency=0
ping_slot_frequency = 0

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an user-defined identifier for this region.
id="as923_2"
id = "as923_2"
# Description is a short description for this region.
description="AS923-2"
description = "AS923-2"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="AS923_2"
common_name = "AS923_2"
# User-defined region information.
#
# This information will be displayed on top of the region page in then
# ChirpStack web-interface. For example, it can contain information about
# how users should connect their gateways when using this region (e.g. MQTT
# end-point, MQTT topic prefix, TLS configuration etc). Markdown syntax can
# be used for formatting.
user_info = ""
# Gateway configuration.
@ -18,14 +27,14 @@
# Force gateways as private.
#
# If enabled, gateways can only be used by devices under the same tenant.
force_gws_private=false
force_gws_private = false
# Gateway backend configuration.
[regions.gateway.backend]
# The enabled backend type.
enabled="mqtt"
enabled = "mqtt"
# MQTT configuration.
[regions.gateway.backend.mqtt]
@ -35,7 +44,7 @@
# The topic prefix can be used to define the region of the gateway.
# Note, there is no need to add a trailing '/' to the prefix. The trailing
# '/' is automatically added to the prefix if it is configured.
topic_prefix="as923_2"
topic_prefix = "as923_2"
# Shared subscription name.
#
@ -45,16 +54,16 @@
# test-environment connected to the same MQTT broker, make sure that
# each environment has its own subscription name, for example:
# chirpstack_prod and chirpstack_tst.
share_name="chirpstack"
share_name = "chirpstack"
# MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
server="tcp://localhost:1883"
server = "tcp://localhost:1883"
# Connect with the given username (optional)
username=""
username = ""
# Connect with the given password (optional)
password=""
password = ""
# Quality of service level
#
@ -64,40 +73,40 @@
#
# Note: an increase of this value will decrease the performance.
# For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
qos=0
qos = 0
# Clean session
#
# Set the "clean session" flag in the connect message when this client
# connects to an MQTT broker. By setting this flag you are indicating
# that no messages saved by the broker for this client should be delivered.
clean_session=false
clean_session = false
# Client ID
#
# Set the client id to be used by this client when connecting to the MQTT
# broker. A client id must be no longer than 23 characters. If left blank,
# a random id will be generated by ChirpStack.
client_id=""
client_id = ""
# Keep alive interval.
#
# This defines the maximum time that that should pass without communication
# between the client and server.
keep_alive_interval="30s"
keep_alive_interval = "30s"
# CA certificate file (optional)
#
# Use this when setting up a secure connection (when server uses ssl://...)
# but the certificate used by the server is not trusted by any CA certificate
# on the server (e.g. when self generated).
ca_cert=""
ca_cert = ""
# TLS certificate file (optional)
tls_cert=""
tls_cert = ""
# TLS key file (optional)
tls_key=""
tls_key = ""
# Gateway channel configuration.
@ -106,16 +115,16 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=921400000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 921400000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=921600000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 921600000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
# Region specific network configuration.
@ -127,7 +136,7 @@
# resulting in a lower data-rate but decreasing the chance that the
# device gets disconnected because it is unable to reach one of the
# surrounded gateways.
installation_margin=10
installation_margin = 10
# RX window (Class-A).
#
@ -135,19 +144,19 @@
# 0: RX1 / RX2
# 1: RX1 only
# 2: RX2 only
rx_window=0
rx_window = 0
# RX1 delay (1 - 15 seconds).
rx1_delay=1
rx1_delay = 1
# RX1 data-rate offset
rx1_dr_offset=0
rx1_dr_offset = 0
# RX2 data-rate
rx2_dr=0
rx2_dr = 0
# RX2 frequency (Hz)
rx2_frequency=921400000
rx2_frequency = 921400000
# Prefer RX2 on RX1 data-rate less than.
#
@ -155,13 +164,13 @@
# is smaller than the configured value, then the Network Server will
# first try to schedule the downlink for RX2, failing that (e.g. the gateway
# has already a payload scheduled at the RX2 timing) it will try RX1.
rx2_prefer_on_rx1_dr_lt=0
rx2_prefer_on_rx1_dr_lt = 0
# Prefer RX2 on link budget.
#
# When the link-budget is better for RX2 than for RX1, the Network Server will first
# try to schedule the downlink in RX2, failing that it will try RX1.
rx2_prefer_on_link_budget=false
rx2_prefer_on_link_budget = false
# Downlink TX Power (in dBm EIRP)
#
@ -171,44 +180,44 @@
# Please consult the LoRaWAN Regional Parameters and local regulations
# for valid and legal options. Note that the configured TX Power must be
# supported by your gateway(s).
downlink_tx_power=-1
downlink_tx_power = -1
# ADR is disabled.
adr_disabled=false
adr_disabled = false
# Minimum data-rate.
min_dr=0
min_dr = 0
# Maximum data-rate.
max_dr=5
max_dr = 5
# Rejoin-request configuration (LoRaWAN 1.1)
[regions.network.rejoin_request]
# Request devices to periodically send rejoin-requests.
enabled=false
enabled = false
# The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
# uplink messages. Valid values are 0 to 15.
max_count_n=0
max_count_n = 0
# The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
# seconds. Valid values are 0 to 15.
#
# 0 = roughly 17 minutes
# 15 = about 1 year
max_time_n=0
max_time_n = 0
# Class-B configuration.
[regions.network.class_b]
# Ping-slot data-rate.
ping_slot_dr=3
ping_slot_dr = 3
# Ping-slot frequency (Hz)
#
# set this to 0 to use the default frequency plan for the configured region
# (which could be frequency hopping).
ping_slot_frequency=0
ping_slot_frequency = 0

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an user-defined identifier for this region.
id="as923_3"
id = "as923_3"
# Description is a short description for this region.
description="AS923-3"
description = "AS923-3"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="AS923_3"
common_name = "AS923_3"
# User-defined region information.
#
# This information will be displayed on top of the region page in then
# ChirpStack web-interface. For example, it can contain information about
# how users should connect their gateways when using this region (e.g. MQTT
# end-point, MQTT topic prefix, TLS configuration etc). Markdown syntax can
# be used for formatting.
user_info = ""
# Gateway configuration.
@ -18,14 +27,14 @@
# Force gateways as private.
#
# If enabled, gateways can only be used by devices under the same tenant.
force_gws_private=false
force_gws_private = false
# Gateway backend configuration.
[regions.gateway.backend]
# The enabled backend type.
enabled="mqtt"
enabled = "mqtt"
# MQTT configuration.
[regions.gateway.backend.mqtt]
@ -35,7 +44,7 @@
# The topic prefix can be used to define the region of the gateway.
# Note, there is no need to add a trailing '/' to the prefix. The trailing
# '/' is automatically added to the prefix if it is configured.
topic_prefix="as923_3"
topic_prefix = "as923_3"
# Shared subscription name.
#
@ -45,16 +54,16 @@
# test-environment connected to the same MQTT broker, make sure that
# each environment has its own subscription name, for example:
# chirpstack_prod and chirpstack_tst.
share_name="chirpstack"
share_name = "chirpstack"
# MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
server="tcp://localhost:1883"
server = "tcp://localhost:1883"
# Connect with the given username (optional)
username=""
username = ""
# Connect with the given password (optional)
password=""
password = ""
# Quality of service level
#
@ -64,40 +73,40 @@
#
# Note: an increase of this value will decrease the performance.
# For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
qos=0
qos = 0
# Clean session
#
# Set the "clean session" flag in the connect message when this client
# connects to an MQTT broker. By setting this flag you are indicating
# that no messages saved by the broker for this client should be delivered.
clean_session=false
clean_session = false
# Client ID
#
# Set the client id to be used by this client when connecting to the MQTT
# broker. A client id must be no longer than 23 characters. If left blank,
# a random id will be generated by ChirpStack.
client_id=""
client_id = ""
# Keep alive interval.
#
# This defines the maximum time that that should pass without communication
# between the client and server.
keep_alive_interval="30s"
keep_alive_interval = "30s"
# CA certificate file (optional)
#
# Use this when setting up a secure connection (when server uses ssl://...)
# but the certificate used by the server is not trusted by any CA certificate
# on the server (e.g. when self generated).
ca_cert=""
ca_cert = ""
# TLS certificate file (optional)
tls_cert=""
tls_cert = ""
# TLS key file (optional)
tls_key=""
tls_key = ""
# Gateway channel configuration.
@ -106,16 +115,16 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=916600000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 916600000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=916800000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 916800000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
# Region specific network configuration.
@ -127,7 +136,7 @@
# resulting in a lower data-rate but decreasing the chance that the
# device gets disconnected because it is unable to reach one of the
# surrounded gateways.
installation_margin=10
installation_margin = 10
# RX window (Class-A).
#
@ -135,19 +144,19 @@
# 0: RX1 / RX2
# 1: RX1 only
# 2: RX2 only
rx_window=0
rx_window = 0
# RX1 delay (1 - 15 seconds).
rx1_delay=1
rx1_delay = 1
# RX1 data-rate offset
rx1_dr_offset=0
rx1_dr_offset = 0
# RX2 data-rate
rx2_dr=2
rx2_dr = 2
# RX2 frequency (Hz)
rx2_frequency=916600000
rx2_frequency = 916600000
# Prefer RX2 on RX1 data-rate less than.
#
@ -155,13 +164,13 @@
# is smaller than the configured value, then the Network Server will
# first try to schedule the downlink for RX2, failing that (e.g. the gateway
# has already a payload scheduled at the RX2 timing) it will try RX1.
rx2_prefer_on_rx1_dr_lt=0
rx2_prefer_on_rx1_dr_lt = 0
# Prefer RX2 on link budget.
#
# When the link-budget is better for RX2 than for RX1, the Network Server will first
# try to schedule the downlink in RX2, failing that it will try RX1.
rx2_prefer_on_link_budget=false
rx2_prefer_on_link_budget = false
# Downlink TX Power (in dBm EIRP)
#
@ -171,44 +180,44 @@
# Please consult the LoRaWAN Regional Parameters and local regulations
# for valid and legal options. Note that the configured TX Power must be
# supported by your gateway(s).
downlink_tx_power=-1
downlink_tx_power = -1
# ADR is disabled.
adr_disabled=false
adr_disabled = false
# Minimum data-rate.
min_dr=0
min_dr = 0
# Maximum data-rate.
max_dr=5
max_dr = 5
# Rejoin-request configuration (LoRaWAN 1.1)
[regions.network.rejoin_request]
# Request devices to periodically send rejoin-requests.
enabled=false
enabled = false
# The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
# uplink messages. Valid values are 0 to 15.
max_count_n=0
max_count_n = 0
# The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
# seconds. Valid values are 0 to 15.
#
# 0 = roughly 17 minutes
# 15 = about 1 year
max_time_n=0
max_time_n = 0
# Class-B configuration.
[regions.network.class_b]
# Ping-slot data-rate.
ping_slot_dr=3
ping_slot_dr = 3
# Ping-slot frequency (Hz)
#
# set this to 0 to use the default frequency plan for the configured region
# (which could be frequency hopping).
ping_slot_frequency=0
ping_slot_frequency = 0

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an user-defined identifier for this region.
id="as923_4"
id = "as923_4"
# Description is a short description for this region.
description="AS923-4"
description = "AS923-4"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="AS923_4"
common_name = "AS923_4"
# User-defined region information.
#
# This information will be displayed on top of the region page in then
# ChirpStack web-interface. For example, it can contain information about
# how users should connect their gateways when using this region (e.g. MQTT
# end-point, MQTT topic prefix, TLS configuration etc). Markdown syntax can
# be used for formatting.
user_info = ""
# Gateway configuration.
@ -18,14 +27,14 @@
# Force gateways as private.
#
# If enabled, gateways can only be used by devices under the same tenant.
force_gws_private=false
force_gws_private = false
# Gateway backend configuration.
[regions.gateway.backend]
# The enabled backend type.
enabled="mqtt"
enabled = "mqtt"
# MQTT configuration.
[regions.gateway.backend.mqtt]
@ -35,7 +44,7 @@
# The topic prefix can be used to define the region of the gateway.
# Note, there is no need to add a trailing '/' to the prefix. The trailing
# '/' is automatically added to the prefix if it is configured.
topic_prefix="as923_4"
topic_prefix = "as923_4"
# Shared subscription name.
#
@ -45,16 +54,16 @@
# test-environment connected to the same MQTT broker, make sure that
# each environment has its own subscription name, for example:
# chirpstack_prod and chirpstack_tst.
share_name="chirpstack"
share_name = "chirpstack"
# MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
server="tcp://localhost:1883"
server = "tcp://localhost:1883"
# Connect with the given username (optional)
username=""
username = ""
# Connect with the given password (optional)
password=""
password = ""
# Quality of service level
#
@ -64,40 +73,40 @@
#
# Note: an increase of this value will decrease the performance.
# For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
qos=0
qos = 0
# Clean session
#
# Set the "clean session" flag in the connect message when this client
# connects to an MQTT broker. By setting this flag you are indicating
# that no messages saved by the broker for this client should be delivered.
clean_session=false
clean_session = false
# Client ID
#
# Set the client id to be used by this client when connecting to the MQTT
# broker. A client id must be no longer than 23 characters. If left blank,
# a random id will be generated by ChirpStack.
client_id=""
client_id = ""
# Keep alive interval.
#
# This defines the maximum time that that should pass without communication
# between the client and server.
keep_alive_interval="30s"
keep_alive_interval = "30s"
# CA certificate file (optional)
#
# Use this when setting up a secure connection (when server uses ssl://...)
# but the certificate used by the server is not trusted by any CA certificate
# on the server (e.g. when self generated).
ca_cert=""
ca_cert = ""
# TLS certificate file (optional)
tls_cert=""
tls_cert = ""
# TLS key file (optional)
tls_key=""
tls_key = ""
# Gateway channel configuration.
@ -106,16 +115,16 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=917300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 917300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=917500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 917500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
# Region specific network configuration.
@ -127,7 +136,7 @@
# resulting in a lower data-rate but decreasing the chance that the
# device gets disconnected because it is unable to reach one of the
# surrounded gateways.
installation_margin=10
installation_margin = 10
# RX window (Class-A).
#
@ -135,19 +144,19 @@
# 0: RX1 / RX2
# 1: RX1 only
# 2: RX2 only
rx_window=0
rx_window = 0
# RX1 delay (1 - 15 seconds).
rx1_delay=1
rx1_delay = 1
# RX1 data-rate offset
rx1_dr_offset=0
rx1_dr_offset = 0
# RX2 data-rate
rx2_dr=2
rx2_dr = 2
# RX2 frequency (Hz)
rx2_frequency=917300000
rx2_frequency = 917300000
# Prefer RX2 on RX1 data-rate less than.
#
@ -155,13 +164,13 @@
# is smaller than the configured value, then the Network Server will
# first try to schedule the downlink for RX2, failing that (e.g. the gateway
# has already a payload scheduled at the RX2 timing) it will try RX1.
rx2_prefer_on_rx1_dr_lt=0
rx2_prefer_on_rx1_dr_lt = 0
# Prefer RX2 on link budget.
#
# When the link-budget is better for RX2 than for RX1, the Network Server will first
# try to schedule the downlink in RX2, failing that it will try RX1.
rx2_prefer_on_link_budget=false
rx2_prefer_on_link_budget = false
# Downlink TX Power (in dBm EIRP)
#
@ -171,44 +180,44 @@
# Please consult the LoRaWAN Regional Parameters and local regulations
# for valid and legal options. Note that the configured TX Power must be
# supported by your gateway(s).
downlink_tx_power=-1
downlink_tx_power = -1
# ADR is disabled.
adr_disabled=false
adr_disabled = false
# Minimum data-rate.
min_dr=0
min_dr = 0
# Maximum data-rate.
max_dr=5
max_dr = 5
# Rejoin-request configuration (LoRaWAN 1.1)
[regions.network.rejoin_request]
# Request devices to periodically send rejoin-requests.
enabled=false
enabled = false
# The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
# uplink messages. Valid values are 0 to 15.
max_count_n=0
max_count_n = 0
# The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
# seconds. Valid values are 0 to 15.
#
# 0 = roughly 17 minutes
# 15 = about 1 year
max_time_n=0
max_time_n = 0
# Class-B configuration.
[regions.network.class_b]
# Ping-slot data-rate.
ping_slot_dr=3
ping_slot_dr = 3
# Ping-slot frequency (Hz)
#
# set this to 0 to use the default frequency plan for the configured region
# (which could be frequency hopping).
ping_slot_frequency=0
ping_slot_frequency = 0

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an use-defined identifier for this region.
id="au915_0"
id = "au915_0"
# Description is a short description for this region.
description="AU915 (channels 0-7 + 64)"
description = "AU915 (channels 0-7 + 64)"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="AU915"
common_name = "AU915"
# User-defined region information.
#
# This information will be displayed on top of the region page in then
# ChirpStack web-interface. For example, it can contain information about
# how users should connect their gateways when using this region (e.g. MQTT
# end-point, MQTT topic prefix, TLS configuration etc). Markdown syntax can
# be used for formatting.
user_info = ""
# Gateway configuration.
@ -18,14 +27,14 @@
# Force gateways as private.
#
# If enabled, gateways can only be used by devices under the same tenant.
force_gws_private=false
force_gws_private = false
# Gateway backend configuration.
[regions.gateway.backend]
# The enabled backend type.
enabled="mqtt"
enabled = "mqtt"
# MQTT configuration.
[regions.gateway.backend.mqtt]
@ -35,7 +44,7 @@
# The topic prefix can be used to define the region of the gateway.
# Note, there is no need to add a trailing '/' to the prefix. The trailing
# '/' is automatically added to the prefix if it is configured.
topic_prefix="au915_0"
topic_prefix = "au915_0"
# Shared subscription name.
#
@ -45,16 +54,16 @@
# test-environment connected to the same MQTT broker, make sure that
# each environment has its own subscription name, for example:
# chirpstack_prod and chirpstack_tst.
share_name="chirpstack"
share_name = "chirpstack"
# MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
server="tcp://localhost:1883"
server = "tcp://localhost:1883"
# Connect with the given username (optional)
username=""
username = ""
# Connect with the given password (optional)
password=""
password = ""
# Quality of service level
#
@ -64,40 +73,40 @@
#
# Note: an increase of this value will decrease the performance.
# For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
qos=0
qos = 0
# Clean session
#
# Set the "clean session" flag in the connect message when this client
# connects to an MQTT broker. By setting this flag you are indicating
# that no messages saved by the broker for this client should be delivered.
clean_session=false
clean_session = false
# Client ID
#
# Set the client id to be used by this client when connecting to the MQTT
# broker. A client id must be no longer than 23 characters. If left blank,
# a random id will be generated by ChirpStack.
client_id=""
client_id = ""
# Keep alive interval.
#
# This defines the maximum time that that should pass without communication
# between the client and server.
keep_alive_interval="30s"
keep_alive_interval = "30s"
# CA certificate file (optional)
#
# Use this when setting up a secure connection (when server uses ssl://...)
# but the certificate used by the server is not trusted by any CA certificate
# on the server (e.g. when self generated).
ca_cert=""
ca_cert = ""
# TLS certificate file (optional)
tls_cert=""
tls_cert = ""
# TLS key file (optional)
tls_key=""
tls_key = ""
# Gateway channel configuration.
@ -106,58 +115,58 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=915200000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 915200000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=915400000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 915400000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=915600000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 915600000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=915800000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 915800000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=916000000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 916000000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=916200000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 916200000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=916400000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 916400000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=916600000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 916600000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=915900000
bandwidth=500000
modulation="LORA"
spreading_factors=[8]
frequency = 915900000
bandwidth = 500000
modulation = "LORA"
spreading_factors = [8]
# Region specific network configuration.
@ -169,7 +178,7 @@
# resulting in a lower data-rate but decreasing the chance that the
# device gets disconnected because it is unable to reach one of the
# surrounded gateways.
installation_margin=10
installation_margin = 10
# RX window (Class-A).
#
@ -177,19 +186,19 @@
# 0: RX1 / RX2
# 1: RX1 only
# 2: RX2 only
rx_window=0
rx_window = 0
# RX1 delay (1 - 15 seconds).
rx1_delay=1
rx1_delay = 1
# RX1 data-rate offset
rx1_dr_offset=0
rx1_dr_offset = 0
# RX2 data-rate
rx2_dr=8
rx2_dr = 8
# RX2 frequency (Hz)
rx2_frequency=923300000
rx2_frequency = 923300000
# Prefer RX2 on RX1 data-rate less than.
#
@ -197,13 +206,13 @@
# is smaller than the configured value, then the Network Server will
# first try to schedule the downlink for RX2, failing that (e.g. the gateway
# has already a payload scheduled at the RX2 timing) it will try RX1.
rx2_prefer_on_rx1_dr_lt=0
rx2_prefer_on_rx1_dr_lt = 0
# Prefer RX2 on link budget.
#
# When the link-budget is better for RX2 than for RX1, the Network Server will first
# try to schedule the downlink in RX2, failing that it will try RX1.
rx2_prefer_on_link_budget=false
rx2_prefer_on_link_budget = false
# Downlink TX Power (in dBm EIRP)
#
@ -213,51 +222,51 @@
# Please consult the LoRaWAN Regional Parameters and local regulations
# for valid and legal options. Note that the configured TX Power must be
# supported by your gateway(s).
downlink_tx_power=-1
downlink_tx_power = -1
# ADR is disabled.
adr_disabled=false
adr_disabled = false
# Minimum data-rate.
min_dr=0
min_dr = 0
# Maximum data-rate.
max_dr=5
max_dr = 5
# Enabled uplink channels.
#
# Use this when ony a sub-set of the by default enabled channels are being
# used. For example when only using the first 8 channels of the US band.
# Note: when left blank / empty array, all channels will be enabled.
enabled_uplink_channels=[0, 1, 2, 3, 4, 5, 6, 7, 64]
enabled_uplink_channels = [0, 1, 2, 3, 4, 5, 6, 7, 64]
# Rejoin-request configuration (LoRaWAN 1.1)
[regions.network.rejoin_request]
# Request devices to periodically send rejoin-requests.
enabled=false
enabled = false
# The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
# uplink messages. Valid values are 0 to 15.
max_count_n=0
max_count_n = 0
# The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
# seconds. Valid values are 0 to 15.
#
# 0 = roughly 17 minutes
# 15 = about 1 year
max_time_n=0
max_time_n = 0
# Class-B configuration.
[regions.network.class_b]
# Ping-slot data-rate.
ping_slot_dr=8
ping_slot_dr = 8
# Ping-slot frequency (Hz)
#
# set this to 0 to use the default frequency plan for the configured region
# (which could be frequency hopping).
ping_slot_frequency=0
ping_slot_frequency = 0

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an use-defined identifier for this region.
id="au915_1"
id = "au915_1"
# Description is a short description for this region.
description="AU915 (channels 8-15 + 65)"
description = "AU915 (channels 8-15 + 65)"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="AU915"
common_name = "AU915"
# User-defined region information.
#
# This information will be displayed on top of the region page in then
# ChirpStack web-interface. For example, it can contain information about
# how users should connect their gateways when using this region (e.g. MQTT
# end-point, MQTT topic prefix, TLS configuration etc). Markdown syntax can
# be used for formatting.
user_info = ""
# Gateway configuration.
@ -18,14 +27,14 @@
# Force gateways as private.
#
# If enabled, gateways can only be used by devices under the same tenant.
force_gws_private=false
force_gws_private = false
# Gateway backend configuration.
[regions.gateway.backend]
# The enabled backend type.
enabled="mqtt"
enabled = "mqtt"
# MQTT configuration.
[regions.gateway.backend.mqtt]
@ -35,7 +44,7 @@
# The topic prefix can be used to define the region of the gateway.
# Note, there is no need to add a trailing '/' to the prefix. The trailing
# '/' is automatically added to the prefix if it is configured.
topic_prefix="au915_1"
topic_prefix = "au915_1"
# Shared subscription name.
#
@ -45,16 +54,16 @@
# test-environment connected to the same MQTT broker, make sure that
# each environment has its own subscription name, for example:
# chirpstack_prod and chirpstack_tst.
share_name="chirpstack"
share_name = "chirpstack"
# MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
server="tcp://localhost:1883"
server = "tcp://localhost:1883"
# Connect with the given username (optional)
username=""
username = ""
# Connect with the given password (optional)
password=""
password = ""
# Quality of service level
#
@ -64,40 +73,40 @@
#
# Note: an increase of this value will decrease the performance.
# For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
qos=0
qos = 0
# Clean session
#
# Set the "clean session" flag in the connect message when this client
# connects to an MQTT broker. By setting this flag you are indicating
# that no messages saved by the broker for this client should be delivered.
clean_session=false
clean_session = false
# Client ID
#
# Set the client id to be used by this client when connecting to the MQTT
# broker. A client id must be no longer than 23 characters. If left blank,
# a random id will be generated by ChirpStack.
client_id=""
client_id = ""
# Keep alive interval.
#
# This defines the maximum time that that should pass without communication
# between the client and server.
keep_alive_interval="30s"
keep_alive_interval = "30s"
# CA certificate file (optional)
#
# Use this when setting up a secure connection (when server uses ssl://...)
# but the certificate used by the server is not trusted by any CA certificate
# on the server (e.g. when self generated).
ca_cert=""
ca_cert = ""
# TLS certificate file (optional)
tls_cert=""
tls_cert = ""
# TLS key file (optional)
tls_key=""
tls_key = ""
# Gateway channel configuration.
@ -106,58 +115,58 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=916800000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 916800000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=917000000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 917000000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=917200000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 917200000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=917400000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 917400000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=917600000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 917600000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=917800000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 917800000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=918000000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 918000000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=918200000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 918200000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=917500000
bandwidth=500000
modulation="LORA"
spreading_factors=[8]
frequency = 917500000
bandwidth = 500000
modulation = "LORA"
spreading_factors = [8]
# Region specific network configuration.
@ -169,7 +178,7 @@
# resulting in a lower data-rate but decreasing the chance that the
# device gets disconnected because it is unable to reach one of the
# surrounded gateways.
installation_margin=10
installation_margin = 10
# RX window (Class-A).
#
@ -177,19 +186,19 @@
# 0: RX1 / RX2
# 1: RX1 only
# 2: RX2 only
rx_window=0
rx_window = 0
# RX1 delay (1 - 15 seconds).
rx1_delay=1
rx1_delay = 1
# RX1 data-rate offset
rx1_dr_offset=0
rx1_dr_offset = 0
# RX2 data-rate
rx2_dr=8
rx2_dr = 8
# RX2 frequency (Hz)
rx2_frequency=923300000
rx2_frequency = 923300000
# Prefer RX2 on RX1 data-rate less than.
#
@ -197,13 +206,13 @@
# is smaller than the configured value, then the Network Server will
# first try to schedule the downlink for RX2, failing that (e.g. the gateway
# has already a payload scheduled at the RX2 timing) it will try RX1.
rx2_prefer_on_rx1_dr_lt=0
rx2_prefer_on_rx1_dr_lt = 0
# Prefer RX2 on link budget.
#
# When the link-budget is better for RX2 than for RX1, the Network Server will first
# try to schedule the downlink in RX2, failing that it will try RX1.
rx2_prefer_on_link_budget=false
rx2_prefer_on_link_budget = false
# Downlink TX Power (in dBm EIRP)
#
@ -213,51 +222,51 @@
# Please consult the LoRaWAN Regional Parameters and local regulations
# for valid and legal options. Note that the configured TX Power must be
# supported by your gateway(s).
downlink_tx_power=-1
downlink_tx_power = -1
# ADR is disabled.
adr_disabled=false
adr_disabled = false
# Minimum data-rate.
min_dr=0
min_dr = 0
# Maximum data-rate.
max_dr=5
max_dr = 5
# Enabled uplink channels.
#
# Use this when ony a sub-set of the by default enabled channels are being
# used. For example when only using the first 8 channels of the US band.
# Note: when left blank / empty array, all channels will be enabled.
enabled_uplink_channels=[8, 9, 10, 11, 12, 13, 14, 15, 65]
enabled_uplink_channels = [8, 9, 10, 11, 12, 13, 14, 15, 65]
# Rejoin-request configuration (LoRaWAN 1.1)
[regions.network.rejoin_request]
# Request devices to periodically send rejoin-requests.
enabled=false
enabled = false
# The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
# uplink messages. Valid values are 0 to 15.
max_count_n=0
max_count_n = 0
# The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
# seconds. Valid values are 0 to 15.
#
# 0 = roughly 17 minutes
# 15 = about 1 year
max_time_n=0
max_time_n = 0
# Class-B configuration.
[regions.network.class_b]
# Ping-slot data-rate.
ping_slot_dr=8
ping_slot_dr = 8
# Ping-slot frequency (Hz)
#
# set this to 0 to use the default frequency plan for the configured region
# (which could be frequency hopping).
ping_slot_frequency=0
ping_slot_frequency = 0

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an use-defined identifier for this region.
id="au915_2"
id = "au915_2"
# Description is a short description for this region.
description="AU915 (channels 16-23 + 66)"
description = "AU915 (channels 16-23 + 66)"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="AU915"
common_name = "AU915"
# User-defined region information.
#
# This information will be displayed on top of the region page in then
# ChirpStack web-interface. For example, it can contain information about
# how users should connect their gateways when using this region (e.g. MQTT
# end-point, MQTT topic prefix, TLS configuration etc). Markdown syntax can
# be used for formatting.
user_info = ""
# Gateway configuration.
@ -18,14 +27,14 @@
# Force gateways as private.
#
# If enabled, gateways can only be used by devices under the same tenant.
force_gws_private=false
force_gws_private = false
# Gateway backend configuration.
[regions.gateway.backend]
# The enabled backend type.
enabled="mqtt"
enabled = "mqtt"
# MQTT configuration.
[regions.gateway.backend.mqtt]
@ -35,7 +44,7 @@
# The topic prefix can be used to define the region of the gateway.
# Note, there is no need to add a trailing '/' to the prefix. The trailing
# '/' is automatically added to the prefix if it is configured.
topic_prefix="au915_2"
topic_prefix = "au915_2"
# Shared subscription name.
#
@ -45,16 +54,16 @@
# test-environment connected to the same MQTT broker, make sure that
# each environment has its own subscription name, for example:
# chirpstack_prod and chirpstack_tst.
share_name="chirpstack"
share_name = "chirpstack"
# MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
server="tcp://localhost:1883"
server = "tcp://localhost:1883"
# Connect with the given username (optional)
username=""
username = ""
# Connect with the given password (optional)
password=""
password = ""
# Quality of service level
#
@ -64,40 +73,40 @@
#
# Note: an increase of this value will decrease the performance.
# For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
qos=0
qos = 0
# Clean session
#
# Set the "clean session" flag in the connect message when this client
# connects to an MQTT broker. By setting this flag you are indicating
# that no messages saved by the broker for this client should be delivered.
clean_session=false
clean_session = false
# Client ID
#
# Set the client id to be used by this client when connecting to the MQTT
# broker. A client id must be no longer than 23 characters. If left blank,
# a random id will be generated by ChirpStack.
client_id=""
client_id = ""
# Keep alive interval.
#
# This defines the maximum time that that should pass without communication
# between the client and server.
keep_alive_interval="30s"
keep_alive_interval = "30s"
# CA certificate file (optional)
#
# Use this when setting up a secure connection (when server uses ssl://...)
# but the certificate used by the server is not trusted by any CA certificate
# on the server (e.g. when self generated).
ca_cert=""
ca_cert = ""
# TLS certificate file (optional)
tls_cert=""
tls_cert = ""
# TLS key file (optional)
tls_key=""
tls_key = ""
# Gateway channel configuration.
@ -106,58 +115,58 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=918400000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 918400000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=918600000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 918600000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=918800000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 918800000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=919000000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 919000000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=919200000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 919200000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=919400000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 919400000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=919600000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 919600000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=919800000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 919800000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=919100000
bandwidth=500000
modulation="LORA"
spreading_factors=[8]
frequency = 919100000
bandwidth = 500000
modulation = "LORA"
spreading_factors = [8]
# Region specific network configuration.
@ -169,7 +178,7 @@
# resulting in a lower data-rate but decreasing the chance that the
# device gets disconnected because it is unable to reach one of the
# surrounded gateways.
installation_margin=10
installation_margin = 10
# RX window (Class-A).
#
@ -177,19 +186,19 @@
# 0: RX1 / RX2
# 1: RX1 only
# 2: RX2 only
rx_window=0
rx_window = 0
# RX1 delay (1 - 15 seconds).
rx1_delay=1
rx1_delay = 1
# RX1 data-rate offset
rx1_dr_offset=0
rx1_dr_offset = 0
# RX2 data-rate
rx2_dr=8
rx2_dr = 8
# RX2 frequency (Hz)
rx2_frequency=923300000
rx2_frequency = 923300000
# Prefer RX2 on RX1 data-rate less than.
#
@ -197,13 +206,13 @@
# is smaller than the configured value, then the Network Server will
# first try to schedule the downlink for RX2, failing that (e.g. the gateway
# has already a payload scheduled at the RX2 timing) it will try RX1.
rx2_prefer_on_rx1_dr_lt=0
rx2_prefer_on_rx1_dr_lt = 0
# Prefer RX2 on link budget.
#
# When the link-budget is better for RX2 than for RX1, the Network Server will first
# try to schedule the downlink in RX2, failing that it will try RX1.
rx2_prefer_on_link_budget=false
rx2_prefer_on_link_budget = false
# Downlink TX Power (in dBm EIRP)
#
@ -213,51 +222,51 @@
# Please consult the LoRaWAN Regional Parameters and local regulations
# for valid and legal options. Note that the configured TX Power must be
# supported by your gateway(s).
downlink_tx_power=-1
downlink_tx_power = -1
# ADR is disabled.
adr_disabled=false
adr_disabled = false
# Minimum data-rate.
min_dr=0
min_dr = 0
# Maximum data-rate.
max_dr=5
max_dr = 5
# Enabled uplink channels.
#
# Use this when ony a sub-set of the by default enabled channels are being
# used. For example when only using the first 8 channels of the US band.
# Note: when left blank / empty array, all channels will be enabled.
enabled_uplink_channels=[16, 17, 18, 19, 20, 21, 22, 23, 66]
enabled_uplink_channels = [16, 17, 18, 19, 20, 21, 22, 23, 66]
# Rejoin-request configuration (LoRaWAN 1.1)
[regions.network.rejoin_request]
# Request devices to periodically send rejoin-requests.
enabled=false
enabled = false
# The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
# uplink messages. Valid values are 0 to 15.
max_count_n=0
max_count_n = 0
# The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
# seconds. Valid values are 0 to 15.
#
# 0 = roughly 17 minutes
# 15 = about 1 year
max_time_n=0
max_time_n = 0
# Class-B configuration.
[regions.network.class_b]
# Ping-slot data-rate.
ping_slot_dr=8
ping_slot_dr = 8
# Ping-slot frequency (Hz)
#
# set this to 0 to use the default frequency plan for the configured region
# (which could be frequency hopping).
ping_slot_frequency=0
ping_slot_frequency = 0

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an use-defined identifier for this region.
id="au915_3"
id = "au915_3"
# Description is a short description for this region.
description="AU915 (channels 24-31 + 67)"
description = "AU915 (channels 24-31 + 67)"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="AU915"
common_name = "AU915"
# User-defined region information.
#
# This information will be displayed on top of the region page in then
# ChirpStack web-interface. For example, it can contain information about
# how users should connect their gateways when using this region (e.g. MQTT
# end-point, MQTT topic prefix, TLS configuration etc). Markdown syntax can
# be used for formatting.
user_info = ""
# Gateway configuration.
@ -18,14 +27,14 @@
# Force gateways as private.
#
# If enabled, gateways can only be used by devices under the same tenant.
force_gws_private=false
force_gws_private = false
# Gateway backend configuration.
[regions.gateway.backend]
# The enabled backend type.
enabled="mqtt"
enabled = "mqtt"
# MQTT configuration.
[regions.gateway.backend.mqtt]
@ -35,7 +44,7 @@
# The topic prefix can be used to define the region of the gateway.
# Note, there is no need to add a trailing '/' to the prefix. The trailing
# '/' is automatically added to the prefix if it is configured.
topic_prefix="au915_3"
topic_prefix = "au915_3"
# Shared subscription name.
#
@ -45,16 +54,16 @@
# test-environment connected to the same MQTT broker, make sure that
# each environment has its own subscription name, for example:
# chirpstack_prod and chirpstack_tst.
share_name="chirpstack"
share_name = "chirpstack"
# MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
server="tcp://localhost:1883"
server = "tcp://localhost:1883"
# Connect with the given username (optional)
username=""
username = ""
# Connect with the given password (optional)
password=""
password = ""
# Quality of service level
#
@ -64,40 +73,40 @@
#
# Note: an increase of this value will decrease the performance.
# For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
qos=0
qos = 0
# Clean session
#
# Set the "clean session" flag in the connect message when this client
# connects to an MQTT broker. By setting this flag you are indicating
# that no messages saved by the broker for this client should be delivered.
clean_session=false
clean_session = false
# Client ID
#
# Set the client id to be used by this client when connecting to the MQTT
# broker. A client id must be no longer than 23 characters. If left blank,
# a random id will be generated by ChirpStack.
client_id=""
client_id = ""
# Keep alive interval.
#
# This defines the maximum time that that should pass without communication
# between the client and server.
keep_alive_interval="30s"
keep_alive_interval = "30s"
# CA certificate file (optional)
#
# Use this when setting up a secure connection (when server uses ssl://...)
# but the certificate used by the server is not trusted by any CA certificate
# on the server (e.g. when self generated).
ca_cert=""
ca_cert = ""
# TLS certificate file (optional)
tls_cert=""
tls_cert = ""
# TLS key file (optional)
tls_key=""
tls_key = ""
# Gateway channel configuration.
@ -106,58 +115,58 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=920000000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 920000000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=920200000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 920200000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=920400000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 920400000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=920600000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 920600000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=920800000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 920800000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=921000000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 921000000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=921200000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 921200000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=921400000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 921400000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=920700000
bandwidth=500000
modulation="LORA"
spreading_factors=[8]
frequency = 920700000
bandwidth = 500000
modulation = "LORA"
spreading_factors = [8]
# Region specific network configuration.
@ -169,7 +178,7 @@
# resulting in a lower data-rate but decreasing the chance that the
# device gets disconnected because it is unable to reach one of the
# surrounded gateways.
installation_margin=10
installation_margin = 10
# RX window (Class-A).
#
@ -177,19 +186,19 @@
# 0: RX1 / RX2
# 1: RX1 only
# 2: RX2 only
rx_window=0
rx_window = 0
# RX1 delay (1 - 15 seconds).
rx1_delay=1
rx1_delay = 1
# RX1 data-rate offset
rx1_dr_offset=0
rx1_dr_offset = 0
# RX2 data-rate
rx2_dr=8
rx2_dr = 8
# RX2 frequency (Hz)
rx2_frequency=923300000
rx2_frequency = 923300000
# Prefer RX2 on RX1 data-rate less than.
#
@ -197,13 +206,13 @@
# is smaller than the configured value, then the Network Server will
# first try to schedule the downlink for RX2, failing that (e.g. the gateway
# has already a payload scheduled at the RX2 timing) it will try RX1.
rx2_prefer_on_rx1_dr_lt=0
rx2_prefer_on_rx1_dr_lt = 0
# Prefer RX2 on link budget.
#
# When the link-budget is better for RX2 than for RX1, the Network Server will first
# try to schedule the downlink in RX2, failing that it will try RX1.
rx2_prefer_on_link_budget=false
rx2_prefer_on_link_budget = false
# Downlink TX Power (in dBm EIRP)
#
@ -213,51 +222,51 @@
# Please consult the LoRaWAN Regional Parameters and local regulations
# for valid and legal options. Note that the configured TX Power must be
# supported by your gateway(s).
downlink_tx_power=-1
downlink_tx_power = -1
# ADR is disabled.
adr_disabled=false
adr_disabled = false
# Minimum data-rate.
min_dr=0
min_dr = 0
# Maximum data-rate.
max_dr=5
max_dr = 5
# Enabled uplink channels.
#
# Use this when ony a sub-set of the by default enabled channels are being
# used. For example when only using the first 8 channels of the US band.
# Note: when left blank / empty array, all channels will be enabled.
enabled_uplink_channels=[24, 25, 26, 27, 28, 29, 30, 31, 67]
enabled_uplink_channels = [24, 25, 26, 27, 28, 29, 30, 31, 67]
# Rejoin-request configuration (LoRaWAN 1.1)
[regions.network.rejoin_request]
# Request devices to periodically send rejoin-requests.
enabled=false
enabled = false
# The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
# uplink messages. Valid values are 0 to 15.
max_count_n=0
max_count_n = 0
# The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
# seconds. Valid values are 0 to 15.
#
# 0 = roughly 17 minutes
# 15 = about 1 year
max_time_n=0
max_time_n = 0
# Class-B configuration.
[regions.network.class_b]
# Ping-slot data-rate.
ping_slot_dr=8
ping_slot_dr = 8
# Ping-slot frequency (Hz)
#
# set this to 0 to use the default frequency plan for the configured region
# (which could be frequency hopping).
ping_slot_frequency=0
ping_slot_frequency = 0

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an use-defined identifier for this region.
id="au915_4"
id = "au915_4"
# Description is a short description for this region.
description="AU915 (channels 32-39 + 68)"
description = "AU915 (channels 32-39 + 68)"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="AU915"
common_name = "AU915"
# User-defined region information.
#
# This information will be displayed on top of the region page in then
# ChirpStack web-interface. For example, it can contain information about
# how users should connect their gateways when using this region (e.g. MQTT
# end-point, MQTT topic prefix, TLS configuration etc). Markdown syntax can
# be used for formatting.
user_info = ""
# Gateway configuration.
@ -18,14 +27,14 @@
# Force gateways as private.
#
# If enabled, gateways can only be used by devices under the same tenant.
force_gws_private=false
force_gws_private = false
# Gateway backend configuration.
[regions.gateway.backend]
# The enabled backend type.
enabled="mqtt"
enabled = "mqtt"
# MQTT configuration.
[regions.gateway.backend.mqtt]
@ -35,7 +44,7 @@
# The topic prefix can be used to define the region of the gateway.
# Note, there is no need to add a trailing '/' to the prefix. The trailing
# '/' is automatically added to the prefix if it is configured.
topic_prefix="au915_4"
topic_prefix = "au915_4"
# Shared subscription name.
#
@ -45,16 +54,16 @@
# test-environment connected to the same MQTT broker, make sure that
# each environment has its own subscription name, for example:
# chirpstack_prod and chirpstack_tst.
share_name="chirpstack"
share_name = "chirpstack"
# MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
server="tcp://localhost:1883"
server = "tcp://localhost:1883"
# Connect with the given username (optional)
username=""
username = ""
# Connect with the given password (optional)
password=""
password = ""
# Quality of service level
#
@ -64,40 +73,40 @@
#
# Note: an increase of this value will decrease the performance.
# For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
qos=0
qos = 0
# Clean session
#
# Set the "clean session" flag in the connect message when this client
# connects to an MQTT broker. By setting this flag you are indicating
# that no messages saved by the broker for this client should be delivered.
clean_session=false
clean_session = false
# Client ID
#
# Set the client id to be used by this client when connecting to the MQTT
# broker. A client id must be no longer than 23 characters. If left blank,
# a random id will be generated by ChirpStack.
client_id=""
client_id = ""
# Keep alive interval.
#
# This defines the maximum time that that should pass without communication
# between the client and server.
keep_alive_interval="30s"
keep_alive_interval = "30s"
# CA certificate file (optional)
#
# Use this when setting up a secure connection (when server uses ssl://...)
# but the certificate used by the server is not trusted by any CA certificate
# on the server (e.g. when self generated).
ca_cert=""
ca_cert = ""
# TLS certificate file (optional)
tls_cert=""
tls_cert = ""
# TLS key file (optional)
tls_key=""
tls_key = ""
# Gateway channel configuration.
@ -106,58 +115,58 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=921600000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 921600000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=921800000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 921800000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=922000000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 922000000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=922200000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 922200000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=922400000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 922400000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=922600000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 922600000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=922800000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 922800000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=923000000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 923000000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=922300000
bandwidth=500000
modulation="LORA"
spreading_factors=[8]
frequency = 922300000
bandwidth = 500000
modulation = "LORA"
spreading_factors = [8]
# Region specific network configuration.
@ -169,7 +178,7 @@
# resulting in a lower data-rate but decreasing the chance that the
# device gets disconnected because it is unable to reach one of the
# surrounded gateways.
installation_margin=10
installation_margin = 10
# RX window (Class-A).
#
@ -177,19 +186,19 @@
# 0: RX1 / RX2
# 1: RX1 only
# 2: RX2 only
rx_window=0
rx_window = 0
# RX1 delay (1 - 15 seconds).
rx1_delay=1
rx1_delay = 1
# RX1 data-rate offset
rx1_dr_offset=0
rx1_dr_offset = 0
# RX2 data-rate
rx2_dr=8
rx2_dr = 8
# RX2 frequency (Hz)
rx2_frequency=923300000
rx2_frequency = 923300000
# Prefer RX2 on RX1 data-rate less than.
#
@ -197,13 +206,13 @@
# is smaller than the configured value, then the Network Server will
# first try to schedule the downlink for RX2, failing that (e.g. the gateway
# has already a payload scheduled at the RX2 timing) it will try RX1.
rx2_prefer_on_rx1_dr_lt=0
rx2_prefer_on_rx1_dr_lt = 0
# Prefer RX2 on link budget.
#
# When the link-budget is better for RX2 than for RX1, the Network Server will first
# try to schedule the downlink in RX2, failing that it will try RX1.
rx2_prefer_on_link_budget=false
rx2_prefer_on_link_budget = false
# Downlink TX Power (in dBm EIRP)
#
@ -213,51 +222,51 @@
# Please consult the LoRaWAN Regional Parameters and local regulations
# for valid and legal options. Note that the configured TX Power must be
# supported by your gateway(s).
downlink_tx_power=-1
downlink_tx_power = -1
# ADR is disabled.
adr_disabled=false
adr_disabled = false
# Minimum data-rate.
min_dr=0
min_dr = 0
# Maximum data-rate.
max_dr=5
max_dr = 5
# Enabled uplink channels.
#
# Use this when ony a sub-set of the by default enabled channels are being
# used. For example when only using the first 8 channels of the US band.
# Note: when left blank / empty array, all channels will be enabled.
enabled_uplink_channels=[32, 33, 34, 35, 36, 37, 38, 39, 68]
enabled_uplink_channels = [32, 33, 34, 35, 36, 37, 38, 39, 68]
# Rejoin-request configuration (LoRaWAN 1.1)
[regions.network.rejoin_request]
# Request devices to periodically send rejoin-requests.
enabled=false
enabled = false
# The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
# uplink messages. Valid values are 0 to 15.
max_count_n=0
max_count_n = 0
# The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
# seconds. Valid values are 0 to 15.
#
# 0 = roughly 17 minutes
# 15 = about 1 year
max_time_n=0
max_time_n = 0
# Class-B configuration.
[regions.network.class_b]
# Ping-slot data-rate.
ping_slot_dr=8
ping_slot_dr = 8
# Ping-slot frequency (Hz)
#
# set this to 0 to use the default frequency plan for the configured region
# (which could be frequency hopping).
ping_slot_frequency=0
ping_slot_frequency = 0

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an use-defined identifier for this region.
id="au915_5"
id = "au915_5"
# Description is a short description for this region.
description="AU915 (channels 40-47 + 69)"
description = "AU915 (channels 40-47 + 69)"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="AU915"
common_name = "AU915"
# User-defined region information.
#
# This information will be displayed on top of the region page in then
# ChirpStack web-interface. For example, it can contain information about
# how users should connect their gateways when using this region (e.g. MQTT
# end-point, MQTT topic prefix, TLS configuration etc). Markdown syntax can
# be used for formatting.
user_info = ""
# Gateway configuration.
@ -18,14 +27,14 @@
# Force gateways as private.
#
# If enabled, gateways can only be used by devices under the same tenant.
force_gws_private=false
force_gws_private = false
# Gateway backend configuration.
[regions.gateway.backend]
# The enabled backend type.
enabled="mqtt"
enabled = "mqtt"
# MQTT configuration.
[regions.gateway.backend.mqtt]
@ -35,7 +44,7 @@
# The topic prefix can be used to define the region of the gateway.
# Note, there is no need to add a trailing '/' to the prefix. The trailing
# '/' is automatically added to the prefix if it is configured.
topic_prefix="au915_5"
topic_prefix = "au915_5"
# Shared subscription name.
#
@ -45,16 +54,16 @@
# test-environment connected to the same MQTT broker, make sure that
# each environment has its own subscription name, for example:
# chirpstack_prod and chirpstack_tst.
share_name="chirpstack"
share_name = "chirpstack"
# MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
server="tcp://localhost:1883"
server = "tcp://localhost:1883"
# Connect with the given username (optional)
username=""
username = ""
# Connect with the given password (optional)
password=""
password = ""
# Quality of service level
#
@ -64,40 +73,40 @@
#
# Note: an increase of this value will decrease the performance.
# For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
qos=0
qos = 0
# Clean session
#
# Set the "clean session" flag in the connect message when this client
# connects to an MQTT broker. By setting this flag you are indicating
# that no messages saved by the broker for this client should be delivered.
clean_session=false
clean_session = false
# Client ID
#
# Set the client id to be used by this client when connecting to the MQTT
# broker. A client id must be no longer than 23 characters. If left blank,
# a random id will be generated by ChirpStack.
client_id=""
client_id = ""
# Keep alive interval.
#
# This defines the maximum time that that should pass without communication
# between the client and server.
keep_alive_interval="30s"
keep_alive_interval = "30s"
# CA certificate file (optional)
#
# Use this when setting up a secure connection (when server uses ssl://...)
# but the certificate used by the server is not trusted by any CA certificate
# on the server (e.g. when self generated).
ca_cert=""
ca_cert = ""
# TLS certificate file (optional)
tls_cert=""
tls_cert = ""
# TLS key file (optional)
tls_key=""
tls_key = ""
# Gateway channel configuration.
@ -106,58 +115,58 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=923200000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 923200000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=923400000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 923400000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=923600000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 923600000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=923800000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 923800000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=924000000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 924000000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=924200000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 924200000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=924400000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 924400000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=924600000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 924600000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=923900000
bandwidth=500000
modulation="LORA"
spreading_factors=[8]
frequency = 923900000
bandwidth = 500000
modulation = "LORA"
spreading_factors = [8]
# Region specific network configuration.
@ -169,7 +178,7 @@
# resulting in a lower data-rate but decreasing the chance that the
# device gets disconnected because it is unable to reach one of the
# surrounded gateways.
installation_margin=10
installation_margin = 10
# RX window (Class-A).
#
@ -177,19 +186,19 @@
# 0: RX1 / RX2
# 1: RX1 only
# 2: RX2 only
rx_window=0
rx_window = 0
# RX1 delay (1 - 15 seconds).
rx1_delay=1
rx1_delay = 1
# RX1 data-rate offset
rx1_dr_offset=0
rx1_dr_offset = 0
# RX2 data-rate
rx2_dr=8
rx2_dr = 8
# RX2 frequency (Hz)
rx2_frequency=923300000
rx2_frequency = 923300000
# Prefer RX2 on RX1 data-rate less than.
#
@ -197,13 +206,13 @@
# is smaller than the configured value, then the Network Server will
# first try to schedule the downlink for RX2, failing that (e.g. the gateway
# has already a payload scheduled at the RX2 timing) it will try RX1.
rx2_prefer_on_rx1_dr_lt=0
rx2_prefer_on_rx1_dr_lt = 0
# Prefer RX2 on link budget.
#
# When the link-budget is better for RX2 than for RX1, the Network Server will first
# try to schedule the downlink in RX2, failing that it will try RX1.
rx2_prefer_on_link_budget=false
rx2_prefer_on_link_budget = false
# Downlink TX Power (in dBm EIRP)
#
@ -213,51 +222,51 @@
# Please consult the LoRaWAN Regional Parameters and local regulations
# for valid and legal options. Note that the configured TX Power must be
# supported by your gateway(s).
downlink_tx_power=-1
downlink_tx_power = -1
# ADR is disabled.
adr_disabled=false
adr_disabled = false
# Minimum data-rate.
min_dr=0
min_dr = 0
# Maximum data-rate.
max_dr=5
max_dr = 5
# Enabled uplink channels.
#
# Use this when ony a sub-set of the by default enabled channels are being
# used. For example when only using the first 8 channels of the US band.
# Note: when left blank / empty array, all channels will be enabled.
enabled_uplink_channels=[40, 41, 42, 43, 44, 45, 46, 47, 69]
enabled_uplink_channels = [40, 41, 42, 43, 44, 45, 46, 47, 69]
# Rejoin-request configuration (LoRaWAN 1.1)
[regions.network.rejoin_request]
# Request devices to periodically send rejoin-requests.
enabled=false
enabled = false
# The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
# uplink messages. Valid values are 0 to 15.
max_count_n=0
max_count_n = 0
# The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
# seconds. Valid values are 0 to 15.
#
# 0 = roughly 17 minutes
# 15 = about 1 year
max_time_n=0
max_time_n = 0
# Class-B configuration.
[regions.network.class_b]
# Ping-slot data-rate.
ping_slot_dr=8
ping_slot_dr = 8
# Ping-slot frequency (Hz)
#
# set this to 0 to use the default frequency plan for the configured region
# (which could be frequency hopping).
ping_slot_frequency=0
ping_slot_frequency = 0

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an use-defined identifier for this region.
id="au915_6"
id = "au915_6"
# Description is a short description for this region.
description="AU915 (channels 48-55 + 70)"
description = "AU915 (channels 48-55 + 70)"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="AU915"
common_name = "AU915"
# User-defined region information.
#
# This information will be displayed on top of the region page in then
# ChirpStack web-interface. For example, it can contain information about
# how users should connect their gateways when using this region (e.g. MQTT
# end-point, MQTT topic prefix, TLS configuration etc). Markdown syntax can
# be used for formatting.
user_info = ""
# Gateway configuration.
@ -18,14 +27,14 @@
# Force gateways as private.
#
# If enabled, gateways can only be used by devices under the same tenant.
force_gws_private=false
force_gws_private = false
# Gateway backend configuration.
[regions.gateway.backend]
# The enabled backend type.
enabled="mqtt"
enabled = "mqtt"
# MQTT configuration.
[regions.gateway.backend.mqtt]
@ -35,7 +44,7 @@
# The topic prefix can be used to define the region of the gateway.
# Note, there is no need to add a trailing '/' to the prefix. The trailing
# '/' is automatically added to the prefix if it is configured.
topic_prefix="au915_6"
topic_prefix = "au915_6"
# Shared subscription name.
#
@ -45,16 +54,16 @@
# test-environment connected to the same MQTT broker, make sure that
# each environment has its own subscription name, for example:
# chirpstack_prod and chirpstack_tst.
share_name="chirpstack"
share_name = "chirpstack"
# MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
server="tcp://localhost:1883"
server = "tcp://localhost:1883"
# Connect with the given username (optional)
username=""
username = ""
# Connect with the given password (optional)
password=""
password = ""
# Quality of service level
#
@ -64,40 +73,40 @@
#
# Note: an increase of this value will decrease the performance.
# For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
qos=0
qos = 0
# Clean session
#
# Set the "clean session" flag in the connect message when this client
# connects to an MQTT broker. By setting this flag you are indicating
# that no messages saved by the broker for this client should be delivered.
clean_session=false
clean_session = false
# Client ID
#
# Set the client id to be used by this client when connecting to the MQTT
# broker. A client id must be no longer than 23 characters. If left blank,
# a random id will be generated by ChirpStack.
client_id=""
client_id = ""
# Keep alive interval.
#
# This defines the maximum time that that should pass without communication
# between the client and server.
keep_alive_interval="30s"
keep_alive_interval = "30s"
# CA certificate file (optional)
#
# Use this when setting up a secure connection (when server uses ssl://...)
# but the certificate used by the server is not trusted by any CA certificate
# on the server (e.g. when self generated).
ca_cert=""
ca_cert = ""
# TLS certificate file (optional)
tls_cert=""
tls_cert = ""
# TLS key file (optional)
tls_key=""
tls_key = ""
# Gateway channel configuration.
@ -106,58 +115,58 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=924800000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 924800000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=925000000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 925000000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=925200000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 925200000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=925400000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 925400000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=925600000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 925600000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=925800000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 925800000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=926000000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 926000000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=926200000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 926200000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=925500000
bandwidth=500000
modulation="LORA"
spreading_factors=[8]
frequency = 925500000
bandwidth = 500000
modulation = "LORA"
spreading_factors = [8]
# Region specific network configuration.
@ -169,7 +178,7 @@
# resulting in a lower data-rate but decreasing the chance that the
# device gets disconnected because it is unable to reach one of the
# surrounded gateways.
installation_margin=10
installation_margin = 10
# RX window (Class-A).
#
@ -177,19 +186,19 @@
# 0: RX1 / RX2
# 1: RX1 only
# 2: RX2 only
rx_window=0
rx_window = 0
# RX1 delay (1 - 15 seconds).
rx1_delay=1
rx1_delay = 1
# RX1 data-rate offset
rx1_dr_offset=0
rx1_dr_offset = 0
# RX2 data-rate
rx2_dr=8
rx2_dr = 8
# RX2 frequency (Hz)
rx2_frequency=923300000
rx2_frequency = 923300000
# Prefer RX2 on RX1 data-rate less than.
#
@ -197,13 +206,13 @@
# is smaller than the configured value, then the Network Server will
# first try to schedule the downlink for RX2, failing that (e.g. the gateway
# has already a payload scheduled at the RX2 timing) it will try RX1.
rx2_prefer_on_rx1_dr_lt=0
rx2_prefer_on_rx1_dr_lt = 0
# Prefer RX2 on link budget.
#
# When the link-budget is better for RX2 than for RX1, the Network Server will first
# try to schedule the downlink in RX2, failing that it will try RX1.
rx2_prefer_on_link_budget=false
rx2_prefer_on_link_budget = false
# Downlink TX Power (in dBm EIRP)
#
@ -213,51 +222,51 @@
# Please consult the LoRaWAN Regional Parameters and local regulations
# for valid and legal options. Note that the configured TX Power must be
# supported by your gateway(s).
downlink_tx_power=-1
downlink_tx_power = -1
# ADR is disabled.
adr_disabled=false
adr_disabled = false
# Minimum data-rate.
min_dr=0
min_dr = 0
# Maximum data-rate.
max_dr=5
max_dr = 5
# Enabled uplink channels.
#
# Use this when ony a sub-set of the by default enabled channels are being
# used. For example when only using the first 8 channels of the US band.
# Note: when left blank / empty array, all channels will be enabled.
enabled_uplink_channels=[48, 49, 50, 51, 52, 53, 54, 55, 70]
enabled_uplink_channels = [48, 49, 50, 51, 52, 53, 54, 55, 70]
# Rejoin-request configuration (LoRaWAN 1.1)
[regions.network.rejoin_request]
# Request devices to periodically send rejoin-requests.
enabled=false
enabled = false
# The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
# uplink messages. Valid values are 0 to 15.
max_count_n=0
max_count_n = 0
# The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
# seconds. Valid values are 0 to 15.
#
# 0 = roughly 17 minutes
# 15 = about 1 year
max_time_n=0
max_time_n = 0
# Class-B configuration.
[regions.network.class_b]
# Ping-slot data-rate.
ping_slot_dr=8
ping_slot_dr = 8
# Ping-slot frequency (Hz)
#
# set this to 0 to use the default frequency plan for the configured region
# (which could be frequency hopping).
ping_slot_frequency=0
ping_slot_frequency = 0

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an use-defined identifier for this region.
id="au915_7"
id = "au915_7"
# Description is a short description for this region.
description="AU915 (channels 56-63 + 71)"
description = "AU915 (channels 56-63 + 71)"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="AU915"
common_name = "AU915"
# User-defined region information.
#
# This information will be displayed on top of the region page in then
# ChirpStack web-interface. For example, it can contain information about
# how users should connect their gateways when using this region (e.g. MQTT
# end-point, MQTT topic prefix, TLS configuration etc). Markdown syntax can
# be used for formatting.
user_info = ""
# Gateway configuration.
@ -18,14 +27,14 @@
# Force gateways as private.
#
# If enabled, gateways can only be used by devices under the same tenant.
force_gws_private=false
force_gws_private = false
# Gateway backend configuration.
[regions.gateway.backend]
# The enabled backend type.
enabled="mqtt"
enabled = "mqtt"
# MQTT configuration.
[regions.gateway.backend.mqtt]
@ -35,7 +44,7 @@
# The topic prefix can be used to define the region of the gateway.
# Note, there is no need to add a trailing '/' to the prefix. The trailing
# '/' is automatically added to the prefix if it is configured.
topic_prefix="au915_7"
topic_prefix = "au915_7"
# Shared subscription name.
#
@ -45,16 +54,16 @@
# test-environment connected to the same MQTT broker, make sure that
# each environment has its own subscription name, for example:
# chirpstack_prod and chirpstack_tst.
share_name="chirpstack"
share_name = "chirpstack"
# MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
server="tcp://localhost:1883"
server = "tcp://localhost:1883"
# Connect with the given username (optional)
username=""
username = ""
# Connect with the given password (optional)
password=""
password = ""
# Quality of service level
#
@ -64,40 +73,40 @@
#
# Note: an increase of this value will decrease the performance.
# For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
qos=0
qos = 0
# Clean session
#
# Set the "clean session" flag in the connect message when this client
# connects to an MQTT broker. By setting this flag you are indicating
# that no messages saved by the broker for this client should be delivered.
clean_session=false
clean_session = false
# Client ID
#
# Set the client id to be used by this client when connecting to the MQTT
# broker. A client id must be no longer than 23 characters. If left blank,
# a random id will be generated by ChirpStack.
client_id=""
client_id = ""
# Keep alive interval.
#
# This defines the maximum time that that should pass without communication
# between the client and server.
keep_alive_interval="30s"
keep_alive_interval = "30s"
# CA certificate file (optional)
#
# Use this when setting up a secure connection (when server uses ssl://...)
# but the certificate used by the server is not trusted by any CA certificate
# on the server (e.g. when self generated).
ca_cert=""
ca_cert = ""
# TLS certificate file (optional)
tls_cert=""
tls_cert = ""
# TLS key file (optional)
tls_key=""
tls_key = ""
# Gateway channel configuration.
@ -106,58 +115,58 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=926400000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 926400000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=926600000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 926600000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=926800000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 926800000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=927000000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 927000000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=927200000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 927200000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=927400000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 927400000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=927600000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 927600000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=927800000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 927800000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=927100000
bandwidth=500000
modulation="LORA"
spreading_factors=[8]
frequency = 927100000
bandwidth = 500000
modulation = "LORA"
spreading_factors = [8]
# Region specific network configuration.
@ -169,7 +178,7 @@
# resulting in a lower data-rate but decreasing the chance that the
# device gets disconnected because it is unable to reach one of the
# surrounded gateways.
installation_margin=10
installation_margin = 10
# RX window (Class-A).
#
@ -177,19 +186,19 @@
# 0: RX1 / RX2
# 1: RX1 only
# 2: RX2 only
rx_window=0
rx_window = 0
# RX1 delay (1 - 15 seconds).
rx1_delay=1
rx1_delay = 1
# RX1 data-rate offset
rx1_dr_offset=0
rx1_dr_offset = 0
# RX2 data-rate
rx2_dr=8
rx2_dr = 8
# RX2 frequency (Hz)
rx2_frequency=923300000
rx2_frequency = 923300000
# Prefer RX2 on RX1 data-rate less than.
#
@ -197,13 +206,13 @@
# is smaller than the configured value, then the Network Server will
# first try to schedule the downlink for RX2, failing that (e.g. the gateway
# has already a payload scheduled at the RX2 timing) it will try RX1.
rx2_prefer_on_rx1_dr_lt=0
rx2_prefer_on_rx1_dr_lt = 0
# Prefer RX2 on link budget.
#
# When the link-budget is better for RX2 than for RX1, the Network Server will first
# try to schedule the downlink in RX2, failing that it will try RX1.
rx2_prefer_on_link_budget=false
rx2_prefer_on_link_budget = false
# Downlink TX Power (in dBm EIRP)
#
@ -213,51 +222,51 @@
# Please consult the LoRaWAN Regional Parameters and local regulations
# for valid and legal options. Note that the configured TX Power must be
# supported by your gateway(s).
downlink_tx_power=-1
downlink_tx_power = -1
# ADR is disabled.
adr_disabled=false
adr_disabled = false
# Minimum data-rate.
min_dr=0
min_dr = 0
# Maximum data-rate.
max_dr=5
max_dr = 5
# Enabled uplink channels.
#
# Use this when ony a sub-set of the by default enabled channels are being
# used. For example when only using the first 8 channels of the US band.
# Note: when left blank / empty array, all channels will be enabled.
enabled_uplink_channels=[56, 57, 58, 59, 60, 61, 62, 63, 71]
enabled_uplink_channels = [56, 57, 58, 59, 60, 61, 62, 63, 71]
# Rejoin-request configuration (LoRaWAN 1.1)
[regions.network.rejoin_request]
# Request devices to periodically send rejoin-requests.
enabled=false
enabled = false
# The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
# uplink messages. Valid values are 0 to 15.
max_count_n=0
max_count_n = 0
# The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
# seconds. Valid values are 0 to 15.
#
# 0 = roughly 17 minutes
# 15 = about 1 year
max_time_n=0
max_time_n = 0
# Class-B configuration.
[regions.network.class_b]
# Ping-slot data-rate.
ping_slot_dr=8
ping_slot_dr = 8
# Ping-slot frequency (Hz)
#
# set this to 0 to use the default frequency plan for the configured region
# (which could be frequency hopping).
ping_slot_frequency=0
ping_slot_frequency = 0

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an use-defined identifier for this region.
id="cn470_0"
id = "cn470_0"
# Description is a short description for this region.
description="CN470 (channels 0-7)"
description = "CN470 (channels 0-7)"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="CN470"
common_name = "CN470"
# User-defined region information.
#
# This information will be displayed on top of the region page in then
# ChirpStack web-interface. For example, it can contain information about
# how users should connect their gateways when using this region (e.g. MQTT
# end-point, MQTT topic prefix, TLS configuration etc). Markdown syntax can
# be used for formatting.
user_info = ""
# Gateway configuration.
@ -18,14 +27,14 @@
# Force gateways as private.
#
# If enabled, gateways can only be used by devices under the same tenant.
force_gws_private=false
force_gws_private = false
# Gateway backend configuration.
[regions.gateway.backend]
# The enabled backend type.
enabled="mqtt"
enabled = "mqtt"
# MQTT configuration.
[regions.gateway.backend.mqtt]
@ -35,7 +44,7 @@
# The topic prefix can be used to define the region of the gateway.
# Note, there is no need to add a trailing '/' to the prefix. The trailing
# '/' is automatically added to the prefix if it is configured.
topic_prefix="cn470_0"
topic_prefix = "cn470_0"
# Shared subscription name.
#
@ -45,16 +54,16 @@
# test-environment connected to the same MQTT broker, make sure that
# each environment has its own subscription name, for example:
# chirpstack_prod and chirpstack_tst.
share_name="chirpstack"
share_name = "chirpstack"
# MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
server="tcp://localhost:1883"
server = "tcp://localhost:1883"
# Connect with the given username (optional)
username=""
username = ""
# Connect with the given password (optional)
password=""
password = ""
# Quality of service level
#
@ -64,40 +73,40 @@
#
# Note: an increase of this value will decrease the performance.
# For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
qos=0
qos = 0
# Clean session
#
# Set the "clean session" flag in the connect message when this client
# connects to an MQTT broker. By setting this flag you are indicating
# that no messages saved by the broker for this client should be delivered.
clean_session=false
clean_session = false
# Client ID
#
# Set the client id to be used by this client when connecting to the MQTT
# broker. A client id must be no longer than 23 characters. If left blank,
# a random id will be generated by ChirpStack.
client_id=""
client_id = ""
# Keep alive interval.
#
# This defines the maximum time that that should pass without communication
# between the client and server.
keep_alive_interval="30s"
keep_alive_interval = "30s"
# CA certificate file (optional)
#
# Use this when setting up a secure connection (when server uses ssl://...)
# but the certificate used by the server is not trusted by any CA certificate
# on the server (e.g. when self generated).
ca_cert=""
ca_cert = ""
# TLS certificate file (optional)
tls_cert=""
tls_cert = ""
# TLS key file (optional)
tls_key=""
tls_key = ""
# Gateway channel configuration.
@ -106,52 +115,52 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=470300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 470300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=470500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 470500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=470700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 470700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=470900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 470900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=471100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 471100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=471300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 471300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=471500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 471500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=471700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 471700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
# Region specific network configuration.
@ -163,7 +172,7 @@
# resulting in a lower data-rate but decreasing the chance that the
# device gets disconnected because it is unable to reach one of the
# surrounded gateways.
installation_margin=10
installation_margin = 10
# RX window (Class-A).
#
@ -171,19 +180,19 @@
# 0: RX1 / RX2
# 1: RX1 only
# 2: RX2 only
rx_window=0
rx_window = 0
# RX1 delay (1 - 15 seconds).
rx1_delay=1
rx1_delay = 1
# RX1 data-rate offset
rx1_dr_offset=0
rx1_dr_offset = 0
# RX2 data-rate
rx2_dr=0
rx2_dr = 0
# RX2 frequency (Hz)
rx2_frequency=505300000
rx2_frequency = 505300000
# Prefer RX2 on RX1 data-rate less than.
#
@ -191,13 +200,13 @@
# is smaller than the configured value, then the Network Server will
# first try to schedule the downlink for RX2, failing that (e.g. the gateway
# has already a payload scheduled at the RX2 timing) it will try RX1.
rx2_prefer_on_rx1_dr_lt=0
rx2_prefer_on_rx1_dr_lt = 0
# Prefer RX2 on link budget.
#
# When the link-budget is better for RX2 than for RX1, the Network Server will first
# try to schedule the downlink in RX2, failing that it will try RX1.
rx2_prefer_on_link_budget=false
rx2_prefer_on_link_budget = false
# Downlink TX Power (in dBm EIRP)
#
@ -207,51 +216,51 @@
# Please consult the LoRaWAN Regional Parameters and local regulations
# for valid and legal options. Note that the configured TX Power must be
# supported by your gateway(s).
downlink_tx_power=-1
downlink_tx_power = -1
# ADR is disabled.
adr_disabled=false
adr_disabled = false
# Minimum data-rate.
min_dr=0
min_dr = 0
# Maximum data-rate.
max_dr=5
max_dr = 5
# Enabled uplink channels.
#
# Use this when ony a sub-set of the by default enabled channels are being
# used. For example when only using the first 8 channels of the US band.
# Note: when left blank / empty array, all channels will be enabled.
enabled_uplink_channels=[0, 1, 2, 3, 4, 5, 6, 7]
enabled_uplink_channels = [0, 1, 2, 3, 4, 5, 6, 7]
# Rejoin-request configuration (LoRaWAN 1.1)
[regions.network.rejoin_request]
# Request devices to periodically send rejoin-requests.
enabled=false
enabled = false
# The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
# uplink messages. Valid values are 0 to 15.
max_count_n=0
max_count_n = 0
# The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
# seconds. Valid values are 0 to 15.
#
# 0 = roughly 17 minutes
# 15 = about 1 year
max_time_n=0
max_time_n = 0
# Class-B configuration.
[regions.network.class_b]
# Ping-slot data-rate.
ping_slot_dr=2
ping_slot_dr = 2
# Ping-slot frequency (Hz)
#
# set this to 0 to use the default frequency plan for the configured region
# (which could be frequency hopping).
ping_slot_frequency=0
ping_slot_frequency = 0

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an use-defined identifier for this region.
id="cn470_1"
id = "cn470_1"
# Description is a short description for this region.
description="CN470 (channels 8-15)"
description = "CN470 (channels 8-15)"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="CN470"
common_name = "CN470"
# User-defined region information.
#
# This information will be displayed on top of the region page in then
# ChirpStack web-interface. For example, it can contain information about
# how users should connect their gateways when using this region (e.g. MQTT
# end-point, MQTT topic prefix, TLS configuration etc). Markdown syntax can
# be used for formatting.
user_info = ""
# Gateway configuration.
@ -18,14 +27,14 @@
# Force gateways as private.
#
# If enabled, gateways can only be used by devices under the same tenant.
force_gws_private=false
force_gws_private = false
# Gateway backend configuration.
[regions.gateway.backend]
# The enabled backend type.
enabled="mqtt"
enabled = "mqtt"
# MQTT configuration.
[regions.gateway.backend.mqtt]
@ -35,7 +44,7 @@
# The topic prefix can be used to define the region of the gateway.
# Note, there is no need to add a trailing '/' to the prefix. The trailing
# '/' is automatically added to the prefix if it is configured.
topic_prefix="cn470_1"
topic_prefix = "cn470_1"
# Shared subscription name.
#
@ -45,16 +54,16 @@
# test-environment connected to the same MQTT broker, make sure that
# each environment has its own subscription name, for example:
# chirpstack_prod and chirpstack_tst.
share_name="chirpstack"
share_name = "chirpstack"
# MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
server="tcp://localhost:1883"
server = "tcp://localhost:1883"
# Connect with the given username (optional)
username=""
username = ""
# Connect with the given password (optional)
password=""
password = ""
# Quality of service level
#
@ -64,40 +73,40 @@
#
# Note: an increase of this value will decrease the performance.
# For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
qos=0
qos = 0
# Clean session
#
# Set the "clean session" flag in the connect message when this client
# connects to an MQTT broker. By setting this flag you are indicating
# that no messages saved by the broker for this client should be delivered.
clean_session=false
clean_session = false
# Client ID
#
# Set the client id to be used by this client when connecting to the MQTT
# broker. A client id must be no longer than 23 characters. If left blank,
# a random id will be generated by ChirpStack.
client_id=""
client_id = ""
# Keep alive interval.
#
# This defines the maximum time that that should pass without communication
# between the client and server.
keep_alive_interval="30s"
keep_alive_interval = "30s"
# CA certificate file (optional)
#
# Use this when setting up a secure connection (when server uses ssl://...)
# but the certificate used by the server is not trusted by any CA certificate
# on the server (e.g. when self generated).
ca_cert=""
ca_cert = ""
# TLS certificate file (optional)
tls_cert=""
tls_cert = ""
# TLS key file (optional)
tls_key=""
tls_key = ""
# Gateway channel configuration.
@ -106,52 +115,52 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=471900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 471900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=472100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 472100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=472300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 472300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=472500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 472500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=472700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 472700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=472900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 472900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=473100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 473100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=473300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 473300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
# Region specific network configuration.
@ -163,7 +172,7 @@
# resulting in a lower data-rate but decreasing the chance that the
# device gets disconnected because it is unable to reach one of the
# surrounded gateways.
installation_margin=10
installation_margin = 10
# RX window (Class-A).
#
@ -171,19 +180,19 @@
# 0: RX1 / RX2
# 1: RX1 only
# 2: RX2 only
rx_window=0
rx_window = 0
# RX1 delay (1 - 15 seconds).
rx1_delay=1
rx1_delay = 1
# RX1 data-rate offset
rx1_dr_offset=0
rx1_dr_offset = 0
# RX2 data-rate
rx2_dr=0
rx2_dr = 0
# RX2 frequency (Hz)
rx2_frequency=505300000
rx2_frequency = 505300000
# Prefer RX2 on RX1 data-rate less than.
#
@ -191,13 +200,13 @@
# is smaller than the configured value, then the Network Server will
# first try to schedule the downlink for RX2, failing that (e.g. the gateway
# has already a payload scheduled at the RX2 timing) it will try RX1.
rx2_prefer_on_rx1_dr_lt=0
rx2_prefer_on_rx1_dr_lt = 0
# Prefer RX2 on link budget.
#
# When the link-budget is better for RX2 than for RX1, the Network Server will first
# try to schedule the downlink in RX2, failing that it will try RX1.
rx2_prefer_on_link_budget=false
rx2_prefer_on_link_budget = false
# Downlink TX Power (in dBm EIRP)
#
@ -207,51 +216,51 @@
# Please consult the LoRaWAN Regional Parameters and local regulations
# for valid and legal options. Note that the configured TX Power must be
# supported by your gateway(s).
downlink_tx_power=-1
downlink_tx_power = -1
# ADR is disabled.
adr_disabled=false
adr_disabled = false
# Minimum data-rate.
min_dr=0
min_dr = 0
# Maximum data-rate.
max_dr=5
max_dr = 5
# Enabled uplink channels.
#
# Use this when ony a sub-set of the by default enabled channels are being
# used. For example when only using the first 8 channels of the US band.
# Note: when left blank / empty array, all channels will be enabled.
enabled_uplink_channels=[8, 9, 10, 11, 12, 13, 14, 15]
enabled_uplink_channels = [8, 9, 10, 11, 12, 13, 14, 15]
# Rejoin-request configuration (LoRaWAN 1.1)
[regions.network.rejoin_request]
# Request devices to periodically send rejoin-requests.
enabled=false
enabled = false
# The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
# uplink messages. Valid values are 0 to 15.
max_count_n=0
max_count_n = 0
# The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
# seconds. Valid values are 0 to 15.
#
# 0 = roughly 17 minutes
# 15 = about 1 year
max_time_n=0
max_time_n = 0
# Class-B configuration.
[regions.network.class_b]
# Ping-slot data-rate.
ping_slot_dr=2
ping_slot_dr = 2
# Ping-slot frequency (Hz)
#
# set this to 0 to use the default frequency plan for the configured region
# (which could be frequency hopping).
ping_slot_frequency=0
ping_slot_frequency = 0

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an use-defined identifier for this region.
id="cn470_10"
id = "cn470_10"
# Description is a short description for this region.
description="CN470 (channels 80-87)"
description = "CN470 (channels 80-87)"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="CN470"
common_name = "CN470"
# User-defined region information.
#
# This information will be displayed on top of the region page in then
# ChirpStack web-interface. For example, it can contain information about
# how users should connect their gateways when using this region (e.g. MQTT
# end-point, MQTT topic prefix, TLS configuration etc). Markdown syntax can
# be used for formatting.
user_info = ""
# Gateway configuration.
@ -18,14 +27,14 @@
# Force gateways as private.
#
# If enabled, gateways can only be used by devices under the same tenant.
force_gws_private=false
force_gws_private = false
# Gateway backend configuration.
[regions.gateway.backend]
# The enabled backend type.
enabled="mqtt"
enabled = "mqtt"
# MQTT configuration.
[regions.gateway.backend.mqtt]
@ -35,7 +44,7 @@
# The topic prefix can be used to define the region of the gateway.
# Note, there is no need to add a trailing '/' to the prefix. The trailing
# '/' is automatically added to the prefix if it is configured.
topic_prefix="cn470_10"
topic_prefix = "cn470_10"
# Shared subscription name.
#
@ -45,16 +54,16 @@
# test-environment connected to the same MQTT broker, make sure that
# each environment has its own subscription name, for example:
# chirpstack_prod and chirpstack_tst.
share_name="chirpstack"
share_name = "chirpstack"
# MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
server="tcp://localhost:1883"
server = "tcp://localhost:1883"
# Connect with the given username (optional)
username=""
username = ""
# Connect with the given password (optional)
password=""
password = ""
# Quality of service level
#
@ -64,40 +73,40 @@
#
# Note: an increase of this value will decrease the performance.
# For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
qos=0
qos = 0
# Clean session
#
# Set the "clean session" flag in the connect message when this client
# connects to an MQTT broker. By setting this flag you are indicating
# that no messages saved by the broker for this client should be delivered.
clean_session=false
clean_session = false
# Client ID
#
# Set the client id to be used by this client when connecting to the MQTT
# broker. A client id must be no longer than 23 characters. If left blank,
# a random id will be generated by ChirpStack.
client_id=""
client_id = ""
# Keep alive interval.
#
# This defines the maximum time that that should pass without communication
# between the client and server.
keep_alive_interval="30s"
keep_alive_interval = "30s"
# CA certificate file (optional)
#
# Use this when setting up a secure connection (when server uses ssl://...)
# but the certificate used by the server is not trusted by any CA certificate
# on the server (e.g. when self generated).
ca_cert=""
ca_cert = ""
# TLS certificate file (optional)
tls_cert=""
tls_cert = ""
# TLS key file (optional)
tls_key=""
tls_key = ""
# Gateway channel configuration.
@ -106,52 +115,52 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=486300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 486300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=486500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 486500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=486700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 486700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=486900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 486900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=487100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 487100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=487300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 487300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=487500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 487500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=487700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 487700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
# Region specific network configuration.
@ -163,7 +172,7 @@
# resulting in a lower data-rate but decreasing the chance that the
# device gets disconnected because it is unable to reach one of the
# surrounded gateways.
installation_margin=10
installation_margin = 10
# RX window (Class-A).
#
@ -171,19 +180,19 @@
# 0: RX1 / RX2
# 1: RX1 only
# 2: RX2 only
rx_window=0
rx_window = 0
# RX1 delay (1 - 15 seconds).
rx1_delay=1
rx1_delay = 1
# RX1 data-rate offset
rx1_dr_offset=0
rx1_dr_offset = 0
# RX2 data-rate
rx2_dr=0
rx2_dr = 0
# RX2 frequency (Hz)
rx2_frequency=505300000
rx2_frequency = 505300000
# Prefer RX2 on RX1 data-rate less than.
#
@ -191,13 +200,13 @@
# is smaller than the configured value, then the Network Server will
# first try to schedule the downlink for RX2, failing that (e.g. the gateway
# has already a payload scheduled at the RX2 timing) it will try RX1.
rx2_prefer_on_rx1_dr_lt=0
rx2_prefer_on_rx1_dr_lt = 0
# Prefer RX2 on link budget.
#
# When the link-budget is better for RX2 than for RX1, the Network Server will first
# try to schedule the downlink in RX2, failing that it will try RX1.
rx2_prefer_on_link_budget=false
rx2_prefer_on_link_budget = false
# Downlink TX Power (in dBm EIRP)
#
@ -207,51 +216,51 @@
# Please consult the LoRaWAN Regional Parameters and local regulations
# for valid and legal options. Note that the configured TX Power must be
# supported by your gateway(s).
downlink_tx_power=-1
downlink_tx_power = -1
# ADR is disabled.
adr_disabled=false
adr_disabled = false
# Minimum data-rate.
min_dr=0
min_dr = 0
# Maximum data-rate.
max_dr=5
max_dr = 5
# Enabled uplink channels.
#
# Use this when ony a sub-set of the by default enabled channels are being
# used. For example when only using the first 8 channels of the US band.
# Note: when left blank / empty array, all channels will be enabled.
enabled_uplink_channels=[80, 81, 82, 83, 84, 85, 86, 87]
enabled_uplink_channels = [80, 81, 82, 83, 84, 85, 86, 87]
# Rejoin-request configuration (LoRaWAN 1.1)
[regions.network.rejoin_request]
# Request devices to periodically send rejoin-requests.
enabled=false
enabled = false
# The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
# uplink messages. Valid values are 0 to 15.
max_count_n=0
max_count_n = 0
# The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
# seconds. Valid values are 0 to 15.
#
# 0 = roughly 17 minutes
# 15 = about 1 year
max_time_n=0
max_time_n = 0
# Class-B configuration.
[regions.network.class_b]
# Ping-slot data-rate.
ping_slot_dr=2
ping_slot_dr = 2
# Ping-slot frequency (Hz)
#
# set this to 0 to use the default frequency plan for the configured region
# (which could be frequency hopping).
ping_slot_frequency=0
ping_slot_frequency = 0

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an use-defined identifier for this region.
id="cn470_11"
id = "cn470_11"
# Description is a short description for this region.
description="CN470 (channels 88-95)"
description = "CN470 (channels 88-95)"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="CN470"
common_name = "CN470"
# User-defined region information.
#
# This information will be displayed on top of the region page in then
# ChirpStack web-interface. For example, it can contain information about
# how users should connect their gateways when using this region (e.g. MQTT
# end-point, MQTT topic prefix, TLS configuration etc). Markdown syntax can
# be used for formatting.
user_info = ""
# Gateway configuration.
@ -18,14 +27,14 @@
# Force gateways as private.
#
# If enabled, gateways can only be used by devices under the same tenant.
force_gws_private=false
force_gws_private = false
# Gateway backend configuration.
[regions.gateway.backend]
# The enabled backend type.
enabled="mqtt"
enabled = "mqtt"
# MQTT configuration.
[regions.gateway.backend.mqtt]
@ -35,7 +44,7 @@
# The topic prefix can be used to define the region of the gateway.
# Note, there is no need to add a trailing '/' to the prefix. The trailing
# '/' is automatically added to the prefix if it is configured.
topic_prefix="cn470_11"
topic_prefix = "cn470_11"
# Shared subscription name.
#
@ -45,16 +54,16 @@
# test-environment connected to the same MQTT broker, make sure that
# each environment has its own subscription name, for example:
# chirpstack_prod and chirpstack_tst.
share_name="chirpstack"
share_name = "chirpstack"
# MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
server="tcp://localhost:1883"
server = "tcp://localhost:1883"
# Connect with the given username (optional)
username=""
username = ""
# Connect with the given password (optional)
password=""
password = ""
# Quality of service level
#
@ -64,40 +73,40 @@
#
# Note: an increase of this value will decrease the performance.
# For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
qos=0
qos = 0
# Clean session
#
# Set the "clean session" flag in the connect message when this client
# connects to an MQTT broker. By setting this flag you are indicating
# that no messages saved by the broker for this client should be delivered.
clean_session=false
clean_session = false
# Client ID
#
# Set the client id to be used by this client when connecting to the MQTT
# broker. A client id must be no longer than 23 characters. If left blank,
# a random id will be generated by ChirpStack.
client_id=""
client_id = ""
# Keep alive interval.
#
# This defines the maximum time that that should pass without communication
# between the client and server.
keep_alive_interval="30s"
keep_alive_interval = "30s"
# CA certificate file (optional)
#
# Use this when setting up a secure connection (when server uses ssl://...)
# but the certificate used by the server is not trusted by any CA certificate
# on the server (e.g. when self generated).
ca_cert=""
ca_cert = ""
# TLS certificate file (optional)
tls_cert=""
tls_cert = ""
# TLS key file (optional)
tls_key=""
tls_key = ""
# Gateway channel configuration.
@ -106,52 +115,52 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=487900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 487900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=488100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 488100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=488300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 488300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=488500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 488500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=488700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 488700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=488900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 488900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=489100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 489100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=489300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 489300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
# Region specific network configuration.
@ -163,7 +172,7 @@
# resulting in a lower data-rate but decreasing the chance that the
# device gets disconnected because it is unable to reach one of the
# surrounded gateways.
installation_margin=10
installation_margin = 10
# RX window (Class-A).
#
@ -171,19 +180,19 @@
# 0: RX1 / RX2
# 1: RX1 only
# 2: RX2 only
rx_window=0
rx_window = 0
# RX1 delay (1 - 15 seconds).
rx1_delay=1
rx1_delay = 1
# RX1 data-rate offset
rx1_dr_offset=0
rx1_dr_offset = 0
# RX2 data-rate
rx2_dr=0
rx2_dr = 0
# RX2 frequency (Hz)
rx2_frequency=505300000
rx2_frequency = 505300000
# Prefer RX2 on RX1 data-rate less than.
#
@ -191,13 +200,13 @@
# is smaller than the configured value, then the Network Server will
# first try to schedule the downlink for RX2, failing that (e.g. the gateway
# has already a payload scheduled at the RX2 timing) it will try RX1.
rx2_prefer_on_rx1_dr_lt=0
rx2_prefer_on_rx1_dr_lt = 0
# Prefer RX2 on link budget.
#
# When the link-budget is better for RX2 than for RX1, the Network Server will first
# try to schedule the downlink in RX2, failing that it will try RX1.
rx2_prefer_on_link_budget=false
rx2_prefer_on_link_budget = false
# Downlink TX Power (in dBm EIRP)
#
@ -207,51 +216,51 @@
# Please consult the LoRaWAN Regional Parameters and local regulations
# for valid and legal options. Note that the configured TX Power must be
# supported by your gateway(s).
downlink_tx_power=-1
downlink_tx_power = -1
# ADR is disabled.
adr_disabled=false
adr_disabled = false
# Minimum data-rate.
min_dr=0
min_dr = 0
# Maximum data-rate.
max_dr=5
max_dr = 5
# Enabled uplink channels.
#
# Use this when ony a sub-set of the by default enabled channels are being
# used. For example when only using the first 8 channels of the US band.
# Note: when left blank / empty array, all channels will be enabled.
enabled_uplink_channels=[88, 89, 90, 91, 92, 93, 94, 95]
enabled_uplink_channels = [88, 89, 90, 91, 92, 93, 94, 95]
# Rejoin-request configuration (LoRaWAN 1.1)
[regions.network.rejoin_request]
# Request devices to periodically send rejoin-requests.
enabled=false
enabled = false
# The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
# uplink messages. Valid values are 0 to 15.
max_count_n=0
max_count_n = 0
# The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
# seconds. Valid values are 0 to 15.
#
# 0 = roughly 17 minutes
# 15 = about 1 year
max_time_n=0
max_time_n = 0
# Class-B configuration.
[regions.network.class_b]
# Ping-slot data-rate.
ping_slot_dr=2
ping_slot_dr = 2
# Ping-slot frequency (Hz)
#
# set this to 0 to use the default frequency plan for the configured region
# (which could be frequency hopping).
ping_slot_frequency=0
ping_slot_frequency = 0

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an use-defined identifier for this region.
id="cn470_2"
id = "cn470_2"
# Description is a short description for this region.
description="CN470 (channels 16-23)"
description = "CN470 (channels 16-23)"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="CN470"
common_name = "CN470"
# User-defined region information.
#
# This information will be displayed on top of the region page in then
# ChirpStack web-interface. For example, it can contain information about
# how users should connect their gateways when using this region (e.g. MQTT
# end-point, MQTT topic prefix, TLS configuration etc). Markdown syntax can
# be used for formatting.
user_info = ""
# Gateway configuration.
@ -18,14 +27,14 @@
# Force gateways as private.
#
# If enabled, gateways can only be used by devices under the same tenant.
force_gws_private=false
force_gws_private = false
# Gateway backend configuration.
[regions.gateway.backend]
# The enabled backend type.
enabled="mqtt"
enabled = "mqtt"
# MQTT configuration.
[regions.gateway.backend.mqtt]
@ -35,7 +44,7 @@
# The topic prefix can be used to define the region of the gateway.
# Note, there is no need to add a trailing '/' to the prefix. The trailing
# '/' is automatically added to the prefix if it is configured.
topic_prefix="cn470_2"
topic_prefix = "cn470_2"
# Shared subscription name.
#
@ -45,16 +54,16 @@
# test-environment connected to the same MQTT broker, make sure that
# each environment has its own subscription name, for example:
# chirpstack_prod and chirpstack_tst.
share_name="chirpstack"
share_name = "chirpstack"
# MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
server="tcp://localhost:1883"
server = "tcp://localhost:1883"
# Connect with the given username (optional)
username=""
username = ""
# Connect with the given password (optional)
password=""
password = ""
# Quality of service level
#
@ -64,40 +73,40 @@
#
# Note: an increase of this value will decrease the performance.
# For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
qos=0
qos = 0
# Clean session
#
# Set the "clean session" flag in the connect message when this client
# connects to an MQTT broker. By setting this flag you are indicating
# that no messages saved by the broker for this client should be delivered.
clean_session=false
clean_session = false
# Client ID
#
# Set the client id to be used by this client when connecting to the MQTT
# broker. A client id must be no longer than 23 characters. If left blank,
# a random id will be generated by ChirpStack.
client_id=""
client_id = ""
# Keep alive interval.
#
# This defines the maximum time that that should pass without communication
# between the client and server.
keep_alive_interval="30s"
keep_alive_interval = "30s"
# CA certificate file (optional)
#
# Use this when setting up a secure connection (when server uses ssl://...)
# but the certificate used by the server is not trusted by any CA certificate
# on the server (e.g. when self generated).
ca_cert=""
ca_cert = ""
# TLS certificate file (optional)
tls_cert=""
tls_cert = ""
# TLS key file (optional)
tls_key=""
tls_key = ""
# Gateway channel configuration.
@ -106,52 +115,52 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=473500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 473500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=473700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 473700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=473900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 473900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=474100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 474100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=474300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 474300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=474500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 474500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=474700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 474700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=474900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 474900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
# Region specific network configuration.
@ -163,7 +172,7 @@
# resulting in a lower data-rate but decreasing the chance that the
# device gets disconnected because it is unable to reach one of the
# surrounded gateways.
installation_margin=10
installation_margin = 10
# RX window (Class-A).
#
@ -171,19 +180,19 @@
# 0: RX1 / RX2
# 1: RX1 only
# 2: RX2 only
rx_window=0
rx_window = 0
# RX1 delay (1 - 15 seconds).
rx1_delay=1
rx1_delay = 1
# RX1 data-rate offset
rx1_dr_offset=0
rx1_dr_offset = 0
# RX2 data-rate
rx2_dr=0
rx2_dr = 0
# RX2 frequency (Hz)
rx2_frequency=505300000
rx2_frequency = 505300000
# Prefer RX2 on RX1 data-rate less than.
#
@ -191,13 +200,13 @@
# is smaller than the configured value, then the Network Server will
# first try to schedule the downlink for RX2, failing that (e.g. the gateway
# has already a payload scheduled at the RX2 timing) it will try RX1.
rx2_prefer_on_rx1_dr_lt=0
rx2_prefer_on_rx1_dr_lt = 0
# Prefer RX2 on link budget.
#
# When the link-budget is better for RX2 than for RX1, the Network Server will first
# try to schedule the downlink in RX2, failing that it will try RX1.
rx2_prefer_on_link_budget=false
rx2_prefer_on_link_budget = false
# Downlink TX Power (in dBm EIRP)
#
@ -207,51 +216,51 @@
# Please consult the LoRaWAN Regional Parameters and local regulations
# for valid and legal options. Note that the configured TX Power must be
# supported by your gateway(s).
downlink_tx_power=-1
downlink_tx_power = -1
# ADR is disabled.
adr_disabled=false
adr_disabled = false
# Minimum data-rate.
min_dr=0
min_dr = 0
# Maximum data-rate.
max_dr=5
max_dr = 5
# Enabled uplink channels.
#
# Use this when ony a sub-set of the by default enabled channels are being
# used. For example when only using the first 8 channels of the US band.
# Note: when left blank / empty array, all channels will be enabled.
enabled_uplink_channels=[16, 17, 18, 19, 20, 21, 22, 23]
enabled_uplink_channels = [16, 17, 18, 19, 20, 21, 22, 23]
# Rejoin-request configuration (LoRaWAN 1.1)
[regions.network.rejoin_request]
# Request devices to periodically send rejoin-requests.
enabled=false
enabled = false
# The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
# uplink messages. Valid values are 0 to 15.
max_count_n=0
max_count_n = 0
# The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
# seconds. Valid values are 0 to 15.
#
# 0 = roughly 17 minutes
# 15 = about 1 year
max_time_n=0
max_time_n = 0
# Class-B configuration.
[regions.network.class_b]
# Ping-slot data-rate.
ping_slot_dr=2
ping_slot_dr = 2
# Ping-slot frequency (Hz)
#
# set this to 0 to use the default frequency plan for the configured region
# (which could be frequency hopping).
ping_slot_frequency=0
ping_slot_frequency = 0

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an use-defined identifier for this region.
id="cn470_3"
id = "cn470_3"
# Description is a short description for this region.
description="CN470 (channels 24-31)"
description = "CN470 (channels 24-31)"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="CN470"
common_name = "CN470"
# User-defined region information.
#
# This information will be displayed on top of the region page in then
# ChirpStack web-interface. For example, it can contain information about
# how users should connect their gateways when using this region (e.g. MQTT
# end-point, MQTT topic prefix, TLS configuration etc). Markdown syntax can
# be used for formatting.
user_info = ""
# Gateway configuration.
@ -18,14 +27,14 @@
# Force gateways as private.
#
# If enabled, gateways can only be used by devices under the same tenant.
force_gws_private=false
force_gws_private = false
# Gateway backend configuration.
[regions.gateway.backend]
# The enabled backend type.
enabled="mqtt"
enabled = "mqtt"
# MQTT configuration.
[regions.gateway.backend.mqtt]
@ -35,7 +44,7 @@
# The topic prefix can be used to define the region of the gateway.
# Note, there is no need to add a trailing '/' to the prefix. The trailing
# '/' is automatically added to the prefix if it is configured.
topic_prefix="cn470_3"
topic_prefix = "cn470_3"
# Shared subscription name.
#
@ -45,16 +54,16 @@
# test-environment connected to the same MQTT broker, make sure that
# each environment has its own subscription name, for example:
# chirpstack_prod and chirpstack_tst.
share_name="chirpstack"
share_name = "chirpstack"
# MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
server="tcp://localhost:1883"
server = "tcp://localhost:1883"
# Connect with the given username (optional)
username=""
username = ""
# Connect with the given password (optional)
password=""
password = ""
# Quality of service level
#
@ -64,40 +73,40 @@
#
# Note: an increase of this value will decrease the performance.
# For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
qos=0
qos = 0
# Clean session
#
# Set the "clean session" flag in the connect message when this client
# connects to an MQTT broker. By setting this flag you are indicating
# that no messages saved by the broker for this client should be delivered.
clean_session=false
clean_session = false
# Client ID
#
# Set the client id to be used by this client when connecting to the MQTT
# broker. A client id must be no longer than 23 characters. If left blank,
# a random id will be generated by ChirpStack.
client_id=""
client_id = ""
# Keep alive interval.
#
# This defines the maximum time that that should pass without communication
# between the client and server.
keep_alive_interval="30s"
keep_alive_interval = "30s"
# CA certificate file (optional)
#
# Use this when setting up a secure connection (when server uses ssl://...)
# but the certificate used by the server is not trusted by any CA certificate
# on the server (e.g. when self generated).
ca_cert=""
ca_cert = ""
# TLS certificate file (optional)
tls_cert=""
tls_cert = ""
# TLS key file (optional)
tls_key=""
tls_key = ""
# Gateway channel configuration.
@ -106,52 +115,52 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=475100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 475100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=475300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 475300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=475500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 475500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=475700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 475700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=475900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 475900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=476100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 476100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=476300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 476300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=476500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 476500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
# Region specific network configuration.
@ -163,7 +172,7 @@
# resulting in a lower data-rate but decreasing the chance that the
# device gets disconnected because it is unable to reach one of the
# surrounded gateways.
installation_margin=10
installation_margin = 10
# RX window (Class-A).
#
@ -171,19 +180,19 @@
# 0: RX1 / RX2
# 1: RX1 only
# 2: RX2 only
rx_window=0
rx_window = 0
# RX1 delay (1 - 15 seconds).
rx1_delay=1
rx1_delay = 1
# RX1 data-rate offset
rx1_dr_offset=0
rx1_dr_offset = 0
# RX2 data-rate
rx2_dr=0
rx2_dr = 0
# RX2 frequency (Hz)
rx2_frequency=505300000
rx2_frequency = 505300000
# Prefer RX2 on RX1 data-rate less than.
#
@ -191,13 +200,13 @@
# is smaller than the configured value, then the Network Server will
# first try to schedule the downlink for RX2, failing that (e.g. the gateway
# has already a payload scheduled at the RX2 timing) it will try RX1.
rx2_prefer_on_rx1_dr_lt=0
rx2_prefer_on_rx1_dr_lt = 0
# Prefer RX2 on link budget.
#
# When the link-budget is better for RX2 than for RX1, the Network Server will first
# try to schedule the downlink in RX2, failing that it will try RX1.
rx2_prefer_on_link_budget=false
rx2_prefer_on_link_budget = false
# Downlink TX Power (in dBm EIRP)
#
@ -207,51 +216,51 @@
# Please consult the LoRaWAN Regional Parameters and local regulations
# for valid and legal options. Note that the configured TX Power must be
# supported by your gateway(s).
downlink_tx_power=-1
downlink_tx_power = -1
# ADR is disabled.
adr_disabled=false
adr_disabled = false
# Minimum data-rate.
min_dr=0
min_dr = 0
# Maximum data-rate.
max_dr=5
max_dr = 5
# Enabled uplink channels.
#
# Use this when ony a sub-set of the by default enabled channels are being
# used. For example when only using the first 8 channels of the US band.
# Note: when left blank / empty array, all channels will be enabled.
enabled_uplink_channels=[24, 25, 26, 27, 28, 29, 30, 31]
enabled_uplink_channels = [24, 25, 26, 27, 28, 29, 30, 31]
# Rejoin-request configuration (LoRaWAN 1.1)
[regions.network.rejoin_request]
# Request devices to periodically send rejoin-requests.
enabled=false
enabled = false
# The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
# uplink messages. Valid values are 0 to 15.
max_count_n=0
max_count_n = 0
# The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
# seconds. Valid values are 0 to 15.
#
# 0 = roughly 17 minutes
# 15 = about 1 year
max_time_n=0
max_time_n = 0
# Class-B configuration.
[regions.network.class_b]
# Ping-slot data-rate.
ping_slot_dr=2
ping_slot_dr = 2
# Ping-slot frequency (Hz)
#
# set this to 0 to use the default frequency plan for the configured region
# (which could be frequency hopping).
ping_slot_frequency=0
ping_slot_frequency = 0

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an use-defined identifier for this region.
id="cn470_4"
id = "cn470_4"
# Description is a short description for this region.
description="CN470 (channels 32-39)"
description = "CN470 (channels 32-39)"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="CN470"
common_name = "CN470"
# User-defined region information.
#
# This information will be displayed on top of the region page in then
# ChirpStack web-interface. For example, it can contain information about
# how users should connect their gateways when using this region (e.g. MQTT
# end-point, MQTT topic prefix, TLS configuration etc). Markdown syntax can
# be used for formatting.
user_info = ""
# Gateway configuration.
@ -18,14 +27,14 @@
# Force gateways as private.
#
# If enabled, gateways can only be used by devices under the same tenant.
force_gws_private=false
force_gws_private = false
# Gateway backend configuration.
[regions.gateway.backend]
# The enabled backend type.
enabled="mqtt"
enabled = "mqtt"
# MQTT configuration.
[regions.gateway.backend.mqtt]
@ -35,7 +44,7 @@
# The topic prefix can be used to define the region of the gateway.
# Note, there is no need to add a trailing '/' to the prefix. The trailing
# '/' is automatically added to the prefix if it is configured.
topic_prefix="cn470_4"
topic_prefix = "cn470_4"
# Shared subscription name.
#
@ -45,16 +54,16 @@
# test-environment connected to the same MQTT broker, make sure that
# each environment has its own subscription name, for example:
# chirpstack_prod and chirpstack_tst.
share_name="chirpstack"
share_name = "chirpstack"
# MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
server="tcp://localhost:1883"
server = "tcp://localhost:1883"
# Connect with the given username (optional)
username=""
username = ""
# Connect with the given password (optional)
password=""
password = ""
# Quality of service level
#
@ -64,40 +73,40 @@
#
# Note: an increase of this value will decrease the performance.
# For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
qos=0
qos = 0
# Clean session
#
# Set the "clean session" flag in the connect message when this client
# connects to an MQTT broker. By setting this flag you are indicating
# that no messages saved by the broker for this client should be delivered.
clean_session=false
clean_session = false
# Client ID
#
# Set the client id to be used by this client when connecting to the MQTT
# broker. A client id must be no longer than 23 characters. If left blank,
# a random id will be generated by ChirpStack.
client_id=""
client_id = ""
# Keep alive interval.
#
# This defines the maximum time that that should pass without communication
# between the client and server.
keep_alive_interval="30s"
keep_alive_interval = "30s"
# CA certificate file (optional)
#
# Use this when setting up a secure connection (when server uses ssl://...)
# but the certificate used by the server is not trusted by any CA certificate
# on the server (e.g. when self generated).
ca_cert=""
ca_cert = ""
# TLS certificate file (optional)
tls_cert=""
tls_cert = ""
# TLS key file (optional)
tls_key=""
tls_key = ""
# Gateway channel configuration.
@ -106,52 +115,52 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=476700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 476700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=476900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 476900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=477100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 477100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=477300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 477300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=477500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 477500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=477700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 477700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=477900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 477900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=478100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 478100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
# Region specific network configuration.
@ -163,7 +172,7 @@
# resulting in a lower data-rate but decreasing the chance that the
# device gets disconnected because it is unable to reach one of the
# surrounded gateways.
installation_margin=10
installation_margin = 10
# RX window (Class-A).
#
@ -171,19 +180,19 @@
# 0: RX1 / RX2
# 1: RX1 only
# 2: RX2 only
rx_window=0
rx_window = 0
# RX1 delay (1 - 15 seconds).
rx1_delay=1
rx1_delay = 1
# RX1 data-rate offset
rx1_dr_offset=0
rx1_dr_offset = 0
# RX2 data-rate
rx2_dr=0
rx2_dr = 0
# RX2 frequency (Hz)
rx2_frequency=505300000
rx2_frequency = 505300000
# Prefer RX2 on RX1 data-rate less than.
#
@ -191,13 +200,13 @@
# is smaller than the configured value, then the Network Server will
# first try to schedule the downlink for RX2, failing that (e.g. the gateway
# has already a payload scheduled at the RX2 timing) it will try RX1.
rx2_prefer_on_rx1_dr_lt=0
rx2_prefer_on_rx1_dr_lt = 0
# Prefer RX2 on link budget.
#
# When the link-budget is better for RX2 than for RX1, the Network Server will first
# try to schedule the downlink in RX2, failing that it will try RX1.
rx2_prefer_on_link_budget=false
rx2_prefer_on_link_budget = false
# Downlink TX Power (in dBm EIRP)
#
@ -207,51 +216,51 @@
# Please consult the LoRaWAN Regional Parameters and local regulations
# for valid and legal options. Note that the configured TX Power must be
# supported by your gateway(s).
downlink_tx_power=-1
downlink_tx_power = -1
# ADR is disabled.
adr_disabled=false
adr_disabled = false
# Minimum data-rate.
min_dr=0
min_dr = 0
# Maximum data-rate.
max_dr=5
max_dr = 5
# Enabled uplink channels.
#
# Use this when ony a sub-set of the by default enabled channels are being
# used. For example when only using the first 8 channels of the US band.
# Note: when left blank / empty array, all channels will be enabled.
enabled_uplink_channels=[32, 33, 34, 35, 36, 37, 38, 39]
enabled_uplink_channels = [32, 33, 34, 35, 36, 37, 38, 39]
# Rejoin-request configuration (LoRaWAN 1.1)
[regions.network.rejoin_request]
# Request devices to periodically send rejoin-requests.
enabled=false
enabled = false
# The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
# uplink messages. Valid values are 0 to 15.
max_count_n=0
max_count_n = 0
# The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
# seconds. Valid values are 0 to 15.
#
# 0 = roughly 17 minutes
# 15 = about 1 year
max_time_n=0
max_time_n = 0
# Class-B configuration.
[regions.network.class_b]
# Ping-slot data-rate.
ping_slot_dr=2
ping_slot_dr = 2
# Ping-slot frequency (Hz)
#
# set this to 0 to use the default frequency plan for the configured region
# (which could be frequency hopping).
ping_slot_frequency=0
ping_slot_frequency = 0

Some files were not shown because too many files have changed in this diff Show More