Compare commits

..

123 Commits

Author SHA1 Message Date
2fc762d932 Bump version to 4.11.1 2025-02-10 11:41:05 +00:00
24333f8b5d Bump version to 4.11.1-test.2 2025-02-10 11:10:11 +00:00
99239a82d4 Revert from sqlite-interactive to sqlite. 2025-02-10 10:56:48 +00:00
317c1cb14d Update dev-dependencies to shell.nix. 2025-02-10 10:27:22 +00:00
2e0d034a6b Bump version to 4.11.1 2025-02-07 15:56:39 +00:00
fb59f541b1 Fix ns_time + setting of JSON flag.
These lines were accidentally removed by 922a83597f8aaed089f5c6ed610d20c5aaa91102
when removing the metadata keys as part of the region refactor.
2025-02-03 12:46:04 +00:00
f6374f00f8 Bump version to 4.11.1-test.1 2025-01-30 19:37:17 +00:00
32a9aadbae Re-use http clients within integrations.
This reduces CPU load, especially in case when HTTPS is being used
as connections will be pooled by the http client.
2025-01-30 19:17:44 +00:00
99613014ad Return LinkCheckAns with margin=0 for non-LoRa modulations. 2025-01-22 09:09:27 +00:00
8cb2d4f383 Bump version to 4.11.0 2025-01-15 12:13:04 +00:00
96b544974e Bump version to 4.11.0-test.2 2025-01-13 15:00:37 +00:00
a71113db42 Update Rust toolchain + fix Clippy feedback. 2025-01-13 12:16:15 +00:00
2e738e1f33 Bump version to 4.11.0 2025-01-10 13:44:11 +00:00
0487d6a7f0 Bump golang.org/x/net from 0.23.0 to 0.33.0 in /examples/frame_log/go (#591)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.23.0 to 0.33.0.
- [Commits](https://github.com/golang/net/compare/v0.23.0...v0.33.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-10 11:57:09 +00:00
6864f6ef2b Bump thiserror from 2.0.6 to 2.0.10 (#592)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 2.0.6 to 2.0.10.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.6...2.0.10)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-10 11:53:56 +00:00
9c25a5d48b Bump serde_json from 1.0.134 to 1.0.135 (#593)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.134 to 1.0.135.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.134...v1.0.135)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-10 11:53:43 +00:00
de492a7e30 Bump serde from 1.0.215 to 1.0.217 (#587)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.215 to 1.0.217.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.215...v1.0.217)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-10 11:53:32 +00:00
2028ccab9a Bump nanoid from 3.3.7 to 3.3.8 in /ui (#577)
Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.7 to 3.3.8.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.3.7...3.3.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-10 11:38:26 +00:00
724dfb138c Bump serde_json from 1.0.133 to 1.0.134 (#584)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.133 to 1.0.134.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.133...v1.0.134)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-10 11:38:00 +00:00
b6763cc951 Bump rustls from 0.23.19 to 0.23.20 (#581)
Bumps [rustls](https://github.com/rustls/rustls) from 0.23.19 to 0.23.20.
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.23.19...v/0.23.20)

---
updated-dependencies:
- dependency-name: rustls
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-10 11:37:51 +00:00
df3aafd1c4 Bump tower from 0.5.1 to 0.5.2 (#580)
Bumps [tower](https://github.com/tower-rs/tower) from 0.5.1 to 0.5.2.
- [Release notes](https://github.com/tower-rs/tower/releases)
- [Commits](https://github.com/tower-rs/tower/compare/tower-0.5.1...tower-0.5.2)

---
updated-dependencies:
- dependency-name: tower
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-10 11:37:38 +00:00
64b2e82244 Bump version to 4.11.0-test.1 2024-12-11 09:33:27 +00:00
70e4afae54 Expose region_config_id in Uplink and Join event. 2024-12-10 14:07:59 +00:00
922a83597f Refactor handling same uplink under multiple regions. 2024-12-10 14:07:59 +00:00
e50a1e3655 Bump version to 4.10.2 2024-12-10 13:01:17 +00:00
e5397ca43a Update dependencies. 2024-12-10 12:53:16 +00:00
a70afa223b Remove old build config. 2024-12-10 12:48:52 +00:00
7936955a19 Update base image version. 2024-12-06 09:54:54 +00:00
092c119cdc Bump thiserror from 1.0.69 to 2.0.4 (#571)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.69 to 2.0.4.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.69...2.0.4)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 12:28:15 +00:00
661c4ed417 Bump cross-spawn from 7.0.3 to 7.0.6 in /ui (#562)
Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 7.0.3 to 7.0.6.
- [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.6)

---
updated-dependencies:
- dependency-name: cross-spawn
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 12:26:31 +00:00
8aff4490f9 Update dependencies. 2024-12-05 12:25:33 +00:00
30b1e0301a Fix multicast tests for SQLite. 2024-12-05 12:02:37 +00:00
d3692144fa Update nix version to 24.11. 2024-12-05 11:20:20 +00:00
91b9077ba8 Update multicast function to return expired queue items.
In case a gateway is offline, associated queue-items would be excluded
by the get_schedulable_queue_items function. With this change when the
queue item has expired it will be returned even if the gateway is
offline. This way, the expired queue item will be deleted by the
multicast flow.
2024-12-05 11:05:21 +00:00
532392abe1 Fix dev_nonces migration. 2024-11-13 11:42:08 +00:00
41b3c6a4e4 Implement support for storing DevNonces per JoinEUI. 2024-11-13 09:33:16 +00:00
4b6391f57e Bump version to 4.10.1 2024-11-04 15:20:07 +00:00
ed11c88307 Bump version to 4.10.1-test.1 2024-11-04 12:33:08 +00:00
0ed78a1d0a Fix incorrect systemd service-name after #540.
Currently, cargo-deb does not use the variant name option as systemd
service-name, causing the postgres variant with name 'chirpstack' to
install a 'chirpstack-postgres' systemd service. See also
https://github.com/kornelski/cargo-deb/issues/150.

This also fixes the RPM systemd service-name for the sqlite variant.
2024-11-04 12:19:19 +00:00
fdf168bd09 Bump version to 4.10.0 2024-11-04 09:09:44 +00:00
dddb471878 Update dependencies. 2024-11-01 13:45:59 +00:00
f265a815a6 Bump version to 4.10.0-test.7 2024-10-30 14:20:21 +00:00
9bf78eebfd Attempt #3 to fix matrix.database Docker image suffix. 2024-10-30 11:58:35 +00:00
3d470c6a14 Update dependencies. 2024-10-29 16:21:24 +00:00
2b5b54a7b7 Bump version to 4.10.0-test.6 2024-10-29 16:04:44 +00:00
905db6e9b7 Attempt #2 to fix matrix.database Docker image suffix. 2024-10-29 15:58:54 +00:00
1245386f38 Bump version to 4.10.0-test.5 2024-10-29 12:27:29 +00:00
49e7c1ccb9 Try fix matrix.database == 'postgres'. 2024-10-29 12:16:15 +00:00
eafda74526 Bump version to 4.10.0-test.4 2024-10-29 11:06:48 +00:00
3378a81a37 Fix GitHub workflow. 2024-10-29 11:00:16 +00:00
04e676cad6 Bump version to 4.10.0-test.3 2024-10-29 10:52:37 +00:00
e3b83066b7 Build separate Docker image for SQLite. 2024-10-29 10:48:28 +00:00
dcf6ea14bd Bump version to 4.10.0-test.2 2024-10-29 09:30:29 +00:00
b1766e506d Remove debug println. 2024-10-23 13:45:02 +01:00
87c918bc35 api: Add C support (#549) 2024-10-23 13:24:07 +01:00
d5929e0523 lrwn-filters: Expose is_match method on prefix types. 2024-10-17 15:41:20 +01:00
d69f18edad Build/archive package for both Postgres and SQLite (#540) 2024-10-17 15:39:49 +01:00
6621a23652 ui: Update page-title according to page. (#539) 2024-10-15 10:48:33 +01:00
20ec2877f2 Fix fmt after clippy fixes. 2024-10-14 15:30:15 +01:00
10cbdb1e00 Fix clippy feedback. 2024-10-14 15:12:33 +01:00
d24b8241c5 api: Rename compile > compile_protos. 2024-10-14 15:12:33 +01:00
eecdeeb092 Bump rollup from 4.18.1 to 4.22.4 in /ui (#526)
Bumps [rollup](https://github.com/rollup/rollup) from 4.18.1 to 4.22.4.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v4.18.1...v4.22.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-14 14:38:14 +01:00
20e9e087ed Update dependencies. 2024-10-14 14:35:11 +01:00
c9bdea87f1 Fix validate_mic clause. 2024-10-04 08:41:00 +01:00
11fdd33139 Bump version to 4.10.0-test.1 2024-09-19 12:19:22 +01:00
07364fb05d Return with abort instead of error.
This is not an operational error, we are already logging the message as
warn, which is more appropriate as it is caused by user-input.
2024-09-19 12:06:08 +01:00
3b42b9ffdb Update dependencies. 2024-09-19 10:44:26 +01:00
af139ebabd Bump micromatch from 4.0.7 to 4.0.8 in /ui (#501)
Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.7 to 4.0.8.
- [Release notes](https://github.com/micromatch/micromatch/releases)
- [Changelog](https://github.com/micromatch/micromatch/blob/4.0.8/CHANGELOG.md)
- [Commits](https://github.com/micromatch/micromatch/compare/4.0.7...4.0.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-19 10:24:33 +01:00
bf74c9d91d Bump vite from 5.3.3 to 5.3.6 in /ui (#516)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.3.3 to 5.3.6.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.3.6/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.3.6/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-19 10:24:17 +01:00
4d7a4b22e1 ui: Implement queue-item expires-at timestamp in UI. 2024-09-19 10:17:42 +01:00
3829f591e4 Add expires_at to queue-items (unicast & multicast).
This makes it possible to automatically remove items from the queue in
case the expires_at timestamp has reached. This field is optional and
the default remains to never expire queue-items.
2024-09-17 11:54:29 +01:00
2919fb79e5 Fix escaping issue in TOML template.
Closes #486.
2024-09-13 12:59:09 +01:00
61d794b680 Remove OFF, which is not a valid tracing Level. 2024-09-12 14:42:51 +01:00
29b57fb72a Implement importer for lorawan-device-profiles repo. 2024-09-12 14:22:09 +01:00
190d977bf5 lrwn: Update Deserialize trait implementation. 2024-09-12 14:20:59 +01:00
9d04a74a94 Update dependencies. 2024-09-09 13:36:59 +01:00
5f8ddca7b7 api: Re-export pbjson_types and tonic.
Closes #504.
2024-09-09 11:59:51 +01:00
e04515f647 ui: Run make format to format ui code. 2024-08-28 14:44:22 +01:00
d69a0eee75 ui: Fix tooltip date formatting.
With the migration from moment to date-fns (#460) some of the formatting
strings were not updated accordingly.

Fixes #503.
2024-08-28 14:44:07 +01:00
e63296573b Implement support for SQLite database backend. (#418) (#500)
This feature makes it possible to select between PostgreSQL and SQLite as database backend using a compile feature-flag. It is not possible to enable both at the same time.

---------

Co-authored-by: Momo Bel <plopyomomo@gmail.com>
2024-08-26 13:22:35 +01:00
800d7d0efe api: Upgrade io.grpc dependencies in Java API. (#494)
This fixes a compatibility issue with Netty.

---
Co-authored-by: Guillaume Milani <guillaume.milani@sontex.ch>
2024-08-21 14:49:08 +01:00
489a35e0ec Bump version to 4.9.0 2024-08-15 09:06:19 +01:00
1848097e6c Fix missing last_seen_at field update of relay gateway. 2024-08-13 15:54:51 +01:00
76b7ec4881 Add signal handling.
Fixes #480.
2024-08-13 13:04:06 +01:00
3aaa114f46 Update deadpool-redis. 2024-08-08 16:53:07 +01:00
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
479 changed files with 18078 additions and 25193 deletions

View File

@ -13,18 +13,25 @@ env:
jobs:
tests:
runs-on: ubuntu-latest
strategy:
matrix:
database:
- postgres
- sqlite
env:
DATABASE: ${{ matrix.database }}
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.11
-
name: Cargo cache
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
@ -32,7 +39,7 @@ jobs:
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-test-${{ hashFiles('**/Cargo.lock') }}
key: ${{ runner.os }}-cargo-test-${{ matrix.database }}-${{ hashFiles('**/Cargo.lock') }}
-
name: Start dependency services
run: docker compose up -d
@ -47,18 +54,25 @@ jobs:
needs: tests
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
strategy:
matrix:
database:
- postgres
- sqlite
env:
DATABASE: ${{ matrix.database }}
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.11
-
name: Cargo cache
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
@ -94,7 +108,7 @@ jobs:
uses: docker/metadata-action@v3
with:
images: |
chirpstack/${{ github.event.repository.name }}
chirpstack/${{ github.event.repository.name }}${{ matrix.database != 'postgres' && format('-{0}', matrix.database) || '' }}
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}

4
.gitignore vendored
View File

@ -11,8 +11,12 @@
# Binary packages
/dist
# SQLite databases
*.sqlite
# Rust target directory
**/target
**/target-sqlite
# Certificates
/chirpstack/configuration/certs/*

2850
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,19 +1,15 @@
[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
[patch.crates-io]
# Remove if diesel-async > 0.4.1
diesel-async = { git = "https://github.com/weiznich/diesel_async.git", rev = "017ebe2fb7a2709ab5db92148dea5ce812a35e09" }
opt-level = 'z'
lto = true
codegen-units = 1

View File

@ -1,5 +1,5 @@
# Copy binary stage
FROM --platform=$BUILDPLATFORM alpine:3.18.0 as binary
FROM --platform=$BUILDPLATFORM alpine:3.21.0 as binary
ARG TARGETPLATFORM
@ -20,11 +20,11 @@ RUN case "$TARGETPLATFORM" in \
esac;
# Final stage
FROM alpine:3.18.0
FROM alpine:3.21.0
RUN apk --no-cache add \
ca-certificates
COPY --from=binary /usr/bin/chirpstack /usr/bin/chirpstack
USER nobody:nogroup
ENTRYPOINT ["/usr/bin/chirpstack"]
ENTRYPOINT ["/usr/bin/chirpstack"]

View File

@ -6,25 +6,24 @@ dist:
cd chirpstack && make dist
# Install dev dependencies
# TODO: test latest cargo-deb and move it to shell.nix.
dev-dependencies:
cargo install cross --version 0.2.5
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
cargo install cargo-deb --version 1.43.1 --locked
cargo install cargo-generate-rpm --version 0.12.1 --locked
# 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
@ -53,10 +52,6 @@ devshell:
docker-devshell:
docker compose run --rm --service-ports --name chirpstack chirpstack
# Enters the devshell for ChirpStack UI development.
docker-devshell-ui:
docker compose run --rm --service-ports --name chirpstack-ui chirpstack-ui bash
# Runs the tests
test:
cd api && make rust

View File

@ -84,7 +84,11 @@ docker compose up -d
Run the following command to run the ChirpStack tests:
```bash
# Test (with PostgresQL database backend)
make test
# Test with SQLite database backend
DATABASE=sqlite make test
```
### Building ChirpStack binaries
@ -109,6 +113,34 @@ make release-amd64
make dist
```
By default the above commands will build ChirpStack with the PostgresQL database
database backend. Set the `DATABASE=sqlite` env. variable to compile ChirpStack
with the SQLite database backend.
### Database migrations
To create a new database migration, execute:
```
make migration-generate NAME=test-migration
```
To apply migrations, execute:
```
make migration-run
```
To revert a migration, execute:
```
make migration-revert
```
By default the above commands will execute the migration commands using the
PostgresQL database backend. To execute migration commands for the SQLite
database backend, set the `DATABASE=sqlite` env. variable.
## License
ChirpStack Network Server is distributed under the MIT license. See also

16
api/Dockerfile-c vendored Normal file
View File

@ -0,0 +1,16 @@
FROM alpine:latest
ENV PROJECT_PATH=/chirpstack/api
RUN apk add --no-cache make git bash protobuf protobuf-dev pkgconfig autoconf automake libtool gcc g++
# Install protobuf implementation for C
RUN git clone --depth=1 https://github.com/protobuf-c/protobuf-c.git /protobuf-c
RUN cd /protobuf-c && ./autogen.sh && ./configure && make && make install
# Proto dependencies stuff
RUN git clone --depth=1 https://github.com/protocolbuffers/protobuf.git /protobuf
RUN git clone --depth=1 https://github.com/googleapis/googleapis.git /googleapis
RUN mkdir -p PROJECT_PATH
WORKDIR $PROJECT_PATH

9
api/Makefile vendored
View File

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

2
api/c/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/src/
/proto/

34
api/c/Makefile vendored Normal file
View File

@ -0,0 +1,34 @@
.PHONY: all pre-build
PROTOC := protoc-c
PROTOC_ARGS := -I=proto -I=proto/chirpstack-api --c_out=./src
GOOGLE_PROTOBUF_REQUIREMENTS =
GOOGLE_PROTOBUF_REQUIREMENTS += timestamp.proto
GOOGLE_PROTOBUF_REQUIREMENTS += duration.proto
GOOGLE_PROTOBUF_REQUIREMENTS += struct.proto
GOOGLE_PROTOBUF_REQUIREMENTS += empty.proto
GOOGLE_PROTOBUF_REQUIREMENTS += descriptor.proto
GOOGLE_PROTOBUF_OUTPUT = $(patsubst %.proto, src/google/protobuf/%.pb-c.h, $(GOOGLE_PROTOBUF_REQUIREMENTS))
all: pre-build $(GOOGLE_PROTOBUF_OUTPUT) build
pre-build:
rm -rf proto src
mkdir -p proto/chirpstack-api
mkdir -p proto/google/protobuf
cp -r ../proto/* proto/chirpstack-api/
mv proto/chirpstack-api/google/api proto/google/api
mkdir -p src
sed -i \
-r 's/(\s+bytes std)(in|out|err)(\s+=.*)/\1_\2\3/' \
proto/chirpstack-api/gw/gw.proto
src/google/protobuf/%.pb-c.h: /protobuf/src/google/protobuf/%.proto
cp $< proto/google/protobuf/
build:
find proto \
-name '*.proto' \
-type f \
-exec $(PROTOC) $(PROTOC_ARGS) {} \;

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v4.24.4
// - protoc v5.28.3
// source: api/application.proto
package api

1288
api/go/api/device.pb.go vendored

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v4.24.4
// - protoc v5.28.3
// source: api/device.proto
package api

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.34.1
// protoc v4.24.4
// protoc-gen-go v1.35.1
// protoc v5.28.3
// source: api/device_profile.proto
package api
@ -556,11 +556,9 @@ type DeviceProfile struct {
func (x *DeviceProfile) Reset() {
*x = DeviceProfile{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DeviceProfile) String() string {
@ -571,7 +569,7 @@ func (*DeviceProfile) ProtoMessage() {}
func (x *DeviceProfile) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -970,11 +968,9 @@ type Measurement struct {
func (x *Measurement) Reset() {
*x = Measurement{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Measurement) String() string {
@ -985,7 +981,7 @@ func (*Measurement) ProtoMessage() {}
func (x *Measurement) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1043,11 +1039,9 @@ type DeviceProfileListItem struct {
func (x *DeviceProfileListItem) Reset() {
*x = DeviceProfileListItem{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DeviceProfileListItem) String() string {
@ -1058,7 +1052,7 @@ func (*DeviceProfileListItem) ProtoMessage() {}
func (x *DeviceProfileListItem) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1154,11 +1148,9 @@ type CreateDeviceProfileRequest struct {
func (x *CreateDeviceProfileRequest) Reset() {
*x = CreateDeviceProfileRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CreateDeviceProfileRequest) String() string {
@ -1169,7 +1161,7 @@ func (*CreateDeviceProfileRequest) ProtoMessage() {}
func (x *CreateDeviceProfileRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1202,11 +1194,9 @@ type CreateDeviceProfileResponse struct {
func (x *CreateDeviceProfileResponse) Reset() {
*x = CreateDeviceProfileResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CreateDeviceProfileResponse) String() string {
@ -1217,7 +1207,7 @@ func (*CreateDeviceProfileResponse) ProtoMessage() {}
func (x *CreateDeviceProfileResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1250,11 +1240,9 @@ type GetDeviceProfileRequest struct {
func (x *GetDeviceProfileRequest) Reset() {
*x = GetDeviceProfileRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetDeviceProfileRequest) String() string {
@ -1265,7 +1253,7 @@ func (*GetDeviceProfileRequest) ProtoMessage() {}
func (x *GetDeviceProfileRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1302,11 +1290,9 @@ type GetDeviceProfileResponse struct {
func (x *GetDeviceProfileResponse) Reset() {
*x = GetDeviceProfileResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetDeviceProfileResponse) String() string {
@ -1317,7 +1303,7 @@ func (*GetDeviceProfileResponse) ProtoMessage() {}
func (x *GetDeviceProfileResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1364,11 +1350,9 @@ type UpdateDeviceProfileRequest struct {
func (x *UpdateDeviceProfileRequest) Reset() {
*x = UpdateDeviceProfileRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UpdateDeviceProfileRequest) String() string {
@ -1379,7 +1363,7 @@ func (*UpdateDeviceProfileRequest) ProtoMessage() {}
func (x *UpdateDeviceProfileRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1412,11 +1396,9 @@ type DeleteDeviceProfileRequest struct {
func (x *DeleteDeviceProfileRequest) Reset() {
*x = DeleteDeviceProfileRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DeleteDeviceProfileRequest) String() string {
@ -1427,7 +1409,7 @@ func (*DeleteDeviceProfileRequest) ProtoMessage() {}
func (x *DeleteDeviceProfileRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1466,11 +1448,9 @@ type ListDeviceProfilesRequest struct {
func (x *ListDeviceProfilesRequest) Reset() {
*x = ListDeviceProfilesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ListDeviceProfilesRequest) String() string {
@ -1481,7 +1461,7 @@ func (*ListDeviceProfilesRequest) ProtoMessage() {}
func (x *ListDeviceProfilesRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1537,11 +1517,9 @@ type ListDeviceProfilesResponse struct {
func (x *ListDeviceProfilesResponse) Reset() {
*x = ListDeviceProfilesResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ListDeviceProfilesResponse) String() string {
@ -1552,7 +1530,7 @@ func (*ListDeviceProfilesResponse) ProtoMessage() {}
func (x *ListDeviceProfilesResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1594,11 +1572,9 @@ type ListDeviceProfileAdrAlgorithmsResponse struct {
func (x *ListDeviceProfileAdrAlgorithmsResponse) Reset() {
*x = ListDeviceProfileAdrAlgorithmsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ListDeviceProfileAdrAlgorithmsResponse) String() string {
@ -1609,7 +1585,7 @@ func (*ListDeviceProfileAdrAlgorithmsResponse) ProtoMessage() {}
func (x *ListDeviceProfileAdrAlgorithmsResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1651,11 +1627,9 @@ type AdrAlgorithmListItem struct {
func (x *AdrAlgorithmListItem) Reset() {
*x = AdrAlgorithmListItem{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *AdrAlgorithmListItem) String() string {
@ -1666,7 +1640,7 @@ func (*AdrAlgorithmListItem) ProtoMessage() {}
func (x *AdrAlgorithmListItem) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -2054,14 +2028,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 (
@ -2078,7 +2055,7 @@ func file_api_device_profile_proto_rawDescGZIP() []byte {
var file_api_device_profile_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
var file_api_device_profile_proto_msgTypes = make([]protoimpl.MessageInfo, 15)
var file_api_device_profile_proto_goTypes = []interface{}{
var file_api_device_profile_proto_goTypes = []any{
(CodecRuntime)(0), // 0: api.CodecRuntime
(MeasurementKind)(0), // 1: api.MeasurementKind
(CadPeriodicity)(0), // 2: api.CadPeriodicity
@ -2153,164 +2130,6 @@ func file_api_device_profile_proto_init() {
if File_api_device_profile_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_api_device_profile_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeviceProfile); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Measurement); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeviceProfileListItem); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreateDeviceProfileRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreateDeviceProfileResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetDeviceProfileRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetDeviceProfileResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateDeviceProfileRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeleteDeviceProfileRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDeviceProfilesRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDeviceProfilesResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDeviceProfileAdrAlgorithmsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AdrAlgorithmListItem); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v4.24.4
// - protoc v5.28.3
// source: api/device_profile.proto
package api

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.34.1
// protoc v4.24.4
// protoc-gen-go v1.35.1
// protoc v5.28.3
// source: api/device_profile_template.proto
package api
@ -105,11 +105,9 @@ type DeviceProfileTemplate struct {
func (x *DeviceProfileTemplate) Reset() {
*x = DeviceProfileTemplate{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_template_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_template_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DeviceProfileTemplate) String() string {
@ -120,7 +118,7 @@ func (*DeviceProfileTemplate) ProtoMessage() {}
func (x *DeviceProfileTemplate) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_template_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -371,11 +369,9 @@ type DeviceProfileTemplateListItem struct {
func (x *DeviceProfileTemplateListItem) Reset() {
*x = DeviceProfileTemplateListItem{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_template_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_template_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DeviceProfileTemplateListItem) String() string {
@ -386,7 +382,7 @@ func (*DeviceProfileTemplateListItem) ProtoMessage() {}
func (x *DeviceProfileTemplateListItem) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_template_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -496,11 +492,9 @@ type CreateDeviceProfileTemplateRequest struct {
func (x *CreateDeviceProfileTemplateRequest) Reset() {
*x = CreateDeviceProfileTemplateRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_template_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_template_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CreateDeviceProfileTemplateRequest) String() string {
@ -511,7 +505,7 @@ func (*CreateDeviceProfileTemplateRequest) ProtoMessage() {}
func (x *CreateDeviceProfileTemplateRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_template_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -544,11 +538,9 @@ type GetDeviceProfileTemplateRequest struct {
func (x *GetDeviceProfileTemplateRequest) Reset() {
*x = GetDeviceProfileTemplateRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_template_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_template_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetDeviceProfileTemplateRequest) String() string {
@ -559,7 +551,7 @@ func (*GetDeviceProfileTemplateRequest) ProtoMessage() {}
func (x *GetDeviceProfileTemplateRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_template_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -596,11 +588,9 @@ type GetDeviceProfileTemplateResponse struct {
func (x *GetDeviceProfileTemplateResponse) Reset() {
*x = GetDeviceProfileTemplateResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_template_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_template_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetDeviceProfileTemplateResponse) String() string {
@ -611,7 +601,7 @@ func (*GetDeviceProfileTemplateResponse) ProtoMessage() {}
func (x *GetDeviceProfileTemplateResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_template_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -658,11 +648,9 @@ type UpdateDeviceProfileTemplateRequest struct {
func (x *UpdateDeviceProfileTemplateRequest) Reset() {
*x = UpdateDeviceProfileTemplateRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_template_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_template_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UpdateDeviceProfileTemplateRequest) String() string {
@ -673,7 +661,7 @@ func (*UpdateDeviceProfileTemplateRequest) ProtoMessage() {}
func (x *UpdateDeviceProfileTemplateRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_template_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -706,11 +694,9 @@ type DeleteDeviceProfileTemplateRequest struct {
func (x *DeleteDeviceProfileTemplateRequest) Reset() {
*x = DeleteDeviceProfileTemplateRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_template_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_template_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DeleteDeviceProfileTemplateRequest) String() string {
@ -721,7 +707,7 @@ func (*DeleteDeviceProfileTemplateRequest) ProtoMessage() {}
func (x *DeleteDeviceProfileTemplateRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_template_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -756,11 +742,9 @@ type ListDeviceProfileTemplatesRequest struct {
func (x *ListDeviceProfileTemplatesRequest) Reset() {
*x = ListDeviceProfileTemplatesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_template_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_template_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ListDeviceProfileTemplatesRequest) String() string {
@ -771,7 +755,7 @@ func (*ListDeviceProfileTemplatesRequest) ProtoMessage() {}
func (x *ListDeviceProfileTemplatesRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_template_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -813,11 +797,9 @@ type ListDeviceProfileTemplatesResponse struct {
func (x *ListDeviceProfileTemplatesResponse) Reset() {
*x = ListDeviceProfileTemplatesResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_api_device_profile_template_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_device_profile_template_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ListDeviceProfileTemplatesResponse) String() string {
@ -828,7 +810,7 @@ func (*ListDeviceProfileTemplatesResponse) ProtoMessage() {}
func (x *ListDeviceProfileTemplatesResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_device_profile_template_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1088,14 +1070,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 (
@ -1111,7 +1096,7 @@ func file_api_device_profile_template_proto_rawDescGZIP() []byte {
}
var file_api_device_profile_template_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
var file_api_device_profile_template_proto_goTypes = []interface{}{
var file_api_device_profile_template_proto_goTypes = []any{
(*DeviceProfileTemplate)(nil), // 0: api.DeviceProfileTemplate
(*DeviceProfileTemplateListItem)(nil), // 1: api.DeviceProfileTemplateListItem
(*CreateDeviceProfileTemplateRequest)(nil), // 2: api.CreateDeviceProfileTemplateRequest
@ -1173,116 +1158,6 @@ func file_api_device_profile_template_proto_init() {
return
}
file_api_device_profile_proto_init()
if !protoimpl.UnsafeEnabled {
file_api_device_profile_template_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeviceProfileTemplate); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_template_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeviceProfileTemplateListItem); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_template_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreateDeviceProfileTemplateRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_template_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetDeviceProfileTemplateRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_template_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetDeviceProfileTemplateResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_template_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateDeviceProfileTemplateRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_template_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeleteDeviceProfileTemplateRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_template_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDeviceProfileTemplatesRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_device_profile_template_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDeviceProfileTemplatesResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v4.24.4
// - protoc v5.28.3
// source: api/device_profile_template.proto
package api

1298
api/go/api/gateway.pb.go vendored

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v4.24.4
// - protoc v5.28.3
// source: api/gateway.proto
package api
@ -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",

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v4.24.4
// - protoc v5.28.3
// source: api/internal.proto
package api

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v4.24.4
// - protoc v5.28.3
// source: api/multicast_group.proto
package api

203
api/go/api/relay.pb.go vendored
View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.34.1
// protoc v4.24.4
// protoc-gen-go v1.35.1
// protoc v5.28.3
// source: api/relay.proto
package api
@ -36,11 +36,9 @@ type RelayListItem struct {
func (x *RelayListItem) Reset() {
*x = RelayListItem{}
if protoimpl.UnsafeEnabled {
mi := &file_api_relay_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_relay_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *RelayListItem) String() string {
@ -51,7 +49,7 @@ func (*RelayListItem) ProtoMessage() {}
func (x *RelayListItem) ProtoReflect() protoreflect.Message {
mi := &file_api_relay_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -95,11 +93,9 @@ type ListRelaysRequest struct {
func (x *ListRelaysRequest) Reset() {
*x = ListRelaysRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_relay_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_relay_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ListRelaysRequest) String() string {
@ -110,7 +106,7 @@ func (*ListRelaysRequest) ProtoMessage() {}
func (x *ListRelaysRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_relay_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -159,11 +155,9 @@ type ListRelaysResponse struct {
func (x *ListRelaysResponse) Reset() {
*x = ListRelaysResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_api_relay_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_relay_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ListRelaysResponse) String() string {
@ -174,7 +168,7 @@ func (*ListRelaysResponse) ProtoMessage() {}
func (x *ListRelaysResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_relay_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -216,11 +210,9 @@ type AddRelayDeviceRequest struct {
func (x *AddRelayDeviceRequest) Reset() {
*x = AddRelayDeviceRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_relay_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_relay_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *AddRelayDeviceRequest) String() string {
@ -231,7 +223,7 @@ func (*AddRelayDeviceRequest) ProtoMessage() {}
func (x *AddRelayDeviceRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_relay_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -273,11 +265,9 @@ type RemoveRelayDeviceRequest struct {
func (x *RemoveRelayDeviceRequest) Reset() {
*x = RemoveRelayDeviceRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_relay_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_relay_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *RemoveRelayDeviceRequest) String() string {
@ -288,7 +278,7 @@ func (*RemoveRelayDeviceRequest) ProtoMessage() {}
func (x *RemoveRelayDeviceRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_relay_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -332,11 +322,9 @@ type ListRelayDevicesRequest struct {
func (x *ListRelayDevicesRequest) Reset() {
*x = ListRelayDevicesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_relay_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_relay_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ListRelayDevicesRequest) String() string {
@ -347,7 +335,7 @@ func (*ListRelayDevicesRequest) ProtoMessage() {}
func (x *ListRelayDevicesRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_relay_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -398,11 +386,9 @@ type RelayDeviceListItem struct {
func (x *RelayDeviceListItem) Reset() {
*x = RelayDeviceListItem{}
if protoimpl.UnsafeEnabled {
mi := &file_api_relay_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_relay_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *RelayDeviceListItem) String() string {
@ -413,7 +399,7 @@ func (*RelayDeviceListItem) ProtoMessage() {}
func (x *RelayDeviceListItem) ProtoReflect() protoreflect.Message {
mi := &file_api_relay_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -462,11 +448,9 @@ type ListRelayDevicesResponse struct {
func (x *ListRelayDevicesResponse) Reset() {
*x = ListRelayDevicesResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_api_relay_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_relay_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ListRelayDevicesResponse) String() string {
@ -477,7 +461,7 @@ func (*ListRelayDevicesResponse) ProtoMessage() {}
func (x *ListRelayDevicesResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_relay_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -595,14 +579,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 (
@ -618,7 +605,7 @@ func file_api_relay_proto_rawDescGZIP() []byte {
}
var file_api_relay_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
var file_api_relay_proto_goTypes = []interface{}{
var file_api_relay_proto_goTypes = []any{
(*RelayListItem)(nil), // 0: api.RelayListItem
(*ListRelaysRequest)(nil), // 1: api.ListRelaysRequest
(*ListRelaysResponse)(nil), // 2: api.ListRelaysResponse
@ -654,104 +641,6 @@ func file_api_relay_proto_init() {
if File_api_relay_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_api_relay_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RelayListItem); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_relay_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListRelaysRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_relay_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListRelaysResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_relay_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AddRelayDeviceRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_relay_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RemoveRelayDeviceRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_relay_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListRelayDevicesRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_relay_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RelayDeviceListItem); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_relay_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListRelayDevicesResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v4.24.4
// - protoc v5.28.3
// source: api/relay.proto
package api

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.34.1
// protoc v4.24.4
// protoc-gen-go v1.35.1
// protoc v5.28.3
// source: api/tenant.proto
package api
@ -60,11 +60,9 @@ type Tenant struct {
func (x *Tenant) Reset() {
*x = Tenant{}
if protoimpl.UnsafeEnabled {
mi := &file_api_tenant_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_tenant_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Tenant) String() string {
@ -75,7 +73,7 @@ func (*Tenant) ProtoMessage() {}
func (x *Tenant) ProtoReflect() protoreflect.Message {
mi := &file_api_tenant_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -182,11 +180,9 @@ type TenantListItem struct {
func (x *TenantListItem) Reset() {
*x = TenantListItem{}
if protoimpl.UnsafeEnabled {
mi := &file_api_tenant_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_tenant_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *TenantListItem) String() string {
@ -197,7 +193,7 @@ func (*TenantListItem) ProtoMessage() {}
func (x *TenantListItem) ProtoReflect() protoreflect.Message {
mi := &file_api_tenant_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -286,11 +282,9 @@ type CreateTenantRequest struct {
func (x *CreateTenantRequest) Reset() {
*x = CreateTenantRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_tenant_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_tenant_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CreateTenantRequest) String() string {
@ -301,7 +295,7 @@ func (*CreateTenantRequest) ProtoMessage() {}
func (x *CreateTenantRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_tenant_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -334,11 +328,9 @@ type CreateTenantResponse struct {
func (x *CreateTenantResponse) Reset() {
*x = CreateTenantResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_api_tenant_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_tenant_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CreateTenantResponse) String() string {
@ -349,7 +341,7 @@ func (*CreateTenantResponse) ProtoMessage() {}
func (x *CreateTenantResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_tenant_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -382,11 +374,9 @@ type GetTenantRequest struct {
func (x *GetTenantRequest) Reset() {
*x = GetTenantRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_tenant_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_tenant_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetTenantRequest) String() string {
@ -397,7 +387,7 @@ func (*GetTenantRequest) ProtoMessage() {}
func (x *GetTenantRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_tenant_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -434,11 +424,9 @@ type GetTenantResponse struct {
func (x *GetTenantResponse) Reset() {
*x = GetTenantResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_api_tenant_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_tenant_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetTenantResponse) String() string {
@ -449,7 +437,7 @@ func (*GetTenantResponse) ProtoMessage() {}
func (x *GetTenantResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_tenant_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -496,11 +484,9 @@ type UpdateTenantRequest struct {
func (x *UpdateTenantRequest) Reset() {
*x = UpdateTenantRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_tenant_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_tenant_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UpdateTenantRequest) String() string {
@ -511,7 +497,7 @@ func (*UpdateTenantRequest) ProtoMessage() {}
func (x *UpdateTenantRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_tenant_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -544,11 +530,9 @@ type DeleteTenantRequest struct {
func (x *DeleteTenantRequest) Reset() {
*x = DeleteTenantRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_tenant_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_tenant_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DeleteTenantRequest) String() string {
@ -559,7 +543,7 @@ func (*DeleteTenantRequest) ProtoMessage() {}
func (x *DeleteTenantRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_tenant_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -599,11 +583,9 @@ type ListTenantsRequest struct {
func (x *ListTenantsRequest) Reset() {
*x = ListTenantsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_tenant_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_tenant_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ListTenantsRequest) String() string {
@ -614,7 +596,7 @@ func (*ListTenantsRequest) ProtoMessage() {}
func (x *ListTenantsRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_tenant_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -670,11 +652,9 @@ type ListTenantsResponse struct {
func (x *ListTenantsResponse) Reset() {
*x = ListTenantsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_api_tenant_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_tenant_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ListTenantsResponse) String() string {
@ -685,7 +665,7 @@ func (*ListTenantsResponse) ProtoMessage() {}
func (x *ListTenantsResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_tenant_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -737,11 +717,9 @@ type TenantUser struct {
func (x *TenantUser) Reset() {
*x = TenantUser{}
if protoimpl.UnsafeEnabled {
mi := &file_api_tenant_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_tenant_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *TenantUser) String() string {
@ -752,7 +730,7 @@ func (*TenantUser) ProtoMessage() {}
func (x *TenantUser) ProtoReflect() protoreflect.Message {
mi := &file_api_tenant_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -836,11 +814,9 @@ type TenantUserListItem struct {
func (x *TenantUserListItem) Reset() {
*x = TenantUserListItem{}
if protoimpl.UnsafeEnabled {
mi := &file_api_tenant_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_tenant_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *TenantUserListItem) String() string {
@ -851,7 +827,7 @@ func (*TenantUserListItem) ProtoMessage() {}
func (x *TenantUserListItem) ProtoReflect() protoreflect.Message {
mi := &file_api_tenant_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -933,11 +909,9 @@ type AddTenantUserRequest struct {
func (x *AddTenantUserRequest) Reset() {
*x = AddTenantUserRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_tenant_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_tenant_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *AddTenantUserRequest) String() string {
@ -948,7 +922,7 @@ func (*AddTenantUserRequest) ProtoMessage() {}
func (x *AddTenantUserRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_tenant_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -983,11 +957,9 @@ type GetTenantUserRequest struct {
func (x *GetTenantUserRequest) Reset() {
*x = GetTenantUserRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_tenant_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_tenant_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetTenantUserRequest) String() string {
@ -998,7 +970,7 @@ func (*GetTenantUserRequest) ProtoMessage() {}
func (x *GetTenantUserRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_tenant_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1042,11 +1014,9 @@ type GetTenantUserResponse struct {
func (x *GetTenantUserResponse) Reset() {
*x = GetTenantUserResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_api_tenant_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_tenant_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetTenantUserResponse) String() string {
@ -1057,7 +1027,7 @@ func (*GetTenantUserResponse) ProtoMessage() {}
func (x *GetTenantUserResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_tenant_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1104,11 +1074,9 @@ type UpdateTenantUserRequest struct {
func (x *UpdateTenantUserRequest) Reset() {
*x = UpdateTenantUserRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_tenant_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_tenant_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UpdateTenantUserRequest) String() string {
@ -1119,7 +1087,7 @@ func (*UpdateTenantUserRequest) ProtoMessage() {}
func (x *UpdateTenantUserRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_tenant_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1154,11 +1122,9 @@ type DeleteTenantUserRequest struct {
func (x *DeleteTenantUserRequest) Reset() {
*x = DeleteTenantUserRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_tenant_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_tenant_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DeleteTenantUserRequest) String() string {
@ -1169,7 +1135,7 @@ func (*DeleteTenantUserRequest) ProtoMessage() {}
func (x *DeleteTenantUserRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_tenant_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1213,11 +1179,9 @@ type ListTenantUsersRequest struct {
func (x *ListTenantUsersRequest) Reset() {
*x = ListTenantUsersRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_tenant_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_tenant_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ListTenantUsersRequest) String() string {
@ -1228,7 +1192,7 @@ func (*ListTenantUsersRequest) ProtoMessage() {}
func (x *ListTenantUsersRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_tenant_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1277,11 +1241,9 @@ type ListTenantUsersResponse struct {
func (x *ListTenantUsersResponse) Reset() {
*x = ListTenantUsersResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_api_tenant_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_tenant_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ListTenantUsersResponse) String() string {
@ -1292,7 +1254,7 @@ func (*ListTenantUsersResponse) ProtoMessage() {}
func (x *ListTenantUsersResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_tenant_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1565,14 +1527,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 (
@ -1588,7 +1552,7 @@ func file_api_tenant_proto_rawDescGZIP() []byte {
}
var file_api_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
var file_api_tenant_proto_goTypes = []interface{}{
var file_api_tenant_proto_goTypes = []any{
(*Tenant)(nil), // 0: api.Tenant
(*TenantListItem)(nil), // 1: api.TenantListItem
(*CreateTenantRequest)(nil), // 2: api.CreateTenantRequest
@ -1662,236 +1626,6 @@ func file_api_tenant_proto_init() {
if File_api_tenant_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_api_tenant_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Tenant); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_tenant_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TenantListItem); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_tenant_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreateTenantRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_tenant_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreateTenantResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_tenant_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetTenantRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_tenant_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetTenantResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_tenant_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateTenantRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_tenant_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeleteTenantRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_tenant_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListTenantsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_tenant_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListTenantsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_tenant_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TenantUser); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_tenant_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TenantUserListItem); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_tenant_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AddTenantUserRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_tenant_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetTenantUserRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_tenant_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetTenantUserResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_tenant_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateTenantUserRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_tenant_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeleteTenantUserRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_tenant_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListTenantUsersRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_tenant_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListTenantUsersResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v4.24.4
// - protoc v5.28.3
// source: api/tenant.proto
package api

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

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.34.1
// protoc v4.24.4
// protoc-gen-go v1.35.1
// protoc v5.28.3
// source: api/user.proto
package api
@ -43,11 +43,9 @@ type User struct {
func (x *User) Reset() {
*x = User{}
if protoimpl.UnsafeEnabled {
mi := &file_api_user_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_user_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *User) String() string {
@ -58,7 +56,7 @@ func (*User) ProtoMessage() {}
func (x *User) ProtoReflect() protoreflect.Message {
mi := &file_api_user_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -129,11 +127,9 @@ type UserListItem struct {
func (x *UserListItem) Reset() {
*x = UserListItem{}
if protoimpl.UnsafeEnabled {
mi := &file_api_user_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_user_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UserListItem) String() string {
@ -144,7 +140,7 @@ func (*UserListItem) ProtoMessage() {}
func (x *UserListItem) ProtoReflect() protoreflect.Message {
mi := &file_api_user_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -220,11 +216,9 @@ type UserTenant struct {
func (x *UserTenant) Reset() {
*x = UserTenant{}
if protoimpl.UnsafeEnabled {
mi := &file_api_user_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_user_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UserTenant) String() string {
@ -235,7 +229,7 @@ func (*UserTenant) ProtoMessage() {}
func (x *UserTenant) ProtoReflect() protoreflect.Message {
mi := &file_api_user_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -293,11 +287,9 @@ type CreateUserRequest struct {
func (x *CreateUserRequest) Reset() {
*x = CreateUserRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_user_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_user_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CreateUserRequest) String() string {
@ -308,7 +300,7 @@ func (*CreateUserRequest) ProtoMessage() {}
func (x *CreateUserRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_user_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -355,11 +347,9 @@ type CreateUserResponse struct {
func (x *CreateUserResponse) Reset() {
*x = CreateUserResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_api_user_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_user_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CreateUserResponse) String() string {
@ -370,7 +360,7 @@ func (*CreateUserResponse) ProtoMessage() {}
func (x *CreateUserResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_user_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -403,11 +393,9 @@ type GetUserRequest struct {
func (x *GetUserRequest) Reset() {
*x = GetUserRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_user_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_user_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetUserRequest) String() string {
@ -418,7 +406,7 @@ func (*GetUserRequest) ProtoMessage() {}
func (x *GetUserRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_user_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -455,11 +443,9 @@ type GetUserResponse struct {
func (x *GetUserResponse) Reset() {
*x = GetUserResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_api_user_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_user_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetUserResponse) String() string {
@ -470,7 +456,7 @@ func (*GetUserResponse) ProtoMessage() {}
func (x *GetUserResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_user_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -517,11 +503,9 @@ type UpdateUserRequest struct {
func (x *UpdateUserRequest) Reset() {
*x = UpdateUserRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_user_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_user_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UpdateUserRequest) String() string {
@ -532,7 +516,7 @@ func (*UpdateUserRequest) ProtoMessage() {}
func (x *UpdateUserRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_user_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -565,11 +549,9 @@ type DeleteUserRequest struct {
func (x *DeleteUserRequest) Reset() {
*x = DeleteUserRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_user_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_user_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DeleteUserRequest) String() string {
@ -580,7 +562,7 @@ func (*DeleteUserRequest) ProtoMessage() {}
func (x *DeleteUserRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_user_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -615,11 +597,9 @@ type ListUsersRequest struct {
func (x *ListUsersRequest) Reset() {
*x = ListUsersRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_user_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_user_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ListUsersRequest) String() string {
@ -630,7 +610,7 @@ func (*ListUsersRequest) ProtoMessage() {}
func (x *ListUsersRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_user_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -672,11 +652,9 @@ type ListUsersResponse struct {
func (x *ListUsersResponse) Reset() {
*x = ListUsersResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_api_user_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_user_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ListUsersResponse) String() string {
@ -687,7 +665,7 @@ func (*ListUsersResponse) ProtoMessage() {}
func (x *ListUsersResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_user_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -729,11 +707,9 @@ type UpdateUserPasswordRequest struct {
func (x *UpdateUserPasswordRequest) Reset() {
*x = UpdateUserPasswordRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_user_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_api_user_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UpdateUserPasswordRequest) String() string {
@ -744,7 +720,7 @@ func (*UpdateUserPasswordRequest) ProtoMessage() {}
func (x *UpdateUserPasswordRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_user_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -891,14 +867,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 (
@ -914,7 +893,7 @@ func file_api_user_proto_rawDescGZIP() []byte {
}
var file_api_user_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
var file_api_user_proto_goTypes = []interface{}{
var file_api_user_proto_goTypes = []any{
(*User)(nil), // 0: api.User
(*UserListItem)(nil), // 1: api.UserListItem
(*UserTenant)(nil), // 2: api.UserTenant
@ -964,152 +943,6 @@ func file_api_user_proto_init() {
if File_api_user_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_api_user_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*User); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_user_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UserListItem); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_user_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UserTenant); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_user_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreateUserRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_user_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreateUserResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_user_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetUserRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_user_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetUserResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_user_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateUserRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_user_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeleteUserRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_user_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListUsersRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_user_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListUsersResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_user_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateUserPasswordRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v4.24.4
// - protoc v5.28.3
// source: api/user.proto
package api

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.34.1
// protoc v4.24.4
// protoc-gen-go v1.35.1
// protoc v5.28.3
// source: common/common.proto
package common
@ -656,11 +656,9 @@ type Location struct {
func (x *Location) Reset() {
*x = Location{}
if protoimpl.UnsafeEnabled {
mi := &file_common_common_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_common_common_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Location) String() string {
@ -671,7 +669,7 @@ func (*Location) ProtoMessage() {}
func (x *Location) ProtoReflect() protoreflect.Message {
mi := &file_common_common_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -734,11 +732,9 @@ type KeyEnvelope struct {
func (x *KeyEnvelope) Reset() {
*x = KeyEnvelope{}
if protoimpl.UnsafeEnabled {
mi := &file_common_common_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_common_common_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *KeyEnvelope) String() string {
@ -749,7 +745,7 @@ func (*KeyEnvelope) ProtoMessage() {}
func (x *KeyEnvelope) ProtoReflect() protoreflect.Message {
mi := &file_common_common_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -795,11 +791,9 @@ type Metric struct {
func (x *Metric) Reset() {
*x = Metric{}
if protoimpl.UnsafeEnabled {
mi := &file_common_common_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_common_common_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Metric) String() string {
@ -810,7 +804,7 @@ func (*Metric) ProtoMessage() {}
func (x *Metric) ProtoReflect() protoreflect.Message {
mi := &file_common_common_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -867,11 +861,9 @@ type MetricDataset struct {
func (x *MetricDataset) Reset() {
*x = MetricDataset{}
if protoimpl.UnsafeEnabled {
mi := &file_common_common_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_common_common_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *MetricDataset) String() string {
@ -882,7 +874,7 @@ func (*MetricDataset) ProtoMessage() {}
func (x *MetricDataset) ProtoReflect() protoreflect.Message {
mi := &file_common_common_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -925,11 +917,9 @@ type JoinServerContext struct {
func (x *JoinServerContext) Reset() {
*x = JoinServerContext{}
if protoimpl.UnsafeEnabled {
mi := &file_common_common_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_common_common_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *JoinServerContext) String() string {
@ -940,7 +930,7 @@ func (*JoinServerContext) ProtoMessage() {}
func (x *JoinServerContext) ProtoReflect() protoreflect.Message {
mi := &file_common_common_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1076,14 +1066,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 (
@ -1100,7 +1093,7 @@ func file_common_common_proto_rawDescGZIP() []byte {
var file_common_common_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
var file_common_common_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
var file_common_common_proto_goTypes = []interface{}{
var file_common_common_proto_goTypes = []any{
(Modulation)(0), // 0: common.Modulation
(Region)(0), // 1: common.Region
(MType)(0), // 2: common.MType
@ -1136,68 +1129,6 @@ func file_common_common_proto_init() {
if File_common_common_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_common_common_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Location); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_common_common_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*KeyEnvelope); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_common_common_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Metric); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_common_common_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MetricDataset); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_common_common_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*JoinServerContext); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{

1121
api/go/gw/gw.pb.go vendored

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.34.1
// protoc v4.24.4
// protoc-gen-go v1.35.1
// protoc v5.28.3
// source: integration/integration.proto
package integration
@ -102,6 +102,8 @@ const (
LogCode_RELAY_NEW_END_DEVICE LogCode = 9
// Downlink frame-counter.
LogCode_F_CNT_DOWN LogCode = 10
// Downlink has expired.
LogCode_EXPIRED LogCode = 11
)
// Enum value maps for LogCode.
@ -118,6 +120,7 @@ var (
8: "DOWNLINK_GATEWAY",
9: "RELAY_NEW_END_DEVICE",
10: "F_CNT_DOWN",
11: "EXPIRED",
}
LogCode_value = map[string]int32{
"UNKNOWN": 0,
@ -131,6 +134,7 @@ var (
"DOWNLINK_GATEWAY": 8,
"RELAY_NEW_END_DEVICE": 9,
"F_CNT_DOWN": 10,
"EXPIRED": 11,
}
)
@ -191,11 +195,9 @@ type DeviceInfo struct {
func (x *DeviceInfo) Reset() {
*x = DeviceInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_integration_integration_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_integration_integration_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DeviceInfo) String() string {
@ -206,7 +208,7 @@ func (*DeviceInfo) ProtoMessage() {}
func (x *DeviceInfo) ProtoReflect() protoreflect.Message {
mi := &file_integration_integration_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -313,11 +315,9 @@ type UplinkRelayRxInfo struct {
func (x *UplinkRelayRxInfo) Reset() {
*x = UplinkRelayRxInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_integration_integration_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_integration_integration_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UplinkRelayRxInfo) String() string {
@ -328,7 +328,7 @@ func (*UplinkRelayRxInfo) ProtoMessage() {}
func (x *UplinkRelayRxInfo) ProtoReflect() protoreflect.Message {
mi := &file_integration_integration_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -425,15 +425,16 @@ type UplinkEvent struct {
// the AppSKey and that the encryption / decryption of the payloads is
// the responsibility of the end-application.
JoinServerContext *common.JoinServerContext `protobuf:"bytes,15,opt,name=join_server_context,json=joinServerContext,proto3" json:"join_server_context,omitempty"`
// Region config ID.
// This contains the region config ID which reported the uplink.
RegionConfigId string `protobuf:"bytes,16,opt,name=region_config_id,json=regionConfigId,proto3" json:"region_config_id,omitempty"`
}
func (x *UplinkEvent) Reset() {
*x = UplinkEvent{}
if protoimpl.UnsafeEnabled {
mi := &file_integration_integration_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_integration_integration_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UplinkEvent) String() string {
@ -444,7 +445,7 @@ func (*UplinkEvent) ProtoMessage() {}
func (x *UplinkEvent) ProtoReflect() protoreflect.Message {
mi := &file_integration_integration_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -564,6 +565,13 @@ func (x *UplinkEvent) GetJoinServerContext() *common.JoinServerContext {
return nil
}
func (x *UplinkEvent) GetRegionConfigId() string {
if x != nil {
return x.RegionConfigId
}
return ""
}
// JoinEvent is the message sent when a device joined the network.
// Note: this event is sent at the first uplink after OTAA.
type JoinEvent struct {
@ -586,15 +594,16 @@ type JoinEvent struct {
// the AppSKey and that the encryption / decryption of the payloads is
// the responsibility of the end-application.
JoinServerContext *common.JoinServerContext `protobuf:"bytes,6,opt,name=join_server_context,json=joinServerContext,proto3" json:"join_server_context,omitempty"`
// Region config ID.
// This contains the region config ID which reported the uplink.
RegionConfigId string `protobuf:"bytes,7,opt,name=region_config_id,json=regionConfigId,proto3" json:"region_config_id,omitempty"`
}
func (x *JoinEvent) Reset() {
*x = JoinEvent{}
if protoimpl.UnsafeEnabled {
mi := &file_integration_integration_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_integration_integration_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *JoinEvent) String() string {
@ -605,7 +614,7 @@ func (*JoinEvent) ProtoMessage() {}
func (x *JoinEvent) ProtoReflect() protoreflect.Message {
mi := &file_integration_integration_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -662,6 +671,13 @@ func (x *JoinEvent) GetJoinServerContext() *common.JoinServerContext {
return nil
}
func (x *JoinEvent) GetRegionConfigId() string {
if x != nil {
return x.RegionConfigId
}
return ""
}
// AckEvent is the message sent when a confirmation on a confirmed downlink
// has been received -or- when the downlink timed out.
type AckEvent struct {
@ -685,11 +701,9 @@ type AckEvent struct {
func (x *AckEvent) Reset() {
*x = AckEvent{}
if protoimpl.UnsafeEnabled {
mi := &file_integration_integration_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_integration_integration_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *AckEvent) String() string {
@ -700,7 +714,7 @@ func (*AckEvent) ProtoMessage() {}
func (x *AckEvent) ProtoReflect() protoreflect.Message {
mi := &file_integration_integration_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -783,11 +797,9 @@ type TxAckEvent struct {
func (x *TxAckEvent) Reset() {
*x = TxAckEvent{}
if protoimpl.UnsafeEnabled {
mi := &file_integration_integration_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_integration_integration_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *TxAckEvent) String() string {
@ -798,7 +810,7 @@ func (*TxAckEvent) ProtoMessage() {}
func (x *TxAckEvent) ProtoReflect() protoreflect.Message {
mi := &file_integration_integration_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -884,11 +896,9 @@ type LogEvent struct {
func (x *LogEvent) Reset() {
*x = LogEvent{}
if protoimpl.UnsafeEnabled {
mi := &file_integration_integration_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_integration_integration_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *LogEvent) String() string {
@ -899,7 +909,7 @@ func (*LogEvent) ProtoMessage() {}
func (x *LogEvent) ProtoReflect() protoreflect.Message {
mi := &file_integration_integration_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -982,11 +992,9 @@ type StatusEvent struct {
func (x *StatusEvent) Reset() {
*x = StatusEvent{}
if protoimpl.UnsafeEnabled {
mi := &file_integration_integration_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_integration_integration_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *StatusEvent) String() string {
@ -997,7 +1005,7 @@ func (*StatusEvent) ProtoMessage() {}
func (x *StatusEvent) ProtoReflect() protoreflect.Message {
mi := &file_integration_integration_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1079,11 +1087,9 @@ type LocationEvent struct {
func (x *LocationEvent) Reset() {
*x = LocationEvent{}
if protoimpl.UnsafeEnabled {
mi := &file_integration_integration_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_integration_integration_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *LocationEvent) String() string {
@ -1094,7 +1100,7 @@ func (*LocationEvent) ProtoMessage() {}
func (x *LocationEvent) ProtoReflect() protoreflect.Message {
mi := &file_integration_integration_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1161,11 +1167,9 @@ type IntegrationEvent struct {
func (x *IntegrationEvent) Reset() {
*x = IntegrationEvent{}
if protoimpl.UnsafeEnabled {
mi := &file_integration_integration_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_integration_integration_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *IntegrationEvent) String() string {
@ -1176,7 +1180,7 @@ func (*IntegrationEvent) ProtoMessage() {}
func (x *IntegrationEvent) ProtoReflect() protoreflect.Message {
mi := &file_integration_integration_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1259,11 +1263,9 @@ type DownlinkCommand struct {
func (x *DownlinkCommand) Reset() {
*x = DownlinkCommand{}
if protoimpl.UnsafeEnabled {
mi := &file_integration_integration_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_integration_integration_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DownlinkCommand) String() string {
@ -1274,7 +1276,7 @@ func (*DownlinkCommand) ProtoMessage() {}
func (x *DownlinkCommand) ProtoReflect() protoreflect.Message {
mi := &file_integration_integration_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -1383,7 +1385,7 @@ var file_integration_integration_proto_rawDesc = []byte{
0x01, 0x28, 0x05, 0x52, 0x03, 0x73, 0x6e, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x73, 0x73, 0x69,
0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x73, 0x73, 0x69, 0x12, 0x1f, 0x0a, 0x0b,
0x77, 0x6f, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28,
0x0d, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0xd3, 0x04,
0x0d, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0xfd, 0x04,
0x0a, 0x0b, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a,
0x10, 0x64, 0x65, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x64, 0x75, 0x70, 0x6c, 0x69,
@ -1421,7 +1423,33 @@ var file_integration_integration_proto_rawDesc = []byte{
0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4a,
0x6f, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
0x52, 0x11, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74,
0x65, 0x78, 0x74, 0x22, 0xca, 0x02, 0x0a, 0x09, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x76, 0x65, 0x6e,
0x65, 0x78, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f,
0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72,
0x65, 0x67, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x22, 0xf4, 0x02,
0x0a, 0x09, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x64,
0x65, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x49, 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, 0x38, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e,
0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f,
0x12, 0x19, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x04, 0x20, 0x01,
0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x42, 0x0a, 0x0d, 0x72,
0x65, 0x6c, 0x61, 0x79, 0x5f, 0x72, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x78, 0x49, 0x6e,
0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x12,
0x49, 0x0a, 0x13, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63,
0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63,
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x11, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x65, 0x72,
0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x65,
0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x07,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x49, 0x64, 0x22, 0x85, 0x02, 0x0a, 0x08, 0x41, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e,
0x74, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x64,
0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x04,
@ -1431,97 +1459,55 @@ var file_integration_integration_proto_rawDesc = []byte{
0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69,
0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64,
0x64, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64,
0x72, 0x12, 0x42, 0x0a, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x72, 0x78, 0x5f, 0x69, 0x6e,
0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67,
0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x6c,
0x61, 0x79, 0x52, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x52,
0x78, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x49, 0x0a, 0x13, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x73, 0x65,
0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4a, 0x6f, 0x69, 0x6e,
0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x11, 0x6a,
0x6f, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
0x22, 0x85, 0x02, 0x0a, 0x08, 0x41, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a,
0x10, 0x64, 0x65, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x64, 0x75, 0x70, 0x6c, 0x69,
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 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, 0x38, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69,
0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e,
0x66, 0x6f, 0x12, 0x22, 0x0a, 0x0d, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x74, 0x65, 0x6d,
0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x75, 0x65,
0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77,
0x6c, 0x65, 0x64, 0x67, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x63,
0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x66, 0x5f,
0x63, 0x6e, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08,
0x66, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x22, 0xa5, 0x02, 0x0a, 0x0a, 0x54, 0x78, 0x41,
0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c,
0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x64, 0x6f,
0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x49, 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, 0x38, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69,
0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e,
0x66, 0x6f, 0x12, 0x22, 0x0a, 0x0d, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x74, 0x65, 0x6d,
0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x75, 0x65,
0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f,
0x64, 0x6f, 0x77, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x66, 0x43, 0x6e, 0x74,
0x44, 0x6f, 0x77, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f,
0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61,
0x79, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x77, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69,
0x6e, 0x6b, 0x54, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x74, 0x78, 0x49, 0x6e, 0x66, 0x6f,
0x22, 0xe7, 0x02, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a,
0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 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, 0x38, 0x0a,
0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x64, 0x65, 0x76,
0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c,
0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x6c,
0x65, 0x76, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x14, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x2e, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x20,
0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
0x12, 0x3c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
0x4c, 0x6f, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x1a, 0x3a,
0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 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, 0xcf, 0x02, 0x0a, 0x0b, 0x53,
0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65,
0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x49, 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, 0x38, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f,
0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x74,
0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12,
0x16, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52,
0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x74, 0x65, 0x72,
0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
0x50, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x62,
0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x75, 0x6e, 0x61,
0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17,
0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x55, 0x6e, 0x61, 0x76,
0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x61, 0x74, 0x74, 0x65,
0x72, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c,
0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xd2, 0x01, 0x0a,
0x0d, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29,
0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x0a, 0x0d, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f,
0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x71,
0x75, 0x65, 0x75, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x63,
0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08,
0x52, 0x0c, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x64, 0x12, 0x1c,
0x0a, 0x0a, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x06, 0x20, 0x01,
0x28, 0x0d, 0x52, 0x08, 0x66, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x22, 0xa5, 0x02, 0x0a,
0x0a, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x64,
0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x0a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x49, 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, 0x38, 0x0a, 0x0b,
0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69,
0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x0a, 0x0d, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f,
0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x71,
0x75, 0x65, 0x75, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x66, 0x5f,
0x63, 0x6e, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08,
0x66, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65,
0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61,
0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x69, 0x6e,
0x66, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x77, 0x2e, 0x44, 0x6f,
0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x74, 0x78,
0x49, 0x6e, 0x66, 0x6f, 0x22, 0xe7, 0x02, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x45, 0x76, 0x65, 0x6e,
0x74, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 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, 0x38, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52,
0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x0a, 0x05, 0x6c,
0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x69, 0x6e, 0x74,
0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65,
0x6c, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65,
0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f,
0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18,
0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e,
0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
0x78, 0x74, 0x1a, 0x3a, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 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, 0xcf,
0x02, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29,
0x0a, 0x10, 0x64, 0x65, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x64, 0x75, 0x70, 0x6c,
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d,
@ -1531,66 +1517,92 @@ var file_integration_integration_proto_rawDesc = []byte{
0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c,
0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x22, 0xa2, 0x02, 0x0a, 0x10, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x64, 0x75, 0x70, 0x6c,
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0f, 0x64, 0x65, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
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, 0x38, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f,
0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52,
0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x29, 0x0a, 0x10, 0x69,
0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f,
0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e,
0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18,
0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06,
0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0xb4, 0x01, 0x0a, 0x0f, 0x44, 0x6f, 0x77, 0x6e, 0x6c,
0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x65,
0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x76,
0x45, 0x75, 0x69, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64,
0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65,
0x64, 0x12, 0x15, 0x0a, 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
0x0d, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2f, 0x0a, 0x06,
0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53,
0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2a, 0x2c, 0x0a,
0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x46,
0x4f, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01,
0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x2a, 0xea, 0x01, 0x0a, 0x07,
0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f,
0x57, 0x4e, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x49, 0x4e, 0x4b,
0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x01, 0x12,
0x10, 0x0a, 0x0c, 0x55, 0x50, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x43, 0x10,
0x02, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x43, 0x4f,
0x44, 0x45, 0x43, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x4f, 0x54, 0x41, 0x41, 0x10, 0x04, 0x12,
0x16, 0x0a, 0x12, 0x55, 0x50, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x46, 0x5f, 0x43, 0x4e, 0x54, 0x5f,
0x52, 0x45, 0x53, 0x45, 0x54, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x50, 0x4c, 0x49, 0x4e,
0x4b, 0x5f, 0x4d, 0x49, 0x43, 0x10, 0x06, 0x12, 0x1f, 0x0a, 0x1b, 0x55, 0x50, 0x4c, 0x49, 0x4e,
0x4b, 0x5f, 0x46, 0x5f, 0x43, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x4d,
0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x4f, 0x57, 0x4e,
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,
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,
0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x72, 0x6f, 0x63, 0x61,
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,
0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x05, 0x20,
0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x65,
0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x73, 0x6f,
0x75, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x65, 0x78, 0x74, 0x65,
0x72, 0x6e, 0x61, 0x6c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12,
0x3a, 0x0a, 0x19, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c,
0x5f, 0x75, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01,
0x28, 0x08, 0x52, 0x17, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c,
0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x62,
0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x08, 0x20, 0x01,
0x28, 0x02, 0x52, 0x0c, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c,
0x22, 0xd2, 0x01, 0x0a, 0x0d, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65,
0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65,
0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 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, 0x38, 0x0a,
0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x64, 0x65, 0x76,
0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa2, 0x02, 0x0a, 0x10, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65,
0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x49, 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, 0x38, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f,
0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x74,
0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12,
0x29, 0x0a, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e,
0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x67,
0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x76,
0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75,
0x63, 0x74, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0xb4, 0x01, 0x0a, 0x0f, 0x44,
0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x0e,
0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17,
0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69,
0x72, 0x6d, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66,
0x69, 0x72, 0x6d, 0x65, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18,
0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04,
0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61,
0x12, 0x2f, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63,
0x74, 0x2a, 0x2c, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x08, 0x0a,
0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, 0x4e, 0x49,
0x4e, 0x47, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x2a,
0xf7, 0x01, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55,
0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x4f, 0x57, 0x4e,
0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x53, 0x49, 0x5a,
0x45, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x55, 0x50, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x43, 0x4f,
0x44, 0x45, 0x43, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x49, 0x4e,
0x4b, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x43, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x4f, 0x54, 0x41,
0x41, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x50, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x46, 0x5f,
0x43, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x54, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x55,
0x50, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x4d, 0x49, 0x43, 0x10, 0x06, 0x12, 0x1f, 0x0a, 0x1b, 0x55,
0x50, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x46, 0x5f, 0x43, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x54, 0x52,
0x41, 0x4e, 0x53, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x12, 0x14, 0x0a, 0x10,
0x44, 0x4f, 0x57, 0x4e, 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, 0x12, 0x0b, 0x0a, 0x07,
0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10, 0x0b, 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, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x72, 0x6f, 0x63,
0x61, 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, 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 (
@ -1607,7 +1619,7 @@ func file_integration_integration_proto_rawDescGZIP() []byte {
var file_integration_integration_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_integration_integration_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
var file_integration_integration_proto_goTypes = []interface{}{
var file_integration_integration_proto_goTypes = []any{
(LogLevel)(0), // 0: integration.LogLevel
(LogCode)(0), // 1: integration.LogCode
(*DeviceInfo)(nil), // 2: integration.DeviceInfo
@ -1677,140 +1689,6 @@ func file_integration_integration_proto_init() {
if File_integration_integration_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_integration_integration_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeviceInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_integration_integration_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UplinkRelayRxInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_integration_integration_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UplinkEvent); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_integration_integration_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*JoinEvent); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_integration_integration_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AckEvent); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_integration_integration_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TxAckEvent); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_integration_integration_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LogEvent); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_integration_integration_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*StatusEvent); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_integration_integration_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LocationEvent); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_integration_integration_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*IntegrationEvent); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_integration_integration_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DownlinkCommand); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.34.1
// protoc v4.24.4
// protoc-gen-go v1.35.1
// protoc v5.28.3
// source: stream/api_request.proto
package stream
@ -38,11 +38,9 @@ type ApiRequestLog struct {
func (x *ApiRequestLog) Reset() {
*x = ApiRequestLog{}
if protoimpl.UnsafeEnabled {
mi := &file_stream_api_request_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_stream_api_request_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ApiRequestLog) String() string {
@ -53,7 +51,7 @@ func (*ApiRequestLog) ProtoMessage() {}
func (x *ApiRequestLog) ProtoReflect() protoreflect.Message {
mi := &file_stream_api_request_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -110,15 +108,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 (
@ -134,7 +135,7 @@ func file_stream_api_request_proto_rawDescGZIP() []byte {
}
var file_stream_api_request_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_stream_api_request_proto_goTypes = []interface{}{
var file_stream_api_request_proto_goTypes = []any{
(*ApiRequestLog)(nil), // 0: stream.ApiRequestLog
nil, // 1: stream.ApiRequestLog.MetadataEntry
}
@ -152,20 +153,6 @@ func file_stream_api_request_proto_init() {
if File_stream_api_request_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_stream_api_request_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ApiRequestLog); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.34.1
// protoc v4.24.4
// protoc-gen-go v1.35.1
// protoc v5.28.3
// source: stream/backend_interfaces.proto
package stream
@ -48,11 +48,9 @@ type BackendInterfacesRequest struct {
func (x *BackendInterfacesRequest) Reset() {
*x = BackendInterfacesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_stream_backend_interfaces_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_stream_backend_interfaces_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *BackendInterfacesRequest) String() string {
@ -63,7 +61,7 @@ func (*BackendInterfacesRequest) ProtoMessage() {}
func (x *BackendInterfacesRequest) ProtoReflect() protoreflect.Message {
mi := &file_stream_backend_interfaces_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -170,16 +168,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 (
@ -195,7 +196,7 @@ func file_stream_backend_interfaces_proto_rawDescGZIP() []byte {
}
var file_stream_backend_interfaces_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_stream_backend_interfaces_proto_goTypes = []interface{}{
var file_stream_backend_interfaces_proto_goTypes = []any{
(*BackendInterfacesRequest)(nil), // 0: stream.BackendInterfacesRequest
(*timestamppb.Timestamp)(nil), // 1: google.protobuf.Timestamp
}
@ -213,20 +214,6 @@ func file_stream_backend_interfaces_proto_init() {
if File_stream_backend_interfaces_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_stream_backend_interfaces_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BackendInterfacesRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.34.1
// protoc v4.24.4
// protoc-gen-go v1.35.1
// protoc v5.28.3
// source: stream/frame.proto
package stream
@ -50,11 +50,9 @@ type UplinkFrameLog struct {
func (x *UplinkFrameLog) Reset() {
*x = UplinkFrameLog{}
if protoimpl.UnsafeEnabled {
mi := &file_stream_frame_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_stream_frame_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UplinkFrameLog) String() string {
@ -65,7 +63,7 @@ func (*UplinkFrameLog) ProtoMessage() {}
func (x *UplinkFrameLog) ProtoReflect() protoreflect.Message {
mi := &file_stream_frame_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -172,11 +170,9 @@ type DownlinkFrameLog struct {
func (x *DownlinkFrameLog) Reset() {
*x = DownlinkFrameLog{}
if protoimpl.UnsafeEnabled {
mi := &file_stream_frame_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_stream_frame_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DownlinkFrameLog) String() string {
@ -187,7 +183,7 @@ func (*DownlinkFrameLog) ProtoMessage() {}
func (x *DownlinkFrameLog) ProtoReflect() protoreflect.Message {
mi := &file_stream_frame_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -328,15 +324,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 (
@ -352,7 +351,7 @@ func file_stream_frame_proto_rawDescGZIP() []byte {
}
var file_stream_frame_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_stream_frame_proto_goTypes = []interface{}{
var file_stream_frame_proto_goTypes = []any{
(*UplinkFrameLog)(nil), // 0: stream.UplinkFrameLog
(*DownlinkFrameLog)(nil), // 1: stream.DownlinkFrameLog
(*gw.UplinkTxInfo)(nil), // 2: gw.UplinkTxInfo
@ -381,32 +380,6 @@ func file_stream_frame_proto_init() {
if File_stream_frame_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_stream_frame_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UplinkFrameLog); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_stream_frame_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DownlinkFrameLog); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.34.1
// protoc v4.24.4
// protoc-gen-go v1.35.1
// protoc v5.28.3
// source: stream/meta.proto
package stream
@ -45,11 +45,9 @@ type UplinkMeta struct {
func (x *UplinkMeta) Reset() {
*x = UplinkMeta{}
if protoimpl.UnsafeEnabled {
mi := &file_stream_meta_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_stream_meta_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UplinkMeta) String() string {
@ -60,7 +58,7 @@ func (*UplinkMeta) ProtoMessage() {}
func (x *UplinkMeta) ProtoReflect() protoreflect.Message {
mi := &file_stream_meta_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -149,11 +147,9 @@ type DownlinkMeta struct {
func (x *DownlinkMeta) Reset() {
*x = DownlinkMeta{}
if protoimpl.UnsafeEnabled {
mi := &file_stream_meta_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_stream_meta_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DownlinkMeta) String() string {
@ -164,7 +160,7 @@ func (*DownlinkMeta) ProtoMessage() {}
func (x *DownlinkMeta) ProtoReflect() protoreflect.Message {
mi := &file_stream_meta_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -288,14 +284,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 (
@ -311,7 +310,7 @@ func file_stream_meta_proto_rawDescGZIP() []byte {
}
var file_stream_meta_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_stream_meta_proto_goTypes = []interface{}{
var file_stream_meta_proto_goTypes = []any{
(*UplinkMeta)(nil), // 0: stream.UplinkMeta
(*DownlinkMeta)(nil), // 1: stream.DownlinkMeta
(*gw.UplinkTxInfo)(nil), // 2: gw.UplinkTxInfo
@ -337,32 +336,6 @@ func file_stream_meta_proto_init() {
if File_stream_meta_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_stream_meta_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UplinkMeta); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_stream_meta_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DownlinkMeta); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{

View File

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

View File

@ -8,7 +8,7 @@ plugins {
}
group = "io.chirpstack"
version = "4.9.0-test.1"
version = "4.11.1"
repositories {
mavenCentral()
@ -21,10 +21,10 @@ buildscript {
}
dependencies {
api("io.grpc:grpc-protobuf:1.51.0")
api("io.grpc:grpc-api:1.51.0")
api("io.grpc:grpc-stub:1.51.0")
api("io.grpc:grpc-netty:1.51.0")
api("io.grpc:grpc-protobuf:1.59.1")
api("io.grpc:grpc-api:1.59.1")
api("io.grpc:grpc-stub:1.59.1")
api("io.grpc:grpc-netty:1.59.1")
implementation("javax.annotation:javax.annotation-api:1.3.2")
}

2
api/js/package.json vendored
View File

@ -1,6 +1,6 @@
{
"name": "@chirpstack/chirpstack-api",
"version": "4.9.0-test.1",
"version": "4.11.1",
"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.9.0-test.1"
version = "4.11.1"
repositories {
mavenCentral()

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

@ -0,0 +1 @@
/generated

View File

@ -3,7 +3,7 @@
"description": "Chirpstack PHP API",
"license": "MIT",
"type": "library",
"version": "4.8.1",
"version": "4.11.1",
"require": {
"php": ">=7.0.0",
"grpc/grpc": "^v1.57.0",

View File

@ -384,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).
@ -537,6 +539,10 @@ message DeviceQueueItem {
// the data payload. In this case, the f_cnt_down field must be set to
// the corresponding frame-counter which has been used during the encryption.
bool is_encrypted = 9;
// Expires at (optional).
// Expired queue-items will be automatically removed from the queue.
google.protobuf.Timestamp expires_at = 10;
}
message EnqueueDeviceQueueItemRequest { DeviceQueueItem queue_item = 1; }
@ -580,4 +586,4 @@ message GetDeviceNextFCntDownRequest {
message GetDeviceNextFCntDownResponse {
// FCntDown.
uint32 f_cnt_down = 1;
}
}

View File

@ -223,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

@ -302,6 +302,10 @@ message MulticastGroupQueueItem {
// Payload.
bytes data = 4;
// Expires at (optional).
// Expired queue-items will be automatically removed from the queue.
google.protobuf.Timestamp expires_at = 5;
}
message EnqueueMulticastGroupQueueItemRequest {

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

@ -750,8 +750,8 @@ message ConnState {
State state = 2;
}
// Gateway Mesh stats (sent by the Relay gateways).
message MeshStats {
// Gateway Mesh heartbeat (sent periodically by the Relay Gateways).
message MeshHeartbeat {
// Gateway ID (of the Border Gateway).
string gateway_id = 1;
@ -762,5 +762,16 @@ message MeshStats {
google.protobuf.Timestamp time = 3;
// Relay path.
repeated string relay_path = 4;
repeated MeshHeartbeatRelayPath relay_path = 4;
}
message MeshHeartbeatRelayPath {
// Relay ID.
string relay_id = 1;
// RSSI.
int32 rssi = 2;
// SNR.
int32 snr = 3;
}

View File

@ -60,6 +60,9 @@ enum LogCode {
// Downlink frame-counter.
F_CNT_DOWN = 10;
// Downlink has expired.
EXPIRED = 11;
}
// Device information.
@ -166,6 +169,10 @@ message UplinkEvent {
// the AppSKey and that the encryption / decryption of the payloads is
// the responsibility of the end-application.
common.JoinServerContext join_server_context = 15;
// Region config ID.
// This contains the region config ID which reported the uplink.
string region_config_id = 16;
}
// JoinEvent is the message sent when a device joined the network.
@ -191,6 +198,10 @@ message JoinEvent {
// the AppSKey and that the encryption / decryption of the payloads is
// the responsibility of the end-application.
common.JoinServerContext join_server_context = 6;
// Region config ID.
// This contains the region config ID which reported the uplink.
string region_config_id = 7;
}
// AckEvent is the message sent when a confirmation on a confirmed downlink

View File

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

53
api/rust/Cargo.toml vendored
View File

@ -1,33 +1,36 @@
[package]
name = "chirpstack_api"
description = "ChirpStack Protobuf / gRPC API definitions."
version = "4.9.0-test.1"
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.11.1"
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"]
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.41", features = ["macros"], optional = true }
pbjson = { version = "0.7", optional = true }
pbjson-types = { version = "0.7", optional = true }
serde = { version = "1.0", 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"

17
api/rust/build.rs vendored
View File

@ -28,7 +28,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
.file_descriptor_set_path(out_dir.join("common").join("proto_descriptor.bin"))
.compile_well_known_types(true)
.extern_path(".google.protobuf", well_known_types_path)
.compile(
.compile_protos(
&[cs_dir.join("common").join("common.proto").to_str().unwrap()],
&[
proto_dir.join("chirpstack").to_str().unwrap(),
@ -53,7 +53,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
.compile_well_known_types(true)
.extern_path(".google.protobuf", well_known_types_path)
.extern_path(".common", "crate::common")
.compile(
.compile_protos(
&[cs_dir.join("gw").join("gw.proto").to_str().unwrap()],
&[
proto_dir.join("chirpstack").to_str().unwrap(),
@ -82,12 +82,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
.extern_path(".google.protobuf", well_known_types_path)
.extern_path(".common", "crate::common");
#[cfg(feature = "diesel")]
{
builder = builder.message_attribute("internal.DeviceSession", "#[derive(diesel::expression::AsExpression, diesel::deserialize::FromSqlRow)] #[diesel(sql_type = diesel::sql_types::Binary)]");
}
builder.compile(
builder.compile_protos(
&[cs_dir
.join("internal")
.join("internal.proto")
@ -119,7 +114,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
.extern_path(".google.protobuf", well_known_types_path)
.extern_path(".common", "crate::common")
.extern_path(".gw", "crate::gw")
.compile(
.compile_protos(
&[cs_dir
.join("integration")
.join("integration.proto")
@ -153,7 +148,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
.extern_path(".google.protobuf", well_known_types_path)
.extern_path(".common", "crate::common")
.extern_path(".gw", "crate::gw")
.compile(
.compile_protos(
&[
cs_dir.join("stream").join("meta.proto").to_str().unwrap(),
cs_dir.join("stream").join("frame.proto").to_str().unwrap(),
@ -192,7 +187,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
.file_descriptor_set_path(out_dir.join("api").join("proto_descriptor.bin"))
.extern_path(".common", "crate::common")
.extern_path(".gw", "crate::gw")
.compile(
.compile_protos(
&[
cs_dir.join("api").join("internal.proto").to_str().unwrap(),
cs_dir.join("api").join("user.proto").to_str().unwrap(),

View File

@ -384,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).
@ -537,6 +539,10 @@ message DeviceQueueItem {
// the data payload. In this case, the f_cnt_down field must be set to
// the corresponding frame-counter which has been used during the encryption.
bool is_encrypted = 9;
// Expires at (optional).
// Expired queue-items will be automatically removed from the queue.
google.protobuf.Timestamp expires_at = 10;
}
message EnqueueDeviceQueueItemRequest { DeviceQueueItem queue_item = 1; }
@ -580,4 +586,4 @@ message GetDeviceNextFCntDownRequest {
message GetDeviceNextFCntDownResponse {
// FCntDown.
uint32 f_cnt_down = 1;
}
}

View File

@ -223,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

@ -302,6 +302,10 @@ message MulticastGroupQueueItem {
// Payload.
bytes data = 4;
// Expires at (optional).
// Expired queue-items will be automatically removed from the queue.
google.protobuf.Timestamp expires_at = 5;
}
message EnqueueMulticastGroupQueueItemRequest {

View File

@ -750,8 +750,8 @@ message ConnState {
State state = 2;
}
// Gateway Mesh stats (sent by the Relay gateways).
message MeshStats {
// Gateway Mesh heartbeat (sent periodically by the Relay Gateways).
message MeshHeartbeat {
// Gateway ID (of the Border Gateway).
string gateway_id = 1;
@ -762,5 +762,16 @@ message MeshStats {
google.protobuf.Timestamp time = 3;
// Relay path.
repeated string relay_path = 4;
repeated MeshHeartbeatRelayPath relay_path = 4;
}
message MeshHeartbeatRelayPath {
// Relay ID.
string relay_id = 1;
// RSSI.
int32 rssi = 2;
// SNR.
int32 snr = 3;
}

View File

@ -60,6 +60,9 @@ enum LogCode {
// Downlink frame-counter.
F_CNT_DOWN = 10;
// Downlink has expired.
EXPIRED = 11;
}
// Device information.
@ -166,6 +169,10 @@ message UplinkEvent {
// the AppSKey and that the encryption / decryption of the payloads is
// the responsibility of the end-application.
common.JoinServerContext join_server_context = 15;
// Region config ID.
// This contains the region config ID which reported the uplink.
string region_config_id = 16;
}
// JoinEvent is the message sent when a device joined the network.
@ -191,6 +198,10 @@ message JoinEvent {
// the AppSKey and that the encryption / decryption of the payloads is
// the responsibility of the end-application.
common.JoinServerContext join_server_context = 6;
// Region config ID.
// This contains the region config ID which reported the uplink.
string region_config_id = 7;
}
// AckEvent is the message sent when a confirmation on a confirmed downlink

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

@ -32,6 +32,7 @@ impl Into<String> for LogCode {
LogCode::DownlinkGateway => "DOWNLINK_GATEWAY",
LogCode::RelayNewEndDevice => "RELAY_NEW_END_DEVICE",
LogCode::FCntDown => "F_CNT_DOWN",
LogCode::Expired => "EXPIRED",
}
.to_string()
}

View File

@ -2,13 +2,6 @@ include!(concat!(env!("OUT_DIR"), "/internal/internal.rs"));
#[cfg(feature = "json")]
include!(concat!(env!("OUT_DIR"), "/internal/internal.serde.rs"));
#[cfg(feature = "diesel")]
use diesel::{backend::Backend, deserialize, serialize, sql_types::Binary};
#[cfg(feature = "diesel")]
use prost::Message;
#[cfg(feature = "diesel")]
use std::io::Cursor;
impl DeviceSession {
pub fn get_a_f_cnt_down(&self) -> u32 {
if self.mac_version().to_string().starts_with("1.0") {
@ -30,28 +23,3 @@ impl DeviceSession {
}
}
}
#[cfg(feature = "diesel")]
impl<ST, DB> deserialize::FromSql<ST, DB> for DeviceSession
where
DB: Backend,
*const [u8]: deserialize::FromSql<ST, DB>,
{
fn from_sql(value: DB::RawValue<'_>) -> deserialize::Result<Self> {
let bytes = <Vec<u8> as deserialize::FromSql<ST, DB>>::from_sql(value)?;
Ok(DeviceSession::decode(&mut Cursor::new(bytes))?)
}
}
#[cfg(feature = "diesel")]
impl serialize::ToSql<Binary, diesel::pg::Pg> for DeviceSession
where
[u8]: serialize::ToSql<Binary, diesel::pg::Pg>,
{
fn to_sql(&self, out: &mut serialize::Output<'_, '_, diesel::pg::Pg>) -> serialize::Result {
<[u8] as serialize::ToSql<Binary, diesel::pg::Pg>>::to_sql(
&self.encode_to_vec(),
&mut out.reborrow(),
)
}
}

5
api/rust/src/lib.rs vendored
View File

@ -1,4 +1,9 @@
#[cfg(feature = "json")]
pub use pbjson_types;
pub use prost;
#[cfg(feature = "api")]
pub use tonic;
#[cfg(feature = "api")]
pub mod api;
pub mod common;

View File

@ -1,24 +1,29 @@
[package]
name = "backend"
version = "4.9.0-test.1"
authors = ["Orne Brocaar <info@brocaar.com>"]
edition = "2018"
publish = false
name = "backend"
version = "4.11.1"
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 = "2.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.42", 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

@ -3,14 +3,14 @@
description = "Library for building external ChirpStack integrations"
homepage = "https://www.chirpstack.io/"
license = "MIT"
version = "4.6.0"
version = "4.11.1"
authors = ["Orne Brocaar <info@brocaar.com>"]
edition = "2021"
repository = "https://github.com/chirpstack/chirpstack"
[dependencies]
chirpstack_api = { path = "../api/rust", version = "4.9.0-test.1" }
redis = { version = "0.25", features = [
chirpstack_api = { path = "../api/rust", version = "4.11.1" }
redis = { version = "0.27", features = [
"cluster-async",
"tokio-rustls-comp",
] }
@ -21,9 +21,9 @@
"ansi",
"json",
], default-features = true }
async-trait = "0.1.79"
async-trait = "0.1"
serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1.36", features = ["macros", "rt-multi-thread"] }
lazy_static = "1.4"
tokio = { version = "1.42", features = ["macros", "rt-multi-thread"] }
lazy_static = "1.5"
serde_json = "1.0"
toml = "0.8"

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

@ -3,7 +3,7 @@
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.1"
version = "4.11.1"
authors = ["Orne Brocaar <info@brocaar.com>"]
edition = "2021"
publish = false
@ -20,29 +20,25 @@
serde_urlencoded = "0.7"
humantime-serde = "1.1"
toml = "0.8"
handlebars = "5.1"
handlebars = "6.2"
# Database
email_address = "0.2"
diesel = { version = "2.1", features = [
diesel = { version = "2.2", features = [
"chrono",
"uuid",
"serde_json",
"numeric",
"64-column-tables",
"postgres_backend",
] }
diesel_migrations = { version = "2.1" }
diesel-async = { version = "0.4", features = [
diesel_migrations = { version = "2.2" }
diesel-async = { version = "0.5", features = [
"deadpool",
"postgres",
"async-connection-wrapper",
] }
tokio-postgres = "0.7"
tokio-postgres-rustls = "0.11"
tokio-postgres = { version = "0.7", optional = true }
tokio-postgres-rustls = { version = "0.13", optional = true }
bigdecimal = "0.4"
redis = { version = "0.25.2", features = ["tls-rustls", "tokio-rustls-comp"] }
deadpool-redis = { version = "0.15", features = ["cluster"] }
redis = { version = "0.27", features = ["tls-rustls", "tokio-rustls-comp"] }
deadpool-redis = { version = "0.18", features = ["cluster", "serde"] }
# Logging
tracing = "0.1"
@ -53,11 +49,7 @@
], default-features = true }
# ChirpStack API definitions
chirpstack_api = { path = "../api/rust", features = [
"default",
"internal",
"diesel",
] }
chirpstack_api = { path = "../api/rust", features = ["default", "internal"] }
lrwn = { path = "../lrwn", features = [
"serde",
"diesel",
@ -78,63 +70,70 @@
sha2 = "0.10"
urlencoding = "2.1"
geohash = "0.13"
gcp_auth = "0.11"
lapin = "2.3"
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 = [
rdkafka = { version = "0.37", 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"] }
tonic = "0.12"
tonic-web = "0.12"
tonic-reflection = "0.12"
tokio = { version = "1.42", features = ["macros", "rt-multi-thread"] }
tokio-stream = "0.1"
prost-types = "0.12"
prost = "0.12"
pbjson-types = "0.6"
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"
axum = "0.7"
axum-server = { version = "0.7.1", features = ["tls-rustls-no-provider"] }
tower = { version = "0.5", features = ["util"] }
futures = "0.3"
futures-util = "0.3"
http = "0.2"
http-body = "0.4"
rust-embed = "8.3"
http = "1.1"
http-body = "1.0"
rust-embed = "8.5"
mime_guess = "2.0"
tower-http = { version = "0.4", features = ["trace", "auth"] }
tower-http = { version = "0.6", features = ["trace", "auth"] }
# Error handling
thiserror = "1.0"
thiserror = "2.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"
jsonwebtoken = "9.3"
rustls = { version = "0.23", default-features = false, features = [
"logging",
"std",
"tls12",
"ring",
] }
rustls-native-certs = "0.8"
rustls-pemfile = "2.2"
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"
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"
# Codecs
rquickjs = { version = "0.6", features = [
rquickjs = { version = "0.8", features = [
"bindgen",
"loader",
"array-buffer",
@ -142,26 +141,46 @@
] }
# Misc
lazy_static = "1.4"
uuid = { version = "1.8", features = ["v4", "serde"] }
lazy_static = "1.5"
uuid = { version = "1.11", 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"
async-recursion = "1.1"
regex = "1.11"
petgraph = "0.6"
prometheus-client = "0.22"
pin-project = "1.1"
scoped-futures = { version = "0.1", features = ["std"] }
signal-hook = "0.3"
signal-hook-tokio = { version = "0.3", features = ["futures-v0_3"] }
# Development and testing
[dev-dependencies]
httpmock = "0.7.0"
bytes = "1.5"
bytes = "1.8"
dotenv = "0.15"
[features]
default = ["postgres"]
postgres = [
"tokio-postgres",
"tokio-postgres-rustls",
"diesel/postgres_backend",
"diesel/serde_json",
"diesel/uuid",
"diesel-async/postgres",
"lrwn/postgres",
]
sqlite = [
"diesel/sqlite",
"diesel/returning_clauses_for_sqlite_3_35",
"lrwn/sqlite",
"diesel-async/sync-connection-wrapper",
"diesel-async/sqlite",
]
test-all-integrations = [
"test-integration-amqp",
"test-integration-kafka",
@ -216,9 +235,15 @@
"/etc/chirpstack/region_us915_7.toml",
]
suggests = "postgresql, mosquitto, redis"
conflicts = "chirpstack-sqlite"
maintainer-scripts = "debian/"
systemd-units = { enable = true }
[package.metadata.deb.variants.sqlite]
name = "chirpstack-sqlite"
suggests = "mosquitto, redis"
conflicts = "chirpstack"
[package.metadata.generate-rpm]
auto-req = "no"
@ -240,3 +265,17 @@ chmod 640 /etc/chirpstack/*.toml
{ source = "configuration/*", dest = "/etc/chirpstack" },
{ source = "rpm/chirpstack.service", dest = "/lib/systemd/system/chirpstack.service" },
]
[package.metadata.generate-rpm.conflicts]
chirpstack-sqlite = "*"
[package.metadata.generate-rpm.variants.sqlite]
name = "chirpstack-sqlite"
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-sqlite.service" },
]
[package.metadata.generate-rpm.variants.sqlite.conflicts]
chirpstack = "*"

View File

@ -1,28 +1,34 @@
.PHONY: dist
PKG_VERSION := $(shell cargo metadata --no-deps --format-version 1 | jq -r '.packages[0].version')
DATABASE ?= postgres
ifeq ($(DATABASE),postgres)
VARIANT_FLAGS ?=
else
VARIANT_FLAGS ?= --variant="$(DATABASE)"
endif
debug-amd64:
cross build --target x86_64-unknown-linux-musl
cross build --target x86_64-unknown-linux-musl --no-default-features --features="$(DATABASE)"
release-amd64:
cross build --target x86_64-unknown-linux-musl --release
cross build --target x86_64-unknown-linux-musl --release --no-default-features --features="$(DATABASE)"
dist:
# Keep these in this order, as aarch64 is based on Debian Buster (older),
# the others on Bullseye. For some build scripts we want to build against
# least recent LIBC.
cross build --target aarch64-unknown-linux-musl --release
cross build --target x86_64-unknown-linux-musl --release
cross build --target armv7-unknown-linux-musleabihf --release
cross build --target aarch64-unknown-linux-musl --release --no-default-features --features="$(DATABASE)"
cross build --target x86_64-unknown-linux-musl --release --no-default-features --features="$(DATABASE)"
cross build --target armv7-unknown-linux-musleabihf --release --no-default-features --features="$(DATABASE)"
cargo deb --target x86_64-unknown-linux-musl --no-build --no-strip
cargo deb --target armv7-unknown-linux-musleabihf --no-build --no-strip
cargo deb --target aarch64-unknown-linux-musl --no-build --no-strip
cargo deb --target x86_64-unknown-linux-musl --no-build --no-strip $(VARIANT_FLAGS)
cargo deb --target armv7-unknown-linux-musleabihf --no-build --no-strip $(VARIANT_FLAGS)
cargo deb --target aarch64-unknown-linux-musl --no-build --no-strip $(VARIANT_FLAGS)
cargo generate-rpm --target x86_64-unknown-linux-musl --target-dir ../target
cargo generate-rpm --target armv7-unknown-linux-musleabihf --target-dir ../target
cargo generate-rpm --target aarch64-unknown-linux-musl --target-dir ../target
cargo generate-rpm --target x86_64-unknown-linux-musl --target-dir ../target $(VARIANT_FLAGS)
cargo generate-rpm --target armv7-unknown-linux-musleabihf --target-dir ../target $(VARIANT_FLAGS)
cargo generate-rpm --target aarch64-unknown-linux-musl --target-dir ../target $(VARIANT_FLAGS)
mkdir -p ../dist
@ -34,16 +40,44 @@ dist:
cp ../target/armv7-unknown-linux-musleabihf/generate-rpm/*.rpm ../dist
cp ../target/aarch64-unknown-linux-musl/generate-rpm/*.rpm ../dist
tar -czvf ../dist/chirpstack_$(PKG_VERSION)_amd64.tar.gz -C ../target/x86_64-unknown-linux-musl/release chirpstack
tar -czvf ../dist/chirpstack_$(PKG_VERSION)_armv7hf.tar.gz -C ../target/armv7-unknown-linux-musleabihf/release chirpstack
tar -czvf ../dist/chirpstack_$(PKG_VERSION)_arm64.tar.gz -C ../target/aarch64-unknown-linux-musl/release chirpstack
tar -czvf ../dist/chirpstack_$(PKG_VERSION)_$(DATABASE)_amd64.tar.gz -C ../target/x86_64-unknown-linux-musl/release chirpstack
tar -czvf ../dist/chirpstack_$(PKG_VERSION)_$(DATABASE)_armv7hf.tar.gz -C ../target/armv7-unknown-linux-musleabihf/release chirpstack
tar -czvf ../dist/chirpstack_$(PKG_VERSION)_$(DATABASE)_arm64.tar.gz -C ../target/aarch64-unknown-linux-musl/release chirpstack
test:
cargo fmt --check
cargo clippy --no-deps
TZ=UTC cargo test
cargo clippy --no-deps --no-default-features --features="$(DATABASE)"
TZ=UTC cargo test --no-default-features --features="$(DATABASE)"
test-all:
cargo fmt --check
cargo clippy --no-deps
TZ=UTC cargo test --features test-all-integrations
cargo clippy --no-deps --no-default-features --features="$(DATABASE)"
TZ=UTC cargo test --no-default-features --features="$(DATABASE),test-all-integrations"
migration-generate:
ifeq ($(NAME),)
@echo "You must provide a NAME parameter, e.g. make migration-generate NAME=test-migration"
else
diesel --config-file diesel_$(DATABASE).toml migration --migration-dir migrations_$(DATABASE) generate $(NAME)
endif
migration-run: chirpstack_test.sqlite
ifeq ($(DATABASE),postgres)
diesel --config-file diesel_postgres.toml migration --migration-dir migrations_postgres run
endif
ifeq ($(DATABASE),sqlite)
DATABASE_URL="chirpstack_test.sqlite" diesel --config-file diesel_sqlite.toml migration --migration-dir migrations_sqlite run
sed -i 's/Timestamp/TimestamptzSqlite/g' src/storage/schema_sqlite.rs
endif
migration-revert: chirpstack_test.sqlite
ifeq ($(DATABASE),postgres)
diesel --config-file diesel_postgres.toml migration --migration-dir migrations_postgres revert
endif
ifeq ($(DATABASE),sqlite)
DATABASE_URL="chirpstack_test.sqlite" diesel --config-file diesel_sqlite.toml migration --migration-dir migrations_sqlite revert
sed -i 's/Timestamp/TimestamptzSqlite/g' src/storage/schema_sqlite.rs
endif
chirpstack_test.sqlite:
DATABASE_URL=chirpstack_test.sqlite diesel --config-file diesel_sqlite.toml setup --migration-dir migrations_sqlite

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

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an use-defined identifier for this region.
id="cn470_5"
id = "cn470_5"
# Description is a short description for this region.
description="CN470 (channels 40-47)"
description = "CN470 (channels 40-47)"
# 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_5"
topic_prefix = "cn470_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,52 +115,52 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=478300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 478300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=478500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 478500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=478700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 478700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=478900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 478900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=479100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 479100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=479300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 479300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=479500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 479500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=479700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 479700000
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=[40, 41, 42, 43, 44, 45, 46, 47]
enabled_uplink_channels = [40, 41, 42, 43, 44, 45, 46, 47]
# 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_6"
id = "cn470_6"
# Description is a short description for this region.
description="CN470 (channels 48-55)"
description = "CN470 (channels 48-55)"
# 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_6"
topic_prefix = "cn470_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,52 +115,52 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=479900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 479900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=480100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 480100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=480300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 480300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=480500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 480500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=480700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 480700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=480900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 480900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=481100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 481100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=481300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 481300000
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=[48, 49, 50, 51, 52, 53, 54, 55]
enabled_uplink_channels = [48, 49, 50, 51, 52, 53, 54, 55]
# 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_7"
id = "cn470_7"
# Description is a short description for this region.
description="CN470 (channels 56-63)"
description = "CN470 (channels 56-63)"
# 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_7"
topic_prefix = "cn470_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,52 +115,52 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=481500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 481500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=481700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 481700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=481900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 481900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=482100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 482100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=482300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 482300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=482500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 482500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=482700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 482700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=482900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 482900000
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=[56, 57, 58, 59, 60, 61, 62, 63]
enabled_uplink_channels = [56, 57, 58, 59, 60, 61, 62, 63]
# 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_8"
id = "cn470_8"
# Description is a short description for this region.
description="CN470 (channels 64-71)"
description = "CN470 (channels 64-71)"
# 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_8"
topic_prefix = "cn470_8"
# 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=483100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 483100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=483300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 483300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=483500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 483500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=483700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 483700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=483900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 483900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=484100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 484100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=484300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 484300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=484500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 484500000
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=[64, 65, 66, 67, 68, 69, 70, 71]
enabled_uplink_channels = [64, 65, 66, 67, 68, 69, 70, 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=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_9"
id = "cn470_9"
# Description is a short description for this region.
description="CN470 (channels 72-79)"
description = "CN470 (channels 72-79)"
# 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_9"
topic_prefix = "cn470_9"
# 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=484700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 484700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=484900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 484900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=485100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 485100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=485300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 485300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=485500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 485500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=485700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 485700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=485900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 485900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=486100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 486100000
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=[72, 73, 74, 75, 76, 77, 78, 79]
enabled_uplink_channels = [72, 73, 74, 75, 76, 77, 78, 79]
# 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 user-defined identifier for this region.
id="cn779"
id = "cn779"
# Description is a short description for this region.
description="CN779"
description = "CN779"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="CN779"
common_name = "CN779"
# 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="cn779"
topic_prefix = "cn779"
# 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,22 +115,22 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=779500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 779500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=779700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 779700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=779900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 779900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
# Region specific network configuration.
@ -133,7 +142,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).
#
@ -141,19 +150,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=786000000
rx2_frequency = 786000000
# Prefer RX2 on RX1 data-rate less than.
#
@ -161,13 +170,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)
#
@ -177,44 +186,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="eu433"
id = "eu433"
# Description is a short description for this region.
description="EU443"
description = "EU443"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="EU433"
common_name = "EU433"
# 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="eu433"
topic_prefix = "eu433"
# 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,22 +115,22 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=433175000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 433175000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=433375000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 433375000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=433575000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 433575000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
# Region specific network configuration.
@ -133,7 +142,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).
#
@ -141,19 +150,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=434665000
rx2_frequency = 434665000
# Prefer RX2 on RX1 data-rate less than.
#
@ -161,13 +170,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)
#
@ -177,44 +186,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="eu868"
id = "eu868"
# Description is a short description for this region.
description="EU868"
description = "EU868"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="EU868"
common_name = "EU868"
# 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="eu868"
topic_prefix = "eu868"
# 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,64 +115,64 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=868100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 868100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=868300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 868300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=868500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 868500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=867100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 867100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=867300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 867300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=867500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 867500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=867700000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 867700000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=867900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 867900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=868300000
bandwidth=250000
modulation="LORA"
spreading_factors=[7]
frequency = 868300000
bandwidth = 250000
modulation = "LORA"
spreading_factors = [7]
[[regions.gateway.channels]]
frequency=868800000
bandwidth=125000
modulation="FSK"
datarate=50000
frequency = 868800000
bandwidth = 125000
modulation = "FSK"
datarate = 50000
# Region specific network configuration.
@ -175,7 +184,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).
#
@ -183,19 +192,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=869525000
rx2_frequency = 869525000
# Prefer RX2 on RX1 data-rate less than.
#
@ -203,13 +212,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)
#
@ -219,72 +228,72 @@
# 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
# Below is the common set of extra channels. Please make sure that these
# channels are also supported by the gateways.
[[regions.network.extra_channels]]
frequency=867100000
min_dr=0
max_dr=5
frequency = 867100000
min_dr = 0
max_dr = 5
[[regions.network.extra_channels]]
frequency=867300000
min_dr=0
max_dr=5
frequency = 867300000
min_dr = 0
max_dr = 5
[[regions.network.extra_channels]]
frequency=867500000
min_dr=0
max_dr=5
frequency = 867500000
min_dr = 0
max_dr = 5
[[regions.network.extra_channels]]
frequency=867700000
min_dr=0
max_dr=5
frequency = 867700000
min_dr = 0
max_dr = 5
[[regions.network.extra_channels]]
frequency=867900000
min_dr=0
max_dr=5
frequency = 867900000
min_dr = 0
max_dr = 5

View File

@ -2,14 +2,23 @@
[[regions]]
# ID is an user-defined identifier for this region.
id="in865"
id = "in865"
# Description is a short description for this region.
description="IN865"
description = "IN865"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="IN865"
common_name = "IN865"
# 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="in865"
topic_prefix = "in865"
# 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,22 +115,22 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=865062500
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 865062500
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=865402500
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 865402500
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=865985000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 865985000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
# Region specific network configuration.
@ -133,7 +142,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).
#
@ -141,19 +150,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=866550000
rx2_frequency = 866550000
# Prefer RX2 on RX1 data-rate less than.
#
@ -161,13 +170,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)
#
@ -177,44 +186,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=4
ping_slot_dr = 4
# 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="ism2400"
id = "ism2400"
# Description is a short description for this region.
description="ISM2400"
description = "ISM2400"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="ISM2400"
common_name = "ISM2400"
# 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="ism2400"
topic_prefix = "ism2400"
# 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,22 +115,22 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=2403000000
bandwidth=812000
modulation="LORA"
spreading_factors=[12]
frequency = 2403000000
bandwidth = 812000
modulation = "LORA"
spreading_factors = [12]
[[regions.gateway.channels]]
frequency=2479000000
bandwidth=812000
modulation="LORA"
spreading_factors=[12]
frequency = 2479000000
bandwidth = 812000
modulation = "LORA"
spreading_factors = [12]
[[regions.gateway.channels]]
frequency=2425000000
bandwidth=812000
modulation="LORA"
spreading_factors=[12]
frequency = 2425000000
bandwidth = 812000
modulation = "LORA"
spreading_factors = [12]
# Region specific network configuration.
@ -133,7 +142,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).
#
@ -141,19 +150,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=2423000000
rx2_frequency = 2423000000
# Prefer RX2 on RX1 data-rate less than.
#
@ -161,13 +170,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)
#
@ -177,44 +186,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=7
max_dr = 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=0
ping_slot_dr = 0
# 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="kr920"
id = "kr920"
# Description is a short description for this region.
description="KR920"
description = "KR920"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="KR920"
common_name = "KR920"
# 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="kr920"
topic_prefix = "kr920"
# 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,22 +115,22 @@
# ChirpStack Concentratord daemon. In any other case, this configuration
# is ignored.
[[regions.gateway.channels]]
frequency=922100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 922100000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=922300000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 922300000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=922500000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 922500000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
# Region specific network configuration.
@ -133,7 +142,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).
#
@ -141,19 +150,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=921900000
rx2_frequency = 921900000
# Prefer RX2 on RX1 data-rate less than.
#
@ -161,13 +170,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)
#
@ -177,44 +186,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="ru864"
id = "ru864"
# Description is a short description for this region.
description="RU864"
description = "RU864"
# Common-name refers to the common-name of this region as defined by
# the LoRa Alliance.
common_name="RU864"
common_name = "RU864"
# 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="ru864"
topic_prefix = "ru864"
# 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=868900000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 868900000
bandwidth = 125000
modulation = "LORA"
spreading_factors = [7, 8, 9, 10, 11, 12]
[[regions.gateway.channels]]
frequency=869100000
bandwidth=125000
modulation="LORA"
spreading_factors=[7, 8, 9, 10, 11, 12]
frequency = 869100000
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=869100000
rx2_frequency = 869100000
# 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

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