Compare commits

..

57 Commits

Author SHA1 Message Date
4fa9341139 Bump version. 2022-06-10 12:32:09 +01:00
8a695d341c Add missing classCTimeout and abpRx1DrOffset on template select.
Closes #27.
2022-06-10 12:22:07 +01:00
32cf56af53 Bump crossbeam-utils from 0.8.6 to 0.8.8 (#26)
Bumps [crossbeam-utils](https://github.com/crossbeam-rs/crossbeam) from 0.8.6 to 0.8.8.
- [Release notes](https://github.com/crossbeam-rs/crossbeam/releases)
- [Changelog](https://github.com/crossbeam-rs/crossbeam/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crossbeam-rs/crossbeam/compare/crossbeam-utils-0.8.6...crossbeam-utils-0.8.8)

---
updated-dependencies:
- dependency-name: crossbeam-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-08 14:15:31 +01:00
804c876aa7 Format UI code. 2022-06-08 14:10:04 +01:00
fef42fa192 Update openidconnect dependency. 2022-06-07 19:51:48 +01:00
1fbc4e5391 Fix accidentally committed changes. 2022-06-07 19:50:14 +01:00
1236b4dba9 Update rust-embed dependency. 2022-06-07 19:42:15 +01:00
32c4495f0f Bump openssl-src from 111.17.0+1.1.1m to 111.20.0+1.1.1o (#25)
Bumps [openssl-src](https://github.com/alexcrichton/openssl-src-rs) from 111.17.0+1.1.1m to 111.20.0+1.1.1o.
- [Release notes](https://github.com/alexcrichton/openssl-src-rs/releases)
- [Commits](https://github.com/alexcrichton/openssl-src-rs/commits)

---
updated-dependencies:
- dependency-name: openssl-src
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-07 19:30:47 +01:00
8594c14c24 Bump protobufjs from 6.11.2 to 6.11.3 in /api/js (#24)
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 6.11.2 to 6.11.3.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/v6.11.3/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/v6.11.2...v6.11.3)

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

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-07 19:30:33 +01:00
d9d3f14e80 Implement support for device-profile templates + TTN importer. 2022-06-07 19:29:59 +01:00
d1630e5722 User should not be able to delete its own user record. (#13)
Signed-off-by: SAGAR PATEL <sagar.a.patel@slscorp.com>
2022-06-07 11:53:23 +01:00
ba4aeb849c Bump follow-redirects from 1.13.2 to 1.15.0 in /ui (#18)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.13.2 to 1.15.0.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.13.2...v1.15.0)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-07 11:51:25 +01:00
25c71c5483 Do not flush dev_ and join_ nonces when updating AppKey for OTAA (#22)
Signed-off-by: SAGAR PATEL <sagar.a.patel@slscorp.com>
2022-06-07 11:51:04 +01:00
3b426471b3 Re-implement copy to clipboard (DevAddr, EUI and AES keys). 2022-06-07 11:47:25 +01:00
2e1c907df0 Add generate api docs in Markdown. 2022-06-05 08:25:13 +01:00
bd79e72bdb Add check to make sure gateway region = device-profile region. 2022-05-24 20:53:20 +01:00
3486d94441 Fix Buffer to Protobuf setData casting. 2022-05-24 20:28:36 +01:00
3199276c83 Fix missing Buffer reference.
Closes #23.
2022-05-24 16:22:54 +01:00
f4478864ee Fix clippy warnings. 2022-05-24 16:15:12 +01:00
a0f56c0ff6 Fix updating rx1 delay on config change. 2022-05-24 16:09:08 +01:00
5b1d70cdbf Integrate Buffer class into JS codec runtime. 2022-05-10 14:08:47 +01:00
a656b9f3a1 Bump browserslist from 4.16.3 to 4.20.3 in /ui (#21)
Bumps [browserslist](https://github.com/browserslist/browserslist) from 4.16.3 to 4.20.3.
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/browserslist/browserslist/compare/4.16.3...4.20.3)

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

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 09:07:47 +01:00
3908fc0846 Bump path-parse from 1.0.6 to 1.0.7 in /ui (#20)
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 09:07:37 +01:00
3c3f813167 Bump tmpl from 1.0.4 to 1.0.5 in /ui (#19)
Bumps [tmpl](https://github.com/daaku/nodejs-tmpl) from 1.0.4 to 1.0.5.
- [Release notes](https://github.com/daaku/nodejs-tmpl/releases)
- [Commits](https://github.com/daaku/nodejs-tmpl/commits/v1.0.5)

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

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 09:07:26 +01:00
8f9d4a224b Bump ansi-regex from 5.0.0 to 5.0.1 in /ui (#17)
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v5.0.0...v5.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 09:06:36 +01:00
5c05628fd1 Bump moment from 2.29.1 to 2.29.3 in /ui (#16)
Bumps [moment](https://github.com/moment/moment) from 2.29.1 to 2.29.3.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/2.29.3/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.1...2.29.3)

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

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 09:06:23 +01:00
2355a1ecc6 Bump minimist from 1.2.5 to 1.2.6 in /ui (#15)
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

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

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 09:06:15 +01:00
755791878b Bump async from 2.6.3 to 2.6.4 in /ui (#14)
Bumps [async](https://github.com/caolan/async) from 2.6.3 to 2.6.4.
- [Release notes](https://github.com/caolan/async/releases)
- [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md)
- [Commits](https://github.com/caolan/async/compare/v2.6.3...v2.6.4)

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

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 09:05:25 +01:00
f964314a4f Update packaging + bump (test) version. 2022-05-04 11:34:18 +01:00
2051c5ed39 Rename config files. 2022-05-04 11:33:49 +01:00
c7056d84d6 Bump versions. 2022-05-02 15:14:59 +01:00
ba4e633b01 Fix multiarch Docker build. 2022-05-02 15:14:29 +01:00
35457c3954 Fix UI build for Docker image.
Buster provides nodejs 10 which is too old for some JS libraries.
2022-05-02 15:13:23 +01:00
54a1265166 Revert "Rollback upgrade of react-scripts to 5.0.1."
This reverts commit 7cee3a01f1.
2022-05-02 14:27:05 +01:00
7cee3a01f1 Rollback upgrade of react-scripts to 5.0.1. 2022-05-02 13:51:59 +01:00
96482764cc Re-run formatter to format latest UI changes. 2022-05-02 11:03:01 +01:00
2ea86b2ca2 Implement automatic formatting for JS / TSX source code.
Implemented automatic code formatting for JS/TSX using prettier and husky
with pre-commit hook

Signed-off-by: SAGAR PATEL <sagar.a.patel@slscorp.com>

Co-authored-by: Orne Brocaar <info@brocaar.com>
2022-05-02 10:58:26 +01:00
d8377cd26a Update UI dependencies. 2022-04-29 15:45:52 +01:00
eec9b1891d Update Makefiles. 2022-04-29 11:13:57 +01:00
1e6aad326c Implement building distributable binaries in ci workflow. 2022-04-28 22:57:01 +01:00
100e9f1b6d Change aggregation enum to uppercase.
This is such that the aggregation level in the Redis keys are uppercase.
2022-04-28 22:54:25 +01:00
d974423aab Re-implement enqueue through MQTT. 2022-04-28 15:41:54 +01:00
b159436dd0 Make flush queue on activate configurable through dev-profile. 2022-04-28 08:52:14 +01:00
54f74277ab Improve frame-counter validation. 2022-04-27 14:10:53 +01:00
24b975b337 Improve dev-nonce validation. 2022-04-27 11:54:10 +01:00
d69ff895b6 Update JS payload codec configuration and templates. 2022-04-27 09:49:33 +01:00
f2e6d77ce4 Fix bytes -> data. Expose real codec error. 2022-04-24 12:48:06 +01:00
f5de67a817 Add .rpm and .tar.gz builds. 2022-04-23 20:47:39 +01:00
54e1cb5e66 Add region_ prefix to region config. 2022-04-23 12:31:21 +01:00
a2e4e0d8a2 Update Debian / Ubuntu packaging. 2022-04-23 11:31:54 +01:00
7309a35a3b Update configuration files with env. variables.
This makes it possible to use the config examples with Docker Compose
(where every service has its own hostname) and to use it for packaging
(where by default the services are running under localhost).
2022-04-23 11:25:40 +01:00
df155413d8 Substitute environment variables in config. 2022-04-23 11:23:25 +01:00
c4e6e8f369 Update js api version. 2022-04-21 21:45:41 +01:00
22face1a79 Fix Go api packages. 2022-04-21 15:19:27 +01:00
d55e5afc92 Add encode / decode JS templates on device-profile create. 2022-04-21 13:26:58 +01:00
e649e75c8d Refactor uplink / downlink GW <> NS messages.
This includes:

* Changing the modulation parameters to its own type.
* Changing the timing parameters to its own type.
* Change the gateway_id to string. As the json encoding for bytes fields
  is base64, this was confusing some users.
* Change the uplink / downlink id to uint32 from uuid. A string
  representation of the UUID field (for the same reason as the gateway
  id) would consome quite some additional bytes. An uint32 provides
  sufficient uniqueness for the purpose of uplink / downlink.
2022-04-21 11:42:28 +01:00
f033793f74 Make js codec execution time configurable.
Closes #1.
2022-04-19 12:05:32 +01:00
347 changed files with 35899 additions and 13627 deletions

View File

@ -21,6 +21,38 @@ jobs:
name: Run tests
run: make test
dist:
needs: tests
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
steps:
-
name: Checkout
uses: actions/checkout@v2
-
name: Set up QEMU
uses: docker/setup-qemu-action@v1
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Build UI
run: make build-ui
-
name: Build distributables
run: make dist
-
name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-west-1
-
name: Upload binaries to S3
run: |
aws s3 sync dist s3://builds.loraserver.io/chirpstack
docker:
needs: tests
runs-on: ubuntu-latest
@ -57,7 +89,7 @@ jobs:
id: docker_build
uses: docker/build-push-action@v2
with:
platforms: linux/amd64
platforms: linux/amd64,linux/arm64
push: ${{ startsWith(github.ref, 'refs/tags/v') }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

11
.gitignore vendored
View File

@ -1,14 +1,22 @@
# hidden files
.*
!/chirpstack/.rpm
# Log files
*.log
# Binary packages
/dist
# Rust target directory
**/target
# Certificates
/chirpstack/configuration/certs
/chirpstack/configuration/certs/*.crt
/chirpstack/configuration/certs/*.key
/chirpstack/configuration/certs/*.trust
/chirpstack/configuration/certs/*.pem
/chirpstack/configuration/certs/*.csr
/chirpstack/configuration/private_*.toml
# UI
@ -22,5 +30,4 @@
*.bb
# Exclude from gitignore
!/chirpstack/.rpm
!/.github

171
Cargo.lock generated
View File

@ -574,7 +574,7 @@ dependencies = [
[[package]]
name = "backend"
version = "1.0.0"
version = "4.0.0-test.6"
dependencies = [
"aes-kw",
"anyhow",
@ -626,14 +626,14 @@ dependencies = [
[[package]]
name = "bindgen"
version = "0.59.2"
version = "0.60.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8"
checksum = "062dddbc1ba4aca46de6338e2bf87771414c335f7b2f2036e8f3e9befebf88e6"
dependencies = [
"bitflags",
"cexpr",
"clang-sys",
"clap",
"clap 3.1.18",
"env_logger",
"lazy_static",
"lazycell",
@ -800,7 +800,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chirpstack"
version = "4.0.0-test.1"
version = "4.0.0-test.6"
dependencies = [
"aes 0.7.5",
"anyhow",
@ -814,7 +814,7 @@ dependencies = [
"bigdecimal",
"chirpstack_api",
"chrono",
"clap",
"clap 2.34.0",
"diesel",
"diesel_migrations",
"futures",
@ -851,6 +851,7 @@ dependencies = [
"rust-embed",
"serde",
"serde_json",
"serde_yaml",
"sha2 0.10.1",
"thiserror",
"tokio",
@ -871,13 +872,15 @@ dependencies = [
[[package]]
name = "chirpstack_api"
version = "4.0.0"
version = "4.0.0-test.6"
dependencies = [
"hex",
"pbjson",
"pbjson-build",
"pbjson-types",
"prost",
"prost-types",
"rand",
"serde",
"tokio",
"tonic",
@ -937,12 +940,36 @@ dependencies = [
"ansi_term",
"atty",
"bitflags",
"strsim",
"textwrap",
"strsim 0.8.0",
"textwrap 0.11.0",
"unicode-width",
"vec_map",
]
[[package]]
name = "clap"
version = "3.1.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b"
dependencies = [
"atty",
"bitflags",
"clap_lex",
"indexmap",
"strsim 0.10.0",
"termcolor",
"textwrap 0.15.0",
]
[[package]]
name = "clap_lex"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213"
dependencies = [
"os_str_bytes",
]
[[package]]
name = "cmac"
version = "0.6.0"
@ -1018,9 +1045,9 @@ checksum = "338089f42c427b86394a5ee60ff321da23a5c89c9d89514c829687b26359fcff"
[[package]]
name = "crossbeam-utils"
version = "0.8.6"
version = "0.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cfcae03edb34f947e64acdb1c33ec169824e20657e9ecb61cef6c8c74dcb8120"
checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38"
dependencies = [
"cfg-if",
"lazy_static",
@ -1862,15 +1889,6 @@ dependencies = [
"waker-fn",
]
[[package]]
name = "itertools"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
dependencies = [
"either",
]
[[package]]
name = "itertools"
version = "0.10.3"
@ -1935,7 +1953,7 @@ dependencies = [
"bit-set",
"diff",
"ena",
"itertools 0.10.3",
"itertools",
"lalrpop-util",
"petgraph 0.5.1",
"pico-args",
@ -2018,6 +2036,12 @@ dependencies = [
"vcpkg",
]
[[package]]
name = "linked-hash-map"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3"
[[package]]
name = "lock_api"
version = "0.4.5"
@ -2039,7 +2063,7 @@ dependencies = [
[[package]]
name = "lrwn"
version = "1.0.0"
version = "4.0.0-test.6"
dependencies = [
"aes 0.7.5",
"anyhow",
@ -2279,9 +2303,9 @@ dependencies = [
[[package]]
name = "oauth2"
version = "4.1.0"
version = "4.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "80e47cfc4c0a1a519d9a025ebfbac3a2439d1b5cdf397d72dcb79b11d9920dab"
checksum = "c3bd7d544f02ae0fa9e06137962703d043870d7ad6e6d44786d6a5f20679b2c9"
dependencies = [
"base64",
"chrono",
@ -2292,7 +2316,7 @@ dependencies = [
"serde",
"serde_json",
"serde_path_to_error",
"sha2 0.9.9",
"sha2 0.10.1",
"thiserror",
"url",
]
@ -2317,14 +2341,14 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
[[package]]
name = "openidconnect"
version = "2.2.0"
version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6db0c030c3036f53c7108668641151b244358d221303a17985b07ac9bb60091"
checksum = "32f73e47a1766acd7bedd605742a1a2651c111f34ed3e0be117d8651432d509c"
dependencies = [
"base64",
"chrono",
"http",
"itertools 0.9.0",
"itertools",
"log",
"num-bigint 0.4.3",
"oauth2",
@ -2336,7 +2360,6 @@ dependencies = [
"serde_json",
"serde_path_to_error",
"thiserror",
"untrusted",
"url",
]
@ -2362,9 +2385,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]]
name = "openssl-src"
version = "111.17.0+1.1.1m"
version = "111.20.0+1.1.1o"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05d6a336abd10814198f66e2a91ccd7336611f30334119ca8ce300536666fcf4"
checksum = "92892c4f87d56e376e469ace79f1128fdaded07646ddf73aa0be4706ff712dec"
dependencies = [
"cc",
]
@ -2385,13 +2408,19 @@ dependencies = [
[[package]]
name = "ordered-float"
version = "1.1.1"
version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3305af35278dd29f46fcdd139e0b1fbfae2153f0e5928b39b035542dd31e37b7"
checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87"
dependencies = [
"num-traits",
]
[[package]]
name = "os_str_bytes"
version = "6.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21326818e99cfe6ce1e524c2a805c189a99b5ae555a35d19f9a284b427d86afa"
[[package]]
name = "paho-mqtt"
version = "0.9.1"
@ -2475,7 +2504,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "956a449e8a85fc040e9f8cd8fd4dd2e68059d179092401f0d8570ba059f76dae"
dependencies = [
"heck",
"itertools 0.10.3",
"itertools",
"prost",
"prost-types",
]
@ -2719,7 +2748,7 @@ dependencies = [
"cfg-if",
"cmake",
"heck",
"itertools 0.10.3",
"itertools",
"lazy_static",
"log",
"multimap",
@ -2738,7 +2767,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df35198f0777b75e9ff669737c6da5136b59dba33cf5a010a6d1cc4d56defc6f"
dependencies = [
"anyhow",
"itertools 0.10.3",
"itertools",
"proc-macro2",
"quote",
"syn",
@ -2903,6 +2932,12 @@ version = "0.6.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
[[package]]
name = "relative-path"
version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4e112eddc95bbf25365df3b5414354ad2fe7ee465eddb9965a515faf8c3b6d9"
[[package]]
name = "remove_dir_all"
version = "0.5.3"
@ -2970,27 +3005,29 @@ dependencies = [
[[package]]
name = "rquickjs"
version = "0.1.5"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f91e309f4594ccf077c2373a1fb00f632bf6c26fc0035ef9f90da9a627404c32"
checksum = "989910af47b3f21c95205a1e1974bfb0f460e5492f469631297cc44c3340967e"
dependencies = [
"rquickjs-core",
]
[[package]]
name = "rquickjs-core"
version = "0.1.5"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c6da4f2b300a58f9fb368bb68b21e288586e503cc0e0c3c3f94af9b28a717e2c"
checksum = "e78ca2361848dddf910c27296d98bd62be9467d1d1d703eeead8c732adbd4e32"
dependencies = [
"chrono",
"relative-path",
"rquickjs-sys",
]
[[package]]
name = "rquickjs-sys"
version = "0.1.5"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db8ac81ef510279adb2e464073a0ed2f774253742d4cbd85d79383c7b0d931df"
checksum = "263a9a14fc68f2f3403c67e94e5def69af60afbcf7914d2a7fb8f9e17027fa25"
dependencies = [
"bindgen",
"cc",
@ -2998,9 +3035,9 @@ dependencies = [
[[package]]
name = "rust-embed"
version = "5.9.0"
version = "6.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fe1fe6aac5d6bb9e1ffd81002340363272a7648234ec7bdfac5ee202cb65523"
checksum = "9a17e5ac65b318f397182ae94e532da0ba56b88dd1200b774715d36c4943b1c3"
dependencies = [
"rust-embed-impl",
"rust-embed-utils",
@ -3009,9 +3046,9 @@ dependencies = [
[[package]]
name = "rust-embed-impl"
version = "5.9.0"
version = "6.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ed91c41c42ef7bf687384439c312e75e0da9c149b0390889b94de3c7d9d9e66"
checksum = "94e763e24ba2bf0c72bc6be883f967f794a019fafd1b86ba1daff9c91a7edd30"
dependencies = [
"proc-macro2",
"quote",
@ -3022,10 +3059,11 @@ dependencies = [
[[package]]
name = "rust-embed-utils"
version = "5.1.0"
version = "7.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a512219132473ab0a77b52077059f1c47ce4af7fbdc94503e9862a34422876d"
checksum = "756feca3afcbb1487a1d01f4ecd94cf8ec98ea074c55a69e7136d29fb6166029"
dependencies = [
"sha2 0.9.9",
"walkdir",
]
@ -3229,9 +3267,9 @@ dependencies = [
[[package]]
name = "serde-value"
version = "0.6.0"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a65a7291a8a568adcae4c10a677ebcedbc6c9cec91c054dee2ce40b0e3290eb"
checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"
dependencies = [
"ordered-float",
"serde",
@ -3290,6 +3328,18 @@ dependencies = [
"serde",
]
[[package]]
name = "serde_yaml"
version = "0.8.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "707d15895415db6628332b737c838b88c598522e4dc70647e59b72312924aebc"
dependencies = [
"indexmap",
"ryu",
"serde",
"yaml-rust",
]
[[package]]
name = "sha-1"
version = "0.8.2"
@ -3470,6 +3520,12 @@ version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
[[package]]
name = "strsim"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
[[package]]
name = "subtle"
version = "2.4.1"
@ -3536,6 +3592,12 @@ dependencies = [
"unicode-width",
]
[[package]]
name = "textwrap"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb"
[[package]]
name = "thiserror"
version = "1.0.30"
@ -4405,6 +4467,15 @@ version = "0.13.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "114ba2b24d2167ef6d67d7d04c8cc86522b87f490025f39f0303b7db5bf5e3d8"
[[package]]
name = "yaml-rust"
version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
dependencies = [
"linked-hash-map",
]
[[package]]
name = "zeroize"
version = "1.5.1"

View File

@ -1,13 +1,21 @@
FROM chirpstack/chirpstack-dev-cache:latest AS development
FROM alpine:3.15.0 AS ui-build
COPY . $PROJECT_PATH
ENV PROJECT_PATH=/chirpstack
RUN apk add --no-cache make git bash build-base nodejs npm yarn
RUN mkdir -p $PROJECT_PATH
COPY ./api/grpc-web $PROJECT_PATH/api/grpc-web
COPY ./ui $PROJECT_PATH/ui
# --network-timeout as yarn throws a ESOCKETTIMEDOUT timeout with GitHub Actions
RUN cd $PROJECT_PATH/ui && \
yarn install --network-timeout 600000 && \
yarn build && \
rm -rf node_modules
yarn build
FROM chirpstack/chirpstack-dev-cache:latest AS rust-build
COPY . $PROJECT_PATH
COPY --from=ui-build $PROJECT_PATH/ui/build $PROJECT_PATH/ui/build
RUN cd $PROJECT_PATH/chirpstack && cargo build --release
FROM debian:buster-slim as production
@ -18,7 +26,7 @@ RUN apt-get update && \
libpq5 \
&& rm -rf /var/lib/apt/lists/*
COPY --from=development /target/release/chirpstack /usr/bin/chirpstack
COPY --from=development /chirpstack/chirpstack/configuration/* /etc/chirpstack/
COPY --from=rust-build /target/release/chirpstack /usr/bin/chirpstack
COPY --from=rust-build /chirpstack/chirpstack/configuration/* /etc/chirpstack/
USER nobody:nogroup
ENTRYPOINT ["/usr/bin/chirpstack"]

View File

@ -19,11 +19,10 @@ RUN apt-get update && \
redis-tools \
rpm \
clang \
yarnpkg \
golang-cfssl \
jq \
&& rm -rf /var/lib/apt/lists/*
RUN ln -s /usr/bin/yarnpkg /usr/bin/yarn
RUN rustup component add rustfmt clippy
RUN cargo install diesel_cli --no-default-features --features postgres

View File

@ -1,3 +1,5 @@
.PHONY: dist api
# Builds a debug / development binary.
build-debug:
docker-compose run --rm chirpstack make debug
@ -6,6 +8,27 @@ build-debug:
build-release:
docker-compose run --rm chirpstack make release
# Build distributable binaries.
dist:
# The pull is needed as else the specified platform is not respected.
docker-compose pull chirpstack-build-amd64 && docker-compose run --rm chirpstack-build-amd64 make dist
docker-compose pull chirpstack-build-arm64 && docker-compose run --rm chirpstack-build-arm64 make dist
# 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' ./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
api: version
cd api && make
# Builds the UI.
build-ui:
docker-compose run --rm chirpstack-ui make build

9
api/Dockerfile-md vendored Normal file
View File

@ -0,0 +1,9 @@
FROM golang:1.18-alpine
ENV PROJECT_PATH=/chirpstack/api
RUN apk add --no-cache make git bash protobuf protobuf-dev
RUN git clone https://github.com/googleapis/googleapis.git /googleapis
RUN mkdir -p $PROJECT_PATH
WORKDIR $PROJECT_PATH

2
api/Dockerfile-rust vendored
View File

@ -2,7 +2,7 @@ FROM rust:1.56
ENV PROJECT_PATH=/chirpstack/api
RUN apt-get update && \
apt-get install -y make git bash && \
apt-get install -y make cmake git bash && \
apt-get clean
RUN git clone https://github.com/googleapis/googleapis.git /googleapis

11
api/Makefile vendored
View File

@ -1,4 +1,4 @@
.PHONY: rust grpc-web go
.PHONY: rust grpc-web go js python
all:
docker-compose up
@ -11,3 +11,12 @@ grpc-web:
go:
docker-compose run --rm chirpstack-api-go
js:
docker-compose run --rm chirpstack-api-js
python:
docker-compose run --rm chirpstack-api-python
md:
docker-compose run --rm chirpstack-api-md

View File

@ -1,8 +1,6 @@
version: "2"
services:
chirpstack-api-rust:
environment:
- VERSION=4.0.0
build:
context: .
dockerfile: Dockerfile-rust
@ -17,8 +15,6 @@ services:
volumes:
- ./:/chirpstack/api
chirpstack-api-grpc-web:
environment:
- VERSION=4.0.0
build:
context: .
dockerfile: Dockerfile-grpc-web
@ -26,8 +22,6 @@ services:
volumes:
- ./:/chirpstack/api
chirpstack-api-js:
environment:
- VERSION=4.0.0
build:
context: .
dockerfile: Dockerfile-js
@ -35,11 +29,16 @@ services:
volumes:
- ./:/chirpstack/api
chirpstack-api-python:
environment:
- VERSION=4.0.0
build:
context: .
dockerfile: Dockerfile-python
command: bash -c "cd js && make all"
volumes:
- ./:/chirpstack/api
chirpstack-api-md:
build:
context: .
dockerfile: Dockerfile-md
command: bash -c "cd md && make all"
volumes:
- ./:/chirpstack/api

1
api/go/Makefile vendored
View File

@ -21,6 +21,7 @@ api:
protoc ${PROTOC_ARGS} api/tenant.proto
protoc ${PROTOC_ARGS} api/application.proto
protoc ${PROTOC_ARGS} api/device_profile.proto
protoc ${PROTOC_ARGS} api/device_profile_template.proto
protoc ${PROTOC_ARGS} api/device.proto
protoc ${PROTOC_ARGS} api/gateway.proto
protoc ${PROTOC_ARGS} api/frame_log.proto

View File

@ -4,7 +4,7 @@
// protoc v3.18.1
// source: api/application.proto
package v4
package api
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
@ -4971,13 +4971,13 @@ var file_api_application_proto_rawDesc = []byte{
0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74,
0x65, 0x4d, 0x71, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x53, 0x0a, 0x11, 0x69,
0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x57, 0x0a, 0x11, 0x69,
0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69,
0x42, 0x10, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f,
0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
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,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -4,7 +4,7 @@
// - protoc v3.18.1
// source: api/application.proto
package v4
package api
import (
context "context"

View File

@ -4,7 +4,7 @@
// protoc v3.18.1
// source: api/device.proto
package v4
package api
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
@ -2495,13 +2495,13 @@ var file_api_device_proto_rawDesc = []byte{
0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x49, 0x74, 0x65,
0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x49, 0x74,
0x65, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x4e, 0x0a,
0x65, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x52, 0x0a,
0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61,
0x70, 0x69, 0x42, 0x0b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
0x01, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68,
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, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70,
0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -4,7 +4,7 @@
// - protoc v3.18.1
// source: api/device.proto
package v4
package api
import (
context "context"

View File

@ -4,7 +4,7 @@
// protoc v3.18.1
// source: api/device_profile.proto
package v4
package api
import (
common "github.com/chirpstack/chirpstack/api/go/v4/common"
@ -87,6 +87,8 @@ type DeviceProfile struct {
TenantId string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"`
// Name.
Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
// Description.
Description string `protobuf:"bytes,26,opt,name=description,proto3" json:"description,omitempty"`
// Region.
Region common.Region `protobuf:"varint,4,opt,name=region,proto3,enum=common.Region" json:"region,omitempty"`
// LoRaWAN mac-version.
@ -97,10 +99,10 @@ type DeviceProfile struct {
AdrAlgorithmId string `protobuf:"bytes,7,opt,name=adr_algorithm_id,json=adrAlgorithmId,proto3" json:"adr_algorithm_id,omitempty"`
// Payload codec runtime.
PayloadCodecRuntime CodecRuntime `protobuf:"varint,8,opt,name=payload_codec_runtime,json=payloadCodecRuntime,proto3,enum=api.CodecRuntime" json:"payload_codec_runtime,omitempty"`
// Payload codec encoder config.
PayloadEncoderConfig string `protobuf:"bytes,9,opt,name=payload_encoder_config,json=payloadEncoderConfig,proto3" json:"payload_encoder_config,omitempty"`
// Payload codec decoder config.
PayloadDecoderConfig string `protobuf:"bytes,10,opt,name=payload_decoder_config,json=payloadDecoderConfig,proto3" json:"payload_decoder_config,omitempty"`
// Payload codec script.
PayloadCodecScript string `protobuf:"bytes,9,opt,name=payload_codec_script,json=payloadCodecScript,proto3" json:"payload_codec_script,omitempty"`
// Flush queue on device activation.
FlushQueueOnActivate bool `protobuf:"varint,10,opt,name=flush_queue_on_activate,json=flushQueueOnActivate,proto3" json:"flush_queue_on_activate,omitempty"`
// Uplink interval (seconds).
// This defines the expected uplink interval which the device uses for
// communication. When the uplink interval has expired and no uplink has
@ -193,6 +195,13 @@ func (x *DeviceProfile) GetName() string {
return ""
}
func (x *DeviceProfile) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
func (x *DeviceProfile) GetRegion() common.Region {
if x != nil {
return x.Region
@ -228,18 +237,18 @@ func (x *DeviceProfile) GetPayloadCodecRuntime() CodecRuntime {
return CodecRuntime_NONE
}
func (x *DeviceProfile) GetPayloadEncoderConfig() string {
func (x *DeviceProfile) GetPayloadCodecScript() string {
if x != nil {
return x.PayloadEncoderConfig
return x.PayloadCodecScript
}
return ""
}
func (x *DeviceProfile) GetPayloadDecoderConfig() string {
func (x *DeviceProfile) GetFlushQueueOnActivate() bool {
if x != nil {
return x.PayloadDecoderConfig
return x.FlushQueueOnActivate
}
return ""
return false
}
func (x *DeviceProfile) GetUplinkInterval() uint32 {
@ -1038,208 +1047,210 @@ var file_api_device_profile_proto_rawDesc = []byte{
0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x63,
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x22, 0x9a, 0x09, 0x0a, 0x0d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f,
0x74, 0x6f, 0x22, 0xb9, 0x09, 0x0a, 0x0d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f,
0x66, 0x69, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69,
0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49,
0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18,
0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52,
0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a,
0x0b, 0x6d, 0x61, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x63, 0x56,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69,
0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x13, 0x72, 0x65, 0x67, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73,
0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x19, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x67, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x72, 0x65, 0x67, 0x50,
0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a,
0x10, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x5f, 0x69,
0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x64, 0x72, 0x41, 0x6c, 0x67, 0x6f,
0x72, 0x69, 0x74, 0x68, 0x6d, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x15, 0x70, 0x61, 0x79, 0x6c, 0x6f,
0x61, 0x64, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65,
0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x64,
0x65, 0x63, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x13, 0x70, 0x61, 0x79, 0x6c, 0x6f,
0x61, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x34,
0x0a, 0x16, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65,
0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14,
0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x43, 0x6f,
0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f,
0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0a,
0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x63,
0x6f, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x70,
0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x0b, 0x20,
0x01, 0x28, 0x0d, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72,
0x76, 0x61, 0x6c, 0x12, 0x3b, 0x0a, 0x1a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x74,
0x61, 0x74, 0x75, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61,
0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x17, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53,
0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c,
0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x6f, 0x74, 0x61,
0x61, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74,
0x73, 0x4f, 0x74, 0x61, 0x61, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74,
0x73, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x62, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52,
0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x12,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63,
0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f,
0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12,
0x33, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x61,
0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x56, 0x65, 0x72,
0x73, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x13, 0x72, 0x65, 0x67, 0x5f, 0x70, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x67, 0x50, 0x61,
0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x72, 0x65,
0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12,
0x28, 0x0a, 0x10, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d,
0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x64, 0x72, 0x41, 0x6c,
0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x15, 0x70, 0x61, 0x79,
0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69,
0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43,
0x6f, 0x64, 0x65, 0x63, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x13, 0x70, 0x61, 0x79,
0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65,
0x12, 0x30, 0x0a, 0x14, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x64, 0x65,
0x63, 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12,
0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x53, 0x63, 0x72, 0x69,
0x70, 0x74, 0x12, 0x35, 0x0a, 0x17, 0x66, 0x6c, 0x75, 0x73, 0x68, 0x5f, 0x71, 0x75, 0x65, 0x75,
0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20,
0x01, 0x28, 0x08, 0x52, 0x14, 0x66, 0x6c, 0x75, 0x73, 0x68, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4f,
0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x70, 0x6c,
0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x0b, 0x20, 0x01,
0x28, 0x0d, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76,
0x61, 0x6c, 0x12, 0x3b, 0x0a, 0x1a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61,
0x74, 0x75, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c,
0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x17, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74,
0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12,
0x23, 0x0a, 0x0d, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x6f, 0x74, 0x61, 0x61,
0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73,
0x4f, 0x74, 0x61, 0x61, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73,
0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x62, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e,
0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x12, 0x28,
0x0a, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73,
0x5f, 0x63, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72,
0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x6c, 0x61, 0x73,
0x73, 0x5f, 0x62, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28,
0x0d, 0x52, 0x0d, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
0x12, 0x36, 0x0a, 0x18, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x62, 0x5f, 0x70, 0x69, 0x6e, 0x67,
0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x11, 0x20, 0x01,
0x28, 0x0d, 0x52, 0x14, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c,
0x6f, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x2e, 0x0a, 0x14, 0x63, 0x6c, 0x61, 0x73,
0x73, 0x5f, 0x62, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x64, 0x72,
0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x50, 0x69,
0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x44, 0x72, 0x12, 0x32, 0x0a, 0x16, 0x63, 0x6c, 0x61, 0x73,
0x73, 0x5f, 0x62, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x66, 0x72,
0x65, 0x71, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42,
0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x46, 0x72, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x0f,
0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18,
0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x54, 0x69, 0x6d,
0x65, 0x6f, 0x75, 0x74, 0x12, 0x22, 0x0a, 0x0d, 0x61, 0x62, 0x70, 0x5f, 0x72, 0x78, 0x31, 0x5f,
0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x61, 0x62, 0x70,
0x52, 0x78, 0x31, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x11, 0x61, 0x62, 0x70, 0x5f,
0x72, 0x78, 0x31, 0x5f, 0x64, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x16, 0x20,
0x01, 0x28, 0x0d, 0x52, 0x0e, 0x61, 0x62, 0x70, 0x52, 0x78, 0x31, 0x44, 0x72, 0x4f, 0x66, 0x66,
0x73, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x0a, 0x61, 0x62, 0x70, 0x5f, 0x72, 0x78, 0x32, 0x5f, 0x64,
0x72, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x61, 0x62, 0x70, 0x52, 0x78, 0x32, 0x44,
0x72, 0x12, 0x20, 0x0a, 0x0c, 0x61, 0x62, 0x70, 0x5f, 0x72, 0x78, 0x32, 0x5f, 0x66, 0x72, 0x65,
0x71, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x61, 0x62, 0x70, 0x52, 0x78, 0x32, 0x46,
0x72, 0x65, 0x71, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72,
0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74,
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd2,
0x03, 0x0a, 0x15, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61,
0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12,
0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x67, 0x69,
0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x0b, 0x6d, 0x61,
0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x12, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x63, 0x56, 0x65, 0x72, 0x73,
0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
0x49, 0x0a, 0x13, 0x72, 0x65, 0x67, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x72, 0x65,
0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x63,
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52,
0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x72, 0x65, 0x67, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75,
0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x6f, 0x74, 0x61, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28,
0x08, 0x52, 0x0c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x4f, 0x74, 0x61, 0x61, 0x12,
0x28, 0x0a, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x73,
0x73, 0x5f, 0x63, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f,
0x72, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x6c, 0x61,
0x73, 0x73, 0x5f, 0x62, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x10, 0x20, 0x01,
0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75,
0x74, 0x12, 0x36, 0x0a, 0x18, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x62, 0x5f, 0x70, 0x69, 0x6e,
0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x11, 0x20,
0x01, 0x28, 0x0d, 0x52, 0x14, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x50, 0x69, 0x6e, 0x67, 0x53,
0x6c, 0x6f, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x2e, 0x0a, 0x14, 0x63, 0x6c, 0x61,
0x73, 0x73, 0x5f, 0x62, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x64,
0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x50,
0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x44, 0x72, 0x12, 0x32, 0x0a, 0x16, 0x63, 0x6c, 0x61,
0x73, 0x73, 0x5f, 0x62, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x66,
0x72, 0x65, 0x71, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x63, 0x6c, 0x61, 0x73, 0x73,
0x42, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x46, 0x72, 0x65, 0x71, 0x12, 0x26, 0x0a,
0x0f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x54, 0x69,
0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x22, 0x0a, 0x0d, 0x61, 0x62, 0x70, 0x5f, 0x72, 0x78, 0x31,
0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x61, 0x62,
0x70, 0x52, 0x78, 0x31, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x11, 0x61, 0x62, 0x70,
0x5f, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x16,
0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x61, 0x62, 0x70, 0x52, 0x78, 0x31, 0x44, 0x72, 0x4f, 0x66,
0x66, 0x73, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x0a, 0x61, 0x62, 0x70, 0x5f, 0x72, 0x78, 0x32, 0x5f,
0x64, 0x72, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x61, 0x62, 0x70, 0x52, 0x78, 0x32,
0x44, 0x72, 0x12, 0x20, 0x0a, 0x0c, 0x61, 0x62, 0x70, 0x5f, 0x72, 0x78, 0x32, 0x5f, 0x66, 0x72,
0x65, 0x71, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x61, 0x62, 0x70, 0x52, 0x78, 0x32,
0x46, 0x72, 0x65, 0x71, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x19, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50,
0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
0xd2, 0x03, 0x0a, 0x15, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c,
0x65, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65,
0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
0x73, 0x5f, 0x62, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f,
0x72, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x75, 0x70,
0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x63, 0x18, 0x0a, 0x20,
0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x43, 0x6c, 0x61,
0x73, 0x73, 0x43, 0x22, 0x57, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x39, 0x0a, 0x0e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66,
0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x0d, 0x64,
0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x2d, 0x0a, 0x1b,
0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66,
0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x29, 0x0a, 0x17, 0x47,
0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xcb, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72,
0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52,
0x0d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x39,
0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09,
0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64,
0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74,
0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f,
0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12,
0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x67,
0x69, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x0b, 0x6d,
0x61, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x12, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x63, 0x56, 0x65, 0x72,
0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
0x12, 0x49, 0x0a, 0x13, 0x72, 0x65, 0x67, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x72,
0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e,
0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x72, 0x65, 0x67, 0x50, 0x61, 0x72,
0x61, 0x6d, 0x73, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73,
0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x6f, 0x74, 0x61, 0x61, 0x18, 0x08, 0x20, 0x01,
0x28, 0x08, 0x52, 0x0c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x4f, 0x74, 0x61, 0x61,
0x12, 0x28, 0x0a, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, 0x6c, 0x61,
0x73, 0x73, 0x5f, 0x62, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, 0x70,
0x6f, 0x72, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x75,
0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x63, 0x18, 0x0a,
0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x43, 0x6c,
0x61, 0x73, 0x73, 0x43, 0x22, 0x57, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65,
0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0x64, 0x41, 0x74, 0x22, 0x57, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x39, 0x0a, 0x0e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f,
0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x0d,
0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x2d, 0x0a,
0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f,
0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x29, 0x0a, 0x17,
0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xcb, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x44,
0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70,
0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
0x52, 0x0d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12,
0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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,
0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70,
0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61,
0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x57, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44,
0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72,
0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52,
0x0d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x2c,
0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72,
0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x7e, 0x0a, 0x19,
0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c,
0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d,
0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12,
0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63,
0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12,
0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01,
0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x71, 0x0a, 0x1a,
0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c,
0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f,
0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x72,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c,
0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22,
0x7c, 0x0a, 0x26, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f,
0x66, 0x69, 0x6c, 0x65, 0x41, 0x64, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d,
0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x2c, 0x0a,
0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f,
0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x7e, 0x0a, 0x19, 0x4c,
0x69, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69,
0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16,
0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06,
0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68,
0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1b,
0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x71, 0x0a, 0x1a, 0x4c,
0x69, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74,
0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a,
0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x72, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x41, 0x64, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, 0x73,
0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x3a, 0x0a,
0x14, 0x41, 0x64, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, 0x73,
0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x2a, 0x31, 0x0a, 0x0c, 0x43, 0x6f, 0x64,
0x65, 0x63, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e,
0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x41, 0x59, 0x45, 0x4e, 0x4e, 0x45, 0x5f, 0x4c,
0x50, 0x50, 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x4a, 0x53, 0x10, 0x02, 0x32, 0xdc, 0x03, 0x0a,
0x14, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x65,
0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12,
0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x1c, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69,
0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x06, 0x55, 0x70,
0x64, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12,
0x43, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66,
0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70,
0x74, 0x79, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f,
0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f,
0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
0x5a, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69,
0x74, 0x68, 0x6d, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2b, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f,
0x66, 0x69, 0x6c, 0x65, 0x41, 0x64, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d,
0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x55, 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, 0x2a, 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, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x72, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69,
0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x7c,
0x0a, 0x26, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66,
0x69, 0x6c, 0x65, 0x41, 0x64, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61,
0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74,
0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x72, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x41, 0x64, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, 0x73, 0x74,
0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x3a, 0x0a, 0x14,
0x41, 0x64, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, 0x73, 0x74,
0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x2a, 0x31, 0x0a, 0x0c, 0x43, 0x6f, 0x64, 0x65,
0x63, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45,
0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x41, 0x59, 0x45, 0x4e, 0x4e, 0x45, 0x5f, 0x4c, 0x50,
0x50, 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x4a, 0x53, 0x10, 0x02, 0x32, 0xdc, 0x03, 0x0a, 0x14,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x72,
0x76, 0x69, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1f,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63,
0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c,
0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47,
0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x06, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x43,
0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44,
0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69,
0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
0x79, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66,
0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66,
0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a,
0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74,
0x68, 0x6d, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2b, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66,
0x69, 0x6c, 0x65, 0x41, 0x64, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x59, 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, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -4,7 +4,7 @@
// - protoc v3.18.1
// source: api/device_profile.proto
package v4
package api
import (
context "context"

1243
api/go/api/device_profile_template.pb.go vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,261 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.2.0
// - protoc v3.18.1
// source: api/device_profile_template.proto
package api
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
emptypb "google.golang.org/protobuf/types/known/emptypb"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7
// DeviceProfileTemplateServiceClient is the client API for DeviceProfileTemplateService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type DeviceProfileTemplateServiceClient interface {
// Create the given device-profile template.
Create(ctx context.Context, in *CreateDeviceProfileTemplateRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
// Get the device-profile template for the given ID.
Get(ctx context.Context, in *GetDeviceProfileTemplateRequest, opts ...grpc.CallOption) (*GetDeviceProfileTemplateResponse, error)
// Update the given device-profile template.
Update(ctx context.Context, in *UpdateDeviceProfileTemplateRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
// Delete the device-profile template with the given ID.
Delete(ctx context.Context, in *DeleteDeviceProfileTemplateRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
// List the available device-profile templates.
List(ctx context.Context, in *ListDeviceProfileTemplatesRequest, opts ...grpc.CallOption) (*ListDeviceProfileTemplatesResponse, error)
}
type deviceProfileTemplateServiceClient struct {
cc grpc.ClientConnInterface
}
func NewDeviceProfileTemplateServiceClient(cc grpc.ClientConnInterface) DeviceProfileTemplateServiceClient {
return &deviceProfileTemplateServiceClient{cc}
}
func (c *deviceProfileTemplateServiceClient) Create(ctx context.Context, in *CreateDeviceProfileTemplateRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
out := new(emptypb.Empty)
err := c.cc.Invoke(ctx, "/api.DeviceProfileTemplateService/Create", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *deviceProfileTemplateServiceClient) Get(ctx context.Context, in *GetDeviceProfileTemplateRequest, opts ...grpc.CallOption) (*GetDeviceProfileTemplateResponse, error) {
out := new(GetDeviceProfileTemplateResponse)
err := c.cc.Invoke(ctx, "/api.DeviceProfileTemplateService/Get", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *deviceProfileTemplateServiceClient) Update(ctx context.Context, in *UpdateDeviceProfileTemplateRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
out := new(emptypb.Empty)
err := c.cc.Invoke(ctx, "/api.DeviceProfileTemplateService/Update", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *deviceProfileTemplateServiceClient) Delete(ctx context.Context, in *DeleteDeviceProfileTemplateRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
out := new(emptypb.Empty)
err := c.cc.Invoke(ctx, "/api.DeviceProfileTemplateService/Delete", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *deviceProfileTemplateServiceClient) List(ctx context.Context, in *ListDeviceProfileTemplatesRequest, opts ...grpc.CallOption) (*ListDeviceProfileTemplatesResponse, error) {
out := new(ListDeviceProfileTemplatesResponse)
err := c.cc.Invoke(ctx, "/api.DeviceProfileTemplateService/List", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// DeviceProfileTemplateServiceServer is the server API for DeviceProfileTemplateService service.
// All implementations must embed UnimplementedDeviceProfileTemplateServiceServer
// for forward compatibility
type DeviceProfileTemplateServiceServer interface {
// Create the given device-profile template.
Create(context.Context, *CreateDeviceProfileTemplateRequest) (*emptypb.Empty, error)
// Get the device-profile template for the given ID.
Get(context.Context, *GetDeviceProfileTemplateRequest) (*GetDeviceProfileTemplateResponse, error)
// Update the given device-profile template.
Update(context.Context, *UpdateDeviceProfileTemplateRequest) (*emptypb.Empty, error)
// Delete the device-profile template with the given ID.
Delete(context.Context, *DeleteDeviceProfileTemplateRequest) (*emptypb.Empty, error)
// List the available device-profile templates.
List(context.Context, *ListDeviceProfileTemplatesRequest) (*ListDeviceProfileTemplatesResponse, error)
mustEmbedUnimplementedDeviceProfileTemplateServiceServer()
}
// UnimplementedDeviceProfileTemplateServiceServer must be embedded to have forward compatible implementations.
type UnimplementedDeviceProfileTemplateServiceServer struct {
}
func (UnimplementedDeviceProfileTemplateServiceServer) Create(context.Context, *CreateDeviceProfileTemplateRequest) (*emptypb.Empty, error) {
return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
}
func (UnimplementedDeviceProfileTemplateServiceServer) Get(context.Context, *GetDeviceProfileTemplateRequest) (*GetDeviceProfileTemplateResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Get not implemented")
}
func (UnimplementedDeviceProfileTemplateServiceServer) Update(context.Context, *UpdateDeviceProfileTemplateRequest) (*emptypb.Empty, error) {
return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
}
func (UnimplementedDeviceProfileTemplateServiceServer) Delete(context.Context, *DeleteDeviceProfileTemplateRequest) (*emptypb.Empty, error) {
return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
}
func (UnimplementedDeviceProfileTemplateServiceServer) List(context.Context, *ListDeviceProfileTemplatesRequest) (*ListDeviceProfileTemplatesResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
}
func (UnimplementedDeviceProfileTemplateServiceServer) mustEmbedUnimplementedDeviceProfileTemplateServiceServer() {
}
// UnsafeDeviceProfileTemplateServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to DeviceProfileTemplateServiceServer will
// result in compilation errors.
type UnsafeDeviceProfileTemplateServiceServer interface {
mustEmbedUnimplementedDeviceProfileTemplateServiceServer()
}
func RegisterDeviceProfileTemplateServiceServer(s grpc.ServiceRegistrar, srv DeviceProfileTemplateServiceServer) {
s.RegisterService(&DeviceProfileTemplateService_ServiceDesc, srv)
}
func _DeviceProfileTemplateService_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateDeviceProfileTemplateRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DeviceProfileTemplateServiceServer).Create(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/api.DeviceProfileTemplateService/Create",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DeviceProfileTemplateServiceServer).Create(ctx, req.(*CreateDeviceProfileTemplateRequest))
}
return interceptor(ctx, in, info, handler)
}
func _DeviceProfileTemplateService_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetDeviceProfileTemplateRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DeviceProfileTemplateServiceServer).Get(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/api.DeviceProfileTemplateService/Get",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DeviceProfileTemplateServiceServer).Get(ctx, req.(*GetDeviceProfileTemplateRequest))
}
return interceptor(ctx, in, info, handler)
}
func _DeviceProfileTemplateService_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateDeviceProfileTemplateRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DeviceProfileTemplateServiceServer).Update(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/api.DeviceProfileTemplateService/Update",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DeviceProfileTemplateServiceServer).Update(ctx, req.(*UpdateDeviceProfileTemplateRequest))
}
return interceptor(ctx, in, info, handler)
}
func _DeviceProfileTemplateService_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteDeviceProfileTemplateRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DeviceProfileTemplateServiceServer).Delete(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/api.DeviceProfileTemplateService/Delete",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DeviceProfileTemplateServiceServer).Delete(ctx, req.(*DeleteDeviceProfileTemplateRequest))
}
return interceptor(ctx, in, info, handler)
}
func _DeviceProfileTemplateService_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListDeviceProfileTemplatesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DeviceProfileTemplateServiceServer).List(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/api.DeviceProfileTemplateService/List",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DeviceProfileTemplateServiceServer).List(ctx, req.(*ListDeviceProfileTemplatesRequest))
}
return interceptor(ctx, in, info, handler)
}
// DeviceProfileTemplateService_ServiceDesc is the grpc.ServiceDesc for DeviceProfileTemplateService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var DeviceProfileTemplateService_ServiceDesc = grpc.ServiceDesc{
ServiceName: "api.DeviceProfileTemplateService",
HandlerType: (*DeviceProfileTemplateServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "Create",
Handler: _DeviceProfileTemplateService_Create_Handler,
},
{
MethodName: "Get",
Handler: _DeviceProfileTemplateService_Get_Handler,
},
{
MethodName: "Update",
Handler: _DeviceProfileTemplateService_Update_Handler,
},
{
MethodName: "Delete",
Handler: _DeviceProfileTemplateService_Delete_Handler,
},
{
MethodName: "List",
Handler: _DeviceProfileTemplateService_List_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "api/device_profile_template.proto",
}

View File

@ -4,11 +4,11 @@
// protoc v3.18.1
// source: api/frame_log.proto
package v4
package api
import (
gw "github.com/chirpstack/chirpstack-api/go/v4/gw"
common "github.com/chirpstack/chirpstack/api/go/v4/common"
gw "github.com/chirpstack/chirpstack/api/go/v4/gw"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
@ -31,9 +31,9 @@ type UplinkFrameLog struct {
// PHYPayload.
PhyPayload []byte `protobuf:"bytes,1,opt,name=phy_payload,json=phyPayload,proto3" json:"phy_payload,omitempty"`
// TX meta-data.
TxInfo *gw.UplinkTXInfo `protobuf:"bytes,2,opt,name=tx_info,json=txInfo,proto3" json:"tx_info,omitempty"`
TxInfo *gw.UplinkTxInfo `protobuf:"bytes,2,opt,name=tx_info,json=txInfo,proto3" json:"tx_info,omitempty"`
// RX meta-data.
RxInfo []*gw.UplinkRXInfo `protobuf:"bytes,3,rep,name=rx_info,json=rxInfo,proto3" json:"rx_info,omitempty"`
RxInfo []*gw.UplinkRxInfo `protobuf:"bytes,3,rep,name=rx_info,json=rxInfo,proto3" json:"rx_info,omitempty"`
// Message type.
MType common.MType `protobuf:"varint,4,opt,name=m_type,json=mType,proto3,enum=common.MType" json:"m_type,omitempty"`
// Device address (optional).
@ -83,14 +83,14 @@ func (x *UplinkFrameLog) GetPhyPayload() []byte {
return nil
}
func (x *UplinkFrameLog) GetTxInfo() *gw.UplinkTXInfo {
func (x *UplinkFrameLog) GetTxInfo() *gw.UplinkTxInfo {
if x != nil {
return x.TxInfo
}
return nil
}
func (x *UplinkFrameLog) GetRxInfo() []*gw.UplinkRXInfo {
func (x *UplinkFrameLog) GetRxInfo() []*gw.UplinkRxInfo {
if x != nil {
return x.RxInfo
}
@ -135,9 +135,9 @@ type DownlinkFrameLog struct {
// PHYPayload.
PhyPayload []byte `protobuf:"bytes,2,opt,name=phy_payload,json=phyPayload,proto3" json:"phy_payload,omitempty"`
// TX meta-data.
TxInfo *gw.DownlinkTXInfo `protobuf:"bytes,3,opt,name=tx_info,json=txInfo,proto3" json:"tx_info,omitempty"`
// Downlink ID (UUID).
DownlinkId string `protobuf:"bytes,4,opt,name=downlink_id,json=downlinkId,proto3" json:"downlink_id,omitempty"`
TxInfo *gw.DownlinkTxInfo `protobuf:"bytes,3,opt,name=tx_info,json=txInfo,proto3" json:"tx_info,omitempty"`
// Downlink ID.
DownlinkId uint32 `protobuf:"varint,4,opt,name=downlink_id,json=downlinkId,proto3" json:"downlink_id,omitempty"`
// Gateway ID (EUI64).
GatewayId string `protobuf:"bytes,5,opt,name=gateway_id,json=gatewayId,proto3" json:"gateway_id,omitempty"`
// Message type.
@ -194,18 +194,18 @@ func (x *DownlinkFrameLog) GetPhyPayload() []byte {
return nil
}
func (x *DownlinkFrameLog) GetTxInfo() *gw.DownlinkTXInfo {
func (x *DownlinkFrameLog) GetTxInfo() *gw.DownlinkTxInfo {
if x != nil {
return x.TxInfo
}
return nil
}
func (x *DownlinkFrameLog) GetDownlinkId() string {
func (x *DownlinkFrameLog) GetDownlinkId() uint32 {
if x != nil {
return x.DownlinkId
}
return ""
return 0
}
func (x *DownlinkFrameLog) GetGatewayId() string {
@ -249,10 +249,10 @@ var file_api_frame_log_proto_rawDesc = []byte{
0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x68, 0x79, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x68, 0x79, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61,
0x64, 0x12, 0x29, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x77, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x58,
0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x77, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x78,
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x74, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x29, 0x0a, 0x07,
0x72, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e,
0x67, 0x77, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x58, 0x49, 0x6e, 0x66, 0x6f, 0x52,
0x67, 0x77, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52,
0x06, 0x72, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x06, 0x6d, 0x5f, 0x74, 0x79, 0x70,
0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
0x2e, 0x4d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a,
@ -270,9 +270,9 @@ var file_api_frame_log_proto_rawDesc = []byte{
0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x68, 0x79,
0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2b, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x69, 0x6e,
0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x77, 0x2e, 0x44, 0x6f,
0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x58, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x74, 0x78,
0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x74, 0x78,
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b,
0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x6f, 0x77, 0x6e, 0x6c,
0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x64, 0x6f, 0x77, 0x6e, 0x6c,
0x69, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79,
0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77,
0x61, 0x79, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x06, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06,
@ -280,13 +280,13 @@ var file_api_frame_log_proto_rawDesc = []byte{
0x79, 0x70, 0x65, 0x52, 0x05, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x65,
0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65,
0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69,
0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x42, 0x50,
0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x42, 0x54,
0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e,
0x61, 0x70, 0x69, 0x42, 0x0d, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x50, 0x72, 0x6f,
0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
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,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -305,19 +305,19 @@ var file_api_frame_log_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_api_frame_log_proto_goTypes = []interface{}{
(*UplinkFrameLog)(nil), // 0: api.UplinkFrameLog
(*DownlinkFrameLog)(nil), // 1: api.DownlinkFrameLog
(*gw.UplinkTXInfo)(nil), // 2: gw.UplinkTXInfo
(*gw.UplinkRXInfo)(nil), // 3: gw.UplinkRXInfo
(*gw.UplinkTxInfo)(nil), // 2: gw.UplinkTxInfo
(*gw.UplinkRxInfo)(nil), // 3: gw.UplinkRxInfo
(common.MType)(0), // 4: common.MType
(*timestamppb.Timestamp)(nil), // 5: google.protobuf.Timestamp
(*gw.DownlinkTXInfo)(nil), // 6: gw.DownlinkTXInfo
(*gw.DownlinkTxInfo)(nil), // 6: gw.DownlinkTxInfo
}
var file_api_frame_log_proto_depIdxs = []int32{
2, // 0: api.UplinkFrameLog.tx_info:type_name -> gw.UplinkTXInfo
3, // 1: api.UplinkFrameLog.rx_info:type_name -> gw.UplinkRXInfo
2, // 0: api.UplinkFrameLog.tx_info:type_name -> gw.UplinkTxInfo
3, // 1: api.UplinkFrameLog.rx_info:type_name -> gw.UplinkRxInfo
4, // 2: api.UplinkFrameLog.m_type:type_name -> common.MType
5, // 3: api.UplinkFrameLog.time:type_name -> google.protobuf.Timestamp
5, // 4: api.DownlinkFrameLog.time:type_name -> google.protobuf.Timestamp
6, // 5: api.DownlinkFrameLog.tx_info:type_name -> gw.DownlinkTXInfo
6, // 5: api.DownlinkFrameLog.tx_info:type_name -> gw.DownlinkTxInfo
4, // 6: api.DownlinkFrameLog.m_type:type_name -> common.MType
7, // [7:7] is the sub-list for method output_type
7, // [7:7] is the sub-list for method input_type

View File

@ -4,7 +4,7 @@
// protoc v3.18.1
// source: api/gateway.proto
package v4
package api
import (
common "github.com/chirpstack/chirpstack/api/go/v4/common"
@ -1223,12 +1223,12 @@ var file_api_gateway_proto_rawDesc = []byte{
0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65,
0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x22, 0x00, 0x42, 0x4f, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74,
0x22, 0x00, 0x42, 0x53, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74,
0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0c, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79,
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
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, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -4,7 +4,7 @@
// - protoc v3.18.1
// source: api/gateway.proto
package v4
package api
import (
context "context"

View File

@ -4,7 +4,7 @@
// protoc v3.18.1
// source: api/internal.proto
package v4
package api
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
@ -1818,13 +1818,13 @@ var file_api_internal_proto_rawDesc = []byte{
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1e, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45,
0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x00, 0x30, 0x01, 0x42, 0x50,
0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x00, 0x30, 0x01, 0x42, 0x54,
0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e,
0x61, 0x70, 0x69, 0x42, 0x0d, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f,
0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
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,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -4,7 +4,7 @@
// - protoc v3.18.1
// source: api/internal.proto
package v4
package api
import (
context "context"

View File

@ -4,7 +4,7 @@
// protoc v3.18.1
// source: api/multicast_group.proto
package v4
package api
import (
common "github.com/chirpstack/chirpstack/api/go/v4/common"
@ -1390,13 +1390,13 @@ var file_api_multicast_group_proto_rawDesc = []byte{
0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x47, 0x72, 0x6f,
0x75, 0x70, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
0x00, 0x42, 0x56, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61,
0x00, 0x42, 0x5a, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61,
0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x13, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73,
0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2a, 0x67,
0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67,
0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73,
0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f,
0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -4,7 +4,7 @@
// - protoc v3.18.1
// source: api/multicast_group.proto
package v4
package api
import (
context "context"

View File

@ -4,7 +4,7 @@
// protoc v3.18.1
// source: api/tenant.proto
package v4
package api
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
@ -1480,12 +1480,12 @@ var file_api_tenant_proto_rawDesc = []byte{
0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e,
0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
0x42, 0x50, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63,
0x42, 0x54, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63,
0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0d, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x50,
0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
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, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -4,7 +4,7 @@
// - protoc v3.18.1
// source: api/tenant.proto
package v4
package api
import (
context "context"

View File

@ -4,7 +4,7 @@
// protoc v3.18.1
// source: api/user.proto
package v4
package api
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
@ -879,12 +879,12 @@ var file_api_user_proto_rawDesc = []byte{
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f,
0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
0x79, 0x22, 0x00, 0x42, 0x4c, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73,
0x79, 0x22, 0x00, 0x42, 0x50, 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, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
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, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x34, 0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -4,7 +4,7 @@
// - protoc v3.18.1
// source: api/user.proto
package v4
package api
import (
context "context"

2
api/go/go.mod vendored
View File

@ -1,4 +1,4 @@
module github.com/chirpstack/api/go/v4
module github.com/chirpstack/chirpstack/api/go/v4
go 1.16

2857
api/go/gw/gw.pb.go vendored

File diff suppressed because it is too large Load Diff

View File

@ -7,8 +7,8 @@
package integration
import (
gw "github.com/chirpstack/chirpstack-api/go/v4/gw"
common "github.com/chirpstack/chirpstack/api/go/v4/common"
gw "github.com/chirpstack/chirpstack/api/go/v4/gw"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
structpb "google.golang.org/protobuf/types/known/structpb"
@ -303,9 +303,9 @@ type UplinkEvent struct {
// Note that this is only set when a codec is configured in the Device Profile.
Object *structpb.Struct `protobuf:"bytes,11,opt,name=object,proto3" json:"object,omitempty"`
// Receiving gateway RX info.
RxInfo []*gw.UplinkRXInfo `protobuf:"bytes,12,rep,name=rx_info,json=rxInfo,proto3" json:"rx_info,omitempty"`
RxInfo []*gw.UplinkRxInfo `protobuf:"bytes,12,rep,name=rx_info,json=rxInfo,proto3" json:"rx_info,omitempty"`
// TX info.
TxInfo *gw.UplinkTXInfo `protobuf:"bytes,13,opt,name=tx_info,json=txInfo,proto3" json:"tx_info,omitempty"`
TxInfo *gw.UplinkTxInfo `protobuf:"bytes,13,opt,name=tx_info,json=txInfo,proto3" json:"tx_info,omitempty"`
}
func (x *UplinkEvent) Reset() {
@ -417,14 +417,14 @@ func (x *UplinkEvent) GetObject() *structpb.Struct {
return nil
}
func (x *UplinkEvent) GetRxInfo() []*gw.UplinkRXInfo {
func (x *UplinkEvent) GetRxInfo() []*gw.UplinkRxInfo {
if x != nil {
return x.RxInfo
}
return nil
}
func (x *UplinkEvent) GetTxInfo() *gw.UplinkTXInfo {
func (x *UplinkEvent) GetTxInfo() *gw.UplinkTxInfo {
if x != nil {
return x.TxInfo
}
@ -611,8 +611,8 @@ type TxAckEvent struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Downlink ID (UUID).
DownlinkId string `protobuf:"bytes,1,opt,name=downlink_id,json=downlinkId,proto3" json:"downlink_id,omitempty"`
// Downlink ID.
DownlinkId uint32 `protobuf:"varint,1,opt,name=downlink_id,json=downlinkId,proto3" json:"downlink_id,omitempty"`
// Timestamp.
Time *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=time,proto3" json:"time,omitempty"`
// Device info.
@ -624,7 +624,7 @@ type TxAckEvent struct {
// Gateway ID.
GatewayId string `protobuf:"bytes,6,opt,name=gateway_id,json=gatewayId,proto3" json:"gateway_id,omitempty"`
// TX info.
TxInfo *gw.DownlinkTXInfo `protobuf:"bytes,7,opt,name=tx_info,json=txInfo,proto3" json:"tx_info,omitempty"`
TxInfo *gw.DownlinkTxInfo `protobuf:"bytes,7,opt,name=tx_info,json=txInfo,proto3" json:"tx_info,omitempty"`
}
func (x *TxAckEvent) Reset() {
@ -659,11 +659,11 @@ func (*TxAckEvent) Descriptor() ([]byte, []int) {
return file_integration_integration_proto_rawDescGZIP(), []int{4}
}
func (x *TxAckEvent) GetDownlinkId() string {
func (x *TxAckEvent) GetDownlinkId() uint32 {
if x != nil {
return x.DownlinkId
}
return ""
return 0
}
func (x *TxAckEvent) GetTime() *timestamppb.Timestamp {
@ -701,7 +701,7 @@ func (x *TxAckEvent) GetGatewayId() string {
return ""
}
func (x *TxAckEvent) GetTxInfo() *gw.DownlinkTXInfo {
func (x *TxAckEvent) GetTxInfo() *gw.DownlinkTxInfo {
if x != nil {
return x.TxInfo
}
@ -1088,6 +1088,104 @@ func (x *IntegrationEvent) GetObject() *structpb.Struct {
return nil
}
// DownlinkCommand is the command to enqueue a downlink payload for the given
// device.
type DownlinkCommand struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// ID (UUID).
// If left blank, a random UUID will be generated.
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
// Device EUI (EUI64).
DevEui string `protobuf:"bytes,2,opt,name=dev_eui,json=devEui,proto3" json:"dev_eui,omitempty"`
// Confirmed.
Confirmed bool `protobuf:"varint,3,opt,name=confirmed,proto3" json:"confirmed,omitempty"`
// FPort (must be > 0).
FPort uint32 `protobuf:"varint,4,opt,name=f_port,json=fPort,proto3" json:"f_port,omitempty"`
// Data.
// Or use the json_object field when a codec has been configured.
Data []byte `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"`
// Only use this when a codec has been configured that can encode this
// object to bytes.
Object *structpb.Struct `protobuf:"bytes,6,opt,name=object,proto3" json:"object,omitempty"`
}
func (x *DownlinkCommand) Reset() {
*x = DownlinkCommand{}
if protoimpl.UnsafeEnabled {
mi := &file_integration_integration_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DownlinkCommand) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DownlinkCommand) ProtoMessage() {}
func (x *DownlinkCommand) ProtoReflect() protoreflect.Message {
mi := &file_integration_integration_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DownlinkCommand.ProtoReflect.Descriptor instead.
func (*DownlinkCommand) Descriptor() ([]byte, []int) {
return file_integration_integration_proto_rawDescGZIP(), []int{9}
}
func (x *DownlinkCommand) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *DownlinkCommand) GetDevEui() string {
if x != nil {
return x.DevEui
}
return ""
}
func (x *DownlinkCommand) GetConfirmed() bool {
if x != nil {
return x.Confirmed
}
return false
}
func (x *DownlinkCommand) GetFPort() uint32 {
if x != nil {
return x.FPort
}
return 0
}
func (x *DownlinkCommand) GetData() []byte {
if x != nil {
return x.Data
}
return nil
}
func (x *DownlinkCommand) GetObject() *structpb.Struct {
if x != nil {
return x.Object
}
return nil
}
var File_integration_integration_proto protoreflect.FileDescriptor
var file_integration_integration_proto_rawDesc = []byte{
@ -1151,10 +1249,10 @@ var file_integration_integration_proto_rawDesc = []byte{
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74,
0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x29, 0x0a, 0x07, 0x72, 0x78, 0x5f, 0x69,
0x6e, 0x66, 0x6f, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x77, 0x2e, 0x55,
0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x58, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x72, 0x78, 0x49,
0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x72, 0x78, 0x49,
0x6e, 0x66, 0x6f, 0x12, 0x29, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0d,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x77, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b,
0x54, 0x58, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x74, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xbb,
0x54, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x74, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xbb,
0x01, 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,
@ -1185,7 +1283,7 @@ var file_integration_integration_proto_rawDesc = []byte{
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, 0x09, 0x52, 0x0a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69,
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,
@ -1200,7 +1298,7 @@ var file_integration_integration_proto_rawDesc = []byte{
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, 0x58,
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, 0x92, 0x03, 0x0a,
0x08, 0x4c, 0x6f, 0x67, 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,
@ -1279,30 +1377,41 @@ var file_integration_integration_proto_rawDesc = []byte{
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, 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, 0xc0, 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, 0x42, 0x6b,
0x0a, 0x20, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x61, 0x73, 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, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x33,
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, 0xc0, 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, 0x42, 0x6b, 0x0a, 0x20, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72,
0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x73, 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, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -1318,7 +1427,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, 11)
var file_integration_integration_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
var file_integration_integration_proto_goTypes = []interface{}{
(LogLevel)(0), // 0: integration.LogLevel
(LogCode)(0), // 1: integration.LogCode
@ -1331,47 +1440,49 @@ var file_integration_integration_proto_goTypes = []interface{}{
(*StatusEvent)(nil), // 8: integration.StatusEvent
(*LocationEvent)(nil), // 9: integration.LocationEvent
(*IntegrationEvent)(nil), // 10: integration.IntegrationEvent
nil, // 11: integration.DeviceInfo.TagsEntry
nil, // 12: integration.LogEvent.ContextEntry
(*timestamppb.Timestamp)(nil), // 13: google.protobuf.Timestamp
(*structpb.Struct)(nil), // 14: google.protobuf.Struct
(*gw.UplinkRXInfo)(nil), // 15: gw.UplinkRXInfo
(*gw.UplinkTXInfo)(nil), // 16: gw.UplinkTXInfo
(*gw.DownlinkTXInfo)(nil), // 17: gw.DownlinkTXInfo
(*common.Location)(nil), // 18: common.Location
(*DownlinkCommand)(nil), // 11: integration.DownlinkCommand
nil, // 12: integration.DeviceInfo.TagsEntry
nil, // 13: integration.LogEvent.ContextEntry
(*timestamppb.Timestamp)(nil), // 14: google.protobuf.Timestamp
(*structpb.Struct)(nil), // 15: google.protobuf.Struct
(*gw.UplinkRxInfo)(nil), // 16: gw.UplinkRxInfo
(*gw.UplinkTxInfo)(nil), // 17: gw.UplinkTxInfo
(*gw.DownlinkTxInfo)(nil), // 18: gw.DownlinkTxInfo
(*common.Location)(nil), // 19: common.Location
}
var file_integration_integration_proto_depIdxs = []int32{
11, // 0: integration.DeviceInfo.tags:type_name -> integration.DeviceInfo.TagsEntry
13, // 1: integration.UplinkEvent.time:type_name -> google.protobuf.Timestamp
12, // 0: integration.DeviceInfo.tags:type_name -> integration.DeviceInfo.TagsEntry
14, // 1: integration.UplinkEvent.time:type_name -> google.protobuf.Timestamp
2, // 2: integration.UplinkEvent.device_info:type_name -> integration.DeviceInfo
14, // 3: integration.UplinkEvent.object:type_name -> google.protobuf.Struct
15, // 4: integration.UplinkEvent.rx_info:type_name -> gw.UplinkRXInfo
16, // 5: integration.UplinkEvent.tx_info:type_name -> gw.UplinkTXInfo
13, // 6: integration.JoinEvent.time:type_name -> google.protobuf.Timestamp
15, // 3: integration.UplinkEvent.object:type_name -> google.protobuf.Struct
16, // 4: integration.UplinkEvent.rx_info:type_name -> gw.UplinkRxInfo
17, // 5: integration.UplinkEvent.tx_info:type_name -> gw.UplinkTxInfo
14, // 6: integration.JoinEvent.time:type_name -> google.protobuf.Timestamp
2, // 7: integration.JoinEvent.device_info:type_name -> integration.DeviceInfo
13, // 8: integration.AckEvent.time:type_name -> google.protobuf.Timestamp
14, // 8: integration.AckEvent.time:type_name -> google.protobuf.Timestamp
2, // 9: integration.AckEvent.device_info:type_name -> integration.DeviceInfo
13, // 10: integration.TxAckEvent.time:type_name -> google.protobuf.Timestamp
14, // 10: integration.TxAckEvent.time:type_name -> google.protobuf.Timestamp
2, // 11: integration.TxAckEvent.device_info:type_name -> integration.DeviceInfo
17, // 12: integration.TxAckEvent.tx_info:type_name -> gw.DownlinkTXInfo
13, // 13: integration.LogEvent.time:type_name -> google.protobuf.Timestamp
18, // 12: integration.TxAckEvent.tx_info:type_name -> gw.DownlinkTxInfo
14, // 13: integration.LogEvent.time:type_name -> google.protobuf.Timestamp
2, // 14: integration.LogEvent.device_info:type_name -> integration.DeviceInfo
0, // 15: integration.LogEvent.level:type_name -> integration.LogLevel
1, // 16: integration.LogEvent.code:type_name -> integration.LogCode
12, // 17: integration.LogEvent.context:type_name -> integration.LogEvent.ContextEntry
13, // 18: integration.StatusEvent.time:type_name -> google.protobuf.Timestamp
13, // 17: integration.LogEvent.context:type_name -> integration.LogEvent.ContextEntry
14, // 18: integration.StatusEvent.time:type_name -> google.protobuf.Timestamp
2, // 19: integration.StatusEvent.device_info:type_name -> integration.DeviceInfo
13, // 20: integration.LocationEvent.time:type_name -> google.protobuf.Timestamp
14, // 20: integration.LocationEvent.time:type_name -> google.protobuf.Timestamp
2, // 21: integration.LocationEvent.device_info:type_name -> integration.DeviceInfo
18, // 22: integration.LocationEvent.location:type_name -> common.Location
13, // 23: integration.IntegrationEvent.time:type_name -> google.protobuf.Timestamp
19, // 22: integration.LocationEvent.location:type_name -> common.Location
14, // 23: integration.IntegrationEvent.time:type_name -> google.protobuf.Timestamp
2, // 24: integration.IntegrationEvent.device_info:type_name -> integration.DeviceInfo
14, // 25: integration.IntegrationEvent.object:type_name -> google.protobuf.Struct
26, // [26:26] is the sub-list for method output_type
26, // [26:26] is the sub-list for method input_type
26, // [26:26] is the sub-list for extension type_name
26, // [26:26] is the sub-list for extension extendee
0, // [0:26] is the sub-list for field type_name
15, // 25: integration.IntegrationEvent.object:type_name -> google.protobuf.Struct
15, // 26: integration.DownlinkCommand.object:type_name -> google.protobuf.Struct
27, // [27:27] is the sub-list for method output_type
27, // [27:27] is the sub-list for method input_type
27, // [27:27] is the sub-list for extension type_name
27, // [27:27] is the sub-list for extension extendee
0, // [0:27] is the sub-list for field type_name
}
func init() { file_integration_integration_proto_init() }
@ -1488,6 +1599,18 @@ func file_integration_integration_proto_init() {
return nil
}
}
file_integration_integration_proto_msgTypes[9].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{
@ -1495,7 +1618,7 @@ func file_integration_integration_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_integration_integration_proto_rawDesc,
NumEnums: 2,
NumMessages: 11,
NumMessages: 12,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -7,8 +7,8 @@
package meta
import (
gw "github.com/chirpstack/chirpstack-api/go/v4/gw"
common "github.com/chirpstack/chirpstack/api/go/v4/common"
gw "github.com/chirpstack/chirpstack/api/go/v4/gw"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
@ -30,9 +30,9 @@ type UplinkMeta struct {
// Device EUI (EUI64).
DevEui string `protobuf:"bytes,1,opt,name=dev_eui,json=devEui,proto3" json:"dev_eui,omitempty"`
// TX meta-data.
TxInfo *gw.UplinkTXInfo `protobuf:"bytes,2,opt,name=tx_info,json=txInfo,proto3" json:"tx_info,omitempty"`
TxInfo *gw.UplinkTxInfo `protobuf:"bytes,2,opt,name=tx_info,json=txInfo,proto3" json:"tx_info,omitempty"`
// RX meta-data.
RxInfo []*gw.UplinkRXInfo `protobuf:"bytes,3,rep,name=rx_info,json=rxInfo,proto3" json:"rx_info,omitempty"`
RxInfo []*gw.UplinkRxInfo `protobuf:"bytes,3,rep,name=rx_info,json=rxInfo,proto3" json:"rx_info,omitempty"`
// PHYPayload byte count.
PhyPayloadByteCount uint32 `protobuf:"varint,4,opt,name=phy_payload_byte_count,json=phyPayloadByteCount,proto3" json:"phy_payload_byte_count,omitempty"`
// MAC-Command byte count.
@ -82,14 +82,14 @@ func (x *UplinkMeta) GetDevEui() string {
return ""
}
func (x *UplinkMeta) GetTxInfo() *gw.UplinkTXInfo {
func (x *UplinkMeta) GetTxInfo() *gw.UplinkTxInfo {
if x != nil {
return x.TxInfo
}
return nil
}
func (x *UplinkMeta) GetRxInfo() []*gw.UplinkRXInfo {
func (x *UplinkMeta) GetRxInfo() []*gw.UplinkRxInfo {
if x != nil {
return x.RxInfo
}
@ -134,7 +134,7 @@ type DownlinkMeta struct {
// Multicast Group ID (UUID).
MulticastGroupId string `protobuf:"bytes,2,opt,name=multicast_group_id,json=multicastGroupId,proto3" json:"multicast_group_id,omitempty"`
// TX meta-data.
TxInfo *gw.DownlinkTXInfo `protobuf:"bytes,3,opt,name=tx_info,json=txInfo,proto3" json:"tx_info,omitempty"`
TxInfo *gw.DownlinkTxInfo `protobuf:"bytes,3,opt,name=tx_info,json=txInfo,proto3" json:"tx_info,omitempty"`
// PHYPayload byte count.
PhyPayloadByteCount uint32 `protobuf:"varint,4,opt,name=phy_payload_byte_count,json=phyPayloadByteCount,proto3" json:"phy_payload_byte_count,omitempty"`
// MAC-Command byte count.
@ -193,7 +193,7 @@ func (x *DownlinkMeta) GetMulticastGroupId() string {
return ""
}
func (x *DownlinkMeta) GetTxInfo() *gw.DownlinkTXInfo {
func (x *DownlinkMeta) GetTxInfo() *gw.DownlinkTxInfo {
if x != nil {
return x.TxInfo
}
@ -245,10 +245,10 @@ var file_meta_meta_proto_rawDesc = []byte{
0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f,
0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75,
0x69, 0x12, 0x29, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x77, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x58,
0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x77, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x78,
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x74, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x29, 0x0a, 0x07,
0x72, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e,
0x67, 0x77, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x58, 0x49, 0x6e, 0x66, 0x6f, 0x52,
0x67, 0x77, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52,
0x06, 0x72, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x33, 0x0a, 0x16, 0x70, 0x68, 0x79, 0x5f, 0x70,
0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x70, 0x68, 0x79, 0x50, 0x61, 0x79, 0x6c,
@ -271,7 +271,7 @@ var file_meta_meta_proto_rawDesc = []byte{
0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64,
0x12, 0x2b, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x12, 0x2e, 0x67, 0x77, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x54,
0x58, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x74, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x33, 0x0a,
0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x74, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x33, 0x0a,
0x16, 0x70, 0x68, 0x79, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x79, 0x74,
0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x70,
0x68, 0x79, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, 0x43, 0x6f, 0x75,
@ -292,7 +292,7 @@ var file_meta_meta_proto_rawDesc = []byte{
0x70, 0x69, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x09, 0x4d, 0x65, 0x74, 0x61, 0x50, 0x72, 0x6f,
0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2f, 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, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34,
0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34,
0x2f, 0x6d, 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
@ -312,16 +312,16 @@ var file_meta_meta_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_meta_meta_proto_goTypes = []interface{}{
(*UplinkMeta)(nil), // 0: meta.UplinkMeta
(*DownlinkMeta)(nil), // 1: meta.DownlinkMeta
(*gw.UplinkTXInfo)(nil), // 2: gw.UplinkTXInfo
(*gw.UplinkRXInfo)(nil), // 3: gw.UplinkRXInfo
(*gw.UplinkTxInfo)(nil), // 2: gw.UplinkTxInfo
(*gw.UplinkRxInfo)(nil), // 3: gw.UplinkRxInfo
(common.MType)(0), // 4: common.MType
(*gw.DownlinkTXInfo)(nil), // 5: gw.DownlinkTXInfo
(*gw.DownlinkTxInfo)(nil), // 5: gw.DownlinkTxInfo
}
var file_meta_meta_proto_depIdxs = []int32{
2, // 0: meta.UplinkMeta.tx_info:type_name -> gw.UplinkTXInfo
3, // 1: meta.UplinkMeta.rx_info:type_name -> gw.UplinkRXInfo
2, // 0: meta.UplinkMeta.tx_info:type_name -> gw.UplinkTxInfo
3, // 1: meta.UplinkMeta.rx_info:type_name -> gw.UplinkRxInfo
4, // 2: meta.UplinkMeta.message_type:type_name -> common.MType
5, // 3: meta.DownlinkMeta.tx_info:type_name -> gw.DownlinkTXInfo
5, // 3: meta.DownlinkMeta.tx_info:type_name -> gw.DownlinkTxInfo
4, // 4: meta.DownlinkMeta.message_type:type_name -> common.MType
5, // [5:5] is the sub-list for method output_type
5, // [5:5] is the sub-list for method input_type

View File

@ -20,6 +20,7 @@ api:
protoc -I=$(GOOGLEAPIS_PATH) -I=../protobuf -I=../proto $(PROTOC_ARGS) ../proto/api/tenant.proto
protoc -I=$(GOOGLEAPIS_PATH) -I=../protobuf -I=../proto $(PROTOC_ARGS) ../proto/api/application.proto
protoc -I=$(GOOGLEAPIS_PATH) -I=../protobuf -I=../proto $(PROTOC_ARGS) ../proto/api/device_profile.proto
protoc -I=$(GOOGLEAPIS_PATH) -I=../protobuf -I=../proto $(PROTOC_ARGS) ../proto/api/device_profile_template.proto
protoc -I=$(GOOGLEAPIS_PATH) -I=../protobuf -I=../proto $(PROTOC_ARGS) ../proto/api/device.proto
protoc -I=$(GOOGLEAPIS_PATH) -I=../protobuf -I=../proto $(PROTOC_ARGS) ../proto/api/gateway.proto
protoc -I=$(GOOGLEAPIS_PATH) -I=../protobuf -I=../proto $(PROTOC_ARGS) ../proto/api/frame_log.proto

View File

@ -15,6 +15,9 @@ export class DeviceProfile extends jspb.Message {
getName(): string;
setName(value: string): DeviceProfile;
getDescription(): string;
setDescription(value: string): DeviceProfile;
getRegion(): common_common_pb.Region;
setRegion(value: common_common_pb.Region): DeviceProfile;
@ -30,11 +33,11 @@ export class DeviceProfile extends jspb.Message {
getPayloadCodecRuntime(): CodecRuntime;
setPayloadCodecRuntime(value: CodecRuntime): DeviceProfile;
getPayloadEncoderConfig(): string;
setPayloadEncoderConfig(value: string): DeviceProfile;
getPayloadCodecScript(): string;
setPayloadCodecScript(value: string): DeviceProfile;
getPayloadDecoderConfig(): string;
setPayloadDecoderConfig(value: string): DeviceProfile;
getFlushQueueOnActivate(): boolean;
setFlushQueueOnActivate(value: boolean): DeviceProfile;
getUplinkInterval(): number;
setUplinkInterval(value: number): DeviceProfile;
@ -94,13 +97,14 @@ export namespace DeviceProfile {
id: string,
tenantId: string,
name: string,
description: string,
region: common_common_pb.Region,
macVersion: common_common_pb.MacVersion,
regParamsRevision: common_common_pb.RegParamsRevision,
adrAlgorithmId: string,
payloadCodecRuntime: CodecRuntime,
payloadEncoderConfig: string,
payloadDecoderConfig: string,
payloadCodecScript: string,
flushQueueOnActivate: boolean,
uplinkInterval: number,
deviceStatusReqInterval: number,
supportsOtaa: boolean,

View File

@ -321,13 +321,14 @@ proto.api.DeviceProfile.toObject = function(includeInstance, msg) {
id: jspb.Message.getFieldWithDefault(msg, 1, ""),
tenantId: jspb.Message.getFieldWithDefault(msg, 2, ""),
name: jspb.Message.getFieldWithDefault(msg, 3, ""),
description: jspb.Message.getFieldWithDefault(msg, 26, ""),
region: jspb.Message.getFieldWithDefault(msg, 4, 0),
macVersion: jspb.Message.getFieldWithDefault(msg, 5, 0),
regParamsRevision: jspb.Message.getFieldWithDefault(msg, 6, 0),
adrAlgorithmId: jspb.Message.getFieldWithDefault(msg, 7, ""),
payloadCodecRuntime: jspb.Message.getFieldWithDefault(msg, 8, 0),
payloadEncoderConfig: jspb.Message.getFieldWithDefault(msg, 9, ""),
payloadDecoderConfig: jspb.Message.getFieldWithDefault(msg, 10, ""),
payloadCodecScript: jspb.Message.getFieldWithDefault(msg, 9, ""),
flushQueueOnActivate: jspb.Message.getBooleanFieldWithDefault(msg, 10, false),
uplinkInterval: jspb.Message.getFieldWithDefault(msg, 11, 0),
deviceStatusReqInterval: jspb.Message.getFieldWithDefault(msg, 12, 0),
supportsOtaa: jspb.Message.getBooleanFieldWithDefault(msg, 13, false),
@ -391,6 +392,10 @@ proto.api.DeviceProfile.deserializeBinaryFromReader = function(msg, reader) {
var value = /** @type {string} */ (reader.readString());
msg.setName(value);
break;
case 26:
var value = /** @type {string} */ (reader.readString());
msg.setDescription(value);
break;
case 4:
var value = /** @type {!proto.common.Region} */ (reader.readEnum());
msg.setRegion(value);
@ -413,11 +418,11 @@ proto.api.DeviceProfile.deserializeBinaryFromReader = function(msg, reader) {
break;
case 9:
var value = /** @type {string} */ (reader.readString());
msg.setPayloadEncoderConfig(value);
msg.setPayloadCodecScript(value);
break;
case 10:
var value = /** @type {string} */ (reader.readString());
msg.setPayloadDecoderConfig(value);
var value = /** @type {boolean} */ (reader.readBool());
msg.setFlushQueueOnActivate(value);
break;
case 11:
var value = /** @type {number} */ (reader.readUint32());
@ -531,6 +536,13 @@ proto.api.DeviceProfile.serializeBinaryToWriter = function(message, writer) {
f
);
}
f = message.getDescription();
if (f.length > 0) {
writer.writeString(
26,
f
);
}
f = message.getRegion();
if (f !== 0.0) {
writer.writeEnum(
@ -566,16 +578,16 @@ proto.api.DeviceProfile.serializeBinaryToWriter = function(message, writer) {
f
);
}
f = message.getPayloadEncoderConfig();
f = message.getPayloadCodecScript();
if (f.length > 0) {
writer.writeString(
9,
f
);
}
f = message.getPayloadDecoderConfig();
if (f.length > 0) {
writer.writeString(
f = message.getFlushQueueOnActivate();
if (f) {
writer.writeBool(
10,
f
);
@ -739,6 +751,24 @@ proto.api.DeviceProfile.prototype.setName = function(value) {
};
/**
* optional string description = 26;
* @return {string}
*/
proto.api.DeviceProfile.prototype.getDescription = function() {
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 26, ""));
};
/**
* @param {string} value
* @return {!proto.api.DeviceProfile} returns this
*/
proto.api.DeviceProfile.prototype.setDescription = function(value) {
return jspb.Message.setProto3StringField(this, 26, value);
};
/**
* optional common.Region region = 4;
* @return {!proto.common.Region}
@ -830,10 +860,10 @@ proto.api.DeviceProfile.prototype.setPayloadCodecRuntime = function(value) {
/**
* optional string payload_encoder_config = 9;
* optional string payload_codec_script = 9;
* @return {string}
*/
proto.api.DeviceProfile.prototype.getPayloadEncoderConfig = function() {
proto.api.DeviceProfile.prototype.getPayloadCodecScript = function() {
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, ""));
};
@ -842,26 +872,26 @@ proto.api.DeviceProfile.prototype.getPayloadEncoderConfig = function() {
* @param {string} value
* @return {!proto.api.DeviceProfile} returns this
*/
proto.api.DeviceProfile.prototype.setPayloadEncoderConfig = function(value) {
proto.api.DeviceProfile.prototype.setPayloadCodecScript = function(value) {
return jspb.Message.setProto3StringField(this, 9, value);
};
/**
* optional string payload_decoder_config = 10;
* @return {string}
* optional bool flush_queue_on_activate = 10;
* @return {boolean}
*/
proto.api.DeviceProfile.prototype.getPayloadDecoderConfig = function() {
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 10, ""));
proto.api.DeviceProfile.prototype.getFlushQueueOnActivate = function() {
return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 10, false));
};
/**
* @param {string} value
* @param {boolean} value
* @return {!proto.api.DeviceProfile} returns this
*/
proto.api.DeviceProfile.prototype.setPayloadDecoderConfig = function(value) {
return jspb.Message.setProto3StringField(this, 10, value);
proto.api.DeviceProfile.prototype.setFlushQueueOnActivate = function(value) {
return jspb.Message.setProto3BooleanField(this, 10, value);
};

View File

@ -0,0 +1,80 @@
import * as grpcWeb from 'grpc-web';
import * as google_protobuf_empty_pb from 'google-protobuf/google/protobuf/empty_pb';
import * as api_device_profile_template_pb from '../api/device_profile_template_pb';
export class DeviceProfileTemplateServiceClient {
constructor (hostname: string,
credentials?: null | { [index: string]: string; },
options?: null | { [index: string]: any; });
create(
request: api_device_profile_template_pb.CreateDeviceProfileTemplateRequest,
metadata: grpcWeb.Metadata | undefined,
callback: (err: grpcWeb.Error,
response: google_protobuf_empty_pb.Empty) => void
): grpcWeb.ClientReadableStream<google_protobuf_empty_pb.Empty>;
get(
request: api_device_profile_template_pb.GetDeviceProfileTemplateRequest,
metadata: grpcWeb.Metadata | undefined,
callback: (err: grpcWeb.Error,
response: api_device_profile_template_pb.GetDeviceProfileTemplateResponse) => void
): grpcWeb.ClientReadableStream<api_device_profile_template_pb.GetDeviceProfileTemplateResponse>;
update(
request: api_device_profile_template_pb.UpdateDeviceProfileTemplateRequest,
metadata: grpcWeb.Metadata | undefined,
callback: (err: grpcWeb.Error,
response: google_protobuf_empty_pb.Empty) => void
): grpcWeb.ClientReadableStream<google_protobuf_empty_pb.Empty>;
delete(
request: api_device_profile_template_pb.DeleteDeviceProfileTemplateRequest,
metadata: grpcWeb.Metadata | undefined,
callback: (err: grpcWeb.Error,
response: google_protobuf_empty_pb.Empty) => void
): grpcWeb.ClientReadableStream<google_protobuf_empty_pb.Empty>;
list(
request: api_device_profile_template_pb.ListDeviceProfileTemplatesRequest,
metadata: grpcWeb.Metadata | undefined,
callback: (err: grpcWeb.Error,
response: api_device_profile_template_pb.ListDeviceProfileTemplatesResponse) => void
): grpcWeb.ClientReadableStream<api_device_profile_template_pb.ListDeviceProfileTemplatesResponse>;
}
export class DeviceProfileTemplateServicePromiseClient {
constructor (hostname: string,
credentials?: null | { [index: string]: string; },
options?: null | { [index: string]: any; });
create(
request: api_device_profile_template_pb.CreateDeviceProfileTemplateRequest,
metadata?: grpcWeb.Metadata
): Promise<google_protobuf_empty_pb.Empty>;
get(
request: api_device_profile_template_pb.GetDeviceProfileTemplateRequest,
metadata?: grpcWeb.Metadata
): Promise<api_device_profile_template_pb.GetDeviceProfileTemplateResponse>;
update(
request: api_device_profile_template_pb.UpdateDeviceProfileTemplateRequest,
metadata?: grpcWeb.Metadata
): Promise<google_protobuf_empty_pb.Empty>;
delete(
request: api_device_profile_template_pb.DeleteDeviceProfileTemplateRequest,
metadata?: grpcWeb.Metadata
): Promise<google_protobuf_empty_pb.Empty>;
list(
request: api_device_profile_template_pb.ListDeviceProfileTemplatesRequest,
metadata?: grpcWeb.Metadata
): Promise<api_device_profile_template_pb.ListDeviceProfileTemplatesResponse>;
}

View File

@ -0,0 +1,482 @@
/**
* @fileoverview gRPC-Web generated client stub for api
* @enhanceable
* @public
*/
// GENERATED CODE -- DO NOT EDIT!
/* eslint-disable */
// @ts-nocheck
const grpc = {};
grpc.web = require('grpc-web');
var google_protobuf_timestamp_pb = require('google-protobuf/google/protobuf/timestamp_pb.js')
var google_protobuf_empty_pb = require('google-protobuf/google/protobuf/empty_pb.js')
var common_common_pb = require('../common/common_pb.js')
var api_device_profile_pb = require('../api/device_profile_pb.js')
const proto = {};
proto.api = require('./device_profile_template_pb.js');
/**
* @param {string} hostname
* @param {?Object} credentials
* @param {?Object} options
* @constructor
* @struct
* @final
*/
proto.api.DeviceProfileTemplateServiceClient =
function(hostname, credentials, options) {
if (!options) options = {};
options['format'] = 'text';
/**
* @private @const {!grpc.web.GrpcWebClientBase} The client
*/
this.client_ = new grpc.web.GrpcWebClientBase(options);
/**
* @private @const {string} The hostname
*/
this.hostname_ = hostname;
};
/**
* @param {string} hostname
* @param {?Object} credentials
* @param {?Object} options
* @constructor
* @struct
* @final
*/
proto.api.DeviceProfileTemplateServicePromiseClient =
function(hostname, credentials, options) {
if (!options) options = {};
options['format'] = 'text';
/**
* @private @const {!grpc.web.GrpcWebClientBase} The client
*/
this.client_ = new grpc.web.GrpcWebClientBase(options);
/**
* @private @const {string} The hostname
*/
this.hostname_ = hostname;
};
/**
* @const
* @type {!grpc.web.MethodDescriptor<
* !proto.api.CreateDeviceProfileTemplateRequest,
* !proto.google.protobuf.Empty>}
*/
const methodDescriptor_DeviceProfileTemplateService_Create = new grpc.web.MethodDescriptor(
'/api.DeviceProfileTemplateService/Create',
grpc.web.MethodType.UNARY,
proto.api.CreateDeviceProfileTemplateRequest,
google_protobuf_empty_pb.Empty,
/**
* @param {!proto.api.CreateDeviceProfileTemplateRequest} request
* @return {!Uint8Array}
*/
function(request) {
return request.serializeBinary();
},
google_protobuf_empty_pb.Empty.deserializeBinary
);
/**
* @const
* @type {!grpc.web.AbstractClientBase.MethodInfo<
* !proto.api.CreateDeviceProfileTemplateRequest,
* !proto.google.protobuf.Empty>}
*/
const methodInfo_DeviceProfileTemplateService_Create = new grpc.web.AbstractClientBase.MethodInfo(
google_protobuf_empty_pb.Empty,
/**
* @param {!proto.api.CreateDeviceProfileTemplateRequest} request
* @return {!Uint8Array}
*/
function(request) {
return request.serializeBinary();
},
google_protobuf_empty_pb.Empty.deserializeBinary
);
/**
* @param {!proto.api.CreateDeviceProfileTemplateRequest} request The
* request proto
* @param {?Object<string, string>} metadata User defined
* call metadata
* @param {function(?grpc.web.Error, ?proto.google.protobuf.Empty)}
* callback The callback function(error, response)
* @return {!grpc.web.ClientReadableStream<!proto.google.protobuf.Empty>|undefined}
* The XHR Node Readable Stream
*/
proto.api.DeviceProfileTemplateServiceClient.prototype.create =
function(request, metadata, callback) {
return this.client_.rpcCall(this.hostname_ +
'/api.DeviceProfileTemplateService/Create',
request,
metadata || {},
methodDescriptor_DeviceProfileTemplateService_Create,
callback);
};
/**
* @param {!proto.api.CreateDeviceProfileTemplateRequest} request The
* request proto
* @param {?Object<string, string>} metadata User defined
* call metadata
* @return {!Promise<!proto.google.protobuf.Empty>}
* Promise that resolves to the response
*/
proto.api.DeviceProfileTemplateServicePromiseClient.prototype.create =
function(request, metadata) {
return this.client_.unaryCall(this.hostname_ +
'/api.DeviceProfileTemplateService/Create',
request,
metadata || {},
methodDescriptor_DeviceProfileTemplateService_Create);
};
/**
* @const
* @type {!grpc.web.MethodDescriptor<
* !proto.api.GetDeviceProfileTemplateRequest,
* !proto.api.GetDeviceProfileTemplateResponse>}
*/
const methodDescriptor_DeviceProfileTemplateService_Get = new grpc.web.MethodDescriptor(
'/api.DeviceProfileTemplateService/Get',
grpc.web.MethodType.UNARY,
proto.api.GetDeviceProfileTemplateRequest,
proto.api.GetDeviceProfileTemplateResponse,
/**
* @param {!proto.api.GetDeviceProfileTemplateRequest} request
* @return {!Uint8Array}
*/
function(request) {
return request.serializeBinary();
},
proto.api.GetDeviceProfileTemplateResponse.deserializeBinary
);
/**
* @const
* @type {!grpc.web.AbstractClientBase.MethodInfo<
* !proto.api.GetDeviceProfileTemplateRequest,
* !proto.api.GetDeviceProfileTemplateResponse>}
*/
const methodInfo_DeviceProfileTemplateService_Get = new grpc.web.AbstractClientBase.MethodInfo(
proto.api.GetDeviceProfileTemplateResponse,
/**
* @param {!proto.api.GetDeviceProfileTemplateRequest} request
* @return {!Uint8Array}
*/
function(request) {
return request.serializeBinary();
},
proto.api.GetDeviceProfileTemplateResponse.deserializeBinary
);
/**
* @param {!proto.api.GetDeviceProfileTemplateRequest} request The
* request proto
* @param {?Object<string, string>} metadata User defined
* call metadata
* @param {function(?grpc.web.Error, ?proto.api.GetDeviceProfileTemplateResponse)}
* callback The callback function(error, response)
* @return {!grpc.web.ClientReadableStream<!proto.api.GetDeviceProfileTemplateResponse>|undefined}
* The XHR Node Readable Stream
*/
proto.api.DeviceProfileTemplateServiceClient.prototype.get =
function(request, metadata, callback) {
return this.client_.rpcCall(this.hostname_ +
'/api.DeviceProfileTemplateService/Get',
request,
metadata || {},
methodDescriptor_DeviceProfileTemplateService_Get,
callback);
};
/**
* @param {!proto.api.GetDeviceProfileTemplateRequest} request The
* request proto
* @param {?Object<string, string>} metadata User defined
* call metadata
* @return {!Promise<!proto.api.GetDeviceProfileTemplateResponse>}
* Promise that resolves to the response
*/
proto.api.DeviceProfileTemplateServicePromiseClient.prototype.get =
function(request, metadata) {
return this.client_.unaryCall(this.hostname_ +
'/api.DeviceProfileTemplateService/Get',
request,
metadata || {},
methodDescriptor_DeviceProfileTemplateService_Get);
};
/**
* @const
* @type {!grpc.web.MethodDescriptor<
* !proto.api.UpdateDeviceProfileTemplateRequest,
* !proto.google.protobuf.Empty>}
*/
const methodDescriptor_DeviceProfileTemplateService_Update = new grpc.web.MethodDescriptor(
'/api.DeviceProfileTemplateService/Update',
grpc.web.MethodType.UNARY,
proto.api.UpdateDeviceProfileTemplateRequest,
google_protobuf_empty_pb.Empty,
/**
* @param {!proto.api.UpdateDeviceProfileTemplateRequest} request
* @return {!Uint8Array}
*/
function(request) {
return request.serializeBinary();
},
google_protobuf_empty_pb.Empty.deserializeBinary
);
/**
* @const
* @type {!grpc.web.AbstractClientBase.MethodInfo<
* !proto.api.UpdateDeviceProfileTemplateRequest,
* !proto.google.protobuf.Empty>}
*/
const methodInfo_DeviceProfileTemplateService_Update = new grpc.web.AbstractClientBase.MethodInfo(
google_protobuf_empty_pb.Empty,
/**
* @param {!proto.api.UpdateDeviceProfileTemplateRequest} request
* @return {!Uint8Array}
*/
function(request) {
return request.serializeBinary();
},
google_protobuf_empty_pb.Empty.deserializeBinary
);
/**
* @param {!proto.api.UpdateDeviceProfileTemplateRequest} request The
* request proto
* @param {?Object<string, string>} metadata User defined
* call metadata
* @param {function(?grpc.web.Error, ?proto.google.protobuf.Empty)}
* callback The callback function(error, response)
* @return {!grpc.web.ClientReadableStream<!proto.google.protobuf.Empty>|undefined}
* The XHR Node Readable Stream
*/
proto.api.DeviceProfileTemplateServiceClient.prototype.update =
function(request, metadata, callback) {
return this.client_.rpcCall(this.hostname_ +
'/api.DeviceProfileTemplateService/Update',
request,
metadata || {},
methodDescriptor_DeviceProfileTemplateService_Update,
callback);
};
/**
* @param {!proto.api.UpdateDeviceProfileTemplateRequest} request The
* request proto
* @param {?Object<string, string>} metadata User defined
* call metadata
* @return {!Promise<!proto.google.protobuf.Empty>}
* Promise that resolves to the response
*/
proto.api.DeviceProfileTemplateServicePromiseClient.prototype.update =
function(request, metadata) {
return this.client_.unaryCall(this.hostname_ +
'/api.DeviceProfileTemplateService/Update',
request,
metadata || {},
methodDescriptor_DeviceProfileTemplateService_Update);
};
/**
* @const
* @type {!grpc.web.MethodDescriptor<
* !proto.api.DeleteDeviceProfileTemplateRequest,
* !proto.google.protobuf.Empty>}
*/
const methodDescriptor_DeviceProfileTemplateService_Delete = new grpc.web.MethodDescriptor(
'/api.DeviceProfileTemplateService/Delete',
grpc.web.MethodType.UNARY,
proto.api.DeleteDeviceProfileTemplateRequest,
google_protobuf_empty_pb.Empty,
/**
* @param {!proto.api.DeleteDeviceProfileTemplateRequest} request
* @return {!Uint8Array}
*/
function(request) {
return request.serializeBinary();
},
google_protobuf_empty_pb.Empty.deserializeBinary
);
/**
* @const
* @type {!grpc.web.AbstractClientBase.MethodInfo<
* !proto.api.DeleteDeviceProfileTemplateRequest,
* !proto.google.protobuf.Empty>}
*/
const methodInfo_DeviceProfileTemplateService_Delete = new grpc.web.AbstractClientBase.MethodInfo(
google_protobuf_empty_pb.Empty,
/**
* @param {!proto.api.DeleteDeviceProfileTemplateRequest} request
* @return {!Uint8Array}
*/
function(request) {
return request.serializeBinary();
},
google_protobuf_empty_pb.Empty.deserializeBinary
);
/**
* @param {!proto.api.DeleteDeviceProfileTemplateRequest} request The
* request proto
* @param {?Object<string, string>} metadata User defined
* call metadata
* @param {function(?grpc.web.Error, ?proto.google.protobuf.Empty)}
* callback The callback function(error, response)
* @return {!grpc.web.ClientReadableStream<!proto.google.protobuf.Empty>|undefined}
* The XHR Node Readable Stream
*/
proto.api.DeviceProfileTemplateServiceClient.prototype.delete =
function(request, metadata, callback) {
return this.client_.rpcCall(this.hostname_ +
'/api.DeviceProfileTemplateService/Delete',
request,
metadata || {},
methodDescriptor_DeviceProfileTemplateService_Delete,
callback);
};
/**
* @param {!proto.api.DeleteDeviceProfileTemplateRequest} request The
* request proto
* @param {?Object<string, string>} metadata User defined
* call metadata
* @return {!Promise<!proto.google.protobuf.Empty>}
* Promise that resolves to the response
*/
proto.api.DeviceProfileTemplateServicePromiseClient.prototype.delete =
function(request, metadata) {
return this.client_.unaryCall(this.hostname_ +
'/api.DeviceProfileTemplateService/Delete',
request,
metadata || {},
methodDescriptor_DeviceProfileTemplateService_Delete);
};
/**
* @const
* @type {!grpc.web.MethodDescriptor<
* !proto.api.ListDeviceProfileTemplatesRequest,
* !proto.api.ListDeviceProfileTemplatesResponse>}
*/
const methodDescriptor_DeviceProfileTemplateService_List = new grpc.web.MethodDescriptor(
'/api.DeviceProfileTemplateService/List',
grpc.web.MethodType.UNARY,
proto.api.ListDeviceProfileTemplatesRequest,
proto.api.ListDeviceProfileTemplatesResponse,
/**
* @param {!proto.api.ListDeviceProfileTemplatesRequest} request
* @return {!Uint8Array}
*/
function(request) {
return request.serializeBinary();
},
proto.api.ListDeviceProfileTemplatesResponse.deserializeBinary
);
/**
* @const
* @type {!grpc.web.AbstractClientBase.MethodInfo<
* !proto.api.ListDeviceProfileTemplatesRequest,
* !proto.api.ListDeviceProfileTemplatesResponse>}
*/
const methodInfo_DeviceProfileTemplateService_List = new grpc.web.AbstractClientBase.MethodInfo(
proto.api.ListDeviceProfileTemplatesResponse,
/**
* @param {!proto.api.ListDeviceProfileTemplatesRequest} request
* @return {!Uint8Array}
*/
function(request) {
return request.serializeBinary();
},
proto.api.ListDeviceProfileTemplatesResponse.deserializeBinary
);
/**
* @param {!proto.api.ListDeviceProfileTemplatesRequest} request The
* request proto
* @param {?Object<string, string>} metadata User defined
* call metadata
* @param {function(?grpc.web.Error, ?proto.api.ListDeviceProfileTemplatesResponse)}
* callback The callback function(error, response)
* @return {!grpc.web.ClientReadableStream<!proto.api.ListDeviceProfileTemplatesResponse>|undefined}
* The XHR Node Readable Stream
*/
proto.api.DeviceProfileTemplateServiceClient.prototype.list =
function(request, metadata, callback) {
return this.client_.rpcCall(this.hostname_ +
'/api.DeviceProfileTemplateService/List',
request,
metadata || {},
methodDescriptor_DeviceProfileTemplateService_List,
callback);
};
/**
* @param {!proto.api.ListDeviceProfileTemplatesRequest} request The
* request proto
* @param {?Object<string, string>} metadata User defined
* call metadata
* @return {!Promise<!proto.api.ListDeviceProfileTemplatesResponse>}
* Promise that resolves to the response
*/
proto.api.DeviceProfileTemplateServicePromiseClient.prototype.list =
function(request, metadata) {
return this.client_.unaryCall(this.hostname_ +
'/api.DeviceProfileTemplateService/List',
request,
metadata || {},
methodDescriptor_DeviceProfileTemplateService_List);
};
module.exports = proto.api;

View File

@ -0,0 +1,350 @@
import * as jspb from 'google-protobuf'
import * as google_protobuf_timestamp_pb from 'google-protobuf/google/protobuf/timestamp_pb';
import * as google_protobuf_empty_pb from 'google-protobuf/google/protobuf/empty_pb';
import * as common_common_pb from '../common/common_pb';
import * as api_device_profile_pb from '../api/device_profile_pb';
export class DeviceProfileTemplate extends jspb.Message {
getId(): string;
setId(value: string): DeviceProfileTemplate;
getName(): string;
setName(value: string): DeviceProfileTemplate;
getDescription(): string;
setDescription(value: string): DeviceProfileTemplate;
getVendor(): string;
setVendor(value: string): DeviceProfileTemplate;
getFirmware(): string;
setFirmware(value: string): DeviceProfileTemplate;
getRegion(): common_common_pb.Region;
setRegion(value: common_common_pb.Region): DeviceProfileTemplate;
getMacVersion(): common_common_pb.MacVersion;
setMacVersion(value: common_common_pb.MacVersion): DeviceProfileTemplate;
getRegParamsRevision(): common_common_pb.RegParamsRevision;
setRegParamsRevision(value: common_common_pb.RegParamsRevision): DeviceProfileTemplate;
getAdrAlgorithmId(): string;
setAdrAlgorithmId(value: string): DeviceProfileTemplate;
getPayloadCodecRuntime(): api_device_profile_pb.CodecRuntime;
setPayloadCodecRuntime(value: api_device_profile_pb.CodecRuntime): DeviceProfileTemplate;
getPayloadCodecScript(): string;
setPayloadCodecScript(value: string): DeviceProfileTemplate;
getFlushQueueOnActivate(): boolean;
setFlushQueueOnActivate(value: boolean): DeviceProfileTemplate;
getUplinkInterval(): number;
setUplinkInterval(value: number): DeviceProfileTemplate;
getDeviceStatusReqInterval(): number;
setDeviceStatusReqInterval(value: number): DeviceProfileTemplate;
getSupportsOtaa(): boolean;
setSupportsOtaa(value: boolean): DeviceProfileTemplate;
getSupportsClassB(): boolean;
setSupportsClassB(value: boolean): DeviceProfileTemplate;
getSupportsClassC(): boolean;
setSupportsClassC(value: boolean): DeviceProfileTemplate;
getClassBTimeout(): number;
setClassBTimeout(value: number): DeviceProfileTemplate;
getClassBPingSlotPeriod(): number;
setClassBPingSlotPeriod(value: number): DeviceProfileTemplate;
getClassBPingSlotDr(): number;
setClassBPingSlotDr(value: number): DeviceProfileTemplate;
getClassBPingSlotFreq(): number;
setClassBPingSlotFreq(value: number): DeviceProfileTemplate;
getClassCTimeout(): number;
setClassCTimeout(value: number): DeviceProfileTemplate;
getAbpRx1Delay(): number;
setAbpRx1Delay(value: number): DeviceProfileTemplate;
getAbpRx1DrOffset(): number;
setAbpRx1DrOffset(value: number): DeviceProfileTemplate;
getAbpRx2Dr(): number;
setAbpRx2Dr(value: number): DeviceProfileTemplate;
getAbpRx2Freq(): number;
setAbpRx2Freq(value: number): DeviceProfileTemplate;
getTagsMap(): jspb.Map<string, string>;
clearTagsMap(): DeviceProfileTemplate;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): DeviceProfileTemplate.AsObject;
static toObject(includeInstance: boolean, msg: DeviceProfileTemplate): DeviceProfileTemplate.AsObject;
static serializeBinaryToWriter(message: DeviceProfileTemplate, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): DeviceProfileTemplate;
static deserializeBinaryFromReader(message: DeviceProfileTemplate, reader: jspb.BinaryReader): DeviceProfileTemplate;
}
export namespace DeviceProfileTemplate {
export type AsObject = {
id: string,
name: string,
description: string,
vendor: string,
firmware: string,
region: common_common_pb.Region,
macVersion: common_common_pb.MacVersion,
regParamsRevision: common_common_pb.RegParamsRevision,
adrAlgorithmId: string,
payloadCodecRuntime: api_device_profile_pb.CodecRuntime,
payloadCodecScript: string,
flushQueueOnActivate: boolean,
uplinkInterval: number,
deviceStatusReqInterval: number,
supportsOtaa: boolean,
supportsClassB: boolean,
supportsClassC: boolean,
classBTimeout: number,
classBPingSlotPeriod: number,
classBPingSlotDr: number,
classBPingSlotFreq: number,
classCTimeout: number,
abpRx1Delay: number,
abpRx1DrOffset: number,
abpRx2Dr: number,
abpRx2Freq: number,
tagsMap: Array<[string, string]>,
}
}
export class DeviceProfileTemplateListItem extends jspb.Message {
getId(): string;
setId(value: string): DeviceProfileTemplateListItem;
getCreatedAt(): google_protobuf_timestamp_pb.Timestamp | undefined;
setCreatedAt(value?: google_protobuf_timestamp_pb.Timestamp): DeviceProfileTemplateListItem;
hasCreatedAt(): boolean;
clearCreatedAt(): DeviceProfileTemplateListItem;
getUpdatedAt(): google_protobuf_timestamp_pb.Timestamp | undefined;
setUpdatedAt(value?: google_protobuf_timestamp_pb.Timestamp): DeviceProfileTemplateListItem;
hasUpdatedAt(): boolean;
clearUpdatedAt(): DeviceProfileTemplateListItem;
getName(): string;
setName(value: string): DeviceProfileTemplateListItem;
getVendor(): string;
setVendor(value: string): DeviceProfileTemplateListItem;
getFirmware(): string;
setFirmware(value: string): DeviceProfileTemplateListItem;
getRegion(): common_common_pb.Region;
setRegion(value: common_common_pb.Region): DeviceProfileTemplateListItem;
getMacVersion(): common_common_pb.MacVersion;
setMacVersion(value: common_common_pb.MacVersion): DeviceProfileTemplateListItem;
getRegParamsRevision(): common_common_pb.RegParamsRevision;
setRegParamsRevision(value: common_common_pb.RegParamsRevision): DeviceProfileTemplateListItem;
getSupportsOtaa(): boolean;
setSupportsOtaa(value: boolean): DeviceProfileTemplateListItem;
getSupportsClassB(): boolean;
setSupportsClassB(value: boolean): DeviceProfileTemplateListItem;
getSupportsClassC(): boolean;
setSupportsClassC(value: boolean): DeviceProfileTemplateListItem;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): DeviceProfileTemplateListItem.AsObject;
static toObject(includeInstance: boolean, msg: DeviceProfileTemplateListItem): DeviceProfileTemplateListItem.AsObject;
static serializeBinaryToWriter(message: DeviceProfileTemplateListItem, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): DeviceProfileTemplateListItem;
static deserializeBinaryFromReader(message: DeviceProfileTemplateListItem, reader: jspb.BinaryReader): DeviceProfileTemplateListItem;
}
export namespace DeviceProfileTemplateListItem {
export type AsObject = {
id: string,
createdAt?: google_protobuf_timestamp_pb.Timestamp.AsObject,
updatedAt?: google_protobuf_timestamp_pb.Timestamp.AsObject,
name: string,
vendor: string,
firmware: string,
region: common_common_pb.Region,
macVersion: common_common_pb.MacVersion,
regParamsRevision: common_common_pb.RegParamsRevision,
supportsOtaa: boolean,
supportsClassB: boolean,
supportsClassC: boolean,
}
}
export class CreateDeviceProfileTemplateRequest extends jspb.Message {
getDeviceProfileTemplate(): DeviceProfileTemplate | undefined;
setDeviceProfileTemplate(value?: DeviceProfileTemplate): CreateDeviceProfileTemplateRequest;
hasDeviceProfileTemplate(): boolean;
clearDeviceProfileTemplate(): CreateDeviceProfileTemplateRequest;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): CreateDeviceProfileTemplateRequest.AsObject;
static toObject(includeInstance: boolean, msg: CreateDeviceProfileTemplateRequest): CreateDeviceProfileTemplateRequest.AsObject;
static serializeBinaryToWriter(message: CreateDeviceProfileTemplateRequest, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): CreateDeviceProfileTemplateRequest;
static deserializeBinaryFromReader(message: CreateDeviceProfileTemplateRequest, reader: jspb.BinaryReader): CreateDeviceProfileTemplateRequest;
}
export namespace CreateDeviceProfileTemplateRequest {
export type AsObject = {
deviceProfileTemplate?: DeviceProfileTemplate.AsObject,
}
}
export class GetDeviceProfileTemplateRequest extends jspb.Message {
getId(): string;
setId(value: string): GetDeviceProfileTemplateRequest;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): GetDeviceProfileTemplateRequest.AsObject;
static toObject(includeInstance: boolean, msg: GetDeviceProfileTemplateRequest): GetDeviceProfileTemplateRequest.AsObject;
static serializeBinaryToWriter(message: GetDeviceProfileTemplateRequest, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): GetDeviceProfileTemplateRequest;
static deserializeBinaryFromReader(message: GetDeviceProfileTemplateRequest, reader: jspb.BinaryReader): GetDeviceProfileTemplateRequest;
}
export namespace GetDeviceProfileTemplateRequest {
export type AsObject = {
id: string,
}
}
export class GetDeviceProfileTemplateResponse extends jspb.Message {
getDeviceProfileTemplate(): DeviceProfileTemplate | undefined;
setDeviceProfileTemplate(value?: DeviceProfileTemplate): GetDeviceProfileTemplateResponse;
hasDeviceProfileTemplate(): boolean;
clearDeviceProfileTemplate(): GetDeviceProfileTemplateResponse;
getCreatedAt(): google_protobuf_timestamp_pb.Timestamp | undefined;
setCreatedAt(value?: google_protobuf_timestamp_pb.Timestamp): GetDeviceProfileTemplateResponse;
hasCreatedAt(): boolean;
clearCreatedAt(): GetDeviceProfileTemplateResponse;
getUpdatedAt(): google_protobuf_timestamp_pb.Timestamp | undefined;
setUpdatedAt(value?: google_protobuf_timestamp_pb.Timestamp): GetDeviceProfileTemplateResponse;
hasUpdatedAt(): boolean;
clearUpdatedAt(): GetDeviceProfileTemplateResponse;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): GetDeviceProfileTemplateResponse.AsObject;
static toObject(includeInstance: boolean, msg: GetDeviceProfileTemplateResponse): GetDeviceProfileTemplateResponse.AsObject;
static serializeBinaryToWriter(message: GetDeviceProfileTemplateResponse, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): GetDeviceProfileTemplateResponse;
static deserializeBinaryFromReader(message: GetDeviceProfileTemplateResponse, reader: jspb.BinaryReader): GetDeviceProfileTemplateResponse;
}
export namespace GetDeviceProfileTemplateResponse {
export type AsObject = {
deviceProfileTemplate?: DeviceProfileTemplate.AsObject,
createdAt?: google_protobuf_timestamp_pb.Timestamp.AsObject,
updatedAt?: google_protobuf_timestamp_pb.Timestamp.AsObject,
}
}
export class UpdateDeviceProfileTemplateRequest extends jspb.Message {
getDeviceProfileTemplate(): DeviceProfileTemplate | undefined;
setDeviceProfileTemplate(value?: DeviceProfileTemplate): UpdateDeviceProfileTemplateRequest;
hasDeviceProfileTemplate(): boolean;
clearDeviceProfileTemplate(): UpdateDeviceProfileTemplateRequest;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): UpdateDeviceProfileTemplateRequest.AsObject;
static toObject(includeInstance: boolean, msg: UpdateDeviceProfileTemplateRequest): UpdateDeviceProfileTemplateRequest.AsObject;
static serializeBinaryToWriter(message: UpdateDeviceProfileTemplateRequest, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): UpdateDeviceProfileTemplateRequest;
static deserializeBinaryFromReader(message: UpdateDeviceProfileTemplateRequest, reader: jspb.BinaryReader): UpdateDeviceProfileTemplateRequest;
}
export namespace UpdateDeviceProfileTemplateRequest {
export type AsObject = {
deviceProfileTemplate?: DeviceProfileTemplate.AsObject,
}
}
export class DeleteDeviceProfileTemplateRequest extends jspb.Message {
getId(): string;
setId(value: string): DeleteDeviceProfileTemplateRequest;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): DeleteDeviceProfileTemplateRequest.AsObject;
static toObject(includeInstance: boolean, msg: DeleteDeviceProfileTemplateRequest): DeleteDeviceProfileTemplateRequest.AsObject;
static serializeBinaryToWriter(message: DeleteDeviceProfileTemplateRequest, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): DeleteDeviceProfileTemplateRequest;
static deserializeBinaryFromReader(message: DeleteDeviceProfileTemplateRequest, reader: jspb.BinaryReader): DeleteDeviceProfileTemplateRequest;
}
export namespace DeleteDeviceProfileTemplateRequest {
export type AsObject = {
id: string,
}
}
export class ListDeviceProfileTemplatesRequest extends jspb.Message {
getLimit(): number;
setLimit(value: number): ListDeviceProfileTemplatesRequest;
getOffset(): number;
setOffset(value: number): ListDeviceProfileTemplatesRequest;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): ListDeviceProfileTemplatesRequest.AsObject;
static toObject(includeInstance: boolean, msg: ListDeviceProfileTemplatesRequest): ListDeviceProfileTemplatesRequest.AsObject;
static serializeBinaryToWriter(message: ListDeviceProfileTemplatesRequest, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): ListDeviceProfileTemplatesRequest;
static deserializeBinaryFromReader(message: ListDeviceProfileTemplatesRequest, reader: jspb.BinaryReader): ListDeviceProfileTemplatesRequest;
}
export namespace ListDeviceProfileTemplatesRequest {
export type AsObject = {
limit: number,
offset: number,
}
}
export class ListDeviceProfileTemplatesResponse extends jspb.Message {
getTotalCount(): number;
setTotalCount(value: number): ListDeviceProfileTemplatesResponse;
getResultList(): Array<DeviceProfileTemplateListItem>;
setResultList(value: Array<DeviceProfileTemplateListItem>): ListDeviceProfileTemplatesResponse;
clearResultList(): ListDeviceProfileTemplatesResponse;
addResult(value?: DeviceProfileTemplateListItem, index?: number): DeviceProfileTemplateListItem;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): ListDeviceProfileTemplatesResponse.AsObject;
static toObject(includeInstance: boolean, msg: ListDeviceProfileTemplatesResponse): ListDeviceProfileTemplatesResponse.AsObject;
static serializeBinaryToWriter(message: ListDeviceProfileTemplatesResponse, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): ListDeviceProfileTemplatesResponse;
static deserializeBinaryFromReader(message: ListDeviceProfileTemplatesResponse, reader: jspb.BinaryReader): ListDeviceProfileTemplatesResponse;
}
export namespace ListDeviceProfileTemplatesResponse {
export type AsObject = {
totalCount: number,
resultList: Array<DeviceProfileTemplateListItem.AsObject>,
}
}

File diff suppressed because it is too large Load Diff

View File

@ -11,15 +11,15 @@ export class UplinkFrameLog extends jspb.Message {
getPhyPayload_asB64(): string;
setPhyPayload(value: Uint8Array | string): UplinkFrameLog;
getTxInfo(): gw_gw_pb.UplinkTXInfo | undefined;
setTxInfo(value?: gw_gw_pb.UplinkTXInfo): UplinkFrameLog;
getTxInfo(): gw_gw_pb.UplinkTxInfo | undefined;
setTxInfo(value?: gw_gw_pb.UplinkTxInfo): UplinkFrameLog;
hasTxInfo(): boolean;
clearTxInfo(): UplinkFrameLog;
getRxInfoList(): Array<gw_gw_pb.UplinkRXInfo>;
setRxInfoList(value: Array<gw_gw_pb.UplinkRXInfo>): UplinkFrameLog;
getRxInfoList(): Array<gw_gw_pb.UplinkRxInfo>;
setRxInfoList(value: Array<gw_gw_pb.UplinkRxInfo>): UplinkFrameLog;
clearRxInfoList(): UplinkFrameLog;
addRxInfo(value?: gw_gw_pb.UplinkRXInfo, index?: number): gw_gw_pb.UplinkRXInfo;
addRxInfo(value?: gw_gw_pb.UplinkRxInfo, index?: number): gw_gw_pb.UplinkRxInfo;
getMType(): common_common_pb.MType;
setMType(value: common_common_pb.MType): UplinkFrameLog;
@ -46,8 +46,8 @@ export class UplinkFrameLog extends jspb.Message {
export namespace UplinkFrameLog {
export type AsObject = {
phyPayload: Uint8Array | string,
txInfo?: gw_gw_pb.UplinkTXInfo.AsObject,
rxInfoList: Array<gw_gw_pb.UplinkRXInfo.AsObject>,
txInfo?: gw_gw_pb.UplinkTxInfo.AsObject,
rxInfoList: Array<gw_gw_pb.UplinkRxInfo.AsObject>,
mType: common_common_pb.MType,
devAddr: string,
devEui: string,
@ -66,13 +66,13 @@ export class DownlinkFrameLog extends jspb.Message {
getPhyPayload_asB64(): string;
setPhyPayload(value: Uint8Array | string): DownlinkFrameLog;
getTxInfo(): gw_gw_pb.DownlinkTXInfo | undefined;
setTxInfo(value?: gw_gw_pb.DownlinkTXInfo): DownlinkFrameLog;
getTxInfo(): gw_gw_pb.DownlinkTxInfo | undefined;
setTxInfo(value?: gw_gw_pb.DownlinkTxInfo): DownlinkFrameLog;
hasTxInfo(): boolean;
clearTxInfo(): DownlinkFrameLog;
getDownlinkId(): string;
setDownlinkId(value: string): DownlinkFrameLog;
getDownlinkId(): number;
setDownlinkId(value: number): DownlinkFrameLog;
getGatewayId(): string;
setGatewayId(value: string): DownlinkFrameLog;
@ -98,8 +98,8 @@ export namespace DownlinkFrameLog {
export type AsObject = {
time?: google_protobuf_timestamp_pb.Timestamp.AsObject,
phyPayload: Uint8Array | string,
txInfo?: gw_gw_pb.DownlinkTXInfo.AsObject,
downlinkId: string,
txInfo?: gw_gw_pb.DownlinkTxInfo.AsObject,
downlinkId: number,
gatewayId: string,
mType: common_common_pb.MType,
devAddr: string,

View File

@ -105,9 +105,9 @@ proto.api.UplinkFrameLog.prototype.toObject = function(opt_includeInstance) {
proto.api.UplinkFrameLog.toObject = function(includeInstance, msg) {
var f, obj = {
phyPayload: msg.getPhyPayload_asB64(),
txInfo: (f = msg.getTxInfo()) && gw_gw_pb.UplinkTXInfo.toObject(includeInstance, f),
txInfo: (f = msg.getTxInfo()) && gw_gw_pb.UplinkTxInfo.toObject(includeInstance, f),
rxInfoList: jspb.Message.toObjectList(msg.getRxInfoList(),
gw_gw_pb.UplinkRXInfo.toObject, includeInstance),
gw_gw_pb.UplinkRxInfo.toObject, includeInstance),
mType: jspb.Message.getFieldWithDefault(msg, 4, 0),
devAddr: jspb.Message.getFieldWithDefault(msg, 5, ""),
devEui: jspb.Message.getFieldWithDefault(msg, 6, ""),
@ -153,13 +153,13 @@ proto.api.UplinkFrameLog.deserializeBinaryFromReader = function(msg, reader) {
msg.setPhyPayload(value);
break;
case 2:
var value = new gw_gw_pb.UplinkTXInfo;
reader.readMessage(value,gw_gw_pb.UplinkTXInfo.deserializeBinaryFromReader);
var value = new gw_gw_pb.UplinkTxInfo;
reader.readMessage(value,gw_gw_pb.UplinkTxInfo.deserializeBinaryFromReader);
msg.setTxInfo(value);
break;
case 3:
var value = new gw_gw_pb.UplinkRXInfo;
reader.readMessage(value,gw_gw_pb.UplinkRXInfo.deserializeBinaryFromReader);
var value = new gw_gw_pb.UplinkRxInfo;
reader.readMessage(value,gw_gw_pb.UplinkRxInfo.deserializeBinaryFromReader);
msg.addRxInfo(value);
break;
case 4:
@ -220,7 +220,7 @@ proto.api.UplinkFrameLog.serializeBinaryToWriter = function(message, writer) {
writer.writeMessage(
2,
f,
gw_gw_pb.UplinkTXInfo.serializeBinaryToWriter
gw_gw_pb.UplinkTxInfo.serializeBinaryToWriter
);
}
f = message.getRxInfoList();
@ -228,7 +228,7 @@ proto.api.UplinkFrameLog.serializeBinaryToWriter = function(message, writer) {
writer.writeRepeatedMessage(
3,
f,
gw_gw_pb.UplinkRXInfo.serializeBinaryToWriter
gw_gw_pb.UplinkRxInfo.serializeBinaryToWriter
);
}
f = message.getMType();
@ -306,17 +306,17 @@ proto.api.UplinkFrameLog.prototype.setPhyPayload = function(value) {
/**
* optional gw.UplinkTXInfo tx_info = 2;
* @return {?proto.gw.UplinkTXInfo}
* optional gw.UplinkTxInfo tx_info = 2;
* @return {?proto.gw.UplinkTxInfo}
*/
proto.api.UplinkFrameLog.prototype.getTxInfo = function() {
return /** @type{?proto.gw.UplinkTXInfo} */ (
jspb.Message.getWrapperField(this, gw_gw_pb.UplinkTXInfo, 2));
return /** @type{?proto.gw.UplinkTxInfo} */ (
jspb.Message.getWrapperField(this, gw_gw_pb.UplinkTxInfo, 2));
};
/**
* @param {?proto.gw.UplinkTXInfo|undefined} value
* @param {?proto.gw.UplinkTxInfo|undefined} value
* @return {!proto.api.UplinkFrameLog} returns this
*/
proto.api.UplinkFrameLog.prototype.setTxInfo = function(value) {
@ -343,17 +343,17 @@ proto.api.UplinkFrameLog.prototype.hasTxInfo = function() {
/**
* repeated gw.UplinkRXInfo rx_info = 3;
* @return {!Array<!proto.gw.UplinkRXInfo>}
* repeated gw.UplinkRxInfo rx_info = 3;
* @return {!Array<!proto.gw.UplinkRxInfo>}
*/
proto.api.UplinkFrameLog.prototype.getRxInfoList = function() {
return /** @type{!Array<!proto.gw.UplinkRXInfo>} */ (
jspb.Message.getRepeatedWrapperField(this, gw_gw_pb.UplinkRXInfo, 3));
return /** @type{!Array<!proto.gw.UplinkRxInfo>} */ (
jspb.Message.getRepeatedWrapperField(this, gw_gw_pb.UplinkRxInfo, 3));
};
/**
* @param {!Array<!proto.gw.UplinkRXInfo>} value
* @param {!Array<!proto.gw.UplinkRxInfo>} value
* @return {!proto.api.UplinkFrameLog} returns this
*/
proto.api.UplinkFrameLog.prototype.setRxInfoList = function(value) {
@ -362,12 +362,12 @@ proto.api.UplinkFrameLog.prototype.setRxInfoList = function(value) {
/**
* @param {!proto.gw.UplinkRXInfo=} opt_value
* @param {!proto.gw.UplinkRxInfo=} opt_value
* @param {number=} opt_index
* @return {!proto.gw.UplinkRXInfo}
* @return {!proto.gw.UplinkRxInfo}
*/
proto.api.UplinkFrameLog.prototype.addRxInfo = function(opt_value, opt_index) {
return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.gw.UplinkRXInfo, opt_index);
return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.gw.UplinkRxInfo, opt_index);
};
@ -505,8 +505,8 @@ proto.api.DownlinkFrameLog.toObject = function(includeInstance, msg) {
var f, obj = {
time: (f = msg.getTime()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),
phyPayload: msg.getPhyPayload_asB64(),
txInfo: (f = msg.getTxInfo()) && gw_gw_pb.DownlinkTXInfo.toObject(includeInstance, f),
downlinkId: jspb.Message.getFieldWithDefault(msg, 4, ""),
txInfo: (f = msg.getTxInfo()) && gw_gw_pb.DownlinkTxInfo.toObject(includeInstance, f),
downlinkId: jspb.Message.getFieldWithDefault(msg, 4, 0),
gatewayId: jspb.Message.getFieldWithDefault(msg, 5, ""),
mType: jspb.Message.getFieldWithDefault(msg, 6, 0),
devAddr: jspb.Message.getFieldWithDefault(msg, 7, ""),
@ -557,12 +557,12 @@ proto.api.DownlinkFrameLog.deserializeBinaryFromReader = function(msg, reader) {
msg.setPhyPayload(value);
break;
case 3:
var value = new gw_gw_pb.DownlinkTXInfo;
reader.readMessage(value,gw_gw_pb.DownlinkTXInfo.deserializeBinaryFromReader);
var value = new gw_gw_pb.DownlinkTxInfo;
reader.readMessage(value,gw_gw_pb.DownlinkTxInfo.deserializeBinaryFromReader);
msg.setTxInfo(value);
break;
case 4:
var value = /** @type {string} */ (reader.readString());
var value = /** @type {number} */ (reader.readUint32());
msg.setDownlinkId(value);
break;
case 5:
@ -630,12 +630,12 @@ proto.api.DownlinkFrameLog.serializeBinaryToWriter = function(message, writer) {
writer.writeMessage(
3,
f,
gw_gw_pb.DownlinkTXInfo.serializeBinaryToWriter
gw_gw_pb.DownlinkTxInfo.serializeBinaryToWriter
);
}
f = message.getDownlinkId();
if (f.length > 0) {
writer.writeString(
if (f !== 0) {
writer.writeUint32(
4,
f
);
@ -751,17 +751,17 @@ proto.api.DownlinkFrameLog.prototype.setPhyPayload = function(value) {
/**
* optional gw.DownlinkTXInfo tx_info = 3;
* @return {?proto.gw.DownlinkTXInfo}
* optional gw.DownlinkTxInfo tx_info = 3;
* @return {?proto.gw.DownlinkTxInfo}
*/
proto.api.DownlinkFrameLog.prototype.getTxInfo = function() {
return /** @type{?proto.gw.DownlinkTXInfo} */ (
jspb.Message.getWrapperField(this, gw_gw_pb.DownlinkTXInfo, 3));
return /** @type{?proto.gw.DownlinkTxInfo} */ (
jspb.Message.getWrapperField(this, gw_gw_pb.DownlinkTxInfo, 3));
};
/**
* @param {?proto.gw.DownlinkTXInfo|undefined} value
* @param {?proto.gw.DownlinkTxInfo|undefined} value
* @return {!proto.api.DownlinkFrameLog} returns this
*/
proto.api.DownlinkFrameLog.prototype.setTxInfo = function(value) {
@ -788,20 +788,20 @@ proto.api.DownlinkFrameLog.prototype.hasTxInfo = function() {
/**
* optional string downlink_id = 4;
* @return {string}
* optional uint32 downlink_id = 4;
* @return {number}
*/
proto.api.DownlinkFrameLog.prototype.getDownlinkId = function() {
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
};
/**
* @param {string} value
* @param {number} value
* @return {!proto.api.DownlinkFrameLog} returns this
*/
proto.api.DownlinkFrameLog.prototype.setDownlinkId = function(value) {
return jspb.Message.setProto3StringField(this, 4, value);
return jspb.Message.setProto3IntField(this, 4, value);
};

View File

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

6
api/js/Makefile vendored
View File

@ -6,14 +6,11 @@ PROTOC_GEN_GRPC_PATH := ./node_modules/.bin/grpc_tools_node_protoc_plugin
PROTOC_ARGS := -I=/googleapis -I=../proto --plugin=protoc-gen-ts=$(PROTOC_GEN_TS_PATH) --plugin=protoc-gen-grpc=$(PROTOC_GEN_GRPC_PATH) --js_out=import_style=commonjs,binary:. --ts_out=service=grpc-node,mode=grpc-js:.
PROTOC_GRPC_ARGS := $(PROTOC_ARGS) --grpc_out=grpc_js:.
all: requirements version common gw api integration meta google-api
all: requirements common gw api integration meta google-api
requirements:
yarn install
version:
sed -i 's/"version.*/"version": "$(VERSION)",/g' ./package.json
common:
protoc $(PROTOC_ARGS) ../proto/common/common.proto
@ -26,6 +23,7 @@ api:
protoc ${PROTOC_GRPC_ARGS} ../proto/api/tenant.proto
protoc ${PROTOC_GRPC_ARGS} ../proto/api/application.proto
protoc ${PROTOC_GRPC_ARGS} ../proto/api/device_profile.proto
protoc ${PROTOC_GRPC_ARGS} ../proto/api/device_profile_template.proto
protoc ${PROTOC_GRPC_ARGS} ../proto/api/device.proto
protoc ${PROTOC_GRPC_ARGS} ../proto/api/gateway.proto
protoc ${PROTOC_GRPC_ARGS} ../proto/api/frame_log.proto

View File

@ -16,6 +16,9 @@ export class DeviceProfile extends jspb.Message {
getName(): string;
setName(value: string): void;
getDescription(): string;
setDescription(value: string): void;
getRegion(): common_common_pb.RegionMap[keyof common_common_pb.RegionMap];
setRegion(value: common_common_pb.RegionMap[keyof common_common_pb.RegionMap]): void;
@ -31,11 +34,11 @@ export class DeviceProfile extends jspb.Message {
getPayloadCodecRuntime(): CodecRuntimeMap[keyof CodecRuntimeMap];
setPayloadCodecRuntime(value: CodecRuntimeMap[keyof CodecRuntimeMap]): void;
getPayloadEncoderConfig(): string;
setPayloadEncoderConfig(value: string): void;
getPayloadCodecScript(): string;
setPayloadCodecScript(value: string): void;
getPayloadDecoderConfig(): string;
setPayloadDecoderConfig(value: string): void;
getFlushQueueOnActivate(): boolean;
setFlushQueueOnActivate(value: boolean): void;
getUplinkInterval(): number;
setUplinkInterval(value: number): void;
@ -96,13 +99,14 @@ export namespace DeviceProfile {
id: string,
tenantId: string,
name: string,
description: string,
region: common_common_pb.RegionMap[keyof common_common_pb.RegionMap],
macVersion: common_common_pb.MacVersionMap[keyof common_common_pb.MacVersionMap],
regParamsRevision: common_common_pb.RegParamsRevisionMap[keyof common_common_pb.RegParamsRevisionMap],
adrAlgorithmId: string,
payloadCodecRuntime: CodecRuntimeMap[keyof CodecRuntimeMap],
payloadEncoderConfig: string,
payloadDecoderConfig: string,
payloadCodecScript: string,
flushQueueOnActivate: boolean,
uplinkInterval: number,
deviceStatusReqInterval: number,
supportsOtaa: boolean,

View File

@ -74,13 +74,14 @@ proto.api.DeviceProfile.toObject = function(includeInstance, msg) {
id: msg.getId(),
tenantId: msg.getTenantId(),
name: msg.getName(),
description: msg.getDescription(),
region: msg.getRegion(),
macVersion: msg.getMacVersion(),
regParamsRevision: msg.getRegParamsRevision(),
adrAlgorithmId: msg.getAdrAlgorithmId(),
payloadCodecRuntime: msg.getPayloadCodecRuntime(),
payloadEncoderConfig: msg.getPayloadEncoderConfig(),
payloadDecoderConfig: msg.getPayloadDecoderConfig(),
payloadCodecScript: msg.getPayloadCodecScript(),
flushQueueOnActivate: msg.getFlushQueueOnActivate(),
uplinkInterval: msg.getUplinkInterval(),
deviceStatusReqInterval: msg.getDeviceStatusReqInterval(),
supportsOtaa: msg.getSupportsOtaa(),
@ -144,6 +145,10 @@ proto.api.DeviceProfile.deserializeBinaryFromReader = function(msg, reader) {
var value = /** @type {string} */ (reader.readString());
msg.setName(value);
break;
case 26:
var value = /** @type {string} */ (reader.readString());
msg.setDescription(value);
break;
case 4:
var value = /** @type {!proto.common.Region} */ (reader.readEnum());
msg.setRegion(value);
@ -166,11 +171,11 @@ proto.api.DeviceProfile.deserializeBinaryFromReader = function(msg, reader) {
break;
case 9:
var value = /** @type {string} */ (reader.readString());
msg.setPayloadEncoderConfig(value);
msg.setPayloadCodecScript(value);
break;
case 10:
var value = /** @type {string} */ (reader.readString());
msg.setPayloadDecoderConfig(value);
var value = /** @type {boolean} */ (reader.readBool());
msg.setFlushQueueOnActivate(value);
break;
case 11:
var value = /** @type {number} */ (reader.readUint32());
@ -293,6 +298,13 @@ proto.api.DeviceProfile.prototype.serializeBinaryToWriter = function (writer) {
f
);
}
f = this.getDescription();
if (f.length > 0) {
writer.writeString(
26,
f
);
}
f = this.getRegion();
if (f !== 0.0) {
writer.writeEnum(
@ -328,16 +340,16 @@ proto.api.DeviceProfile.prototype.serializeBinaryToWriter = function (writer) {
f
);
}
f = this.getPayloadEncoderConfig();
f = this.getPayloadCodecScript();
if (f.length > 0) {
writer.writeString(
9,
f
);
}
f = this.getPayloadDecoderConfig();
if (f.length > 0) {
writer.writeString(
f = this.getFlushQueueOnActivate();
if (f) {
writer.writeBool(
10,
f
);
@ -501,6 +513,21 @@ proto.api.DeviceProfile.prototype.setName = function(value) {
};
/**
* optional string description = 26;
* @return {string}
*/
proto.api.DeviceProfile.prototype.getDescription = function() {
return /** @type {string} */ (jspb.Message.getFieldProto3(this, 26, ""));
};
/** @param {string} value */
proto.api.DeviceProfile.prototype.setDescription = function(value) {
jspb.Message.setField(this, 26, value);
};
/**
* optional common.Region region = 4;
* @return {!proto.common.Region}
@ -577,31 +604,33 @@ proto.api.DeviceProfile.prototype.setPayloadCodecRuntime = function(value) {
/**
* optional string payload_encoder_config = 9;
* optional string payload_codec_script = 9;
* @return {string}
*/
proto.api.DeviceProfile.prototype.getPayloadEncoderConfig = function() {
proto.api.DeviceProfile.prototype.getPayloadCodecScript = function() {
return /** @type {string} */ (jspb.Message.getFieldProto3(this, 9, ""));
};
/** @param {string} value */
proto.api.DeviceProfile.prototype.setPayloadEncoderConfig = function(value) {
proto.api.DeviceProfile.prototype.setPayloadCodecScript = function(value) {
jspb.Message.setField(this, 9, value);
};
/**
* optional string payload_decoder_config = 10;
* @return {string}
* optional bool flush_queue_on_activate = 10;
* Note that Boolean fields may be set to 0/1 when serialized from a Java server.
* You should avoid comparisons like {@code val === true/false} in those cases.
* @return {boolean}
*/
proto.api.DeviceProfile.prototype.getPayloadDecoderConfig = function() {
return /** @type {string} */ (jspb.Message.getFieldProto3(this, 10, ""));
proto.api.DeviceProfile.prototype.getFlushQueueOnActivate = function() {
return /** @type {boolean} */ (jspb.Message.getFieldProto3(this, 10, false));
};
/** @param {string} value */
proto.api.DeviceProfile.prototype.setPayloadDecoderConfig = function(value) {
/** @param {boolean} value */
proto.api.DeviceProfile.prototype.setFlushQueueOnActivate = function(value) {
jspb.Message.setField(this, 10, value);
};

View File

@ -0,0 +1,45 @@
// GENERATED CODE -- DO NOT EDIT!
// package: api
// file: api/device_profile_template.proto
import * as api_device_profile_template_pb from "../api/device_profile_template_pb";
import * as google_protobuf_empty_pb from "google-protobuf/google/protobuf/empty_pb";
import * as grpc from "@grpc/grpc-js";
interface IDeviceProfileTemplateServiceService extends grpc.ServiceDefinition<grpc.UntypedServiceImplementation> {
create: grpc.MethodDefinition<api_device_profile_template_pb.CreateDeviceProfileTemplateRequest, google_protobuf_empty_pb.Empty>;
get: grpc.MethodDefinition<api_device_profile_template_pb.GetDeviceProfileTemplateRequest, api_device_profile_template_pb.GetDeviceProfileTemplateResponse>;
update: grpc.MethodDefinition<api_device_profile_template_pb.UpdateDeviceProfileTemplateRequest, google_protobuf_empty_pb.Empty>;
delete: grpc.MethodDefinition<api_device_profile_template_pb.DeleteDeviceProfileTemplateRequest, google_protobuf_empty_pb.Empty>;
list: grpc.MethodDefinition<api_device_profile_template_pb.ListDeviceProfileTemplatesRequest, api_device_profile_template_pb.ListDeviceProfileTemplatesResponse>;
}
export const DeviceProfileTemplateServiceService: IDeviceProfileTemplateServiceService;
export interface IDeviceProfileTemplateServiceServer extends grpc.UntypedServiceImplementation {
create: grpc.handleUnaryCall<api_device_profile_template_pb.CreateDeviceProfileTemplateRequest, google_protobuf_empty_pb.Empty>;
get: grpc.handleUnaryCall<api_device_profile_template_pb.GetDeviceProfileTemplateRequest, api_device_profile_template_pb.GetDeviceProfileTemplateResponse>;
update: grpc.handleUnaryCall<api_device_profile_template_pb.UpdateDeviceProfileTemplateRequest, google_protobuf_empty_pb.Empty>;
delete: grpc.handleUnaryCall<api_device_profile_template_pb.DeleteDeviceProfileTemplateRequest, google_protobuf_empty_pb.Empty>;
list: grpc.handleUnaryCall<api_device_profile_template_pb.ListDeviceProfileTemplatesRequest, api_device_profile_template_pb.ListDeviceProfileTemplatesResponse>;
}
export class DeviceProfileTemplateServiceClient extends grpc.Client {
constructor(address: string, credentials: grpc.ChannelCredentials, options?: object);
create(argument: api_device_profile_template_pb.CreateDeviceProfileTemplateRequest, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
create(argument: api_device_profile_template_pb.CreateDeviceProfileTemplateRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
create(argument: api_device_profile_template_pb.CreateDeviceProfileTemplateRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
get(argument: api_device_profile_template_pb.GetDeviceProfileTemplateRequest, callback: grpc.requestCallback<api_device_profile_template_pb.GetDeviceProfileTemplateResponse>): grpc.ClientUnaryCall;
get(argument: api_device_profile_template_pb.GetDeviceProfileTemplateRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<api_device_profile_template_pb.GetDeviceProfileTemplateResponse>): grpc.ClientUnaryCall;
get(argument: api_device_profile_template_pb.GetDeviceProfileTemplateRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<api_device_profile_template_pb.GetDeviceProfileTemplateResponse>): grpc.ClientUnaryCall;
update(argument: api_device_profile_template_pb.UpdateDeviceProfileTemplateRequest, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
update(argument: api_device_profile_template_pb.UpdateDeviceProfileTemplateRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
update(argument: api_device_profile_template_pb.UpdateDeviceProfileTemplateRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
delete(argument: api_device_profile_template_pb.DeleteDeviceProfileTemplateRequest, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
delete(argument: api_device_profile_template_pb.DeleteDeviceProfileTemplateRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
delete(argument: api_device_profile_template_pb.DeleteDeviceProfileTemplateRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
list(argument: api_device_profile_template_pb.ListDeviceProfileTemplatesRequest, callback: grpc.requestCallback<api_device_profile_template_pb.ListDeviceProfileTemplatesResponse>): grpc.ClientUnaryCall;
list(argument: api_device_profile_template_pb.ListDeviceProfileTemplatesRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<api_device_profile_template_pb.ListDeviceProfileTemplatesResponse>): grpc.ClientUnaryCall;
list(argument: api_device_profile_template_pb.ListDeviceProfileTemplatesRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<api_device_profile_template_pb.ListDeviceProfileTemplatesResponse>): grpc.ClientUnaryCall;
}

View File

@ -0,0 +1,164 @@
// GENERATED CODE -- DO NOT EDIT!
'use strict';
var grpc = require('@grpc/grpc-js');
var api_device_profile_template_pb = require('../api/device_profile_template_pb.js');
var google_protobuf_timestamp_pb = require('google-protobuf/google/protobuf/timestamp_pb.js');
var google_protobuf_empty_pb = require('google-protobuf/google/protobuf/empty_pb.js');
var common_common_pb = require('../common/common_pb.js');
var api_device_profile_pb = require('../api/device_profile_pb.js');
function serialize_api_CreateDeviceProfileTemplateRequest(arg) {
if (!(arg instanceof api_device_profile_template_pb.CreateDeviceProfileTemplateRequest)) {
throw new Error('Expected argument of type api.CreateDeviceProfileTemplateRequest');
}
return Buffer.from(arg.serializeBinary());
}
function deserialize_api_CreateDeviceProfileTemplateRequest(buffer_arg) {
return api_device_profile_template_pb.CreateDeviceProfileTemplateRequest.deserializeBinary(new Uint8Array(buffer_arg));
}
function serialize_api_DeleteDeviceProfileTemplateRequest(arg) {
if (!(arg instanceof api_device_profile_template_pb.DeleteDeviceProfileTemplateRequest)) {
throw new Error('Expected argument of type api.DeleteDeviceProfileTemplateRequest');
}
return Buffer.from(arg.serializeBinary());
}
function deserialize_api_DeleteDeviceProfileTemplateRequest(buffer_arg) {
return api_device_profile_template_pb.DeleteDeviceProfileTemplateRequest.deserializeBinary(new Uint8Array(buffer_arg));
}
function serialize_api_GetDeviceProfileTemplateRequest(arg) {
if (!(arg instanceof api_device_profile_template_pb.GetDeviceProfileTemplateRequest)) {
throw new Error('Expected argument of type api.GetDeviceProfileTemplateRequest');
}
return Buffer.from(arg.serializeBinary());
}
function deserialize_api_GetDeviceProfileTemplateRequest(buffer_arg) {
return api_device_profile_template_pb.GetDeviceProfileTemplateRequest.deserializeBinary(new Uint8Array(buffer_arg));
}
function serialize_api_GetDeviceProfileTemplateResponse(arg) {
if (!(arg instanceof api_device_profile_template_pb.GetDeviceProfileTemplateResponse)) {
throw new Error('Expected argument of type api.GetDeviceProfileTemplateResponse');
}
return Buffer.from(arg.serializeBinary());
}
function deserialize_api_GetDeviceProfileTemplateResponse(buffer_arg) {
return api_device_profile_template_pb.GetDeviceProfileTemplateResponse.deserializeBinary(new Uint8Array(buffer_arg));
}
function serialize_api_ListDeviceProfileTemplatesRequest(arg) {
if (!(arg instanceof api_device_profile_template_pb.ListDeviceProfileTemplatesRequest)) {
throw new Error('Expected argument of type api.ListDeviceProfileTemplatesRequest');
}
return Buffer.from(arg.serializeBinary());
}
function deserialize_api_ListDeviceProfileTemplatesRequest(buffer_arg) {
return api_device_profile_template_pb.ListDeviceProfileTemplatesRequest.deserializeBinary(new Uint8Array(buffer_arg));
}
function serialize_api_ListDeviceProfileTemplatesResponse(arg) {
if (!(arg instanceof api_device_profile_template_pb.ListDeviceProfileTemplatesResponse)) {
throw new Error('Expected argument of type api.ListDeviceProfileTemplatesResponse');
}
return Buffer.from(arg.serializeBinary());
}
function deserialize_api_ListDeviceProfileTemplatesResponse(buffer_arg) {
return api_device_profile_template_pb.ListDeviceProfileTemplatesResponse.deserializeBinary(new Uint8Array(buffer_arg));
}
function serialize_api_UpdateDeviceProfileTemplateRequest(arg) {
if (!(arg instanceof api_device_profile_template_pb.UpdateDeviceProfileTemplateRequest)) {
throw new Error('Expected argument of type api.UpdateDeviceProfileTemplateRequest');
}
return Buffer.from(arg.serializeBinary());
}
function deserialize_api_UpdateDeviceProfileTemplateRequest(buffer_arg) {
return api_device_profile_template_pb.UpdateDeviceProfileTemplateRequest.deserializeBinary(new Uint8Array(buffer_arg));
}
function serialize_google_protobuf_Empty(arg) {
if (!(arg instanceof google_protobuf_empty_pb.Empty)) {
throw new Error('Expected argument of type google.protobuf.Empty');
}
return Buffer.from(arg.serializeBinary());
}
function deserialize_google_protobuf_Empty(buffer_arg) {
return google_protobuf_empty_pb.Empty.deserializeBinary(new Uint8Array(buffer_arg));
}
// DeviceProfileTemplateService is the service providing API methods for managing device-profile templates.
var DeviceProfileTemplateServiceService = exports.DeviceProfileTemplateServiceService = {
// Create the given device-profile template.
create: {
path: '/api.DeviceProfileTemplateService/Create',
requestStream: false,
responseStream: false,
requestType: api_device_profile_template_pb.CreateDeviceProfileTemplateRequest,
responseType: google_protobuf_empty_pb.Empty,
requestSerialize: serialize_api_CreateDeviceProfileTemplateRequest,
requestDeserialize: deserialize_api_CreateDeviceProfileTemplateRequest,
responseSerialize: serialize_google_protobuf_Empty,
responseDeserialize: deserialize_google_protobuf_Empty,
},
// Get the device-profile template for the given ID.
get: {
path: '/api.DeviceProfileTemplateService/Get',
requestStream: false,
responseStream: false,
requestType: api_device_profile_template_pb.GetDeviceProfileTemplateRequest,
responseType: api_device_profile_template_pb.GetDeviceProfileTemplateResponse,
requestSerialize: serialize_api_GetDeviceProfileTemplateRequest,
requestDeserialize: deserialize_api_GetDeviceProfileTemplateRequest,
responseSerialize: serialize_api_GetDeviceProfileTemplateResponse,
responseDeserialize: deserialize_api_GetDeviceProfileTemplateResponse,
},
// Update the given device-profile template.
update: {
path: '/api.DeviceProfileTemplateService/Update',
requestStream: false,
responseStream: false,
requestType: api_device_profile_template_pb.UpdateDeviceProfileTemplateRequest,
responseType: google_protobuf_empty_pb.Empty,
requestSerialize: serialize_api_UpdateDeviceProfileTemplateRequest,
requestDeserialize: deserialize_api_UpdateDeviceProfileTemplateRequest,
responseSerialize: serialize_google_protobuf_Empty,
responseDeserialize: deserialize_google_protobuf_Empty,
},
// Delete the device-profile template with the given ID.
delete: {
path: '/api.DeviceProfileTemplateService/Delete',
requestStream: false,
responseStream: false,
requestType: api_device_profile_template_pb.DeleteDeviceProfileTemplateRequest,
responseType: google_protobuf_empty_pb.Empty,
requestSerialize: serialize_api_DeleteDeviceProfileTemplateRequest,
requestDeserialize: deserialize_api_DeleteDeviceProfileTemplateRequest,
responseSerialize: serialize_google_protobuf_Empty,
responseDeserialize: deserialize_google_protobuf_Empty,
},
// List the available device-profile templates.
list: {
path: '/api.DeviceProfileTemplateService/List',
requestStream: false,
responseStream: false,
requestType: api_device_profile_template_pb.ListDeviceProfileTemplatesRequest,
responseType: api_device_profile_template_pb.ListDeviceProfileTemplatesResponse,
requestSerialize: serialize_api_ListDeviceProfileTemplatesRequest,
requestDeserialize: deserialize_api_ListDeviceProfileTemplatesRequest,
responseSerialize: serialize_api_ListDeviceProfileTemplatesResponse,
responseDeserialize: deserialize_api_ListDeviceProfileTemplatesResponse,
},
};
exports.DeviceProfileTemplateServiceClient = grpc.makeGenericClientConstructor(DeviceProfileTemplateServiceService);

View File

@ -0,0 +1,368 @@
// package: api
// file: api/device_profile_template.proto
import * as jspb from "google-protobuf";
import * as google_protobuf_timestamp_pb from "google-protobuf/google/protobuf/timestamp_pb";
import * as google_protobuf_empty_pb from "google-protobuf/google/protobuf/empty_pb";
import * as common_common_pb from "../common/common_pb";
import * as api_device_profile_pb from "../api/device_profile_pb";
export class DeviceProfileTemplate extends jspb.Message {
getId(): string;
setId(value: string): void;
getName(): string;
setName(value: string): void;
getDescription(): string;
setDescription(value: string): void;
getVendor(): string;
setVendor(value: string): void;
getFirmware(): string;
setFirmware(value: string): void;
getRegion(): common_common_pb.RegionMap[keyof common_common_pb.RegionMap];
setRegion(value: common_common_pb.RegionMap[keyof common_common_pb.RegionMap]): void;
getMacVersion(): common_common_pb.MacVersionMap[keyof common_common_pb.MacVersionMap];
setMacVersion(value: common_common_pb.MacVersionMap[keyof common_common_pb.MacVersionMap]): void;
getRegParamsRevision(): common_common_pb.RegParamsRevisionMap[keyof common_common_pb.RegParamsRevisionMap];
setRegParamsRevision(value: common_common_pb.RegParamsRevisionMap[keyof common_common_pb.RegParamsRevisionMap]): void;
getAdrAlgorithmId(): string;
setAdrAlgorithmId(value: string): void;
getPayloadCodecRuntime(): api_device_profile_pb.CodecRuntimeMap[keyof api_device_profile_pb.CodecRuntimeMap];
setPayloadCodecRuntime(value: api_device_profile_pb.CodecRuntimeMap[keyof api_device_profile_pb.CodecRuntimeMap]): void;
getPayloadCodecScript(): string;
setPayloadCodecScript(value: string): void;
getFlushQueueOnActivate(): boolean;
setFlushQueueOnActivate(value: boolean): void;
getUplinkInterval(): number;
setUplinkInterval(value: number): void;
getDeviceStatusReqInterval(): number;
setDeviceStatusReqInterval(value: number): void;
getSupportsOtaa(): boolean;
setSupportsOtaa(value: boolean): void;
getSupportsClassB(): boolean;
setSupportsClassB(value: boolean): void;
getSupportsClassC(): boolean;
setSupportsClassC(value: boolean): void;
getClassBTimeout(): number;
setClassBTimeout(value: number): void;
getClassBPingSlotPeriod(): number;
setClassBPingSlotPeriod(value: number): void;
getClassBPingSlotDr(): number;
setClassBPingSlotDr(value: number): void;
getClassBPingSlotFreq(): number;
setClassBPingSlotFreq(value: number): void;
getClassCTimeout(): number;
setClassCTimeout(value: number): void;
getAbpRx1Delay(): number;
setAbpRx1Delay(value: number): void;
getAbpRx1DrOffset(): number;
setAbpRx1DrOffset(value: number): void;
getAbpRx2Dr(): number;
setAbpRx2Dr(value: number): void;
getAbpRx2Freq(): number;
setAbpRx2Freq(value: number): void;
getTagsMap(): jspb.Map<string, string>;
clearTagsMap(): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): DeviceProfileTemplate.AsObject;
static toObject(includeInstance: boolean, msg: DeviceProfileTemplate): DeviceProfileTemplate.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: DeviceProfileTemplate, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): DeviceProfileTemplate;
static deserializeBinaryFromReader(message: DeviceProfileTemplate, reader: jspb.BinaryReader): DeviceProfileTemplate;
}
export namespace DeviceProfileTemplate {
export type AsObject = {
id: string,
name: string,
description: string,
vendor: string,
firmware: string,
region: common_common_pb.RegionMap[keyof common_common_pb.RegionMap],
macVersion: common_common_pb.MacVersionMap[keyof common_common_pb.MacVersionMap],
regParamsRevision: common_common_pb.RegParamsRevisionMap[keyof common_common_pb.RegParamsRevisionMap],
adrAlgorithmId: string,
payloadCodecRuntime: api_device_profile_pb.CodecRuntimeMap[keyof api_device_profile_pb.CodecRuntimeMap],
payloadCodecScript: string,
flushQueueOnActivate: boolean,
uplinkInterval: number,
deviceStatusReqInterval: number,
supportsOtaa: boolean,
supportsClassB: boolean,
supportsClassC: boolean,
classBTimeout: number,
classBPingSlotPeriod: number,
classBPingSlotDr: number,
classBPingSlotFreq: number,
classCTimeout: number,
abpRx1Delay: number,
abpRx1DrOffset: number,
abpRx2Dr: number,
abpRx2Freq: number,
tagsMap: Array<[string, string]>,
}
}
export class DeviceProfileTemplateListItem extends jspb.Message {
getId(): string;
setId(value: string): void;
hasCreatedAt(): boolean;
clearCreatedAt(): void;
getCreatedAt(): google_protobuf_timestamp_pb.Timestamp | undefined;
setCreatedAt(value?: google_protobuf_timestamp_pb.Timestamp): void;
hasUpdatedAt(): boolean;
clearUpdatedAt(): void;
getUpdatedAt(): google_protobuf_timestamp_pb.Timestamp | undefined;
setUpdatedAt(value?: google_protobuf_timestamp_pb.Timestamp): void;
getName(): string;
setName(value: string): void;
getVendor(): string;
setVendor(value: string): void;
getFirmware(): string;
setFirmware(value: string): void;
getRegion(): common_common_pb.RegionMap[keyof common_common_pb.RegionMap];
setRegion(value: common_common_pb.RegionMap[keyof common_common_pb.RegionMap]): void;
getMacVersion(): common_common_pb.MacVersionMap[keyof common_common_pb.MacVersionMap];
setMacVersion(value: common_common_pb.MacVersionMap[keyof common_common_pb.MacVersionMap]): void;
getRegParamsRevision(): common_common_pb.RegParamsRevisionMap[keyof common_common_pb.RegParamsRevisionMap];
setRegParamsRevision(value: common_common_pb.RegParamsRevisionMap[keyof common_common_pb.RegParamsRevisionMap]): void;
getSupportsOtaa(): boolean;
setSupportsOtaa(value: boolean): void;
getSupportsClassB(): boolean;
setSupportsClassB(value: boolean): void;
getSupportsClassC(): boolean;
setSupportsClassC(value: boolean): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): DeviceProfileTemplateListItem.AsObject;
static toObject(includeInstance: boolean, msg: DeviceProfileTemplateListItem): DeviceProfileTemplateListItem.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: DeviceProfileTemplateListItem, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): DeviceProfileTemplateListItem;
static deserializeBinaryFromReader(message: DeviceProfileTemplateListItem, reader: jspb.BinaryReader): DeviceProfileTemplateListItem;
}
export namespace DeviceProfileTemplateListItem {
export type AsObject = {
id: string,
createdAt?: google_protobuf_timestamp_pb.Timestamp.AsObject,
updatedAt?: google_protobuf_timestamp_pb.Timestamp.AsObject,
name: string,
vendor: string,
firmware: string,
region: common_common_pb.RegionMap[keyof common_common_pb.RegionMap],
macVersion: common_common_pb.MacVersionMap[keyof common_common_pb.MacVersionMap],
regParamsRevision: common_common_pb.RegParamsRevisionMap[keyof common_common_pb.RegParamsRevisionMap],
supportsOtaa: boolean,
supportsClassB: boolean,
supportsClassC: boolean,
}
}
export class CreateDeviceProfileTemplateRequest extends jspb.Message {
hasDeviceProfileTemplate(): boolean;
clearDeviceProfileTemplate(): void;
getDeviceProfileTemplate(): DeviceProfileTemplate | undefined;
setDeviceProfileTemplate(value?: DeviceProfileTemplate): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): CreateDeviceProfileTemplateRequest.AsObject;
static toObject(includeInstance: boolean, msg: CreateDeviceProfileTemplateRequest): CreateDeviceProfileTemplateRequest.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: CreateDeviceProfileTemplateRequest, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): CreateDeviceProfileTemplateRequest;
static deserializeBinaryFromReader(message: CreateDeviceProfileTemplateRequest, reader: jspb.BinaryReader): CreateDeviceProfileTemplateRequest;
}
export namespace CreateDeviceProfileTemplateRequest {
export type AsObject = {
deviceProfileTemplate?: DeviceProfileTemplate.AsObject,
}
}
export class GetDeviceProfileTemplateRequest extends jspb.Message {
getId(): string;
setId(value: string): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): GetDeviceProfileTemplateRequest.AsObject;
static toObject(includeInstance: boolean, msg: GetDeviceProfileTemplateRequest): GetDeviceProfileTemplateRequest.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: GetDeviceProfileTemplateRequest, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): GetDeviceProfileTemplateRequest;
static deserializeBinaryFromReader(message: GetDeviceProfileTemplateRequest, reader: jspb.BinaryReader): GetDeviceProfileTemplateRequest;
}
export namespace GetDeviceProfileTemplateRequest {
export type AsObject = {
id: string,
}
}
export class GetDeviceProfileTemplateResponse extends jspb.Message {
hasDeviceProfileTemplate(): boolean;
clearDeviceProfileTemplate(): void;
getDeviceProfileTemplate(): DeviceProfileTemplate | undefined;
setDeviceProfileTemplate(value?: DeviceProfileTemplate): void;
hasCreatedAt(): boolean;
clearCreatedAt(): void;
getCreatedAt(): google_protobuf_timestamp_pb.Timestamp | undefined;
setCreatedAt(value?: google_protobuf_timestamp_pb.Timestamp): void;
hasUpdatedAt(): boolean;
clearUpdatedAt(): void;
getUpdatedAt(): google_protobuf_timestamp_pb.Timestamp | undefined;
setUpdatedAt(value?: google_protobuf_timestamp_pb.Timestamp): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): GetDeviceProfileTemplateResponse.AsObject;
static toObject(includeInstance: boolean, msg: GetDeviceProfileTemplateResponse): GetDeviceProfileTemplateResponse.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: GetDeviceProfileTemplateResponse, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): GetDeviceProfileTemplateResponse;
static deserializeBinaryFromReader(message: GetDeviceProfileTemplateResponse, reader: jspb.BinaryReader): GetDeviceProfileTemplateResponse;
}
export namespace GetDeviceProfileTemplateResponse {
export type AsObject = {
deviceProfileTemplate?: DeviceProfileTemplate.AsObject,
createdAt?: google_protobuf_timestamp_pb.Timestamp.AsObject,
updatedAt?: google_protobuf_timestamp_pb.Timestamp.AsObject,
}
}
export class UpdateDeviceProfileTemplateRequest extends jspb.Message {
hasDeviceProfileTemplate(): boolean;
clearDeviceProfileTemplate(): void;
getDeviceProfileTemplate(): DeviceProfileTemplate | undefined;
setDeviceProfileTemplate(value?: DeviceProfileTemplate): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): UpdateDeviceProfileTemplateRequest.AsObject;
static toObject(includeInstance: boolean, msg: UpdateDeviceProfileTemplateRequest): UpdateDeviceProfileTemplateRequest.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: UpdateDeviceProfileTemplateRequest, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): UpdateDeviceProfileTemplateRequest;
static deserializeBinaryFromReader(message: UpdateDeviceProfileTemplateRequest, reader: jspb.BinaryReader): UpdateDeviceProfileTemplateRequest;
}
export namespace UpdateDeviceProfileTemplateRequest {
export type AsObject = {
deviceProfileTemplate?: DeviceProfileTemplate.AsObject,
}
}
export class DeleteDeviceProfileTemplateRequest extends jspb.Message {
getId(): string;
setId(value: string): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): DeleteDeviceProfileTemplateRequest.AsObject;
static toObject(includeInstance: boolean, msg: DeleteDeviceProfileTemplateRequest): DeleteDeviceProfileTemplateRequest.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: DeleteDeviceProfileTemplateRequest, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): DeleteDeviceProfileTemplateRequest;
static deserializeBinaryFromReader(message: DeleteDeviceProfileTemplateRequest, reader: jspb.BinaryReader): DeleteDeviceProfileTemplateRequest;
}
export namespace DeleteDeviceProfileTemplateRequest {
export type AsObject = {
id: string,
}
}
export class ListDeviceProfileTemplatesRequest extends jspb.Message {
getLimit(): number;
setLimit(value: number): void;
getOffset(): number;
setOffset(value: number): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): ListDeviceProfileTemplatesRequest.AsObject;
static toObject(includeInstance: boolean, msg: ListDeviceProfileTemplatesRequest): ListDeviceProfileTemplatesRequest.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: ListDeviceProfileTemplatesRequest, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): ListDeviceProfileTemplatesRequest;
static deserializeBinaryFromReader(message: ListDeviceProfileTemplatesRequest, reader: jspb.BinaryReader): ListDeviceProfileTemplatesRequest;
}
export namespace ListDeviceProfileTemplatesRequest {
export type AsObject = {
limit: number,
offset: number,
}
}
export class ListDeviceProfileTemplatesResponse extends jspb.Message {
getTotalCount(): number;
setTotalCount(value: number): void;
clearResultList(): void;
getResultList(): Array<DeviceProfileTemplateListItem>;
setResultList(value: Array<DeviceProfileTemplateListItem>): void;
addResult(value?: DeviceProfileTemplateListItem, index?: number): DeviceProfileTemplateListItem;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): ListDeviceProfileTemplatesResponse.AsObject;
static toObject(includeInstance: boolean, msg: ListDeviceProfileTemplatesResponse): ListDeviceProfileTemplatesResponse.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: ListDeviceProfileTemplatesResponse, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): ListDeviceProfileTemplatesResponse;
static deserializeBinaryFromReader(message: ListDeviceProfileTemplatesResponse, reader: jspb.BinaryReader): ListDeviceProfileTemplatesResponse;
}
export namespace ListDeviceProfileTemplatesResponse {
export type AsObject = {
totalCount: number,
resultList: Array<DeviceProfileTemplateListItem.AsObject>,
}
}

2712
api/js/api/device_profile_template_pb.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -14,13 +14,13 @@ export class UplinkFrameLog extends jspb.Message {
hasTxInfo(): boolean;
clearTxInfo(): void;
getTxInfo(): gw_gw_pb.UplinkTXInfo | undefined;
setTxInfo(value?: gw_gw_pb.UplinkTXInfo): void;
getTxInfo(): gw_gw_pb.UplinkTxInfo | undefined;
setTxInfo(value?: gw_gw_pb.UplinkTxInfo): void;
clearRxInfoList(): void;
getRxInfoList(): Array<gw_gw_pb.UplinkRXInfo>;
setRxInfoList(value: Array<gw_gw_pb.UplinkRXInfo>): void;
addRxInfo(value?: gw_gw_pb.UplinkRXInfo, index?: number): gw_gw_pb.UplinkRXInfo;
getRxInfoList(): Array<gw_gw_pb.UplinkRxInfo>;
setRxInfoList(value: Array<gw_gw_pb.UplinkRxInfo>): void;
addRxInfo(value?: gw_gw_pb.UplinkRxInfo, index?: number): gw_gw_pb.UplinkRxInfo;
getMType(): common_common_pb.MTypeMap[keyof common_common_pb.MTypeMap];
setMType(value: common_common_pb.MTypeMap[keyof common_common_pb.MTypeMap]): void;
@ -49,8 +49,8 @@ export class UplinkFrameLog extends jspb.Message {
export namespace UplinkFrameLog {
export type AsObject = {
phyPayload: Uint8Array | string,
txInfo?: gw_gw_pb.UplinkTXInfo.AsObject,
rxInfoList: Array<gw_gw_pb.UplinkRXInfo.AsObject>,
txInfo?: gw_gw_pb.UplinkTxInfo.AsObject,
rxInfoList: Array<gw_gw_pb.UplinkRxInfo.AsObject>,
mType: common_common_pb.MTypeMap[keyof common_common_pb.MTypeMap],
devAddr: string,
devEui: string,
@ -71,11 +71,11 @@ export class DownlinkFrameLog extends jspb.Message {
hasTxInfo(): boolean;
clearTxInfo(): void;
getTxInfo(): gw_gw_pb.DownlinkTXInfo | undefined;
setTxInfo(value?: gw_gw_pb.DownlinkTXInfo): void;
getTxInfo(): gw_gw_pb.DownlinkTxInfo | undefined;
setTxInfo(value?: gw_gw_pb.DownlinkTxInfo): void;
getDownlinkId(): string;
setDownlinkId(value: string): void;
getDownlinkId(): number;
setDownlinkId(value: number): void;
getGatewayId(): string;
setGatewayId(value: string): void;
@ -103,8 +103,8 @@ export namespace DownlinkFrameLog {
export type AsObject = {
time?: google_protobuf_timestamp_pb.Timestamp.AsObject,
phyPayload: Uint8Array | string,
txInfo?: gw_gw_pb.DownlinkTXInfo.AsObject,
downlinkId: string,
txInfo?: gw_gw_pb.DownlinkTxInfo.AsObject,
downlinkId: number,
gatewayId: string,
mType: common_common_pb.MTypeMap[keyof common_common_pb.MTypeMap],
devAddr: string,

View File

@ -68,9 +68,9 @@ proto.api.UplinkFrameLog.prototype.toObject = function(opt_includeInstance) {
proto.api.UplinkFrameLog.toObject = function(includeInstance, msg) {
var f, obj = {
phyPayload: msg.getPhyPayload_asB64(),
txInfo: (f = msg.getTxInfo()) && gw_gw_pb.UplinkTXInfo.toObject(includeInstance, f),
txInfo: (f = msg.getTxInfo()) && gw_gw_pb.UplinkTxInfo.toObject(includeInstance, f),
rxInfoList: jspb.Message.toObjectList(msg.getRxInfoList(),
gw_gw_pb.UplinkRXInfo.toObject, includeInstance),
gw_gw_pb.UplinkRxInfo.toObject, includeInstance),
mType: msg.getMType(),
devAddr: msg.getDevAddr(),
devEui: msg.getDevEui(),
@ -116,13 +116,13 @@ proto.api.UplinkFrameLog.deserializeBinaryFromReader = function(msg, reader) {
msg.setPhyPayload(value);
break;
case 2:
var value = new gw_gw_pb.UplinkTXInfo;
reader.readMessage(value,gw_gw_pb.UplinkTXInfo.deserializeBinaryFromReader);
var value = new gw_gw_pb.UplinkTxInfo;
reader.readMessage(value,gw_gw_pb.UplinkTxInfo.deserializeBinaryFromReader);
msg.setTxInfo(value);
break;
case 3:
var value = new gw_gw_pb.UplinkRXInfo;
reader.readMessage(value,gw_gw_pb.UplinkRXInfo.deserializeBinaryFromReader);
var value = new gw_gw_pb.UplinkRxInfo;
reader.readMessage(value,gw_gw_pb.UplinkRxInfo.deserializeBinaryFromReader);
msg.getRxInfoList().push(value);
msg.setRxInfoList(msg.getRxInfoList());
break;
@ -193,7 +193,7 @@ proto.api.UplinkFrameLog.prototype.serializeBinaryToWriter = function (writer) {
writer.writeMessage(
2,
f,
gw_gw_pb.UplinkTXInfo.serializeBinaryToWriter
gw_gw_pb.UplinkTxInfo.serializeBinaryToWriter
);
}
f = this.getRxInfoList();
@ -201,7 +201,7 @@ proto.api.UplinkFrameLog.prototype.serializeBinaryToWriter = function (writer) {
writer.writeRepeatedMessage(
3,
f,
gw_gw_pb.UplinkRXInfo.serializeBinaryToWriter
gw_gw_pb.UplinkRxInfo.serializeBinaryToWriter
);
}
f = this.getMType();
@ -285,16 +285,16 @@ proto.api.UplinkFrameLog.prototype.setPhyPayload = function(value) {
/**
* optional gw.UplinkTXInfo tx_info = 2;
* @return {proto.gw.UplinkTXInfo}
* optional gw.UplinkTxInfo tx_info = 2;
* @return {proto.gw.UplinkTxInfo}
*/
proto.api.UplinkFrameLog.prototype.getTxInfo = function() {
return /** @type{proto.gw.UplinkTXInfo} */ (
jspb.Message.getWrapperField(this, gw_gw_pb.UplinkTXInfo, 2));
return /** @type{proto.gw.UplinkTxInfo} */ (
jspb.Message.getWrapperField(this, gw_gw_pb.UplinkTxInfo, 2));
};
/** @param {proto.gw.UplinkTXInfo|undefined} value */
/** @param {proto.gw.UplinkTxInfo|undefined} value */
proto.api.UplinkFrameLog.prototype.setTxInfo = function(value) {
jspb.Message.setWrapperField(this, 2, value);
};
@ -315,18 +315,18 @@ proto.api.UplinkFrameLog.prototype.hasTxInfo = function() {
/**
* repeated gw.UplinkRXInfo rx_info = 3;
* repeated gw.UplinkRxInfo rx_info = 3;
* If you change this array by adding, removing or replacing elements, or if you
* replace the array itself, then you must call the setter to update it.
* @return {!Array.<!proto.gw.UplinkRXInfo>}
* @return {!Array.<!proto.gw.UplinkRxInfo>}
*/
proto.api.UplinkFrameLog.prototype.getRxInfoList = function() {
return /** @type{!Array.<!proto.gw.UplinkRXInfo>} */ (
jspb.Message.getRepeatedWrapperField(this, gw_gw_pb.UplinkRXInfo, 3));
return /** @type{!Array.<!proto.gw.UplinkRxInfo>} */ (
jspb.Message.getRepeatedWrapperField(this, gw_gw_pb.UplinkRxInfo, 3));
};
/** @param {Array.<!proto.gw.UplinkRXInfo>} value */
/** @param {Array.<!proto.gw.UplinkRxInfo>} value */
proto.api.UplinkFrameLog.prototype.setRxInfoList = function(value) {
jspb.Message.setRepeatedWrapperField(this, 3, value);
};
@ -460,7 +460,7 @@ proto.api.DownlinkFrameLog.toObject = function(includeInstance, msg) {
var f, obj = {
time: (f = msg.getTime()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),
phyPayload: msg.getPhyPayload_asB64(),
txInfo: (f = msg.getTxInfo()) && gw_gw_pb.DownlinkTXInfo.toObject(includeInstance, f),
txInfo: (f = msg.getTxInfo()) && gw_gw_pb.DownlinkTxInfo.toObject(includeInstance, f),
downlinkId: msg.getDownlinkId(),
gatewayId: msg.getGatewayId(),
mType: msg.getMType(),
@ -512,12 +512,12 @@ proto.api.DownlinkFrameLog.deserializeBinaryFromReader = function(msg, reader) {
msg.setPhyPayload(value);
break;
case 3:
var value = new gw_gw_pb.DownlinkTXInfo;
reader.readMessage(value,gw_gw_pb.DownlinkTXInfo.deserializeBinaryFromReader);
var value = new gw_gw_pb.DownlinkTxInfo;
reader.readMessage(value,gw_gw_pb.DownlinkTxInfo.deserializeBinaryFromReader);
msg.setTxInfo(value);
break;
case 4:
var value = /** @type {string} */ (reader.readString());
var value = /** @type {number} */ (reader.readUint32());
msg.setDownlinkId(value);
break;
case 5:
@ -594,12 +594,12 @@ proto.api.DownlinkFrameLog.prototype.serializeBinaryToWriter = function (writer)
writer.writeMessage(
3,
f,
gw_gw_pb.DownlinkTXInfo.serializeBinaryToWriter
gw_gw_pb.DownlinkTxInfo.serializeBinaryToWriter
);
}
f = this.getDownlinkId();
if (f.length > 0) {
writer.writeString(
if (f !== 0) {
writer.writeUint32(
4,
f
);
@ -714,16 +714,16 @@ proto.api.DownlinkFrameLog.prototype.setPhyPayload = function(value) {
/**
* optional gw.DownlinkTXInfo tx_info = 3;
* @return {proto.gw.DownlinkTXInfo}
* optional gw.DownlinkTxInfo tx_info = 3;
* @return {proto.gw.DownlinkTxInfo}
*/
proto.api.DownlinkFrameLog.prototype.getTxInfo = function() {
return /** @type{proto.gw.DownlinkTXInfo} */ (
jspb.Message.getWrapperField(this, gw_gw_pb.DownlinkTXInfo, 3));
return /** @type{proto.gw.DownlinkTxInfo} */ (
jspb.Message.getWrapperField(this, gw_gw_pb.DownlinkTxInfo, 3));
};
/** @param {proto.gw.DownlinkTXInfo|undefined} value */
/** @param {proto.gw.DownlinkTxInfo|undefined} value */
proto.api.DownlinkFrameLog.prototype.setTxInfo = function(value) {
jspb.Message.setWrapperField(this, 3, value);
};
@ -744,15 +744,15 @@ proto.api.DownlinkFrameLog.prototype.hasTxInfo = function() {
/**
* optional string downlink_id = 4;
* @return {string}
* optional uint32 downlink_id = 4;
* @return {number}
*/
proto.api.DownlinkFrameLog.prototype.getDownlinkId = function() {
return /** @type {string} */ (jspb.Message.getFieldProto3(this, 4, ""));
return /** @type {number} */ (jspb.Message.getFieldProto3(this, 4, 0));
};
/** @param {string} value */
/** @param {number} value */
proto.api.DownlinkFrameLog.prototype.setDownlinkId = function(value) {
jspb.Message.setField(this, 4, value);
};

515
api/js/gw/gw_pb.d.ts vendored
View File

@ -5,22 +5,23 @@ import * as jspb from "google-protobuf";
import * as common_common_pb from "../common/common_pb";
import * as google_protobuf_timestamp_pb from "google-protobuf/google/protobuf/timestamp_pb";
import * as google_protobuf_duration_pb from "google-protobuf/google/protobuf/duration_pb";
import * as google_protobuf_struct_pb from "google-protobuf/google/protobuf/struct_pb";
export class Modulation extends jspb.Message {
hasLora(): boolean;
clearLora(): void;
getLora(): LoRaModulationInfo | undefined;
setLora(value?: LoRaModulationInfo): void;
getLora(): LoraModulationInfo | undefined;
setLora(value?: LoraModulationInfo): void;
hasFsk(): boolean;
clearFsk(): void;
getFsk(): FSKModulationInfo | undefined;
setFsk(value?: FSKModulationInfo): void;
getFsk(): FskModulationInfo | undefined;
setFsk(value?: FskModulationInfo): void;
hasLrFhss(): boolean;
clearLrFhss(): void;
getLrFhss(): LRFHSSModulationInfo | undefined;
setLrFhss(value?: LRFHSSModulationInfo): void;
getLrFhss(): LrFhssModulationInfo | undefined;
setLrFhss(value?: LrFhssModulationInfo): void;
getParametersCase(): Modulation.ParametersCase;
serializeBinary(): Uint8Array;
@ -35,9 +36,9 @@ export class Modulation extends jspb.Message {
export namespace Modulation {
export type AsObject = {
lora?: LoRaModulationInfo.AsObject,
fsk?: FSKModulationInfo.AsObject,
lrFhss?: LRFHSSModulationInfo.AsObject,
lora?: LoraModulationInfo.AsObject,
fsk?: FskModulationInfo.AsObject,
lrFhss?: LrFhssModulationInfo.AsObject,
}
export enum ParametersCase {
@ -48,7 +49,7 @@ export namespace Modulation {
}
}
export class UplinkTXInfo extends jspb.Message {
export class UplinkTxInfoLegacy extends jspb.Message {
getFrequency(): number;
setFrequency(value: number): void;
@ -57,37 +58,37 @@ export class UplinkTXInfo extends jspb.Message {
hasLoraModulationInfo(): boolean;
clearLoraModulationInfo(): void;
getLoraModulationInfo(): LoRaModulationInfo | undefined;
setLoraModulationInfo(value?: LoRaModulationInfo): void;
getLoraModulationInfo(): LoraModulationInfo | undefined;
setLoraModulationInfo(value?: LoraModulationInfo): void;
hasFskModulationInfo(): boolean;
clearFskModulationInfo(): void;
getFskModulationInfo(): FSKModulationInfo | undefined;
setFskModulationInfo(value?: FSKModulationInfo): void;
getFskModulationInfo(): FskModulationInfo | undefined;
setFskModulationInfo(value?: FskModulationInfo): void;
hasLrFhssModulationInfo(): boolean;
clearLrFhssModulationInfo(): void;
getLrFhssModulationInfo(): LRFHSSModulationInfo | undefined;
setLrFhssModulationInfo(value?: LRFHSSModulationInfo): void;
getLrFhssModulationInfo(): LrFhssModulationInfo | undefined;
setLrFhssModulationInfo(value?: LrFhssModulationInfo): void;
getModulationInfoCase(): UplinkTXInfo.ModulationInfoCase;
getModulationInfoCase(): UplinkTxInfoLegacy.ModulationInfoCase;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): UplinkTXInfo.AsObject;
static toObject(includeInstance: boolean, msg: UplinkTXInfo): UplinkTXInfo.AsObject;
toObject(includeInstance?: boolean): UplinkTxInfoLegacy.AsObject;
static toObject(includeInstance: boolean, msg: UplinkTxInfoLegacy): UplinkTxInfoLegacy.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: UplinkTXInfo, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): UplinkTXInfo;
static deserializeBinaryFromReader(message: UplinkTXInfo, reader: jspb.BinaryReader): UplinkTXInfo;
static serializeBinaryToWriter(message: UplinkTxInfoLegacy, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): UplinkTxInfoLegacy;
static deserializeBinaryFromReader(message: UplinkTxInfoLegacy, reader: jspb.BinaryReader): UplinkTxInfoLegacy;
}
export namespace UplinkTXInfo {
export namespace UplinkTxInfoLegacy {
export type AsObject = {
frequency: number,
modulation: common_common_pb.ModulationMap[keyof common_common_pb.ModulationMap],
loraModulationInfo?: LoRaModulationInfo.AsObject,
fskModulationInfo?: FSKModulationInfo.AsObject,
lrFhssModulationInfo?: LRFHSSModulationInfo.AsObject,
loraModulationInfo?: LoraModulationInfo.AsObject,
fskModulationInfo?: FskModulationInfo.AsObject,
lrFhssModulationInfo?: LrFhssModulationInfo.AsObject,
}
export enum ModulationInfoCase {
@ -98,39 +99,69 @@ export namespace UplinkTXInfo {
}
}
export class LoRaModulationInfo extends jspb.Message {
export class UplinkTxInfo extends jspb.Message {
getFrequency(): number;
setFrequency(value: number): void;
hasModulation(): boolean;
clearModulation(): void;
getModulation(): Modulation | undefined;
setModulation(value?: Modulation): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): UplinkTxInfo.AsObject;
static toObject(includeInstance: boolean, msg: UplinkTxInfo): UplinkTxInfo.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: UplinkTxInfo, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): UplinkTxInfo;
static deserializeBinaryFromReader(message: UplinkTxInfo, reader: jspb.BinaryReader): UplinkTxInfo;
}
export namespace UplinkTxInfo {
export type AsObject = {
frequency: number,
modulation?: Modulation.AsObject,
}
}
export class LoraModulationInfo extends jspb.Message {
getBandwidth(): number;
setBandwidth(value: number): void;
getSpreadingFactor(): number;
setSpreadingFactor(value: number): void;
getCodeRate(): string;
setCodeRate(value: string): void;
getCodeRateLegacy(): string;
setCodeRateLegacy(value: string): void;
getCodeRate(): CodeRateMap[keyof CodeRateMap];
setCodeRate(value: CodeRateMap[keyof CodeRateMap]): void;
getPolarizationInversion(): boolean;
setPolarizationInversion(value: boolean): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): LoRaModulationInfo.AsObject;
static toObject(includeInstance: boolean, msg: LoRaModulationInfo): LoRaModulationInfo.AsObject;
toObject(includeInstance?: boolean): LoraModulationInfo.AsObject;
static toObject(includeInstance: boolean, msg: LoraModulationInfo): LoraModulationInfo.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: LoRaModulationInfo, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): LoRaModulationInfo;
static deserializeBinaryFromReader(message: LoRaModulationInfo, reader: jspb.BinaryReader): LoRaModulationInfo;
static serializeBinaryToWriter(message: LoraModulationInfo, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): LoraModulationInfo;
static deserializeBinaryFromReader(message: LoraModulationInfo, reader: jspb.BinaryReader): LoraModulationInfo;
}
export namespace LoRaModulationInfo {
export namespace LoraModulationInfo {
export type AsObject = {
bandwidth: number,
spreadingFactor: number,
codeRate: string,
codeRateLegacy: string,
codeRate: CodeRateMap[keyof CodeRateMap],
polarizationInversion: boolean,
}
}
export class FSKModulationInfo extends jspb.Message {
export class FskModulationInfo extends jspb.Message {
getFrequencyDeviation(): number;
setFrequencyDeviation(value: number): void;
@ -138,23 +169,23 @@ export class FSKModulationInfo extends jspb.Message {
setDatarate(value: number): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): FSKModulationInfo.AsObject;
static toObject(includeInstance: boolean, msg: FSKModulationInfo): FSKModulationInfo.AsObject;
toObject(includeInstance?: boolean): FskModulationInfo.AsObject;
static toObject(includeInstance: boolean, msg: FskModulationInfo): FskModulationInfo.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: FSKModulationInfo, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): FSKModulationInfo;
static deserializeBinaryFromReader(message: FSKModulationInfo, reader: jspb.BinaryReader): FSKModulationInfo;
static serializeBinaryToWriter(message: FskModulationInfo, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): FskModulationInfo;
static deserializeBinaryFromReader(message: FskModulationInfo, reader: jspb.BinaryReader): FskModulationInfo;
}
export namespace FSKModulationInfo {
export namespace FskModulationInfo {
export type AsObject = {
frequencyDeviation: number,
datarate: number,
}
}
export class LRFHSSModulationInfo extends jspb.Message {
export class LrFhssModulationInfo extends jspb.Message {
getOperatingChannelWidth(): number;
setOperatingChannelWidth(value: number): void;
@ -165,16 +196,16 @@ export class LRFHSSModulationInfo extends jspb.Message {
setGridSteps(value: number): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): LRFHSSModulationInfo.AsObject;
static toObject(includeInstance: boolean, msg: LRFHSSModulationInfo): LRFHSSModulationInfo.AsObject;
toObject(includeInstance?: boolean): LrFhssModulationInfo.AsObject;
static toObject(includeInstance: boolean, msg: LrFhssModulationInfo): LrFhssModulationInfo.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: LRFHSSModulationInfo, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): LRFHSSModulationInfo;
static deserializeBinaryFromReader(message: LRFHSSModulationInfo, reader: jspb.BinaryReader): LRFHSSModulationInfo;
static serializeBinaryToWriter(message: LrFhssModulationInfo, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): LrFhssModulationInfo;
static deserializeBinaryFromReader(message: LrFhssModulationInfo, reader: jspb.BinaryReader): LrFhssModulationInfo;
}
export namespace LRFHSSModulationInfo {
export namespace LrFhssModulationInfo {
export type AsObject = {
operatingChannelWidth: number,
codeRate: string,
@ -350,7 +381,7 @@ export namespace PerModulationCount {
}
}
export class UplinkRXInfo extends jspb.Message {
export class UplinkRxInfoLegacy extends jspb.Message {
getGatewayId(): Uint8Array | string;
getGatewayId_asU8(): Uint8Array;
getGatewayId_asB64(): string;
@ -417,18 +448,18 @@ export class UplinkRXInfo extends jspb.Message {
getMetadataMap(): jspb.Map<string, string>;
clearMetadataMap(): void;
getFineTimestampCase(): UplinkRXInfo.FineTimestampCase;
getFineTimestampCase(): UplinkRxInfoLegacy.FineTimestampCase;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): UplinkRXInfo.AsObject;
static toObject(includeInstance: boolean, msg: UplinkRXInfo): UplinkRXInfo.AsObject;
toObject(includeInstance?: boolean): UplinkRxInfoLegacy.AsObject;
static toObject(includeInstance: boolean, msg: UplinkRxInfoLegacy): UplinkRxInfoLegacy.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: UplinkRXInfo, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): UplinkRXInfo;
static deserializeBinaryFromReader(message: UplinkRXInfo, reader: jspb.BinaryReader): UplinkRXInfo;
static serializeBinaryToWriter(message: UplinkRxInfoLegacy, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): UplinkRxInfoLegacy;
static deserializeBinaryFromReader(message: UplinkRxInfoLegacy, reader: jspb.BinaryReader): UplinkRxInfoLegacy;
}
export namespace UplinkRXInfo {
export namespace UplinkRxInfoLegacy {
export type AsObject = {
gatewayId: Uint8Array | string,
time?: google_protobuf_timestamp_pb.Timestamp.AsObject,
@ -456,7 +487,83 @@ export namespace UplinkRXInfo {
}
}
export class DownlinkTXInfo extends jspb.Message {
export class UplinkRxInfo extends jspb.Message {
getGatewayId(): string;
setGatewayId(value: string): void;
getUplinkId(): number;
setUplinkId(value: number): void;
hasTime(): boolean;
clearTime(): void;
getTime(): google_protobuf_timestamp_pb.Timestamp | undefined;
setTime(value?: google_protobuf_timestamp_pb.Timestamp): void;
hasTimeSinceGpsEpoch(): boolean;
clearTimeSinceGpsEpoch(): void;
getTimeSinceGpsEpoch(): google_protobuf_duration_pb.Duration | undefined;
setTimeSinceGpsEpoch(value?: google_protobuf_duration_pb.Duration): void;
hasFineTimeSinceGpsEpoch(): boolean;
clearFineTimeSinceGpsEpoch(): void;
getFineTimeSinceGpsEpoch(): google_protobuf_duration_pb.Duration | undefined;
setFineTimeSinceGpsEpoch(value?: google_protobuf_duration_pb.Duration): void;
getRssi(): number;
setRssi(value: number): void;
getSnr(): number;
setSnr(value: number): void;
getBoard(): number;
setBoard(value: number): void;
getAntenna(): number;
setAntenna(value: number): void;
hasLocation(): boolean;
clearLocation(): void;
getLocation(): common_common_pb.Location | undefined;
setLocation(value?: common_common_pb.Location): void;
getContext(): Uint8Array | string;
getContext_asU8(): Uint8Array;
getContext_asB64(): string;
setContext(value: Uint8Array | string): void;
hasMetadata(): boolean;
clearMetadata(): void;
getMetadata(): google_protobuf_struct_pb.Struct | undefined;
setMetadata(value?: google_protobuf_struct_pb.Struct): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): UplinkRxInfo.AsObject;
static toObject(includeInstance: boolean, msg: UplinkRxInfo): UplinkRxInfo.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: UplinkRxInfo, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): UplinkRxInfo;
static deserializeBinaryFromReader(message: UplinkRxInfo, reader: jspb.BinaryReader): UplinkRxInfo;
}
export namespace UplinkRxInfo {
export type AsObject = {
gatewayId: string,
uplinkId: number,
time?: google_protobuf_timestamp_pb.Timestamp.AsObject,
timeSinceGpsEpoch?: google_protobuf_duration_pb.Duration.AsObject,
fineTimeSinceGpsEpoch?: google_protobuf_duration_pb.Duration.AsObject,
rssi: number,
snr: number,
board: number,
antenna: number,
location?: common_common_pb.Location.AsObject,
context: Uint8Array | string,
metadata?: google_protobuf_struct_pb.Struct.AsObject,
}
}
export class DownlinkTxInfoLegacy extends jspb.Message {
getGatewayId(): Uint8Array | string;
getGatewayId_asU8(): Uint8Array;
getGatewayId_asB64(): string;
@ -473,13 +580,13 @@ export class DownlinkTXInfo extends jspb.Message {
hasLoraModulationInfo(): boolean;
clearLoraModulationInfo(): void;
getLoraModulationInfo(): LoRaModulationInfo | undefined;
setLoraModulationInfo(value?: LoRaModulationInfo): void;
getLoraModulationInfo(): LoraModulationInfo | undefined;
setLoraModulationInfo(value?: LoraModulationInfo): void;
hasFskModulationInfo(): boolean;
clearFskModulationInfo(): void;
getFskModulationInfo(): FSKModulationInfo | undefined;
setFskModulationInfo(value?: FSKModulationInfo): void;
getFskModulationInfo(): FskModulationInfo | undefined;
setFskModulationInfo(value?: FskModulationInfo): void;
getBoard(): number;
setBoard(value: number): void;
@ -510,26 +617,26 @@ export class DownlinkTXInfo extends jspb.Message {
getContext_asB64(): string;
setContext(value: Uint8Array | string): void;
getModulationInfoCase(): DownlinkTXInfo.ModulationInfoCase;
getTimingInfoCase(): DownlinkTXInfo.TimingInfoCase;
getModulationInfoCase(): DownlinkTxInfoLegacy.ModulationInfoCase;
getTimingInfoCase(): DownlinkTxInfoLegacy.TimingInfoCase;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): DownlinkTXInfo.AsObject;
static toObject(includeInstance: boolean, msg: DownlinkTXInfo): DownlinkTXInfo.AsObject;
toObject(includeInstance?: boolean): DownlinkTxInfoLegacy.AsObject;
static toObject(includeInstance: boolean, msg: DownlinkTxInfoLegacy): DownlinkTxInfoLegacy.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: DownlinkTXInfo, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): DownlinkTXInfo;
static deserializeBinaryFromReader(message: DownlinkTXInfo, reader: jspb.BinaryReader): DownlinkTXInfo;
static serializeBinaryToWriter(message: DownlinkTxInfoLegacy, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): DownlinkTxInfoLegacy;
static deserializeBinaryFromReader(message: DownlinkTxInfoLegacy, reader: jspb.BinaryReader): DownlinkTxInfoLegacy;
}
export namespace DownlinkTXInfo {
export namespace DownlinkTxInfoLegacy {
export type AsObject = {
gatewayId: Uint8Array | string,
frequency: number,
power: number,
modulation: common_common_pb.ModulationMap[keyof common_common_pb.ModulationMap],
loraModulationInfo?: LoRaModulationInfo.AsObject,
fskModulationInfo?: FSKModulationInfo.AsObject,
loraModulationInfo?: LoraModulationInfo.AsObject,
fskModulationInfo?: FskModulationInfo.AsObject,
board: number,
antenna: number,
timing: DownlinkTimingMap[keyof DownlinkTimingMap],
@ -553,6 +660,98 @@ export namespace DownlinkTXInfo {
}
}
export class DownlinkTxInfo extends jspb.Message {
getFrequency(): number;
setFrequency(value: number): void;
getPower(): number;
setPower(value: number): void;
hasModulation(): boolean;
clearModulation(): void;
getModulation(): Modulation | undefined;
setModulation(value?: Modulation): void;
getBoard(): number;
setBoard(value: number): void;
getAntenna(): number;
setAntenna(value: number): void;
hasTiming(): boolean;
clearTiming(): void;
getTiming(): Timing | undefined;
setTiming(value?: Timing): void;
getContext(): Uint8Array | string;
getContext_asU8(): Uint8Array;
getContext_asB64(): string;
setContext(value: Uint8Array | string): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): DownlinkTxInfo.AsObject;
static toObject(includeInstance: boolean, msg: DownlinkTxInfo): DownlinkTxInfo.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: DownlinkTxInfo, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): DownlinkTxInfo;
static deserializeBinaryFromReader(message: DownlinkTxInfo, reader: jspb.BinaryReader): DownlinkTxInfo;
}
export namespace DownlinkTxInfo {
export type AsObject = {
frequency: number,
power: number,
modulation?: Modulation.AsObject,
board: number,
antenna: number,
timing?: Timing.AsObject,
context: Uint8Array | string,
}
}
export class Timing extends jspb.Message {
hasImmediately(): boolean;
clearImmediately(): void;
getImmediately(): ImmediatelyTimingInfo | undefined;
setImmediately(value?: ImmediatelyTimingInfo): void;
hasDelay(): boolean;
clearDelay(): void;
getDelay(): DelayTimingInfo | undefined;
setDelay(value?: DelayTimingInfo): void;
hasGpsEpoch(): boolean;
clearGpsEpoch(): void;
getGpsEpoch(): GPSEpochTimingInfo | undefined;
setGpsEpoch(value?: GPSEpochTimingInfo): void;
getParametersCase(): Timing.ParametersCase;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): Timing.AsObject;
static toObject(includeInstance: boolean, msg: Timing): Timing.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: Timing, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): Timing;
static deserializeBinaryFromReader(message: Timing, reader: jspb.BinaryReader): Timing;
}
export namespace Timing {
export type AsObject = {
immediately?: ImmediatelyTimingInfo.AsObject,
delay?: DelayTimingInfo.AsObject,
gpsEpoch?: GPSEpochTimingInfo.AsObject,
}
export enum ParametersCase {
PARAMETERS_NOT_SET = 0,
IMMEDIATELY = 1,
DELAY = 2,
GPS_EPOCH = 3,
}
}
export class ImmediatelyTimingInfo extends jspb.Message {
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): ImmediatelyTimingInfo.AsObject;
@ -619,15 +818,25 @@ export class UplinkFrame extends jspb.Message {
getPhyPayload_asB64(): string;
setPhyPayload(value: Uint8Array | string): void;
hasTxInfoLegacy(): boolean;
clearTxInfoLegacy(): void;
getTxInfoLegacy(): UplinkTxInfoLegacy | undefined;
setTxInfoLegacy(value?: UplinkTxInfoLegacy): void;
hasRxInfoLegacy(): boolean;
clearRxInfoLegacy(): void;
getRxInfoLegacy(): UplinkRxInfoLegacy | undefined;
setRxInfoLegacy(value?: UplinkRxInfoLegacy): void;
hasTxInfo(): boolean;
clearTxInfo(): void;
getTxInfo(): UplinkTXInfo | undefined;
setTxInfo(value?: UplinkTXInfo): void;
getTxInfo(): UplinkTxInfo | undefined;
setTxInfo(value?: UplinkTxInfo): void;
hasRxInfo(): boolean;
clearRxInfo(): void;
getRxInfo(): UplinkRXInfo | undefined;
setRxInfo(value?: UplinkRXInfo): void;
getRxInfo(): UplinkRxInfo | undefined;
setRxInfo(value?: UplinkRxInfo): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): UplinkFrame.AsObject;
@ -642,8 +851,10 @@ export class UplinkFrame extends jspb.Message {
export namespace UplinkFrame {
export type AsObject = {
phyPayload: Uint8Array | string,
txInfo?: UplinkTXInfo.AsObject,
rxInfo?: UplinkRXInfo.AsObject,
txInfoLegacy?: UplinkTxInfoLegacy.AsObject,
rxInfoLegacy?: UplinkRxInfoLegacy.AsObject,
txInfo?: UplinkTxInfo.AsObject,
rxInfo?: UplinkRxInfo.AsObject,
}
}
@ -655,13 +866,13 @@ export class UplinkFrameSet extends jspb.Message {
hasTxInfo(): boolean;
clearTxInfo(): void;
getTxInfo(): UplinkTXInfo | undefined;
setTxInfo(value?: UplinkTXInfo): void;
getTxInfo(): UplinkTxInfo | undefined;
setTxInfo(value?: UplinkTxInfo): void;
clearRxInfoList(): void;
getRxInfoList(): Array<UplinkRXInfo>;
setRxInfoList(value: Array<UplinkRXInfo>): void;
addRxInfo(value?: UplinkRXInfo, index?: number): UplinkRXInfo;
getRxInfoList(): Array<UplinkRxInfo>;
setRxInfoList(value: Array<UplinkRxInfo>): void;
addRxInfo(value?: UplinkRxInfo, index?: number): UplinkRxInfo;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): UplinkFrameSet.AsObject;
@ -676,39 +887,32 @@ export class UplinkFrameSet extends jspb.Message {
export namespace UplinkFrameSet {
export type AsObject = {
phyPayload: Uint8Array | string,
txInfo?: UplinkTXInfo.AsObject,
rxInfoList: Array<UplinkRXInfo.AsObject>,
txInfo?: UplinkTxInfo.AsObject,
rxInfoList: Array<UplinkRxInfo.AsObject>,
}
}
export class DownlinkFrame extends jspb.Message {
getPhyPayload(): Uint8Array | string;
getPhyPayload_asU8(): Uint8Array;
getPhyPayload_asB64(): string;
setPhyPayload(value: Uint8Array | string): void;
getDownlinkId(): number;
setDownlinkId(value: number): void;
hasTxInfo(): boolean;
clearTxInfo(): void;
getTxInfo(): DownlinkTXInfo | undefined;
setTxInfo(value?: DownlinkTXInfo): void;
getToken(): number;
setToken(value: number): void;
getDownlinkId(): Uint8Array | string;
getDownlinkId_asU8(): Uint8Array;
getDownlinkId_asB64(): string;
setDownlinkId(value: Uint8Array | string): void;
getDownlinkIdLegacy(): Uint8Array | string;
getDownlinkIdLegacy_asU8(): Uint8Array;
getDownlinkIdLegacy_asB64(): string;
setDownlinkIdLegacy(value: Uint8Array | string): void;
clearItemsList(): void;
getItemsList(): Array<DownlinkFrameItem>;
setItemsList(value: Array<DownlinkFrameItem>): void;
addItems(value?: DownlinkFrameItem, index?: number): DownlinkFrameItem;
getGatewayId(): Uint8Array | string;
getGatewayId_asU8(): Uint8Array;
getGatewayId_asB64(): string;
setGatewayId(value: Uint8Array | string): void;
getGatewayIdLegacy(): Uint8Array | string;
getGatewayIdLegacy_asU8(): Uint8Array;
getGatewayIdLegacy_asB64(): string;
setGatewayIdLegacy(value: Uint8Array | string): void;
getGatewayId(): string;
setGatewayId(value: string): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): DownlinkFrame.AsObject;
@ -722,12 +926,11 @@ export class DownlinkFrame extends jspb.Message {
export namespace DownlinkFrame {
export type AsObject = {
phyPayload: Uint8Array | string,
txInfo?: DownlinkTXInfo.AsObject,
token: number,
downlinkId: Uint8Array | string,
downlinkId: number,
downlinkIdLegacy: Uint8Array | string,
itemsList: Array<DownlinkFrameItem.AsObject>,
gatewayId: Uint8Array | string,
gatewayIdLegacy: Uint8Array | string,
gatewayId: string,
}
}
@ -737,10 +940,15 @@ export class DownlinkFrameItem extends jspb.Message {
getPhyPayload_asB64(): string;
setPhyPayload(value: Uint8Array | string): void;
hasTxInfoLegacy(): boolean;
clearTxInfoLegacy(): void;
getTxInfoLegacy(): DownlinkTxInfoLegacy | undefined;
setTxInfoLegacy(value?: DownlinkTxInfoLegacy): void;
hasTxInfo(): boolean;
clearTxInfo(): void;
getTxInfo(): DownlinkTXInfo | undefined;
setTxInfo(value?: DownlinkTXInfo): void;
getTxInfo(): DownlinkTxInfo | undefined;
setTxInfo(value?: DownlinkTxInfo): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): DownlinkFrameItem.AsObject;
@ -755,67 +963,68 @@ export class DownlinkFrameItem extends jspb.Message {
export namespace DownlinkFrameItem {
export type AsObject = {
phyPayload: Uint8Array | string,
txInfo?: DownlinkTXInfo.AsObject,
txInfoLegacy?: DownlinkTxInfoLegacy.AsObject,
txInfo?: DownlinkTxInfo.AsObject,
}
}
export class DownlinkTXAck extends jspb.Message {
getGatewayId(): Uint8Array | string;
getGatewayId_asU8(): Uint8Array;
getGatewayId_asB64(): string;
setGatewayId(value: Uint8Array | string): void;
export class DownlinkTxAck extends jspb.Message {
getGatewayIdLegacy(): Uint8Array | string;
getGatewayIdLegacy_asU8(): Uint8Array;
getGatewayIdLegacy_asB64(): string;
setGatewayIdLegacy(value: Uint8Array | string): void;
getToken(): number;
setToken(value: number): void;
getGatewayId(): string;
setGatewayId(value: string): void;
getError(): string;
setError(value: string): void;
getDownlinkId(): number;
setDownlinkId(value: number): void;
getDownlinkId(): Uint8Array | string;
getDownlinkId_asU8(): Uint8Array;
getDownlinkId_asB64(): string;
setDownlinkId(value: Uint8Array | string): void;
getDownlinkIdLegacy(): Uint8Array | string;
getDownlinkIdLegacy_asU8(): Uint8Array;
getDownlinkIdLegacy_asB64(): string;
setDownlinkIdLegacy(value: Uint8Array | string): void;
clearItemsList(): void;
getItemsList(): Array<DownlinkTXAckItem>;
setItemsList(value: Array<DownlinkTXAckItem>): void;
addItems(value?: DownlinkTXAckItem, index?: number): DownlinkTXAckItem;
getItemsList(): Array<DownlinkTxAckItem>;
setItemsList(value: Array<DownlinkTxAckItem>): void;
addItems(value?: DownlinkTxAckItem, index?: number): DownlinkTxAckItem;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): DownlinkTXAck.AsObject;
static toObject(includeInstance: boolean, msg: DownlinkTXAck): DownlinkTXAck.AsObject;
toObject(includeInstance?: boolean): DownlinkTxAck.AsObject;
static toObject(includeInstance: boolean, msg: DownlinkTxAck): DownlinkTxAck.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: DownlinkTXAck, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): DownlinkTXAck;
static deserializeBinaryFromReader(message: DownlinkTXAck, reader: jspb.BinaryReader): DownlinkTXAck;
static serializeBinaryToWriter(message: DownlinkTxAck, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): DownlinkTxAck;
static deserializeBinaryFromReader(message: DownlinkTxAck, reader: jspb.BinaryReader): DownlinkTxAck;
}
export namespace DownlinkTXAck {
export namespace DownlinkTxAck {
export type AsObject = {
gatewayId: Uint8Array | string,
token: number,
error: string,
downlinkId: Uint8Array | string,
itemsList: Array<DownlinkTXAckItem.AsObject>,
gatewayIdLegacy: Uint8Array | string,
gatewayId: string,
downlinkId: number,
downlinkIdLegacy: Uint8Array | string,
itemsList: Array<DownlinkTxAckItem.AsObject>,
}
}
export class DownlinkTXAckItem extends jspb.Message {
export class DownlinkTxAckItem extends jspb.Message {
getStatus(): TxAckStatusMap[keyof TxAckStatusMap];
setStatus(value: TxAckStatusMap[keyof TxAckStatusMap]): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): DownlinkTXAckItem.AsObject;
static toObject(includeInstance: boolean, msg: DownlinkTXAckItem): DownlinkTXAckItem.AsObject;
toObject(includeInstance?: boolean): DownlinkTxAckItem.AsObject;
static toObject(includeInstance: boolean, msg: DownlinkTxAckItem): DownlinkTxAckItem.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: DownlinkTXAckItem, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): DownlinkTXAckItem;
static deserializeBinaryFromReader(message: DownlinkTXAckItem, reader: jspb.BinaryReader): DownlinkTXAckItem;
static serializeBinaryToWriter(message: DownlinkTxAckItem, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): DownlinkTxAckItem;
static deserializeBinaryFromReader(message: DownlinkTxAckItem, reader: jspb.BinaryReader): DownlinkTxAckItem;
}
export namespace DownlinkTXAckItem {
export namespace DownlinkTxAckItem {
export type AsObject = {
status: TxAckStatusMap[keyof TxAckStatusMap],
}
@ -1146,6 +1355,16 @@ export namespace ConnState {
export const State: StateMap;
}
export interface CodeRateMap {
CR_UNDEFINED: 0;
CR_4_5: 1;
CR_4_6: 2;
CR_4_7: 3;
CR_4_8: 4;
}
export const CodeRate: CodeRateMap;
export interface DownlinkTimingMap {
IMMEDIATELY: 0;
DELAY: 1;

2878
api/js/gw/gw_pb.js vendored

File diff suppressed because it is too large Load Diff

View File

@ -101,14 +101,14 @@ export class UplinkEvent extends jspb.Message {
setObject(value?: google_protobuf_struct_pb.Struct): void;
clearRxInfoList(): void;
getRxInfoList(): Array<gw_gw_pb.UplinkRXInfo>;
setRxInfoList(value: Array<gw_gw_pb.UplinkRXInfo>): void;
addRxInfo(value?: gw_gw_pb.UplinkRXInfo, index?: number): gw_gw_pb.UplinkRXInfo;
getRxInfoList(): Array<gw_gw_pb.UplinkRxInfo>;
setRxInfoList(value: Array<gw_gw_pb.UplinkRxInfo>): void;
addRxInfo(value?: gw_gw_pb.UplinkRxInfo, index?: number): gw_gw_pb.UplinkRxInfo;
hasTxInfo(): boolean;
clearTxInfo(): void;
getTxInfo(): gw_gw_pb.UplinkTXInfo | undefined;
setTxInfo(value?: gw_gw_pb.UplinkTXInfo): void;
getTxInfo(): gw_gw_pb.UplinkTxInfo | undefined;
setTxInfo(value?: gw_gw_pb.UplinkTxInfo): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): UplinkEvent.AsObject;
@ -133,8 +133,8 @@ export namespace UplinkEvent {
confirmed: boolean,
data: Uint8Array | string,
object?: google_protobuf_struct_pb.Struct.AsObject,
rxInfoList: Array<gw_gw_pb.UplinkRXInfo.AsObject>,
txInfo?: gw_gw_pb.UplinkTXInfo.AsObject,
rxInfoList: Array<gw_gw_pb.UplinkRxInfo.AsObject>,
txInfo?: gw_gw_pb.UplinkTxInfo.AsObject,
}
}
@ -219,8 +219,8 @@ export namespace AckEvent {
}
export class TxAckEvent extends jspb.Message {
getDownlinkId(): string;
setDownlinkId(value: string): void;
getDownlinkId(): number;
setDownlinkId(value: number): void;
hasTime(): boolean;
clearTime(): void;
@ -243,8 +243,8 @@ export class TxAckEvent extends jspb.Message {
hasTxInfo(): boolean;
clearTxInfo(): void;
getTxInfo(): gw_gw_pb.DownlinkTXInfo | undefined;
setTxInfo(value?: gw_gw_pb.DownlinkTXInfo): void;
getTxInfo(): gw_gw_pb.DownlinkTxInfo | undefined;
setTxInfo(value?: gw_gw_pb.DownlinkTxInfo): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): TxAckEvent.AsObject;
@ -258,13 +258,13 @@ export class TxAckEvent extends jspb.Message {
export namespace TxAckEvent {
export type AsObject = {
downlinkId: string,
downlinkId: number,
time?: google_protobuf_timestamp_pb.Timestamp.AsObject,
deviceInfo?: DeviceInfo.AsObject,
queueItemId: string,
fCntDown: number,
gatewayId: string,
txInfo?: gw_gw_pb.DownlinkTXInfo.AsObject,
txInfo?: gw_gw_pb.DownlinkTxInfo.AsObject,
}
}
@ -447,6 +447,50 @@ export namespace IntegrationEvent {
}
}
export class DownlinkCommand extends jspb.Message {
getId(): string;
setId(value: string): void;
getDevEui(): string;
setDevEui(value: string): void;
getConfirmed(): boolean;
setConfirmed(value: boolean): void;
getFPort(): number;
setFPort(value: number): void;
getData(): Uint8Array | string;
getData_asU8(): Uint8Array;
getData_asB64(): string;
setData(value: Uint8Array | string): void;
hasObject(): boolean;
clearObject(): void;
getObject(): google_protobuf_struct_pb.Struct | undefined;
setObject(value?: google_protobuf_struct_pb.Struct): void;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): DownlinkCommand.AsObject;
static toObject(includeInstance: boolean, msg: DownlinkCommand): DownlinkCommand.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: DownlinkCommand, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): DownlinkCommand;
static deserializeBinaryFromReader(message: DownlinkCommand, reader: jspb.BinaryReader): DownlinkCommand;
}
export namespace DownlinkCommand {
export type AsObject = {
id: string,
devEui: string,
confirmed: boolean,
fPort: number,
data: Uint8Array | string,
object?: google_protobuf_struct_pb.Struct.AsObject,
}
}
export interface LogLevelMap {
INFO: 0;
WARNING: 1;

View File

@ -15,6 +15,7 @@ var google_protobuf_timestamp_pb = require('google-protobuf/google/protobuf/time
var google_protobuf_struct_pb = require('google-protobuf/google/protobuf/struct_pb.js');
goog.exportSymbol('proto.integration.AckEvent', null, global);
goog.exportSymbol('proto.integration.DeviceInfo', null, global);
goog.exportSymbol('proto.integration.DownlinkCommand', null, global);
goog.exportSymbol('proto.integration.IntegrationEvent', null, global);
goog.exportSymbol('proto.integration.JoinEvent', null, global);
goog.exportSymbol('proto.integration.LocationEvent', null, global);
@ -461,8 +462,8 @@ proto.integration.UplinkEvent.toObject = function(includeInstance, msg) {
data: msg.getData_asB64(),
object: (f = msg.getObject()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),
rxInfoList: jspb.Message.toObjectList(msg.getRxInfoList(),
gw_gw_pb.UplinkRXInfo.toObject, includeInstance),
txInfo: (f = msg.getTxInfo()) && gw_gw_pb.UplinkTXInfo.toObject(includeInstance, f)
gw_gw_pb.UplinkRxInfo.toObject, includeInstance),
txInfo: (f = msg.getTxInfo()) && gw_gw_pb.UplinkTxInfo.toObject(includeInstance, f)
};
if (includeInstance) {
@ -547,14 +548,14 @@ proto.integration.UplinkEvent.deserializeBinaryFromReader = function(msg, reader
msg.setObject(value);
break;
case 12:
var value = new gw_gw_pb.UplinkRXInfo;
reader.readMessage(value,gw_gw_pb.UplinkRXInfo.deserializeBinaryFromReader);
var value = new gw_gw_pb.UplinkRxInfo;
reader.readMessage(value,gw_gw_pb.UplinkRxInfo.deserializeBinaryFromReader);
msg.getRxInfoList().push(value);
msg.setRxInfoList(msg.getRxInfoList());
break;
case 13:
var value = new gw_gw_pb.UplinkTXInfo;
reader.readMessage(value,gw_gw_pb.UplinkTXInfo.deserializeBinaryFromReader);
var value = new gw_gw_pb.UplinkTxInfo;
reader.readMessage(value,gw_gw_pb.UplinkTxInfo.deserializeBinaryFromReader);
msg.setTxInfo(value);
break;
default:
@ -680,7 +681,7 @@ proto.integration.UplinkEvent.prototype.serializeBinaryToWriter = function (writ
writer.writeRepeatedMessage(
12,
f,
gw_gw_pb.UplinkRXInfo.serializeBinaryToWriter
gw_gw_pb.UplinkRxInfo.serializeBinaryToWriter
);
}
f = this.getTxInfo();
@ -688,7 +689,7 @@ proto.integration.UplinkEvent.prototype.serializeBinaryToWriter = function (writ
writer.writeMessage(
13,
f,
gw_gw_pb.UplinkTXInfo.serializeBinaryToWriter
gw_gw_pb.UplinkTxInfo.serializeBinaryToWriter
);
}
};
@ -942,18 +943,18 @@ proto.integration.UplinkEvent.prototype.hasObject = function() {
/**
* repeated gw.UplinkRXInfo rx_info = 12;
* repeated gw.UplinkRxInfo rx_info = 12;
* If you change this array by adding, removing or replacing elements, or if you
* replace the array itself, then you must call the setter to update it.
* @return {!Array.<!proto.gw.UplinkRXInfo>}
* @return {!Array.<!proto.gw.UplinkRxInfo>}
*/
proto.integration.UplinkEvent.prototype.getRxInfoList = function() {
return /** @type{!Array.<!proto.gw.UplinkRXInfo>} */ (
jspb.Message.getRepeatedWrapperField(this, gw_gw_pb.UplinkRXInfo, 12));
return /** @type{!Array.<!proto.gw.UplinkRxInfo>} */ (
jspb.Message.getRepeatedWrapperField(this, gw_gw_pb.UplinkRxInfo, 12));
};
/** @param {Array.<!proto.gw.UplinkRXInfo>} value */
/** @param {Array.<!proto.gw.UplinkRxInfo>} value */
proto.integration.UplinkEvent.prototype.setRxInfoList = function(value) {
jspb.Message.setRepeatedWrapperField(this, 12, value);
};
@ -965,16 +966,16 @@ proto.integration.UplinkEvent.prototype.clearRxInfoList = function() {
/**
* optional gw.UplinkTXInfo tx_info = 13;
* @return {proto.gw.UplinkTXInfo}
* optional gw.UplinkTxInfo tx_info = 13;
* @return {proto.gw.UplinkTxInfo}
*/
proto.integration.UplinkEvent.prototype.getTxInfo = function() {
return /** @type{proto.gw.UplinkTXInfo} */ (
jspb.Message.getWrapperField(this, gw_gw_pb.UplinkTXInfo, 13));
return /** @type{proto.gw.UplinkTxInfo} */ (
jspb.Message.getWrapperField(this, gw_gw_pb.UplinkTxInfo, 13));
};
/** @param {proto.gw.UplinkTXInfo|undefined} value */
/** @param {proto.gw.UplinkTxInfo|undefined} value */
proto.integration.UplinkEvent.prototype.setTxInfo = function(value) {
jspb.Message.setWrapperField(this, 13, value);
};
@ -1650,7 +1651,7 @@ proto.integration.TxAckEvent.toObject = function(includeInstance, msg) {
queueItemId: msg.getQueueItemId(),
fCntDown: msg.getFCntDown(),
gatewayId: msg.getGatewayId(),
txInfo: (f = msg.getTxInfo()) && gw_gw_pb.DownlinkTXInfo.toObject(includeInstance, f)
txInfo: (f = msg.getTxInfo()) && gw_gw_pb.DownlinkTxInfo.toObject(includeInstance, f)
};
if (includeInstance) {
@ -1688,7 +1689,7 @@ proto.integration.TxAckEvent.deserializeBinaryFromReader = function(msg, reader)
var field = reader.getFieldNumber();
switch (field) {
case 1:
var value = /** @type {string} */ (reader.readString());
var value = /** @type {number} */ (reader.readUint32());
msg.setDownlinkId(value);
break;
case 2:
@ -1714,8 +1715,8 @@ proto.integration.TxAckEvent.deserializeBinaryFromReader = function(msg, reader)
msg.setGatewayId(value);
break;
case 7:
var value = new gw_gw_pb.DownlinkTXInfo;
reader.readMessage(value,gw_gw_pb.DownlinkTXInfo.deserializeBinaryFromReader);
var value = new gw_gw_pb.DownlinkTxInfo;
reader.readMessage(value,gw_gw_pb.DownlinkTxInfo.deserializeBinaryFromReader);
msg.setTxInfo(value);
break;
default:
@ -1757,8 +1758,8 @@ proto.integration.TxAckEvent.prototype.serializeBinary = function() {
proto.integration.TxAckEvent.prototype.serializeBinaryToWriter = function (writer) {
var f = undefined;
f = this.getDownlinkId();
if (f.length > 0) {
writer.writeString(
if (f !== 0) {
writer.writeUint32(
1,
f
);
@ -1805,7 +1806,7 @@ proto.integration.TxAckEvent.prototype.serializeBinaryToWriter = function (write
writer.writeMessage(
7,
f,
gw_gw_pb.DownlinkTXInfo.serializeBinaryToWriter
gw_gw_pb.DownlinkTxInfo.serializeBinaryToWriter
);
}
};
@ -1821,15 +1822,15 @@ proto.integration.TxAckEvent.prototype.cloneMessage = function() {
/**
* optional string downlink_id = 1;
* @return {string}
* optional uint32 downlink_id = 1;
* @return {number}
*/
proto.integration.TxAckEvent.prototype.getDownlinkId = function() {
return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
return /** @type {number} */ (jspb.Message.getFieldProto3(this, 1, 0));
};
/** @param {string} value */
/** @param {number} value */
proto.integration.TxAckEvent.prototype.setDownlinkId = function(value) {
jspb.Message.setField(this, 1, value);
};
@ -1941,16 +1942,16 @@ proto.integration.TxAckEvent.prototype.setGatewayId = function(value) {
/**
* optional gw.DownlinkTXInfo tx_info = 7;
* @return {proto.gw.DownlinkTXInfo}
* optional gw.DownlinkTxInfo tx_info = 7;
* @return {proto.gw.DownlinkTxInfo}
*/
proto.integration.TxAckEvent.prototype.getTxInfo = function() {
return /** @type{proto.gw.DownlinkTXInfo} */ (
jspb.Message.getWrapperField(this, gw_gw_pb.DownlinkTXInfo, 7));
return /** @type{proto.gw.DownlinkTxInfo} */ (
jspb.Message.getWrapperField(this, gw_gw_pb.DownlinkTxInfo, 7));
};
/** @param {proto.gw.DownlinkTXInfo|undefined} value */
/** @param {proto.gw.DownlinkTxInfo|undefined} value */
proto.integration.TxAckEvent.prototype.setTxInfo = function(value) {
jspb.Message.setWrapperField(this, 7, value);
};
@ -3317,6 +3318,343 @@ proto.integration.IntegrationEvent.prototype.hasObject = function() {
};
/**
* Generated by JsPbCodeGenerator.
* @param {Array=} opt_data Optional initial data array, typically from a
* server response, or constructed directly in Javascript. The array is used
* in place and becomes part of the constructed object. It is not cloned.
* If no data is provided, the constructed object will be empty, but still
* valid.
* @extends {jspb.Message}
* @constructor
*/
proto.integration.DownlinkCommand = function(opt_data) {
jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.integration.DownlinkCommand, jspb.Message);
if (goog.DEBUG && !COMPILED) {
proto.integration.DownlinkCommand.displayName = 'proto.integration.DownlinkCommand';
}
if (jspb.Message.GENERATE_TO_OBJECT) {
/**
* Creates an object representation of this proto suitable for use in Soy templates.
* Field names that are reserved in JavaScript and will be renamed to pb_name.
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
* For the list of reserved names please see:
* com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
* @param {boolean=} opt_includeInstance Whether to include the JSPB instance
* for transitional soy proto support: http://goto/soy-param-migration
* @return {!Object}
*/
proto.integration.DownlinkCommand.prototype.toObject = function(opt_includeInstance) {
return proto.integration.DownlinkCommand.toObject(opt_includeInstance, this);
};
/**
* Static version of the {@see toObject} method.
* @param {boolean|undefined} includeInstance Whether to include the JSPB
* instance for transitional soy proto support:
* http://goto/soy-param-migration
* @param {!proto.integration.DownlinkCommand} msg The msg instance to transform.
* @return {!Object}
*/
proto.integration.DownlinkCommand.toObject = function(includeInstance, msg) {
var f, obj = {
id: msg.getId(),
devEui: msg.getDevEui(),
confirmed: msg.getConfirmed(),
fPort: msg.getFPort(),
data: msg.getData_asB64(),
object: (f = msg.getObject()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f)
};
if (includeInstance) {
obj.$jspbMessageInstance = msg;
}
return obj;
};
}
/**
* Deserializes binary data (in protobuf wire format).
* @param {jspb.ByteSource} bytes The bytes to deserialize.
* @return {!proto.integration.DownlinkCommand}
*/
proto.integration.DownlinkCommand.deserializeBinary = function(bytes) {
var reader = new jspb.BinaryReader(bytes);
var msg = new proto.integration.DownlinkCommand;
return proto.integration.DownlinkCommand.deserializeBinaryFromReader(msg, reader);
};
/**
* Deserializes binary data (in protobuf wire format) from the
* given reader into the given message object.
* @param {!proto.integration.DownlinkCommand} msg The message object to deserialize into.
* @param {!jspb.BinaryReader} reader The BinaryReader to use.
* @return {!proto.integration.DownlinkCommand}
*/
proto.integration.DownlinkCommand.deserializeBinaryFromReader = function(msg, reader) {
while (reader.nextField()) {
if (reader.isEndGroup()) {
break;
}
var field = reader.getFieldNumber();
switch (field) {
case 1:
var value = /** @type {string} */ (reader.readString());
msg.setId(value);
break;
case 2:
var value = /** @type {string} */ (reader.readString());
msg.setDevEui(value);
break;
case 3:
var value = /** @type {boolean} */ (reader.readBool());
msg.setConfirmed(value);
break;
case 4:
var value = /** @type {number} */ (reader.readUint32());
msg.setFPort(value);
break;
case 5:
var value = /** @type {!Uint8Array} */ (reader.readBytes());
msg.setData(value);
break;
case 6:
var value = new google_protobuf_struct_pb.Struct;
reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);
msg.setObject(value);
break;
default:
reader.skipField();
break;
}
}
return msg;
};
/**
* Class method variant: serializes the given message to binary data
* (in protobuf wire format), writing to the given BinaryWriter.
* @param {!proto.integration.DownlinkCommand} message
* @param {!jspb.BinaryWriter} writer
*/
proto.integration.DownlinkCommand.serializeBinaryToWriter = function(message, writer) {
message.serializeBinaryToWriter(writer);
};
/**
* Serializes the message to binary data (in protobuf wire format).
* @return {!Uint8Array}
*/
proto.integration.DownlinkCommand.prototype.serializeBinary = function() {
var writer = new jspb.BinaryWriter();
this.serializeBinaryToWriter(writer);
return writer.getResultBuffer();
};
/**
* Serializes the message to binary data (in protobuf wire format),
* writing to the given BinaryWriter.
* @param {!jspb.BinaryWriter} writer
*/
proto.integration.DownlinkCommand.prototype.serializeBinaryToWriter = function (writer) {
var f = undefined;
f = this.getId();
if (f.length > 0) {
writer.writeString(
1,
f
);
}
f = this.getDevEui();
if (f.length > 0) {
writer.writeString(
2,
f
);
}
f = this.getConfirmed();
if (f) {
writer.writeBool(
3,
f
);
}
f = this.getFPort();
if (f !== 0) {
writer.writeUint32(
4,
f
);
}
f = this.getData_asU8();
if (f.length > 0) {
writer.writeBytes(
5,
f
);
}
f = this.getObject();
if (f != null) {
writer.writeMessage(
6,
f,
google_protobuf_struct_pb.Struct.serializeBinaryToWriter
);
}
};
/**
* Creates a deep clone of this proto. No data is shared with the original.
* @return {!proto.integration.DownlinkCommand} The clone.
*/
proto.integration.DownlinkCommand.prototype.cloneMessage = function() {
return /** @type {!proto.integration.DownlinkCommand} */ (jspb.Message.cloneMessage(this));
};
/**
* optional string id = 1;
* @return {string}
*/
proto.integration.DownlinkCommand.prototype.getId = function() {
return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
};
/** @param {string} value */
proto.integration.DownlinkCommand.prototype.setId = function(value) {
jspb.Message.setField(this, 1, value);
};
/**
* optional string dev_eui = 2;
* @return {string}
*/
proto.integration.DownlinkCommand.prototype.getDevEui = function() {
return /** @type {string} */ (jspb.Message.getFieldProto3(this, 2, ""));
};
/** @param {string} value */
proto.integration.DownlinkCommand.prototype.setDevEui = function(value) {
jspb.Message.setField(this, 2, value);
};
/**
* optional bool confirmed = 3;
* Note that Boolean fields may be set to 0/1 when serialized from a Java server.
* You should avoid comparisons like {@code val === true/false} in those cases.
* @return {boolean}
*/
proto.integration.DownlinkCommand.prototype.getConfirmed = function() {
return /** @type {boolean} */ (jspb.Message.getFieldProto3(this, 3, false));
};
/** @param {boolean} value */
proto.integration.DownlinkCommand.prototype.setConfirmed = function(value) {
jspb.Message.setField(this, 3, value);
};
/**
* optional uint32 f_port = 4;
* @return {number}
*/
proto.integration.DownlinkCommand.prototype.getFPort = function() {
return /** @type {number} */ (jspb.Message.getFieldProto3(this, 4, 0));
};
/** @param {number} value */
proto.integration.DownlinkCommand.prototype.setFPort = function(value) {
jspb.Message.setField(this, 4, value);
};
/**
* optional bytes data = 5;
* @return {!(string|Uint8Array)}
*/
proto.integration.DownlinkCommand.prototype.getData = function() {
return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldProto3(this, 5, ""));
};
/**
* optional bytes data = 5;
* This is a type-conversion wrapper around `getData()`
* @return {string}
*/
proto.integration.DownlinkCommand.prototype.getData_asB64 = function() {
return /** @type {string} */ (jspb.Message.bytesAsB64(
this.getData()));
};
/**
* optional bytes data = 5;
* Note that Uint8Array is not supported on all browsers.
* @see http://caniuse.com/Uint8Array
* This is a type-conversion wrapper around `getData()`
* @return {!Uint8Array}
*/
proto.integration.DownlinkCommand.prototype.getData_asU8 = function() {
return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
this.getData()));
};
/** @param {!(string|Uint8Array)} value */
proto.integration.DownlinkCommand.prototype.setData = function(value) {
jspb.Message.setField(this, 5, value);
};
/**
* optional google.protobuf.Struct object = 6;
* @return {proto.google.protobuf.Struct}
*/
proto.integration.DownlinkCommand.prototype.getObject = function() {
return /** @type{proto.google.protobuf.Struct} */ (
jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 6));
};
/** @param {proto.google.protobuf.Struct|undefined} value */
proto.integration.DownlinkCommand.prototype.setObject = function(value) {
jspb.Message.setWrapperField(this, 6, value);
};
proto.integration.DownlinkCommand.prototype.clearObject = function() {
this.setObject(undefined);
};
/**
* Returns whether this field is set.
* @return{!boolean}
*/
proto.integration.DownlinkCommand.prototype.hasObject = function() {
return jspb.Message.getField(this, 6) != null;
};
/**
* @enum {number}
*/

View File

@ -11,13 +11,13 @@ export class UplinkMeta extends jspb.Message {
hasTxInfo(): boolean;
clearTxInfo(): void;
getTxInfo(): gw_gw_pb.UplinkTXInfo | undefined;
setTxInfo(value?: gw_gw_pb.UplinkTXInfo): void;
getTxInfo(): gw_gw_pb.UplinkTxInfo | undefined;
setTxInfo(value?: gw_gw_pb.UplinkTxInfo): void;
clearRxInfoList(): void;
getRxInfoList(): Array<gw_gw_pb.UplinkRXInfo>;
setRxInfoList(value: Array<gw_gw_pb.UplinkRXInfo>): void;
addRxInfo(value?: gw_gw_pb.UplinkRXInfo, index?: number): gw_gw_pb.UplinkRXInfo;
getRxInfoList(): Array<gw_gw_pb.UplinkRxInfo>;
setRxInfoList(value: Array<gw_gw_pb.UplinkRxInfo>): void;
addRxInfo(value?: gw_gw_pb.UplinkRxInfo, index?: number): gw_gw_pb.UplinkRxInfo;
getPhyPayloadByteCount(): number;
setPhyPayloadByteCount(value: number): void;
@ -44,8 +44,8 @@ export class UplinkMeta extends jspb.Message {
export namespace UplinkMeta {
export type AsObject = {
devEui: string,
txInfo?: gw_gw_pb.UplinkTXInfo.AsObject,
rxInfoList: Array<gw_gw_pb.UplinkRXInfo.AsObject>,
txInfo?: gw_gw_pb.UplinkTxInfo.AsObject,
rxInfoList: Array<gw_gw_pb.UplinkRxInfo.AsObject>,
phyPayloadByteCount: number,
macCommandByteCount: number,
applicationPayloadByteCount: number,
@ -62,8 +62,8 @@ export class DownlinkMeta extends jspb.Message {
hasTxInfo(): boolean;
clearTxInfo(): void;
getTxInfo(): gw_gw_pb.DownlinkTXInfo | undefined;
setTxInfo(value?: gw_gw_pb.DownlinkTXInfo): void;
getTxInfo(): gw_gw_pb.DownlinkTxInfo | undefined;
setTxInfo(value?: gw_gw_pb.DownlinkTxInfo): void;
getPhyPayloadByteCount(): number;
setPhyPayloadByteCount(value: number): void;
@ -94,7 +94,7 @@ export namespace DownlinkMeta {
export type AsObject = {
devEui: string,
multicastGroupId: string,
txInfo?: gw_gw_pb.DownlinkTXInfo.AsObject,
txInfo?: gw_gw_pb.DownlinkTxInfo.AsObject,
phyPayloadByteCount: number,
macCommandByteCount: number,
applicationPayloadByteCount: number,

View File

@ -67,9 +67,9 @@ proto.meta.UplinkMeta.prototype.toObject = function(opt_includeInstance) {
proto.meta.UplinkMeta.toObject = function(includeInstance, msg) {
var f, obj = {
devEui: msg.getDevEui(),
txInfo: (f = msg.getTxInfo()) && gw_gw_pb.UplinkTXInfo.toObject(includeInstance, f),
txInfo: (f = msg.getTxInfo()) && gw_gw_pb.UplinkTxInfo.toObject(includeInstance, f),
rxInfoList: jspb.Message.toObjectList(msg.getRxInfoList(),
gw_gw_pb.UplinkRXInfo.toObject, includeInstance),
gw_gw_pb.UplinkRxInfo.toObject, includeInstance),
phyPayloadByteCount: msg.getPhyPayloadByteCount(),
macCommandByteCount: msg.getMacCommandByteCount(),
applicationPayloadByteCount: msg.getApplicationPayloadByteCount(),
@ -115,13 +115,13 @@ proto.meta.UplinkMeta.deserializeBinaryFromReader = function(msg, reader) {
msg.setDevEui(value);
break;
case 2:
var value = new gw_gw_pb.UplinkTXInfo;
reader.readMessage(value,gw_gw_pb.UplinkTXInfo.deserializeBinaryFromReader);
var value = new gw_gw_pb.UplinkTxInfo;
reader.readMessage(value,gw_gw_pb.UplinkTxInfo.deserializeBinaryFromReader);
msg.setTxInfo(value);
break;
case 3:
var value = new gw_gw_pb.UplinkRXInfo;
reader.readMessage(value,gw_gw_pb.UplinkRXInfo.deserializeBinaryFromReader);
var value = new gw_gw_pb.UplinkRxInfo;
reader.readMessage(value,gw_gw_pb.UplinkRxInfo.deserializeBinaryFromReader);
msg.getRxInfoList().push(value);
msg.setRxInfoList(msg.getRxInfoList());
break;
@ -191,7 +191,7 @@ proto.meta.UplinkMeta.prototype.serializeBinaryToWriter = function (writer) {
writer.writeMessage(
2,
f,
gw_gw_pb.UplinkTXInfo.serializeBinaryToWriter
gw_gw_pb.UplinkTxInfo.serializeBinaryToWriter
);
}
f = this.getRxInfoList();
@ -199,7 +199,7 @@ proto.meta.UplinkMeta.prototype.serializeBinaryToWriter = function (writer) {
writer.writeRepeatedMessage(
3,
f,
gw_gw_pb.UplinkRXInfo.serializeBinaryToWriter
gw_gw_pb.UplinkRxInfo.serializeBinaryToWriter
);
}
f = this.getPhyPayloadByteCount();
@ -258,16 +258,16 @@ proto.meta.UplinkMeta.prototype.setDevEui = function(value) {
/**
* optional gw.UplinkTXInfo tx_info = 2;
* @return {proto.gw.UplinkTXInfo}
* optional gw.UplinkTxInfo tx_info = 2;
* @return {proto.gw.UplinkTxInfo}
*/
proto.meta.UplinkMeta.prototype.getTxInfo = function() {
return /** @type{proto.gw.UplinkTXInfo} */ (
jspb.Message.getWrapperField(this, gw_gw_pb.UplinkTXInfo, 2));
return /** @type{proto.gw.UplinkTxInfo} */ (
jspb.Message.getWrapperField(this, gw_gw_pb.UplinkTxInfo, 2));
};
/** @param {proto.gw.UplinkTXInfo|undefined} value */
/** @param {proto.gw.UplinkTxInfo|undefined} value */
proto.meta.UplinkMeta.prototype.setTxInfo = function(value) {
jspb.Message.setWrapperField(this, 2, value);
};
@ -288,18 +288,18 @@ proto.meta.UplinkMeta.prototype.hasTxInfo = function() {
/**
* repeated gw.UplinkRXInfo rx_info = 3;
* repeated gw.UplinkRxInfo rx_info = 3;
* If you change this array by adding, removing or replacing elements, or if you
* replace the array itself, then you must call the setter to update it.
* @return {!Array.<!proto.gw.UplinkRXInfo>}
* @return {!Array.<!proto.gw.UplinkRxInfo>}
*/
proto.meta.UplinkMeta.prototype.getRxInfoList = function() {
return /** @type{!Array.<!proto.gw.UplinkRXInfo>} */ (
jspb.Message.getRepeatedWrapperField(this, gw_gw_pb.UplinkRXInfo, 3));
return /** @type{!Array.<!proto.gw.UplinkRxInfo>} */ (
jspb.Message.getRepeatedWrapperField(this, gw_gw_pb.UplinkRxInfo, 3));
};
/** @param {Array.<!proto.gw.UplinkRXInfo>} value */
/** @param {Array.<!proto.gw.UplinkRxInfo>} value */
proto.meta.UplinkMeta.prototype.setRxInfoList = function(value) {
jspb.Message.setRepeatedWrapperField(this, 3, value);
};
@ -418,7 +418,7 @@ proto.meta.DownlinkMeta.toObject = function(includeInstance, msg) {
var f, obj = {
devEui: msg.getDevEui(),
multicastGroupId: msg.getMulticastGroupId(),
txInfo: (f = msg.getTxInfo()) && gw_gw_pb.DownlinkTXInfo.toObject(includeInstance, f),
txInfo: (f = msg.getTxInfo()) && gw_gw_pb.DownlinkTxInfo.toObject(includeInstance, f),
phyPayloadByteCount: msg.getPhyPayloadByteCount(),
macCommandByteCount: msg.getMacCommandByteCount(),
applicationPayloadByteCount: msg.getApplicationPayloadByteCount(),
@ -469,8 +469,8 @@ proto.meta.DownlinkMeta.deserializeBinaryFromReader = function(msg, reader) {
msg.setMulticastGroupId(value);
break;
case 3:
var value = new gw_gw_pb.DownlinkTXInfo;
reader.readMessage(value,gw_gw_pb.DownlinkTXInfo.deserializeBinaryFromReader);
var value = new gw_gw_pb.DownlinkTxInfo;
reader.readMessage(value,gw_gw_pb.DownlinkTxInfo.deserializeBinaryFromReader);
msg.setTxInfo(value);
break;
case 4:
@ -550,7 +550,7 @@ proto.meta.DownlinkMeta.prototype.serializeBinaryToWriter = function (writer) {
writer.writeMessage(
3,
f,
gw_gw_pb.DownlinkTXInfo.serializeBinaryToWriter
gw_gw_pb.DownlinkTxInfo.serializeBinaryToWriter
);
}
f = this.getPhyPayloadByteCount();
@ -631,16 +631,16 @@ proto.meta.DownlinkMeta.prototype.setMulticastGroupId = function(value) {
/**
* optional gw.DownlinkTXInfo tx_info = 3;
* @return {proto.gw.DownlinkTXInfo}
* optional gw.DownlinkTxInfo tx_info = 3;
* @return {proto.gw.DownlinkTxInfo}
*/
proto.meta.DownlinkMeta.prototype.getTxInfo = function() {
return /** @type{proto.gw.DownlinkTXInfo} */ (
jspb.Message.getWrapperField(this, gw_gw_pb.DownlinkTXInfo, 3));
return /** @type{proto.gw.DownlinkTxInfo} */ (
jspb.Message.getWrapperField(this, gw_gw_pb.DownlinkTxInfo, 3));
};
/** @param {proto.gw.DownlinkTXInfo|undefined} value */
/** @param {proto.gw.DownlinkTxInfo|undefined} value */
proto.meta.DownlinkMeta.prototype.setTxInfo = function(value) {
jspb.Message.setWrapperField(this, 3, value);
};

2
api/js/package.json vendored
View File

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

34
api/js/yarn.lock vendored
View File

@ -39,7 +39,7 @@
"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78=
integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==
"@protobufjs/base64@^1.1.2":
version "1.1.2"
@ -54,12 +54,12 @@
"@protobufjs/eventemitter@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70"
integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A=
integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==
"@protobufjs/fetch@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45"
integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=
integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==
dependencies:
"@protobufjs/aspromise" "^1.1.1"
"@protobufjs/inquire" "^1.1.0"
@ -67,27 +67,27 @@
"@protobufjs/float@^1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1"
integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=
integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==
"@protobufjs/inquire@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089"
integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=
integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==
"@protobufjs/path@^1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d"
integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=
integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==
"@protobufjs/pool@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54"
integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=
integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==
"@protobufjs/utf8@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=
integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==
"@types/google-protobuf@^3.15.5":
version "3.15.5"
@ -95,14 +95,14 @@
integrity sha512-6bgv24B+A2bo9AfzReeg5StdiijKzwwnRflA8RLd1V4Yv995LeTmo0z69/MPbBDFSiZWdZHQygLo/ccXhMEDgw==
"@types/long@^4.0.1":
version "4.0.1"
resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9"
integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==
version "4.0.2"
resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a"
integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==
"@types/node@>=12.12.47", "@types/node@>=13.7.0":
version "17.0.23"
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da"
integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==
version "17.0.40"
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.40.tgz#76ee88ae03650de8064a6cf75b8d95f9f4a16090"
integrity sha512-UXdBxNGqTMtm7hCwh9HtncFVLrXoqA3oJW30j6XWp5BH/wu3mVeaxo7cq5benFdBw34HB3XDT2TRPI7rXZ+mDg==
abbrev@1:
version "1.1.1"
@ -407,9 +407,9 @@ path-is-absolute@^1.0.0:
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
protobufjs@^6.10.0:
version "6.11.2"
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.2.tgz#de39fabd4ed32beaa08e9bb1e30d08544c1edf8b"
integrity sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==
version "6.11.3"
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74"
integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==
dependencies:
"@protobufjs/aspromise" "^1.1.2"
"@protobufjs/base64" "^1.1.2"

18
api/md/Makefile vendored Normal file
View File

@ -0,0 +1,18 @@
.PHONY: requirements api
all: requirements
requirements:
go install github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc@v1.5.1
api:
protoc -I=/googleapis -I=../proto --doc_out=./api --doc_opt=markdown,api.md \
api/application.proto \
api/device.proto \
api/device_profile.proto \
api/frame_log.proto \
api/gateway.proto \
api/multicast_group.proto \
api/tenant.proto \
api/user.proto

3866
api/md/api/api.md vendored Normal file

File diff suppressed because it is too large Load Diff

544
api/md/api/internal.md vendored Normal file
View File

@ -0,0 +1,544 @@
# Protocol Documentation
<a name="top"></a>
## Table of Contents
- [api/internal.proto](#api_internal-proto)
- [ApiKey](#api-ApiKey)
- [CreateApiKeyRequest](#api-CreateApiKeyRequest)
- [CreateApiKeyResponse](#api-CreateApiKeyResponse)
- [DeleteApiKeyRequest](#api-DeleteApiKeyRequest)
- [GetDevicesSummaryRequest](#api-GetDevicesSummaryRequest)
- [GetDevicesSummaryResponse](#api-GetDevicesSummaryResponse)
- [GetDevicesSummaryResponse.DrCountEntry](#api-GetDevicesSummaryResponse-DrCountEntry)
- [GetGatewaysSummaryRequest](#api-GetGatewaysSummaryRequest)
- [GetGatewaysSummaryResponse](#api-GetGatewaysSummaryResponse)
- [GlobalSearchRequest](#api-GlobalSearchRequest)
- [GlobalSearchResponse](#api-GlobalSearchResponse)
- [GlobalSearchResult](#api-GlobalSearchResult)
- [ListApiKeysRequest](#api-ListApiKeysRequest)
- [ListApiKeysResponse](#api-ListApiKeysResponse)
- [LogItem](#api-LogItem)
- [LogItem.PropertiesEntry](#api-LogItem-PropertiesEntry)
- [LoginRequest](#api-LoginRequest)
- [LoginResponse](#api-LoginResponse)
- [OpenIdConnect](#api-OpenIdConnect)
- [OpenIdConnectLoginRequest](#api-OpenIdConnectLoginRequest)
- [OpenIdConnectLoginResponse](#api-OpenIdConnectLoginResponse)
- [ProfileResponse](#api-ProfileResponse)
- [SettingsResponse](#api-SettingsResponse)
- [StreamDeviceEventsRequest](#api-StreamDeviceEventsRequest)
- [StreamDeviceFramesRequest](#api-StreamDeviceFramesRequest)
- [StreamGatewayFramesRequest](#api-StreamGatewayFramesRequest)
- [UserTenantLink](#api-UserTenantLink)
- [InternalService](#api-InternalService)
- [Scalar Value Types](#scalar-value-types)
<a name="api_internal-proto"></a>
<p align="right"><a href="#top">Top</a></p>
## api/internal.proto
<a name="api-ApiKey"></a>
### ApiKey
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| id | [string](#string) | | API key ID. This value will be automatically generated on create. |
| name | [string](#string) | | Name. |
| is_admin | [bool](#bool) | | Is global admin key. |
| tenant_id | [string](#string) | | Tenant ID. In case the API key is intended to manage resources under a single tenant. |
<a name="api-CreateApiKeyRequest"></a>
### CreateApiKeyRequest
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| api_key | [ApiKey](#api-ApiKey) | | The API key to create. |
<a name="api-CreateApiKeyResponse"></a>
### CreateApiKeyResponse
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| id | [string](#string) | | API key ID. |
| token | [string](#string) | | API token for authentication API requests. |
<a name="api-DeleteApiKeyRequest"></a>
### DeleteApiKeyRequest
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| id | [string](#string) | | API key ID. |
<a name="api-GetDevicesSummaryRequest"></a>
### GetDevicesSummaryRequest
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| tenant_id | [string](#string) | | Tenant ID (UUID). |
<a name="api-GetDevicesSummaryResponse"></a>
### GetDevicesSummaryResponse
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| active_count | [uint32](#uint32) | | Active count. |
| inactive_count | [uint32](#uint32) | | Inactive count. |
| dr_count | [GetDevicesSummaryResponse.DrCountEntry](#api-GetDevicesSummaryResponse-DrCountEntry) | repeated | per data-rate count. Devices that have never been seen are excluded. |
| never_seen_count | [uint32](#uint32) | | Never seen count. |
<a name="api-GetDevicesSummaryResponse-DrCountEntry"></a>
### GetDevicesSummaryResponse.DrCountEntry
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| key | [uint32](#uint32) | | |
| value | [uint32](#uint32) | | |
<a name="api-GetGatewaysSummaryRequest"></a>
### GetGatewaysSummaryRequest
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| tenant_id | [string](#string) | | Tenant ID (UUID). |
<a name="api-GetGatewaysSummaryResponse"></a>
### GetGatewaysSummaryResponse
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| active_count | [uint32](#uint32) | | Active count. |
| inactive_count | [uint32](#uint32) | | Inactive count. |
| never_seen_count | [uint32](#uint32) | | Never seen count. |
<a name="api-GlobalSearchRequest"></a>
### GlobalSearchRequest
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| search | [string](#string) | | Search query. |
| limit | [int64](#int64) | | Max number of results to return. |
| offset | [int64](#int64) | | Offset offset of the result-set (for pagination). |
<a name="api-GlobalSearchResponse"></a>
### GlobalSearchResponse
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| result | [GlobalSearchResult](#api-GlobalSearchResult) | repeated | |
<a name="api-GlobalSearchResult"></a>
### GlobalSearchResult
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| kind | [string](#string) | | Record kind. |
| score | [float](#float) | | Search score. |
| tenant_id | [string](#string) | | Organization id. |
| tenant_name | [string](#string) | | Organization name. |
| application_id | [string](#string) | | Application id. |
| application_name | [string](#string) | | Application name. |
| device_dev_eui | [string](#string) | | Device DevEUI (hex encoded). |
| device_name | [string](#string) | | Device name. |
| gateway_id | [string](#string) | | Gateway MAC (hex encoded). |
| gateway_name | [string](#string) | | Gateway name. |
<a name="api-ListApiKeysRequest"></a>
### ListApiKeysRequest
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| limit | [uint32](#uint32) | | Max number of items to return. |
| offset | [uint32](#uint32) | | Offset in the result-set (for pagination). |
| is_admin | [bool](#bool) | | Return only admin keys. |
| tenant_id | [string](#string) | | Filter on tenant ID. |
<a name="api-ListApiKeysResponse"></a>
### ListApiKeysResponse
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| total_count | [uint32](#uint32) | | Total number of API keys. |
| result | [ApiKey](#api-ApiKey) | repeated | |
<a name="api-LogItem"></a>
### LogItem
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| id | [string](#string) | | ID. |
| time | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | Timestamp. |
| description | [string](#string) | | Message. |
| body | [string](#string) | | Body. |
| properties | [LogItem.PropertiesEntry](#api-LogItem-PropertiesEntry) | repeated | Properties. |
<a name="api-LogItem-PropertiesEntry"></a>
### LogItem.PropertiesEntry
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| key | [string](#string) | | |
| value | [string](#string) | | |
<a name="api-LoginRequest"></a>
### LoginRequest
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| email | [string](#string) | | Email of the user. |
| password | [string](#string) | | Password of the user. |
<a name="api-LoginResponse"></a>
### LoginResponse
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| jwt | [string](#string) | | The JWT tag to be used to access chirpstack-application-server interfaces. |
<a name="api-OpenIdConnect"></a>
### OpenIdConnect
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| enabled | [bool](#bool) | | Enable OpenId Connect authentication. |
| login_url | [string](#string) | | Login url. |
| login_label | [string](#string) | | Login label. |
| logout_url | [string](#string) | | Logout url. |
<a name="api-OpenIdConnectLoginRequest"></a>
### OpenIdConnectLoginRequest
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| code | [string](#string) | | OpenId Connect callback code. |
| state | [string](#string) | | OpenId Connect callback state. |
<a name="api-OpenIdConnectLoginResponse"></a>
### OpenIdConnectLoginResponse
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| token | [string](#string) | | Token to use for authentication. |
<a name="api-ProfileResponse"></a>
### ProfileResponse
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| user | [User](#api-User) | | User object. |
| tenants | [UserTenantLink](#api-UserTenantLink) | repeated | Tenants to which the user is associated. |
<a name="api-SettingsResponse"></a>
### SettingsResponse
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| openid_connect | [OpenIdConnect](#api-OpenIdConnect) | | OpenId Connect settings. |
<a name="api-StreamDeviceEventsRequest"></a>
### StreamDeviceEventsRequest
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| dev_eui | [string](#string) | | Device EUI. |
<a name="api-StreamDeviceFramesRequest"></a>
### StreamDeviceFramesRequest
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| dev_eui | [string](#string) | | Device EUI. |
<a name="api-StreamGatewayFramesRequest"></a>
### StreamGatewayFramesRequest
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| gateway_id | [string](#string) | | Gateway ID (EUI64). |
<a name="api-UserTenantLink"></a>
### UserTenantLink
Defines a tenant to which the user is associated.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| created_at | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | Created at timestamp. |
| updated_at | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | Last update timestamp. |
| tenant_id | [string](#string) | | Tenant ID. |
| is_admin | [bool](#bool) | | User is admin within the context of this tenant. There is no need to set the is_device_admin and is_gateway_admin flags. |
| is_device_admin | [bool](#bool) | | User is able to modify device related resources (applications, device-profiles, devices, multicast-groups). |
| is_gateway_admin | [bool](#bool) | | User is able to modify gateways. |
<a name="api-InternalService"></a>
### InternalService
InternalService is the service providing API endpoints for internal usage.
| Method Name | Request Type | Response Type | Description |
| ----------- | ------------ | ------------- | ------------|
| Login | [LoginRequest](#api-LoginRequest) | [LoginResponse](#api-LoginResponse) | Log in a user |
| Profile | [.google.protobuf.Empty](#google-protobuf-Empty) | [ProfileResponse](#api-ProfileResponse) | Get the current user&#39;s profile |
| GlobalSearch | [GlobalSearchRequest](#api-GlobalSearchRequest) | [GlobalSearchResponse](#api-GlobalSearchResponse) | Perform a global search. |
| CreateApiKey | [CreateApiKeyRequest](#api-CreateApiKeyRequest) | [CreateApiKeyResponse](#api-CreateApiKeyResponse) | CreateApiKey creates the given API key. |
| DeleteApiKey | [DeleteApiKeyRequest](#api-DeleteApiKeyRequest) | [.google.protobuf.Empty](#google-protobuf-Empty) | DeleteApiKey deletes the API key. |
| ListApiKeys | [ListApiKeysRequest](#api-ListApiKeysRequest) | [ListApiKeysResponse](#api-ListApiKeysResponse) | ListApiKeys lists the available API keys. |
| Settings | [.google.protobuf.Empty](#google-protobuf-Empty) | [SettingsResponse](#api-SettingsResponse) | Get the global settings. |
| OpenIdConnectLogin | [OpenIdConnectLoginRequest](#api-OpenIdConnectLoginRequest) | [OpenIdConnectLoginResponse](#api-OpenIdConnectLoginResponse) | OpenId Connect login. |
| GetDevicesSummary | [GetDevicesSummaryRequest](#api-GetDevicesSummaryRequest) | [GetDevicesSummaryResponse](#api-GetDevicesSummaryResponse) | GetDevicesSummary returns an aggregated summary of the devices. |
| GetGatewaysSummary | [GetGatewaysSummaryRequest](#api-GetGatewaysSummaryRequest) | [GetGatewaysSummaryResponse](#api-GetGatewaysSummaryResponse) | GetGatewaysSummary returns an aggregated summary of the gateways. |
| StreamGatewayFrames | [StreamGatewayFramesRequest](#api-StreamGatewayFramesRequest) | [LogItem](#api-LogItem) stream | Stream frame for the given Gateway ID. |
| StreamDeviceFrames | [StreamDeviceFramesRequest](#api-StreamDeviceFramesRequest) | [LogItem](#api-LogItem) stream | Stream frames for the given Device EUI. |
| StreamDeviceEvents | [StreamDeviceEventsRequest](#api-StreamDeviceEventsRequest) | [LogItem](#api-LogItem) stream | Stream events for the given Device EUI. |
## Scalar Value Types
| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby |
| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- |
| <a name="double" /> double | | double | double | float | float64 | double | float | Float |
| <a name="float" /> float | | float | float | float | float32 | float | float | Float |
| <a name="int32" /> int32 | Uses variable-length encoding. Inefficient for encoding negative numbers if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) |
| <a name="int64" /> int64 | Uses variable-length encoding. Inefficient for encoding negative numbers if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum |
| <a name="uint32" /> uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) |
| <a name="uint64" /> uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) |
| <a name="sint32" /> sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) |
| <a name="sint64" /> sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum |
| <a name="fixed32" /> fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) |
| <a name="fixed64" /> fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum |
| <a name="sfixed32" /> sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) |
| <a name="sfixed64" /> sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum |
| <a name="bool" /> bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass |
| <a name="string" /> string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) |
| <a name="bytes" /> bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) |

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "ApplicationProto";

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "DeviceProto";

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "DeviceProfileProto";
@ -54,6 +54,9 @@ message DeviceProfile {
// Name.
string name = 3;
// Description.
string description = 26;
// Region.
common.Region region = 4;
@ -69,11 +72,11 @@ message DeviceProfile {
// Payload codec runtime.
CodecRuntime payload_codec_runtime = 8;
// Payload codec encoder config.
string payload_encoder_config = 9;
// Payload codec script.
string payload_codec_script = 9;
// Payload codec decoder config.
string payload_decoder_config = 10;
// Flush queue on device activation.
bool flush_queue_on_activate = 10;
// Uplink interval (seconds).
// This defines the expected uplink interval which the device uses for

View File

@ -0,0 +1,207 @@
syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "DeviceProfileTemplateProto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto";
import "common/common.proto";
import "api/device_profile.proto";
// DeviceProfileTemplateService is the service providing API methods for managing device-profile templates.
service DeviceProfileTemplateService {
// Create the given device-profile template.
rpc Create(CreateDeviceProfileTemplateRequest) returns (google.protobuf.Empty) {}
// Get the device-profile template for the given ID.
rpc Get(GetDeviceProfileTemplateRequest) returns (GetDeviceProfileTemplateResponse) {}
// Update the given device-profile template.
rpc Update(UpdateDeviceProfileTemplateRequest) returns (google.protobuf.Empty) {}
// Delete the device-profile template with the given ID.
rpc Delete(DeleteDeviceProfileTemplateRequest) returns (google.protobuf.Empty) {}
// List the available device-profile templates.
rpc List(ListDeviceProfileTemplatesRequest) returns (ListDeviceProfileTemplatesResponse) {}
}
message DeviceProfileTemplate {
// Device-profile template ID.
string id = 1;
// Name.
string name = 2;
// Description.
string description = 3;
// Vendor.
string vendor = 4;
// Firmware.
string firmware = 5;
// Region.
common.Region region = 6;
// LoRaWAN mac-version.
common.MacVersion mac_version = 7;
// Regional parameters revision.
common.RegParamsRevision reg_params_revision = 8;
// ADR algorithm ID.
string adr_algorithm_id = 9;
// Payload codec runtime.
CodecRuntime payload_codec_runtime = 10;
// Payload codec script.
string payload_codec_script = 11;
// Flush queue on device activation.
bool flush_queue_on_activate = 12;
// Uplink interval (seconds).
// This defines the expected uplink interval which the device uses for
// communication. When the uplink interval has expired and no uplink has
// been received, the device is considered inactive.
uint32 uplink_interval = 13;
// Device-status request interval (times / day).
// This defines the times per day that ChirpStack will request the device-status
// from the device.
uint32 device_status_req_interval = 14;
// Supports OTAA.
bool supports_otaa = 15;
// Supports Class B.
bool supports_class_b = 16;
// Supports Class-C.
bool supports_class_c = 17;
// Class-B timeout (seconds).
// This is the maximum time ChirpStack will wait to receive an acknowledgement from the device (if requested).
uint32 class_b_timeout = 18;
// Class-B ping-slot periodicity.
uint32 class_b_ping_slot_period = 19;
// Class-B ping-slot DR.
uint32 class_b_ping_slot_dr = 20;
// Class-B ping-slot freq (Hz).
uint32 class_b_ping_slot_freq = 21;
// Class-C timeout (seconds).
// This is the maximum time ChirpStack will wait to receive an acknowledgement from the device (if requested).
uint32 class_c_timeout = 22;
// RX1 delay (for ABP).
uint32 abp_rx1_delay = 23;
// RX1 DR offset (for ABP).
uint32 abp_rx1_dr_offset = 24;
// RX2 DR (for ABP).
uint32 abp_rx2_dr = 25;
// RX2 frequency (for ABP, Hz).
uint32 abp_rx2_freq = 26;
// User defined tags.
map<string, string> tags = 27;
}
message DeviceProfileTemplateListItem {
// Device-profile template ID.
string id = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
// Name.
string name = 4;
// Vendor.
string vendor = 5;
// Firmware.
string firmware = 6;
// Region.
common.Region region = 7;
// LoRaWAN mac-version.
common.MacVersion mac_version = 8;
// Regional parameters revision.
common.RegParamsRevision reg_params_revision = 9;
// Supports OTAA.
bool supports_otaa = 10;
// Supports Class-B.
bool supports_class_b = 11;
// Supports Class-C.
bool supports_class_c = 12;
}
message CreateDeviceProfileTemplateRequest {
// Object to create.
DeviceProfileTemplate device_profile_template = 1;
}
message GetDeviceProfileTemplateRequest {
// ID.
string id = 1;
}
message GetDeviceProfileTemplateResponse {
// Device-profile template object.
DeviceProfileTemplate device_profile_template = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
}
message UpdateDeviceProfileTemplateRequest {
// Object to update.
DeviceProfileTemplate device_profile_template = 1;
}
message DeleteDeviceProfileTemplateRequest {
// ID.
string id = 1;
}
message ListDeviceProfileTemplatesRequest {
// Max number of device-profile templates to return in the result-set.
uint32 limit = 1;
// Offset in the result-set (for pagination).
uint32 offset = 2;
}
message ListDeviceProfileTemplatesResponse {
// Total number of device-profile templates.
uint32 total_count = 1;
// Result-set.
repeated DeviceProfileTemplateListItem result = 2;
}

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "FrameLogProto";
@ -16,10 +16,10 @@ message UplinkFrameLog {
bytes phy_payload = 1;
// TX meta-data.
gw.UplinkTXInfo tx_info = 2;
gw.UplinkTxInfo tx_info = 2;
// RX meta-data.
repeated gw.UplinkRXInfo rx_info = 3;
repeated gw.UplinkRxInfo rx_info = 3;
// Message type.
common.MType m_type = 4;
@ -42,10 +42,10 @@ message DownlinkFrameLog {
bytes phy_payload = 2;
// TX meta-data.
gw.DownlinkTXInfo tx_info = 3;
gw.DownlinkTxInfo tx_info = 3;
// Downlink ID (UUID).
string downlink_id = 4;
// Downlink ID.
uint32 downlink_id = 4;
// Gateway ID (EUI64).
string gateway_id = 5;

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "GatewayProto";

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "InternalProto";

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "MulticastGroupProto";

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "InternalProto";

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "UserProto";

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

@ -2,7 +2,7 @@ syntax = "proto3";
package gw;
option go_package = "github.com/chirpstack/chirpstack-api/go/v4/gw";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/gw";
option java_package = "io.chirpstack.api.gw";
option java_multiple_files = true;
option java_outer_classname = "GatewayProto";
@ -10,8 +10,17 @@ option java_outer_classname = "GatewayProto";
import "common/common.proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/struct.proto";
enum CodeRate {
CR_UNDEFINED = 0;
CR_4_5 = 1;
CR_4_6 = 2;
CR_4_7 = 3;
CR_4_8 = 4;
}
enum DownlinkTiming {
// Send the downlink immediately.
IMMEDIATELY = 0;
@ -23,7 +32,6 @@ enum DownlinkTiming {
GPS_EPOCH = 2;
}
enum FineTimestampType {
// No fine-timestamp available.
NONE = 0;
@ -84,17 +92,17 @@ enum TxAckStatus {
message Modulation {
oneof parameters {
// LoRa modulation information.
LoRaModulationInfo lora = 3 [json_name = "loRa"];
LoraModulationInfo lora = 3;
// FSK modulation information.
FSKModulationInfo fsk = 4;
FskModulationInfo fsk = 4;
// LR-FHSS modulation information.
LRFHSSModulationInfo lr_fhss = 5 [json_name = "lrFHSS"];
LrFhssModulationInfo lr_fhss = 5;
}
}
message UplinkTXInfo {
message UplinkTxInfoLegacy {
// Frequency (Hz).
uint32 frequency = 1;
@ -103,17 +111,25 @@ message UplinkTXInfo {
oneof modulation_info {
// LoRa modulation information.
LoRaModulationInfo lora_modulation_info = 3 [json_name = "loRaModulationInfo"];
LoraModulationInfo lora_modulation_info = 3;
// FSK modulation information.
FSKModulationInfo fsk_modulation_info = 4;
FskModulationInfo fsk_modulation_info = 4;
// LR-FHSS modulation information.
LRFHSSModulationInfo lr_fhss_modulation_info = 5 [json_name = "lrFHSSModulationInfo"];
LrFhssModulationInfo lr_fhss_modulation_info = 5;
}
}
message LoRaModulationInfo {
message UplinkTxInfo {
// Frequency (Hz).
uint32 frequency = 1;
// Modulation.
Modulation modulation = 2;
}
message LoraModulationInfo {
// Bandwidth.
uint32 bandwidth = 1;
@ -121,13 +137,16 @@ message LoRaModulationInfo {
uint32 spreading_factor = 2;
// Code-rate.
string code_rate = 3;
string code_rate_legacy = 3;
// Code-rate.
CodeRate code_rate = 5;
// Polarization inversion.
bool polarization_inversion = 4;
}
message FSKModulationInfo {
message FskModulationInfo {
// Frequency deviation.
uint32 frequency_deviation = 1;
@ -135,7 +154,7 @@ message FSKModulationInfo {
uint32 datarate = 2;
}
message LRFHSSModulationInfo {
message LrFhssModulationInfo {
// Operating channel width (OCW) in Hz.
uint32 operating_channel_width = 1;
@ -151,10 +170,10 @@ message EncryptedFineTimestamp {
uint32 aes_key_index = 1;
// Encrypted 'main' fine-timestamp (ns precision part of the timestamp).
bytes encrypted_ns = 2 [json_name = "encryptedNS"];
bytes encrypted_ns = 2;
// FPGA ID.
bytes fpga_id = 3 [json_name = "fpgaID"];
bytes fpga_id = 3;
}
message PlainFineTimestamp {
@ -164,7 +183,7 @@ message PlainFineTimestamp {
message GatewayStats {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
bytes gateway_id = 1;
// Gateway IP.
string ip = 9;
@ -183,7 +202,7 @@ message GatewayStats {
uint32 rx_packets_received = 5;
// Number of radio packets received with valid PHY CRC.
uint32 rx_packets_received_ok = 6 [json_name = "rxPacketsReceivedOK"];
uint32 rx_packets_received_ok = 6;
// Number of downlink packets received for transmission.
uint32 tx_packets_received = 7;
@ -196,7 +215,7 @@ message GatewayStats {
// Stats ID (UUID).
// Unique identifier for the gateway stats.
bytes stats_id = 11 [json_name = "statsID"];
bytes stats_id = 11;
// Tx packets per frequency.
map<uint32, uint32> tx_packets_per_frequency = 12;
@ -222,21 +241,21 @@ message PerModulationCount {
uint32 count = 2;
}
message UplinkRXInfo {
message UplinkRxInfoLegacy {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
bytes gateway_id = 1;
// RX time (only set when the gateway has a GPS module).
google.protobuf.Timestamp time = 2;
// RX time since GPS epoch (only set when the gateway has a GPS module).
google.protobuf.Duration time_since_gps_epoch = 3 [json_name = "timeSinceGPSEpoch"];
google.protobuf.Duration time_since_gps_epoch = 3;
// RSSI.
int32 rssi = 5;
// LoRa SNR.
double lora_snr = 6 [json_name = "loRaSNR"];
double lora_snr = 6;
// Channel.
uint32 channel = 7;
@ -270,19 +289,60 @@ message UplinkRXInfo {
// Uplink ID (UUID bytes).
// Unique and random ID which can be used to correlate the uplink across multiple logs.
bytes uplink_id = 16 [json_name = "uplinkID"];
bytes uplink_id = 16;
// CRC status.
CRCStatus crc_status = 17 [json_name = "crcStatus"];
CRCStatus crc_status = 17;
// Optional meta-data map.
map<string, string> metadata = 18;
}
message DownlinkTXInfo {
message UplinkRxInfo {
// Gateway ID.
string gateway_id = 1;
// Uplink ID.
uint32 uplink_id = 2;
// RX time (only set when the gateway has a GPS module).
google.protobuf.Timestamp time = 3;
// RX time since GPS epoch (only set when the gateway has a GPS module).
google.protobuf.Duration time_since_gps_epoch = 4;
// Fine-timestamp.
// This timestamp can be used for TDOA based geolocation.
google.protobuf.Duration fine_time_since_gps_epoch = 5;
// RSSI.
int32 rssi = 6;
// SNR.
// Note: only available for LoRa modulation.
float snr = 7;
// Board.
uint32 board = 8;
// Antenna.
uint32 antenna = 9;
// Location.
common.Location location = 10;
// Gateway specific context.
// This value must be returned to the gateway on (Class-A) downlink.
bytes context = 11;
// Properties.
google.protobuf.Struct metadata = 12;
}
message DownlinkTxInfoLegacy {
// Gateway ID.
// Deprecated: replaced by gateway_id in DownlinkFrame.
bytes gateway_id = 1 [json_name = "gatewayID"];
bytes gateway_id = 1;
// TX frequency (in Hz).
uint32 frequency = 5;
@ -295,10 +355,10 @@ message DownlinkTXInfo {
oneof modulation_info {
// LoRa modulation information.
LoRaModulationInfo lora_modulation_info = 8 [json_name = "loRaModulationInfo"];
LoraModulationInfo lora_modulation_info = 8;
// FSK modulation information.
FSKModulationInfo fsk_modulation_info = 9;
FskModulationInfo fsk_modulation_info = 9;
}
// The board identifier for emitting the frame.
@ -326,6 +386,43 @@ message DownlinkTXInfo {
bytes context = 16;
}
message DownlinkTxInfo {
// TX frequency (in Hz).
uint32 frequency = 1;
// TX power (in dBm).
int32 power = 2;
// Modulation.
Modulation modulation = 3;
// The board identifier for emitting the frame.
uint32 board = 4;
// The antenna identifier for emitting the frame.
uint32 antenna = 5;
// Timing.
Timing timing = 6;
// Gateway specific context.
// In case of a Class-A downlink, this contains a copy of the uplink context.
bytes context = 7;
}
message Timing {
oneof parameters {
// Immediately timing information.
ImmediatelyTimingInfo immediately = 1;
// Context based delay timing information.
DelayTimingInfo delay = 2;
// GPS Epoch timing information.
GPSEpochTimingInfo gps_epoch = 3;
}
}
message ImmediatelyTimingInfo {
// Not implemented yet.
}
@ -339,18 +436,24 @@ message DelayTimingInfo {
message GPSEpochTimingInfo {
// Duration since GPS Epoch.
google.protobuf.Duration time_since_gps_epoch = 1 [json_name = "timeSinceGPSEpoch"];
google.protobuf.Duration time_since_gps_epoch = 1;
}
message UplinkFrame {
// PHYPayload.
bytes phy_payload = 1;
// TX meta-data.
UplinkTXInfo tx_info = 2;
// TX meta-data (deprecated).
UplinkTxInfoLegacy tx_info_legacy = 2;
// RX meta-data.
UplinkRXInfo rx_info = 3;
// RX meta-data (deprecated).
UplinkRxInfoLegacy rx_info_legacy = 3;
// Tx meta-data.
UplinkTxInfo tx_info = 4;
// Rx meta-data.
UplinkRxInfo rx_info = 5;
}
message UplinkFrameSet {
@ -358,27 +461,19 @@ message UplinkFrameSet {
bytes phy_payload = 1;
// TX meta-data.
UplinkTXInfo tx_info = 2;
UplinkTxInfo tx_info = 2;
// RX meta-data set.
repeated UplinkRXInfo rx_info = 3;
repeated UplinkRxInfo rx_info = 3;
}
message DownlinkFrame {
// PHYPayload.
// Deprecated: replaced by items.
bytes phy_payload = 1;
// TX meta-data.
// Deprecated: replaced by items.
DownlinkTXInfo tx_info = 2;
// Token (uint16 value).
// Deprecated: replaced by downlink_id.
uint32 token = 3;
// Downlink ID.
uint32 downlink_id = 3;
// Downlink ID (UUID).
bytes downlink_id = 4 [json_name = "downlinkID"];
// Deprecated: use downlink_id.
bytes downlink_id_legacy = 4;
// Downlink frame items.
// This makes it possible to send multiple downlink opportunities to the
@ -388,47 +483,52 @@ message DownlinkFrame {
repeated DownlinkFrameItem items = 5;
// Gateway ID.
bytes gateway_id = 6 [json_name = "gatewayID"];
// Deprecated: use gateway_id
bytes gateway_id_legacy = 6;
// Gateway ID.
string gateway_id = 7;
}
message DownlinkFrameItem {
// PHYPayload.
bytes phy_payload = 1;
// TX meta-data.
DownlinkTXInfo tx_info = 2;
// TX meta-data (deprecated).
DownlinkTxInfoLegacy tx_info_legacy = 2;
// Tx meta-data.
DownlinkTxInfo tx_info = 3;
}
message DownlinkTXAck {
message DownlinkTxAck {
// Gateway ID (deprecated).
bytes gateway_id_legacy = 1;
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
string gateway_id = 6;
// Token (uint16 value).
// Deprecated: replaced by downlink_id.
uint32 token = 2;
// Downlink ID.
uint32 downlink_id = 2;
// Error.
// Deprecated: replaced by items.
string error = 3;
// Downlink ID (UUID).
bytes downlink_id = 4 [json_name = "downlinkID"];
// Downlink ID (deprecated).
bytes downlink_id_legacy = 4;
// Downlink frame items.
// This list has the same length as the request and indicates which
// downlink frame has been emitted of the requested list (or why it failed).
// Note that at most one item has a positive acknowledgement.
repeated DownlinkTXAckItem items = 5;
repeated DownlinkTxAckItem items = 5;
}
message DownlinkTXAckItem {
message DownlinkTxAckItem {
// The Ack status of this item.
TxAckStatus status = 1;
}
message GatewayConfiguration {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
bytes gateway_id = 1;
// Configuration version.
string version = 2;
@ -449,7 +549,7 @@ message ChannelConfiguration {
oneof modulation_config {
// LoRa modulation config.
LoRaModulationConfig lora_modulation_config = 3 [json_name = "loRaModulationConfig"];
LoRaModulationConfig lora_modulation_config = 3;
// FSK modulation config.
FSKModulationConfig fsk_modulation_config = 4;
@ -480,7 +580,7 @@ message FSKModulationConfig {
message GatewayCommandExecRequest {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
bytes gateway_id = 1;
// Command to execute.
// This command must be pre-configured in the LoRa Gateway Bridge configuration.
@ -489,7 +589,7 @@ message GatewayCommandExecRequest {
// Execution request ID (UUID).
// The same token will be returned when the execution of the command has
// completed.
bytes ExecId = 3 [json_name = "execID"];
bytes ExecId = 3;
// Standard input.
bytes stdin = 4;
@ -500,10 +600,10 @@ message GatewayCommandExecRequest {
message GatewayCommandExecResponse {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
bytes gateway_id = 1;
// Execution request ID (UUID).
bytes exec_id = 2 [json_name = "execID"];
bytes exec_id = 2;
// Standard output.
bytes stdout = 3;
@ -520,10 +620,10 @@ message GatewayCommandExecResponse {
// integrated with the ChirpStack Gateway Bridge.
message RawPacketForwarderEvent {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
bytes gateway_id = 1;
// Raw ID (UUID).
bytes raw_id = 2 [json_name = "rawID"];
bytes raw_id = 2;
// Payload contains the raw payload.
bytes payload = 3;
@ -534,10 +634,10 @@ message RawPacketForwarderEvent {
// integrated with the ChirpStack Gateway Bridge.
message RawPacketForwarderCommand {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
bytes gateway_id = 1;
// Raw ID (UUID).
bytes raw_id = 2 [json_name = "rawID"];
bytes raw_id = 2;
// Payload contains the raw payload.
bytes payload = 3;
@ -546,7 +646,7 @@ message RawPacketForwarderCommand {
// ConnState contains the connection state of a gateway.
message ConnState {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
bytes gateway_id = 1;
enum State {
OFFLINE = 0;

View File

@ -1,202 +0,0 @@
syntax = "proto3";
package gw;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/gw";
option java_package = "io.chirpstack.api.gw";
option java_multiple_files = true;
option java_outer_classname = "GatewayProto";
import "common/common.proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/struct.proto";
enum CodeRate {
CR_UNDEFINED = 0;
CR_4_5 = 1;
CR_4_6 = 2;
CR_4_7 = 3;
CR_4_8 = 4;
}
message UplinkFrame {
// PHYPayload.
bytes phy_payload = 1;
// TX meta-data.
UplinkTxParams tx_params = 2;
// RX meta-data.
UplinkRxParams rx_params = 3;
}
message DownlinkFrame {
// Gateway ID.
string gateway_id = 1;
// Downlink ID.
uint32 downlink_id = 2;
// Downlink frame items.
// This makes it possible to send multiple downlink opportunities to the
// gateway at once (e.g. RX1 and RX2 in LoRaWAN). The first item has the
// highest priority, the last the lowest. The gateway will emit at most
// one item.
repeated DownlinkFrameItem items = 3;
}
message UplinkTxParams {
// Frequency (Hz).
uint32 frequency = 1;
// Modulation.
Modulation modulation = 2;
}
message Modulation {
oneof parameters {
// LoRa.
LoraModulationParams lora = 1;
// FSK.
FskModulationParams fsk = 2;
// LR-FHSS.
LrFhssModulationParams lr_fhss = 3;
}
}
message LoraModulationParams {
// Bandwidth (Hz).
uint32 bandwidth = 1;
// Spreading-factor.
uint32 spreading_factor = 2;
// Polarization inversion.
bool polarization_inversion = 3;
// Code-rate.
CodeRate code_rate = 4;
}
message FskModulationParams {
// Frequency deviation.
uint32 frequency_deviation = 1;
// FSK datarate (bits / sec).
uint32 datarate = 2;
}
message LrFhssModulationParams {
// Operating channel width (OCW) in Hz.
uint32 operating_channel_width = 1;
// Code-rate.
CodeRate code_rate = 2;
// Hopping grid number of steps.
uint32 grid_steps = 3;
}
message UplinkRxParams {
// Gateway ID (EUI).
string gateway_id = 1;
// Uplink ID (UUID).
uint32 uplink_id = 2;
// Rx time.
google.protobuf.Timestamp time = 3;
// RX time since GPS epoch (only set when the gateway has a GPS module).
google.protobuf.Duration time_since_gps_epoch = 4;
// Fine-timestamp.
// This timestamp can be used for TDOA based geolocation.
google.protobuf.Duration fine_time_since_gps_epoch = 5;
// RSSI.
int32 rssi = 6;
// SNR.
// Note: only available for LoRa modulation.
float snr = 7;
// Board.
uint32 board = 8;
// Antenna.
uint32 antenna = 9;
// Location.
common.Location location = 10;
// Gateway specific context.
// This value must be returned to the gateway on (Class-A) downlink.
bytes context = 11;
// Properties.
google.protobuf.Struct properties = 12;
}
message DownlinkFrameItem {
// PHYPayload.
bytes phy_payload = 1;
// Tx parameters.
DownlinkTxParams tx_params = 2;
}
message DownlinkTxParams {
// Tx frequency (Hz).
uint32 frequency = 1;
// Tx power (dBm).
int32 power = 2;
// Modulation.
Modulation modulation = 3;
// The board identifier for emitting the frame.
uint32 board = 4;
// The antenna identifier for emitting the frame.
uint32 antenna = 5;
// Downlink timing.
DownlinkTiming timing = 6;
// Gateway specific context.
// In case of a Class-A downlink, this must contain a copy of the uplink context.
bytes context = 7;
}
message DownlinkTiming {
oneof parameters {
// Immediately timing information.
DownlinkTimingImmediately immediately = 1;
// Delay timing information.
DownlinkTimingDelay delay = 2;
// GPS epoch timing information.
DownlinkTimingGpsEpoch gps_epoch = 3;
}
}
message DownlinkTimingImmediately {
// No fields implemented yet.
}
message DownlinkTimingDelay {
// Delay relative to provided context.
google.protobuf.Duration delay = 1;
}
message DownlinkTimingGpsEpoch {
// Duration since GPS epoch.
google.protobuf.Duration time_since_gps_epoch = 1;
}

View File

@ -119,10 +119,10 @@ message UplinkEvent {
google.protobuf.Struct object = 11;
// Receiving gateway RX info.
repeated gw.UplinkRXInfo rx_info = 12;
repeated gw.UplinkRxInfo rx_info = 12;
// TX info.
gw.UplinkTXInfo tx_info = 13;
gw.UplinkTxInfo tx_info = 13;
}
// JoinEvent is the message sent when a device joined the network.
@ -167,8 +167,8 @@ message AckEvent {
// for transmission. As a downlink can be scheduled in the future, this event
// does not confirm that the message has already been transmitted.
message TxAckEvent {
// Downlink ID (UUID).
string downlink_id = 1;
// Downlink ID.
uint32 downlink_id = 1;
// Timestamp.
google.protobuf.Timestamp time = 2;
@ -186,7 +186,7 @@ message TxAckEvent {
string gateway_id = 6;
// TX info.
gw.DownlinkTXInfo tx_info = 7;
gw.DownlinkTxInfo tx_info = 7;
}
// LogEvent is the message sent when a device-related log was sent.
@ -276,3 +276,28 @@ message IntegrationEvent {
// Struct containing the event object.
google.protobuf.Struct object = 6;
}
// DownlinkCommand is the command to enqueue a downlink payload for the given
// device.
message DownlinkCommand {
// ID (UUID).
// If left blank, a random UUID will be generated.
string id = 1;
// Device EUI (EUI64).
string dev_eui = 2;
// Confirmed.
bool confirmed = 3;
// FPort (must be > 0).
uint32 f_port = 4;
// Data.
// Or use the json_object field when a codec has been configured.
bytes data = 5;
// Only use this when a codec has been configured that can encode this
// object to bytes.
google.protobuf.Struct object = 6;
}

View File

@ -199,8 +199,8 @@ message DeviceGatewayRxInfoItem {
}
message DownlinkFrame {
// Downlink ID (UUID).
bytes downlink_id = 1;
// Downlink ID.
uint32 downlink_id = 1;
// DevEUI.
bytes dev_eui = 2;
@ -231,5 +231,5 @@ message LoraCloudGeolocBuffer {
message LoraCloudGeolocBufferUplink {
// RxInfo set for a single uplink.
repeated gw.UplinkRXInfo rx_info = 1;
repeated gw.UplinkRxInfo rx_info = 1;
}

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package meta;
option go_package = "github.com/chirpstack/chirpstack-api/go/v4/meta";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/meta";
option java_package = "io.chirpstack.api.meta";
option java_multiple_files = true;
option java_outer_classname = "MetaProto";
@ -16,10 +16,10 @@ message UplinkMeta {
string dev_eui = 1;
// TX meta-data.
gw.UplinkTXInfo tx_info = 2;
gw.UplinkTxInfo tx_info = 2;
// RX meta-data.
repeated gw.UplinkRXInfo rx_info = 3;
repeated gw.UplinkRxInfo rx_info = 3;
// PHYPayload byte count.
uint32 phy_payload_byte_count = 4;
@ -42,7 +42,7 @@ message DownlinkMeta {
string multicast_group_id = 2;
// TX meta-data.
gw.DownlinkTXInfo tx_info = 3;
gw.DownlinkTxInfo tx_info = 3;
// PHYPayload byte count.
uint32 phy_payload_byte_count = 4;

6
api/python/Makefile vendored
View File

@ -4,14 +4,11 @@ PROTOC := python -m grpc_tools.protoc
PROTOC_ARGS := -I=/googleapis -I=proto --python_out=src --grpc_python_out=src
PACKAGE_NAME := import \"chirpstack-api/
all: requirements pre-build version common gw api integration meta
all: requirements pre-build common gw api integration meta
requirements:
pip install grpcio-tools
version:
sed -i 's/version.*/version = "$(VERSION)",/g' ./src/setup.py
# See: https://github.com/protocolbuffers/protobuf/issues/7061
pre-build:
rm -rf proto
@ -35,6 +32,7 @@ api:
$(PROTOC) ${PROTOC_ARGS} chirpstack-api/api/tenant.proto
$(PROTOC) ${PROTOC_ARGS} chirpstack-api/api/application.proto
$(PROTOC) ${PROTOC_ARGS} chirpstack-api/api/device_profile.proto
$(PROTOC) ${PROTOC_ARGS} chirpstack-api/api/device_profile_template.proto
$(PROTOC) ${PROTOC_ARGS} chirpstack-api/api/device.proto
$(PROTOC) ${PROTOC_ARGS} chirpstack-api/api/gateway.proto
$(PROTOC) ${PROTOC_ARGS} chirpstack-api/api/frame_log.proto

View File

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

276
api/rust/Cargo.lock generated vendored
View File

@ -2,15 +2,6 @@
# It is not intended for manual editing.
version = 3
[[package]]
name = "aho-corasick"
version = "0.7.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
dependencies = [
"memchr",
]
[[package]]
name = "anyhow"
version = "1.0.45"
@ -55,6 +46,49 @@ version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
[[package]]
name = "axum"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "47594e438a243791dba58124b6669561f5baa14cb12046641d8008bf035e5a25"
dependencies = [
"async-trait",
"axum-core",
"bitflags",
"bytes",
"futures-util",
"http",
"http-body",
"hyper",
"itoa 1.0.1",
"matchit",
"memchr",
"mime",
"percent-encoding",
"pin-project-lite",
"serde",
"sync_wrapper",
"tokio",
"tower",
"tower-http",
"tower-layer",
"tower-service",
]
[[package]]
name = "axum-core"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a671c9ae99531afdd5d3ee8340b8da547779430689947144c140fc74a740244"
dependencies = [
"async-trait",
"bytes",
"futures-util",
"http",
"http-body",
"mime",
]
[[package]]
name = "base64"
version = "0.13.0"
@ -73,6 +107,12 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
[[package]]
name = "cc"
version = "1.0.73"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
[[package]]
name = "cfg-if"
version = "1.0.0"
@ -81,13 +121,15 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chirpstack_api"
version = "4.0.0"
version = "4.0.0-test.5"
dependencies = [
"hex",
"pbjson",
"pbjson-build",
"pbjson-types",
"prost",
"prost-types",
"rand",
"serde",
"tokio",
"tonic",
@ -100,11 +142,17 @@ version = "0.4.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"
dependencies = [
"libc",
"num-integer",
"num-traits",
"time",
"winapi",
]
[[package]]
name = "cmake"
version = "0.1.48"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8ad8cef104ac57b68b89df3208164d228503abbdce70f6880ffa3d970e7443a"
dependencies = [
"cc",
]
[[package]]
@ -173,7 +221,7 @@ checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753"
dependencies = [
"cfg-if",
"libc",
"wasi",
"wasi 0.10.2+wasi-snapshot-preview1",
]
[[package]]
@ -191,7 +239,7 @@ dependencies = [
"indexmap",
"slab",
"tokio",
"tokio-util",
"tokio-util 0.6.9",
"tracing",
]
@ -203,12 +251,15 @@ checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
[[package]]
name = "heck"
version = "0.3.3"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
dependencies = [
"unicode-segmentation",
]
checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
[[package]]
name = "hex"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
[[package]]
name = "http"
@ -218,7 +269,7 @@ checksum = "1323096b05d41827dadeaee54c9981958c0f94e670bc94ed80037d1a7b8b186b"
dependencies = [
"bytes",
"fnv",
"itoa",
"itoa 0.4.8",
]
[[package]]
@ -232,6 +283,12 @@ dependencies = [
"pin-project-lite",
]
[[package]]
name = "http-range-header"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29"
[[package]]
name = "httparse"
version = "1.5.1"
@ -259,7 +316,7 @@ dependencies = [
"http-body",
"httparse",
"httpdate",
"itoa",
"itoa 0.4.8",
"pin-project-lite",
"socket2",
"tokio",
@ -305,6 +362,12 @@ version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
[[package]]
name = "itoa"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
[[package]]
name = "lazy_static"
version = "1.4.0"
@ -313,9 +376,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
version = "0.2.107"
version = "0.2.124"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbe5e23404da5b4f555ef85ebed98fb4083e55a00c317800bc2a50ede9f3d219"
checksum = "21a41fed9d98f27ab1c6d161da622a4fa35e8a54a8adc24bbf3ddd0ef70b0e50"
[[package]]
name = "log"
@ -326,6 +389,12 @@ dependencies = [
"cfg-if",
]
[[package]]
name = "matchit"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73cbba799671b762df5a175adf59ce145165747bb891505c43d09aefbbf38beb"
[[package]]
name = "memchr"
version = "2.4.1"
@ -333,15 +402,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
[[package]]
name = "mio"
version = "0.7.14"
name = "mime"
version = "0.3.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc"
checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
[[package]]
name = "mio"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9"
dependencies = [
"libc",
"log",
"miow",
"ntapi",
"wasi 0.11.0+wasi-snapshot-preview1",
"winapi",
]
@ -390,9 +466,9 @@ dependencies = [
[[package]]
name = "pbjson"
version = "0.2.1"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12f64965beef9b7276dd811b81cce49569430a73ce1586aa121cb4ef9e0f498f"
checksum = "d86c0a61b93c50f35af5d8a4f134790f47cbebf8803a7219dd1e7238cd1af022"
dependencies = [
"base64",
"serde",
@ -400,9 +476,9 @@ dependencies = [
[[package]]
name = "pbjson-build"
version = "0.2.1"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d726efd7bfb8725c7100c29cb723eaa865b5e56cd41b723f193436e404c07f5"
checksum = "956a449e8a85fc040e9f8cd8fd4dd2e68059d179092401f0d8570ba059f76dae"
dependencies = [
"heck",
"itertools",
@ -412,9 +488,9 @@ dependencies = [
[[package]]
name = "pbjson-types"
version = "0.2.1"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d501adb5dc9774145e21cf497e62641d6b4c7f9db490c52388e26a0f966c7ea8"
checksum = "2c20bd6ec3b4ba0073e7e5a1a770abd95723b431bf0e1941d2dd8aace9ffb97f"
dependencies = [
"bytes",
"chrono",
@ -479,6 +555,16 @@ version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535ba"
[[package]]
name = "prettyplease"
version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b83ec2d0af5c5c556257ff52c9f98934e243b9fd39604bfb2a9b75ec2e97f18"
dependencies = [
"proc-macro2",
"syn",
]
[[package]]
name = "proc-macro2"
version = "1.0.32"
@ -490,9 +576,9 @@ dependencies = [
[[package]]
name = "prost"
version = "0.9.0"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001"
checksum = "a07b0857a71a8cb765763950499cae2413c3f9cede1133478c43600d9e146890"
dependencies = [
"bytes",
"prost-derive",
@ -500,11 +586,13 @@ dependencies = [
[[package]]
name = "prost-build"
version = "0.9.0"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5"
checksum = "120fbe7988713f39d780a58cf1a7ef0d7ef66c6d87e5aa3438940c05357929f4"
dependencies = [
"bytes",
"cfg-if",
"cmake",
"heck",
"itertools",
"lazy_static",
@ -520,9 +608,9 @@ dependencies = [
[[package]]
name = "prost-derive"
version = "0.9.0"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe"
checksum = "7b670f45da57fb8542ebdbb6105a925fe571b67f9e7ed9f47a06a84e72b4e7cc"
dependencies = [
"anyhow",
"itertools",
@ -533,9 +621,9 @@ dependencies = [
[[package]]
name = "prost-types"
version = "0.9.0"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a"
checksum = "2d0a014229361011dc8e69c8a1ec6c2e8d0f2af7c91e3ea3f5b2170298461e68"
dependencies = [
"bytes",
"prost",
@ -601,12 +689,10 @@ dependencies = [
[[package]]
name = "regex"
version = "1.5.4"
version = "1.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
@ -653,9 +739,9 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5"
[[package]]
name = "socket2"
version = "0.4.2"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5dc90fe6c7be1a323296982db1836d1ea9e47b6839496dde9a541bc496df3516"
checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0"
dependencies = [
"libc",
"winapi",
@ -663,15 +749,21 @@ dependencies = [
[[package]]
name = "syn"
version = "1.0.81"
version = "1.0.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2afee18b8beb5a596ecb4a2dce128c719b4ba399d34126b9e4396e3f9860966"
checksum = "b683b2b825c8eef438b77c36a06dc262294da3d5a5813fac20da149241dcd44d"
dependencies = [
"proc-macro2",
"quote",
"unicode-xid",
]
[[package]]
name = "sync_wrapper"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20518fe4a4c9acf048008599e464deb21beeae3d3578418951a189c235a7a9a8"
[[package]]
name = "tempfile"
version = "3.2.0"
@ -686,28 +778,18 @@ dependencies = [
"winapi",
]
[[package]]
name = "time"
version = "0.1.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
dependencies = [
"libc",
"winapi",
]
[[package]]
name = "tokio"
version = "1.14.0"
version = "1.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "70e992e41e0d2fb9f755b37446f20900f64446ef54874f40a60c78f021ac6144"
checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee"
dependencies = [
"autocfg",
"bytes",
"libc",
"memchr",
"mio",
"pin-project-lite",
"socket2",
"tokio-macros",
"winapi",
]
@ -724,9 +806,9 @@ dependencies = [
[[package]]
name = "tokio-macros"
version = "1.6.0"
version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c9efc1aba077437943f7515666aa2b882dfabfbfdf89c819ea75a8d6e9eaba5e"
checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7"
dependencies = [
"proc-macro2",
"quote",
@ -759,13 +841,28 @@ dependencies = [
]
[[package]]
name = "tonic"
version = "0.6.1"
name = "tokio-util"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24203b79cf2d68909da91178db3026e77054effba0c5d93deb870d3ca7b35afa"
checksum = "0edfdeb067411dba2044da6d1cb2df793dd35add7888d73c16e3381ded401764"
dependencies = [
"bytes",
"futures-core",
"futures-sink",
"pin-project-lite",
"tokio",
"tracing",
]
[[package]]
name = "tonic"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30fb54bf1e446f44d870d260d99957e7d11fb9d0a0f5bd1a662ad1411cc103f9"
dependencies = [
"async-stream",
"async-trait",
"axum",
"base64",
"bytes",
"futures-core",
@ -781,7 +878,7 @@ dependencies = [
"prost-derive",
"tokio",
"tokio-stream",
"tokio-util",
"tokio-util 0.7.1",
"tower",
"tower-layer",
"tower-service",
@ -791,10 +888,11 @@ dependencies = [
[[package]]
name = "tonic-build"
version = "0.6.0"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88358bb1dcfeb62dcce85c63006cafb964b7be481d522b7e09589d4d1e718d2a"
checksum = "4d17087af5c80e5d5fc8ba9878e60258065a0a757e35efe7a05b7904bece1943"
dependencies = [
"prettyplease",
"proc-macro2",
"prost-build",
"quote",
@ -803,9 +901,9 @@ dependencies = [
[[package]]
name = "tower"
version = "0.4.10"
version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c00e500fff5fa1131c866b246041a6bf96da9c965f8fe4128cb1421f23e93c00"
checksum = "9a89fd63ad6adf737582df5db40d286574513c69a11dac5214dc3b5603d6713e"
dependencies = [
"futures-core",
"futures-util",
@ -815,13 +913,31 @@ dependencies = [
"rand",
"slab",
"tokio",
"tokio-stream",
"tokio-util",
"tokio-util 0.7.1",
"tower-layer",
"tower-service",
"tracing",
]
[[package]]
name = "tower-http"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aba3f3efabf7fb41fae8534fc20a817013dd1c12cb45441efb6c82e6556b4cd8"
dependencies = [
"bitflags",
"bytes",
"futures-core",
"futures-util",
"http",
"http-body",
"http-range-header",
"pin-project-lite",
"tower",
"tower-layer",
"tower-service",
]
[[package]]
name = "tower-layer"
version = "0.3.1"
@ -883,12 +999,6 @@ version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"
[[package]]
name = "unicode-segmentation"
version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b"
[[package]]
name = "unicode-xid"
version = "0.2.2"
@ -911,6 +1021,12 @@ version = "0.10.2+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
[[package]]
name = "wasi"
version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "which"
version = "4.2.2"

4
api/rust/Cargo.toml vendored
View File

@ -1,7 +1,7 @@
[package]
name = "chirpstack_api"
description = "ChirpStack Protobuf / gRPC API definitions."
version = "4.0.0"
version = "4.0.0-test.6"
authors = ["Orne Brocaar <info@brocaar.com>"]
license = "MIT"
homepage = "https://www.chirpstack.io"
@ -18,6 +18,8 @@ prost = "0.10"
prost-types = "0.10"
pbjson = "0.3"
pbjson-types = "0.3"
hex = "0.4"
rand = "0.8"
tonic = { version = "0.7", features = ["codegen", "prost"], default-features = false }
tokio = { version = "1.17", features = ["macros"], optional = true }

5
api/rust/Makefile vendored
View File

@ -1,6 +1,6 @@
.PHONY: proto version test
all: proto version test
all: proto test
proto:
rm -rf proto
@ -10,9 +10,6 @@ proto:
cp /googleapis/google/api/annotations.proto proto/google/google/api
cp /googleapis/google/api/http.proto proto/google/google/api
version:
sed -i 's/^version.*/version = "$(VERSION)"/g' ./Cargo.toml
test:
cargo test

1
api/rust/build.rs vendored
View File

@ -136,6 +136,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
"api/tenant.proto",
"api/application.proto",
"api/device_profile.proto",
"api/device_profile_template.proto",
"api/device.proto",
"api/gateway.proto",
"api/frame_log.proto",

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "ApplicationProto";

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "DeviceProto";

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "DeviceProfileProto";
@ -54,6 +54,9 @@ message DeviceProfile {
// Name.
string name = 3;
// Description.
string description = 26;
// Region.
common.Region region = 4;
@ -69,11 +72,11 @@ message DeviceProfile {
// Payload codec runtime.
CodecRuntime payload_codec_runtime = 8;
// Payload codec encoder config.
string payload_encoder_config = 9;
// Payload codec script.
string payload_codec_script = 9;
// Payload codec decoder config.
string payload_decoder_config = 10;
// Flush queue on device activation.
bool flush_queue_on_activate = 10;
// Uplink interval (seconds).
// This defines the expected uplink interval which the device uses for

View File

@ -0,0 +1,207 @@
syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "DeviceProfileTemplateProto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto";
import "common/common.proto";
import "api/device_profile.proto";
// DeviceProfileTemplateService is the service providing API methods for managing device-profile templates.
service DeviceProfileTemplateService {
// Create the given device-profile template.
rpc Create(CreateDeviceProfileTemplateRequest) returns (google.protobuf.Empty) {}
// Get the device-profile template for the given ID.
rpc Get(GetDeviceProfileTemplateRequest) returns (GetDeviceProfileTemplateResponse) {}
// Update the given device-profile template.
rpc Update(UpdateDeviceProfileTemplateRequest) returns (google.protobuf.Empty) {}
// Delete the device-profile template with the given ID.
rpc Delete(DeleteDeviceProfileTemplateRequest) returns (google.protobuf.Empty) {}
// List the available device-profile templates.
rpc List(ListDeviceProfileTemplatesRequest) returns (ListDeviceProfileTemplatesResponse) {}
}
message DeviceProfileTemplate {
// Device-profile template ID.
string id = 1;
// Name.
string name = 2;
// Description.
string description = 3;
// Vendor.
string vendor = 4;
// Firmware.
string firmware = 5;
// Region.
common.Region region = 6;
// LoRaWAN mac-version.
common.MacVersion mac_version = 7;
// Regional parameters revision.
common.RegParamsRevision reg_params_revision = 8;
// ADR algorithm ID.
string adr_algorithm_id = 9;
// Payload codec runtime.
CodecRuntime payload_codec_runtime = 10;
// Payload codec script.
string payload_codec_script = 11;
// Flush queue on device activation.
bool flush_queue_on_activate = 12;
// Uplink interval (seconds).
// This defines the expected uplink interval which the device uses for
// communication. When the uplink interval has expired and no uplink has
// been received, the device is considered inactive.
uint32 uplink_interval = 13;
// Device-status request interval (times / day).
// This defines the times per day that ChirpStack will request the device-status
// from the device.
uint32 device_status_req_interval = 14;
// Supports OTAA.
bool supports_otaa = 15;
// Supports Class B.
bool supports_class_b = 16;
// Supports Class-C.
bool supports_class_c = 17;
// Class-B timeout (seconds).
// This is the maximum time ChirpStack will wait to receive an acknowledgement from the device (if requested).
uint32 class_b_timeout = 18;
// Class-B ping-slot periodicity.
uint32 class_b_ping_slot_period = 19;
// Class-B ping-slot DR.
uint32 class_b_ping_slot_dr = 20;
// Class-B ping-slot freq (Hz).
uint32 class_b_ping_slot_freq = 21;
// Class-C timeout (seconds).
// This is the maximum time ChirpStack will wait to receive an acknowledgement from the device (if requested).
uint32 class_c_timeout = 22;
// RX1 delay (for ABP).
uint32 abp_rx1_delay = 23;
// RX1 DR offset (for ABP).
uint32 abp_rx1_dr_offset = 24;
// RX2 DR (for ABP).
uint32 abp_rx2_dr = 25;
// RX2 frequency (for ABP, Hz).
uint32 abp_rx2_freq = 26;
// User defined tags.
map<string, string> tags = 27;
}
message DeviceProfileTemplateListItem {
// Device-profile template ID.
string id = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
// Name.
string name = 4;
// Vendor.
string vendor = 5;
// Firmware.
string firmware = 6;
// Region.
common.Region region = 7;
// LoRaWAN mac-version.
common.MacVersion mac_version = 8;
// Regional parameters revision.
common.RegParamsRevision reg_params_revision = 9;
// Supports OTAA.
bool supports_otaa = 10;
// Supports Class-B.
bool supports_class_b = 11;
// Supports Class-C.
bool supports_class_c = 12;
}
message CreateDeviceProfileTemplateRequest {
// Object to create.
DeviceProfileTemplate device_profile_template = 1;
}
message GetDeviceProfileTemplateRequest {
// ID.
string id = 1;
}
message GetDeviceProfileTemplateResponse {
// Device-profile template object.
DeviceProfileTemplate device_profile_template = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
}
message UpdateDeviceProfileTemplateRequest {
// Object to update.
DeviceProfileTemplate device_profile_template = 1;
}
message DeleteDeviceProfileTemplateRequest {
// ID.
string id = 1;
}
message ListDeviceProfileTemplatesRequest {
// Max number of device-profile templates to return in the result-set.
uint32 limit = 1;
// Offset in the result-set (for pagination).
uint32 offset = 2;
}
message ListDeviceProfileTemplatesResponse {
// Total number of device-profile templates.
uint32 total_count = 1;
// Result-set.
repeated DeviceProfileTemplateListItem result = 2;
}

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "FrameLogProto";
@ -16,10 +16,10 @@ message UplinkFrameLog {
bytes phy_payload = 1;
// TX meta-data.
gw.UplinkTXInfo tx_info = 2;
gw.UplinkTxInfo tx_info = 2;
// RX meta-data.
repeated gw.UplinkRXInfo rx_info = 3;
repeated gw.UplinkRxInfo rx_info = 3;
// Message type.
common.MType m_type = 4;
@ -42,10 +42,10 @@ message DownlinkFrameLog {
bytes phy_payload = 2;
// TX meta-data.
gw.DownlinkTXInfo tx_info = 3;
gw.DownlinkTxInfo tx_info = 3;
// Downlink ID (UUID).
string downlink_id = 4;
// Downlink ID.
uint32 downlink_id = 4;
// Gateway ID (EUI64).
string gateway_id = 5;

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "GatewayProto";

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "InternalProto";

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "MulticastGroupProto";

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "InternalProto";

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "UserProto";

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package gw;
option go_package = "github.com/chirpstack/chirpstack-api/go/v4/gw";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/gw";
option java_package = "io.chirpstack.api.gw";
option java_multiple_files = true;
option java_outer_classname = "GatewayProto";
@ -10,8 +10,17 @@ option java_outer_classname = "GatewayProto";
import "common/common.proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/struct.proto";
enum CodeRate {
CR_UNDEFINED = 0;
CR_4_5 = 1;
CR_4_6 = 2;
CR_4_7 = 3;
CR_4_8 = 4;
}
enum DownlinkTiming {
// Send the downlink immediately.
IMMEDIATELY = 0;
@ -23,7 +32,6 @@ enum DownlinkTiming {
GPS_EPOCH = 2;
}
enum FineTimestampType {
// No fine-timestamp available.
NONE = 0;
@ -84,17 +92,17 @@ enum TxAckStatus {
message Modulation {
oneof parameters {
// LoRa modulation information.
LoRaModulationInfo lora = 3 [json_name = "loRa"];
LoraModulationInfo lora = 3;
// FSK modulation information.
FSKModulationInfo fsk = 4;
FskModulationInfo fsk = 4;
// LR-FHSS modulation information.
LRFHSSModulationInfo lr_fhss = 5 [json_name = "lrFHSS"];
LrFhssModulationInfo lr_fhss = 5;
}
}
message UplinkTXInfo {
message UplinkTxInfoLegacy {
// Frequency (Hz).
uint32 frequency = 1;
@ -103,17 +111,25 @@ message UplinkTXInfo {
oneof modulation_info {
// LoRa modulation information.
LoRaModulationInfo lora_modulation_info = 3 [json_name = "loRaModulationInfo"];
LoraModulationInfo lora_modulation_info = 3;
// FSK modulation information.
FSKModulationInfo fsk_modulation_info = 4;
FskModulationInfo fsk_modulation_info = 4;
// LR-FHSS modulation information.
LRFHSSModulationInfo lr_fhss_modulation_info = 5 [json_name = "lrFHSSModulationInfo"];
LrFhssModulationInfo lr_fhss_modulation_info = 5;
}
}
message LoRaModulationInfo {
message UplinkTxInfo {
// Frequency (Hz).
uint32 frequency = 1;
// Modulation.
Modulation modulation = 2;
}
message LoraModulationInfo {
// Bandwidth.
uint32 bandwidth = 1;
@ -121,13 +137,16 @@ message LoRaModulationInfo {
uint32 spreading_factor = 2;
// Code-rate.
string code_rate = 3;
string code_rate_legacy = 3;
// Code-rate.
CodeRate code_rate = 5;
// Polarization inversion.
bool polarization_inversion = 4;
}
message FSKModulationInfo {
message FskModulationInfo {
// Frequency deviation.
uint32 frequency_deviation = 1;
@ -135,7 +154,7 @@ message FSKModulationInfo {
uint32 datarate = 2;
}
message LRFHSSModulationInfo {
message LrFhssModulationInfo {
// Operating channel width (OCW) in Hz.
uint32 operating_channel_width = 1;
@ -151,10 +170,10 @@ message EncryptedFineTimestamp {
uint32 aes_key_index = 1;
// Encrypted 'main' fine-timestamp (ns precision part of the timestamp).
bytes encrypted_ns = 2 [json_name = "encryptedNS"];
bytes encrypted_ns = 2;
// FPGA ID.
bytes fpga_id = 3 [json_name = "fpgaID"];
bytes fpga_id = 3;
}
message PlainFineTimestamp {
@ -164,7 +183,7 @@ message PlainFineTimestamp {
message GatewayStats {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
bytes gateway_id = 1;
// Gateway IP.
string ip = 9;
@ -183,7 +202,7 @@ message GatewayStats {
uint32 rx_packets_received = 5;
// Number of radio packets received with valid PHY CRC.
uint32 rx_packets_received_ok = 6 [json_name = "rxPacketsReceivedOK"];
uint32 rx_packets_received_ok = 6;
// Number of downlink packets received for transmission.
uint32 tx_packets_received = 7;
@ -196,7 +215,7 @@ message GatewayStats {
// Stats ID (UUID).
// Unique identifier for the gateway stats.
bytes stats_id = 11 [json_name = "statsID"];
bytes stats_id = 11;
// Tx packets per frequency.
map<uint32, uint32> tx_packets_per_frequency = 12;
@ -222,21 +241,21 @@ message PerModulationCount {
uint32 count = 2;
}
message UplinkRXInfo {
message UplinkRxInfoLegacy {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
bytes gateway_id = 1;
// RX time (only set when the gateway has a GPS module).
google.protobuf.Timestamp time = 2;
// RX time since GPS epoch (only set when the gateway has a GPS module).
google.protobuf.Duration time_since_gps_epoch = 3 [json_name = "timeSinceGPSEpoch"];
google.protobuf.Duration time_since_gps_epoch = 3;
// RSSI.
int32 rssi = 5;
// LoRa SNR.
double lora_snr = 6 [json_name = "loRaSNR"];
double lora_snr = 6;
// Channel.
uint32 channel = 7;
@ -270,19 +289,60 @@ message UplinkRXInfo {
// Uplink ID (UUID bytes).
// Unique and random ID which can be used to correlate the uplink across multiple logs.
bytes uplink_id = 16 [json_name = "uplinkID"];
bytes uplink_id = 16;
// CRC status.
CRCStatus crc_status = 17 [json_name = "crcStatus"];
CRCStatus crc_status = 17;
// Optional meta-data map.
map<string, string> metadata = 18;
}
message DownlinkTXInfo {
message UplinkRxInfo {
// Gateway ID.
string gateway_id = 1;
// Uplink ID.
uint32 uplink_id = 2;
// RX time (only set when the gateway has a GPS module).
google.protobuf.Timestamp time = 3;
// RX time since GPS epoch (only set when the gateway has a GPS module).
google.protobuf.Duration time_since_gps_epoch = 4;
// Fine-timestamp.
// This timestamp can be used for TDOA based geolocation.
google.protobuf.Duration fine_time_since_gps_epoch = 5;
// RSSI.
int32 rssi = 6;
// SNR.
// Note: only available for LoRa modulation.
float snr = 7;
// Board.
uint32 board = 8;
// Antenna.
uint32 antenna = 9;
// Location.
common.Location location = 10;
// Gateway specific context.
// This value must be returned to the gateway on (Class-A) downlink.
bytes context = 11;
// Properties.
google.protobuf.Struct metadata = 12;
}
message DownlinkTxInfoLegacy {
// Gateway ID.
// Deprecated: replaced by gateway_id in DownlinkFrame.
bytes gateway_id = 1 [json_name = "gatewayID"];
bytes gateway_id = 1;
// TX frequency (in Hz).
uint32 frequency = 5;
@ -295,10 +355,10 @@ message DownlinkTXInfo {
oneof modulation_info {
// LoRa modulation information.
LoRaModulationInfo lora_modulation_info = 8 [json_name = "loRaModulationInfo"];
LoraModulationInfo lora_modulation_info = 8;
// FSK modulation information.
FSKModulationInfo fsk_modulation_info = 9;
FskModulationInfo fsk_modulation_info = 9;
}
// The board identifier for emitting the frame.
@ -326,6 +386,43 @@ message DownlinkTXInfo {
bytes context = 16;
}
message DownlinkTxInfo {
// TX frequency (in Hz).
uint32 frequency = 1;
// TX power (in dBm).
int32 power = 2;
// Modulation.
Modulation modulation = 3;
// The board identifier for emitting the frame.
uint32 board = 4;
// The antenna identifier for emitting the frame.
uint32 antenna = 5;
// Timing.
Timing timing = 6;
// Gateway specific context.
// In case of a Class-A downlink, this contains a copy of the uplink context.
bytes context = 7;
}
message Timing {
oneof parameters {
// Immediately timing information.
ImmediatelyTimingInfo immediately = 1;
// Context based delay timing information.
DelayTimingInfo delay = 2;
// GPS Epoch timing information.
GPSEpochTimingInfo gps_epoch = 3;
}
}
message ImmediatelyTimingInfo {
// Not implemented yet.
}
@ -339,18 +436,24 @@ message DelayTimingInfo {
message GPSEpochTimingInfo {
// Duration since GPS Epoch.
google.protobuf.Duration time_since_gps_epoch = 1 [json_name = "timeSinceGPSEpoch"];
google.protobuf.Duration time_since_gps_epoch = 1;
}
message UplinkFrame {
// PHYPayload.
bytes phy_payload = 1;
// TX meta-data.
UplinkTXInfo tx_info = 2;
// TX meta-data (deprecated).
UplinkTxInfoLegacy tx_info_legacy = 2;
// RX meta-data.
UplinkRXInfo rx_info = 3;
// RX meta-data (deprecated).
UplinkRxInfoLegacy rx_info_legacy = 3;
// Tx meta-data.
UplinkTxInfo tx_info = 4;
// Rx meta-data.
UplinkRxInfo rx_info = 5;
}
message UplinkFrameSet {
@ -358,27 +461,19 @@ message UplinkFrameSet {
bytes phy_payload = 1;
// TX meta-data.
UplinkTXInfo tx_info = 2;
UplinkTxInfo tx_info = 2;
// RX meta-data set.
repeated UplinkRXInfo rx_info = 3;
repeated UplinkRxInfo rx_info = 3;
}
message DownlinkFrame {
// PHYPayload.
// Deprecated: replaced by items.
bytes phy_payload = 1;
// TX meta-data.
// Deprecated: replaced by items.
DownlinkTXInfo tx_info = 2;
// Token (uint16 value).
// Deprecated: replaced by downlink_id.
uint32 token = 3;
// Downlink ID.
uint32 downlink_id = 3;
// Downlink ID (UUID).
bytes downlink_id = 4 [json_name = "downlinkID"];
// Deprecated: use downlink_id.
bytes downlink_id_legacy = 4;
// Downlink frame items.
// This makes it possible to send multiple downlink opportunities to the
@ -388,47 +483,52 @@ message DownlinkFrame {
repeated DownlinkFrameItem items = 5;
// Gateway ID.
bytes gateway_id = 6 [json_name = "gatewayID"];
// Deprecated: use gateway_id
bytes gateway_id_legacy = 6;
// Gateway ID.
string gateway_id = 7;
}
message DownlinkFrameItem {
// PHYPayload.
bytes phy_payload = 1;
// TX meta-data.
DownlinkTXInfo tx_info = 2;
// TX meta-data (deprecated).
DownlinkTxInfoLegacy tx_info_legacy = 2;
// Tx meta-data.
DownlinkTxInfo tx_info = 3;
}
message DownlinkTXAck {
message DownlinkTxAck {
// Gateway ID (deprecated).
bytes gateway_id_legacy = 1;
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
string gateway_id = 6;
// Token (uint16 value).
// Deprecated: replaced by downlink_id.
uint32 token = 2;
// Downlink ID.
uint32 downlink_id = 2;
// Error.
// Deprecated: replaced by items.
string error = 3;
// Downlink ID (UUID).
bytes downlink_id = 4 [json_name = "downlinkID"];
// Downlink ID (deprecated).
bytes downlink_id_legacy = 4;
// Downlink frame items.
// This list has the same length as the request and indicates which
// downlink frame has been emitted of the requested list (or why it failed).
// Note that at most one item has a positive acknowledgement.
repeated DownlinkTXAckItem items = 5;
repeated DownlinkTxAckItem items = 5;
}
message DownlinkTXAckItem {
message DownlinkTxAckItem {
// The Ack status of this item.
TxAckStatus status = 1;
}
message GatewayConfiguration {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
bytes gateway_id = 1;
// Configuration version.
string version = 2;
@ -449,7 +549,7 @@ message ChannelConfiguration {
oneof modulation_config {
// LoRa modulation config.
LoRaModulationConfig lora_modulation_config = 3 [json_name = "loRaModulationConfig"];
LoRaModulationConfig lora_modulation_config = 3;
// FSK modulation config.
FSKModulationConfig fsk_modulation_config = 4;
@ -480,7 +580,7 @@ message FSKModulationConfig {
message GatewayCommandExecRequest {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
bytes gateway_id = 1;
// Command to execute.
// This command must be pre-configured in the LoRa Gateway Bridge configuration.
@ -489,7 +589,7 @@ message GatewayCommandExecRequest {
// Execution request ID (UUID).
// The same token will be returned when the execution of the command has
// completed.
bytes ExecId = 3 [json_name = "execID"];
bytes ExecId = 3;
// Standard input.
bytes stdin = 4;
@ -500,10 +600,10 @@ message GatewayCommandExecRequest {
message GatewayCommandExecResponse {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
bytes gateway_id = 1;
// Execution request ID (UUID).
bytes exec_id = 2 [json_name = "execID"];
bytes exec_id = 2;
// Standard output.
bytes stdout = 3;
@ -520,10 +620,10 @@ message GatewayCommandExecResponse {
// integrated with the ChirpStack Gateway Bridge.
message RawPacketForwarderEvent {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
bytes gateway_id = 1;
// Raw ID (UUID).
bytes raw_id = 2 [json_name = "rawID"];
bytes raw_id = 2;
// Payload contains the raw payload.
bytes payload = 3;
@ -534,10 +634,10 @@ message RawPacketForwarderEvent {
// integrated with the ChirpStack Gateway Bridge.
message RawPacketForwarderCommand {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
bytes gateway_id = 1;
// Raw ID (UUID).
bytes raw_id = 2 [json_name = "rawID"];
bytes raw_id = 2;
// Payload contains the raw payload.
bytes payload = 3;
@ -546,7 +646,7 @@ message RawPacketForwarderCommand {
// ConnState contains the connection state of a gateway.
message ConnState {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
bytes gateway_id = 1;
enum State {
OFFLINE = 0;

View File

@ -1,202 +0,0 @@
syntax = "proto3";
package gw;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/gw";
option java_package = "io.chirpstack.api.gw";
option java_multiple_files = true;
option java_outer_classname = "GatewayProto";
import "common/common.proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/struct.proto";
enum CodeRate {
CR_UNDEFINED = 0;
CR_4_5 = 1;
CR_4_6 = 2;
CR_4_7 = 3;
CR_4_8 = 4;
}
message UplinkFrame {
// PHYPayload.
bytes phy_payload = 1;
// TX meta-data.
UplinkTxParams tx_params = 2;
// RX meta-data.
UplinkRxParams rx_params = 3;
}
message DownlinkFrame {
// Gateway ID.
string gateway_id = 1;
// Downlink ID.
uint32 downlink_id = 2;
// Downlink frame items.
// This makes it possible to send multiple downlink opportunities to the
// gateway at once (e.g. RX1 and RX2 in LoRaWAN). The first item has the
// highest priority, the last the lowest. The gateway will emit at most
// one item.
repeated DownlinkFrameItem items = 3;
}
message UplinkTxParams {
// Frequency (Hz).
uint32 frequency = 1;
// Modulation.
Modulation modulation = 2;
}
message Modulation {
oneof parameters {
// LoRa.
LoraModulationParams lora = 1;
// FSK.
FskModulationParams fsk = 2;
// LR-FHSS.
LrFhssModulationParams lr_fhss = 3;
}
}
message LoraModulationParams {
// Bandwidth (Hz).
uint32 bandwidth = 1;
// Spreading-factor.
uint32 spreading_factor = 2;
// Polarization inversion.
bool polarization_inversion = 3;
// Code-rate.
CodeRate code_rate = 4;
}
message FskModulationParams {
// Frequency deviation.
uint32 frequency_deviation = 1;
// FSK datarate (bits / sec).
uint32 datarate = 2;
}
message LrFhssModulationParams {
// Operating channel width (OCW) in Hz.
uint32 operating_channel_width = 1;
// Code-rate.
CodeRate code_rate = 2;
// Hopping grid number of steps.
uint32 grid_steps = 3;
}
message UplinkRxParams {
// Gateway ID (EUI).
string gateway_id = 1;
// Uplink ID (UUID).
uint32 uplink_id = 2;
// Rx time.
google.protobuf.Timestamp time = 3;
// RX time since GPS epoch (only set when the gateway has a GPS module).
google.protobuf.Duration time_since_gps_epoch = 4;
// Fine-timestamp.
// This timestamp can be used for TDOA based geolocation.
google.protobuf.Duration fine_time_since_gps_epoch = 5;
// RSSI.
int32 rssi = 6;
// SNR.
// Note: only available for LoRa modulation.
float snr = 7;
// Board.
uint32 board = 8;
// Antenna.
uint32 antenna = 9;
// Location.
common.Location location = 10;
// Gateway specific context.
// This value must be returned to the gateway on (Class-A) downlink.
bytes context = 11;
// Properties.
google.protobuf.Struct properties = 12;
}
message DownlinkFrameItem {
// PHYPayload.
bytes phy_payload = 1;
// Tx parameters.
DownlinkTxParams tx_params = 2;
}
message DownlinkTxParams {
// Tx frequency (Hz).
uint32 frequency = 1;
// Tx power (dBm).
int32 power = 2;
// Modulation.
Modulation modulation = 3;
// The board identifier for emitting the frame.
uint32 board = 4;
// The antenna identifier for emitting the frame.
uint32 antenna = 5;
// Downlink timing.
DownlinkTiming timing = 6;
// Gateway specific context.
// In case of a Class-A downlink, this must contain a copy of the uplink context.
bytes context = 7;
}
message DownlinkTiming {
oneof parameters {
// Immediately timing information.
DownlinkTimingImmediately immediately = 1;
// Delay timing information.
DownlinkTimingDelay delay = 2;
// GPS epoch timing information.
DownlinkTimingGpsEpoch gps_epoch = 3;
}
}
message DownlinkTimingImmediately {
// No fields implemented yet.
}
message DownlinkTimingDelay {
// Delay relative to provided context.
google.protobuf.Duration delay = 1;
}
message DownlinkTimingGpsEpoch {
// Duration since GPS epoch.
google.protobuf.Duration time_since_gps_epoch = 1;
}

View File

@ -119,10 +119,10 @@ message UplinkEvent {
google.protobuf.Struct object = 11;
// Receiving gateway RX info.
repeated gw.UplinkRXInfo rx_info = 12;
repeated gw.UplinkRxInfo rx_info = 12;
// TX info.
gw.UplinkTXInfo tx_info = 13;
gw.UplinkTxInfo tx_info = 13;
}
// JoinEvent is the message sent when a device joined the network.
@ -167,8 +167,8 @@ message AckEvent {
// for transmission. As a downlink can be scheduled in the future, this event
// does not confirm that the message has already been transmitted.
message TxAckEvent {
// Downlink ID (UUID).
string downlink_id = 1;
// Downlink ID.
uint32 downlink_id = 1;
// Timestamp.
google.protobuf.Timestamp time = 2;
@ -186,7 +186,7 @@ message TxAckEvent {
string gateway_id = 6;
// TX info.
gw.DownlinkTXInfo tx_info = 7;
gw.DownlinkTxInfo tx_info = 7;
}
// LogEvent is the message sent when a device-related log was sent.
@ -276,3 +276,28 @@ message IntegrationEvent {
// Struct containing the event object.
google.protobuf.Struct object = 6;
}
// DownlinkCommand is the command to enqueue a downlink payload for the given
// device.
message DownlinkCommand {
// ID (UUID).
// If left blank, a random UUID will be generated.
string id = 1;
// Device EUI (EUI64).
string dev_eui = 2;
// Confirmed.
bool confirmed = 3;
// FPort (must be > 0).
uint32 f_port = 4;
// Data.
// Or use the json_object field when a codec has been configured.
bytes data = 5;
// Only use this when a codec has been configured that can encode this
// object to bytes.
google.protobuf.Struct object = 6;
}

View File

@ -199,8 +199,8 @@ message DeviceGatewayRxInfoItem {
}
message DownlinkFrame {
// Downlink ID (UUID).
bytes downlink_id = 1;
// Downlink ID.
uint32 downlink_id = 1;
// DevEUI.
bytes dev_eui = 2;
@ -231,5 +231,5 @@ message LoraCloudGeolocBuffer {
message LoraCloudGeolocBufferUplink {
// RxInfo set for a single uplink.
repeated gw.UplinkRXInfo rx_info = 1;
repeated gw.UplinkRxInfo rx_info = 1;
}

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package meta;
option go_package = "github.com/chirpstack/chirpstack-api/go/v4/meta";
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/meta";
option java_package = "io.chirpstack.api.meta";
option java_multiple_files = true;
option java_outer_classname = "MetaProto";
@ -16,10 +16,10 @@ message UplinkMeta {
string dev_eui = 1;
// TX meta-data.
gw.UplinkTXInfo tx_info = 2;
gw.UplinkTxInfo tx_info = 2;
// RX meta-data.
repeated gw.UplinkRXInfo rx_info = 3;
repeated gw.UplinkRxInfo rx_info = 3;
// PHYPayload byte count.
uint32 phy_payload_byte_count = 4;
@ -42,7 +42,7 @@ message DownlinkMeta {
string multicast_group_id = 2;
// TX meta-data.
gw.DownlinkTXInfo tx_info = 3;
gw.DownlinkTxInfo tx_info = 3;
// PHYPayload byte count.
uint32 phy_payload_byte_count = 4;

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