From 57eb0bae279175a394b33a960cdee09492ae134a Mon Sep 17 00:00:00 2001 From: Kai Hudalla Date: Thu, 27 Jul 2023 13:41:59 +0200 Subject: [PATCH] Initial Fleet Management Blueprint content MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also-by: Sven Erik Jeroschewski Also-by: Lukas Römer --- .../workflows/containerize_fms_consumer.yaml | 93 + .../workflows/containerize_fms_forwarder.yaml | 91 + .../workflows/containerize_fms_server.yaml | 90 + .gitignore | 26 + CODE_OF_CONDUCT.md | 93 + DEPENDENCIES | 173 + LICENSE | 3 +- LICENSES | 1 + NOTICE.md | 43 + README.md | 120 +- components/.dockerignore | 21 + components/.gitignore | 20 + components/Cargo.lock | 2391 +++++ components/Cargo.lock.license | 18 + components/Cargo.toml | 65 + components/DEPENDENCIES | 0 components/Dockerfile.fms-consumer | 50 + components/Dockerfile.fms-forwarder | 52 + components/Dockerfile.fms-server | 48 + components/LICENSES/Apache-2.0.txt | 202 + components/LICENSES/Unicode-DFS-2016.txt | 46 + components/LICENSES/async-stream-0.3.5.txt | 51 + components/LICENSES/axum-0.6.19.txt | 25 + components/LICENSES/bytes-1.4.0.txt | 25 + components/LICENSES/castaway-0.1.2.txt | 21 + components/LICENSES/const-format-0.2.31.txt | 17 + components/LICENSES/curl-0.4.44.txt | 19 + components/LICENSES/curl-sys-0.4.65.txt | 19 + components/LICENSES/encoding_rs-0.8.32.txt | 26 + components/LICENSES/h2-0.3.20.txt | 25 + components/LICENSES/http-body-0.4.5.txt | 25 + components/LICENSES/hyper-0.14.27.txt | 19 + components/LICENSES/is-terminal-0.4.9.txt | 23 + components/LICENSES/matchit-0.7.0.txt | 53 + components/LICENSES/mio-0.8.8.txt | 19 + components/LICENSES/nom-7.1.3.txt | 20 + components/LICENSES/openssl-sys-0.9.90.txt | 25 + components/LICENSES/protobuf-3.2.0.txt | 19 + components/LICENSES/rdkafka-0.33.2.txt | 21 + components/LICENSES/ring.txt | 204 + components/LICENSES/rust_decimal-1.30.0.txt | 21 + components/LICENSES/rustls-webpki-0.101.2.txt | 19 + components/LICENSES/slab-0.4.8.txt | 25 + components/LICENSES/sluice-0.5.5.txt | 21 + components/LICENSES/spin.txt | 21 + components/LICENSES/strsim-0.10.0.txt | 23 + components/LICENSES/tokio-1.29.1.txt | 25 + components/LICENSES/tokio-macros-2.1.0.txt | 47 + components/LICENSES/tokio-stream-0.1.14.txt | 25 + components/LICENSES/tokio-util-0.7.8.txt | 25 + components/LICENSES/tonic-0.9.2.txt | 19 + components/LICENSES/tower-0.4.13.txt | 25 + components/LICENSES/tower-layer-0.3.2.txt | 25 + components/LICENSES/tower-service-0.3.2.txt | 25 + components/LICENSES/tracing-0.1.37.txt | 25 + .../LICENSES/tracing-attributes-0.1.26.txt | 25 + components/LICENSES/tracing-core-0.1.31.txt | 25 + components/LICENSES/tracing-futures-0.2.5.txt | 25 + components/LICENSES/try-lock-0.2.4.txt | 21 + components/LICENSES/untrusted-0.7.1.txt | 13 + components/LICENSES/want-0.3.1.txt | 20 + components/LICENSES/winnow-0.5.1.txt | 18 + components/fms-consumer/Cargo.toml | 44 + components/fms-consumer/src/main.rs | 283 + components/fms-forwarder/Cargo.toml | 49 + components/fms-forwarder/README.md | 64 + components/fms-forwarder/build.rs | 35 + .../proto/kuksa/val/v1/types.proto | 284 + .../proto/kuksa/val/v1/val.proto | 114 + .../fms-forwarder/src/hono_publisher.rs | 92 + components/fms-forwarder/src/main.rs | 103 + .../fms-forwarder/src/mqtt_connection.rs | 264 + .../fms-forwarder/src/status_publishing.rs | 36 + .../fms-forwarder/src/vehicle_abstraction.rs | 593 ++ .../src/vehicle_abstraction/kuksa.rs | 404 + .../src/vehicle_abstraction/vss.rs | 71 + components/fms-proto/Cargo.toml | 36 + components/fms-proto/README.md | 5 + components/fms-proto/build.rs | 31 + components/fms-proto/proto/fms/v4/fms.proto | 325 + components/fms-proto/src/lib.rs | 20 + components/fms-server/Cargo.toml | 43 + components/fms-server/src/influx_reader.rs | 169 + components/fms-server/src/main.rs | 137 + components/fms-server/src/models.rs | 518 + components/influx-client/Cargo.toml | 41 + components/influx-client/src/connection.rs | 165 + components/influx-client/src/lib.rs | 64 + components/influx-client/src/writer.rs | 307 + csv-provider/README.md | 32 + csv-provider/run_recorderFMS.sh | 948 ++ csv-provider/signalsFmsRecording.csv | 705 ++ csv-provider/signalsFmsRecording.csv.license | 18 + csv-provider/signalsFmsRecording.csv.zip | Bin 0 -> 110064 bytes .../signalsFmsRecording.csv.zip.license | 18 + docs/img/architecture.png | Bin 1382929 -> 0 bytes docs/introduction.md | 27 +- fms-blueprint-compose-hono.yaml | 57 + fms-blueprint-compose.yaml | 186 + grafana/dashboards/FMS-Fleet.json | 1064 ++ grafana/dashboards/FMS-Fleet.json.license | 18 + .../dashboards_from_filesystem.yaml | 28 + img/.gitignore | 1 + img/architecture.drawio.svg | 4 + influxdb/fms-demo.env | 6 + influxdb/init-scripts/create-fms-token.sh | 49 + leda/Setup.md | 86 + .../var/containers/manifests/databroker.json | 60 + .../manifests/databroker.json.license | 18 + .../var/containers/manifests/feedercan.json | 56 + .../manifests/feedercan.json.license | 18 + .../containers/manifests/fms-forwarder.json | 49 + .../manifests/fms-forwarder.json.license | 18 + provision-vehicle-to-hono.sh | 159 + spec/.gitignore | 20 + spec/README.md | 51 + spec/mapping-fms4-to-vss.md | 144 + spec/overlay/fms.vspec | 540 + spec/overlay/vss.json | 9032 +++++++++++++++++ spec/overlay/vss.json.license | 18 + 120 files changed, 22493 insertions(+), 54 deletions(-) create mode 100644 .github/workflows/containerize_fms_consumer.yaml create mode 100644 .github/workflows/containerize_fms_forwarder.yaml create mode 100644 .github/workflows/containerize_fms_server.yaml create mode 100644 .gitignore create mode 100644 CODE_OF_CONDUCT.md create mode 100644 DEPENDENCIES create mode 120000 LICENSES create mode 100644 NOTICE.md create mode 100644 components/.dockerignore create mode 100644 components/.gitignore create mode 100644 components/Cargo.lock create mode 100644 components/Cargo.lock.license create mode 100644 components/Cargo.toml create mode 100644 components/DEPENDENCIES create mode 100644 components/Dockerfile.fms-consumer create mode 100644 components/Dockerfile.fms-forwarder create mode 100644 components/Dockerfile.fms-server create mode 100644 components/LICENSES/Apache-2.0.txt create mode 100644 components/LICENSES/Unicode-DFS-2016.txt create mode 100644 components/LICENSES/async-stream-0.3.5.txt create mode 100644 components/LICENSES/axum-0.6.19.txt create mode 100644 components/LICENSES/bytes-1.4.0.txt create mode 100644 components/LICENSES/castaway-0.1.2.txt create mode 100644 components/LICENSES/const-format-0.2.31.txt create mode 100644 components/LICENSES/curl-0.4.44.txt create mode 100644 components/LICENSES/curl-sys-0.4.65.txt create mode 100644 components/LICENSES/encoding_rs-0.8.32.txt create mode 100644 components/LICENSES/h2-0.3.20.txt create mode 100644 components/LICENSES/http-body-0.4.5.txt create mode 100644 components/LICENSES/hyper-0.14.27.txt create mode 100644 components/LICENSES/is-terminal-0.4.9.txt create mode 100644 components/LICENSES/matchit-0.7.0.txt create mode 100644 components/LICENSES/mio-0.8.8.txt create mode 100644 components/LICENSES/nom-7.1.3.txt create mode 100644 components/LICENSES/openssl-sys-0.9.90.txt create mode 100644 components/LICENSES/protobuf-3.2.0.txt create mode 100644 components/LICENSES/rdkafka-0.33.2.txt create mode 100644 components/LICENSES/ring.txt create mode 100644 components/LICENSES/rust_decimal-1.30.0.txt create mode 100644 components/LICENSES/rustls-webpki-0.101.2.txt create mode 100644 components/LICENSES/slab-0.4.8.txt create mode 100644 components/LICENSES/sluice-0.5.5.txt create mode 100644 components/LICENSES/spin.txt create mode 100644 components/LICENSES/strsim-0.10.0.txt create mode 100644 components/LICENSES/tokio-1.29.1.txt create mode 100644 components/LICENSES/tokio-macros-2.1.0.txt create mode 100644 components/LICENSES/tokio-stream-0.1.14.txt create mode 100644 components/LICENSES/tokio-util-0.7.8.txt create mode 100644 components/LICENSES/tonic-0.9.2.txt create mode 100644 components/LICENSES/tower-0.4.13.txt create mode 100644 components/LICENSES/tower-layer-0.3.2.txt create mode 100644 components/LICENSES/tower-service-0.3.2.txt create mode 100644 components/LICENSES/tracing-0.1.37.txt create mode 100644 components/LICENSES/tracing-attributes-0.1.26.txt create mode 100644 components/LICENSES/tracing-core-0.1.31.txt create mode 100644 components/LICENSES/tracing-futures-0.2.5.txt create mode 100644 components/LICENSES/try-lock-0.2.4.txt create mode 100644 components/LICENSES/untrusted-0.7.1.txt create mode 100644 components/LICENSES/want-0.3.1.txt create mode 100644 components/LICENSES/winnow-0.5.1.txt create mode 100644 components/fms-consumer/Cargo.toml create mode 100644 components/fms-consumer/src/main.rs create mode 100644 components/fms-forwarder/Cargo.toml create mode 100644 components/fms-forwarder/README.md create mode 100644 components/fms-forwarder/build.rs create mode 100644 components/fms-forwarder/proto/kuksa/val/v1/types.proto create mode 100644 components/fms-forwarder/proto/kuksa/val/v1/val.proto create mode 100644 components/fms-forwarder/src/hono_publisher.rs create mode 100644 components/fms-forwarder/src/main.rs create mode 100644 components/fms-forwarder/src/mqtt_connection.rs create mode 100644 components/fms-forwarder/src/status_publishing.rs create mode 100644 components/fms-forwarder/src/vehicle_abstraction.rs create mode 100644 components/fms-forwarder/src/vehicle_abstraction/kuksa.rs create mode 100644 components/fms-forwarder/src/vehicle_abstraction/vss.rs create mode 100644 components/fms-proto/Cargo.toml create mode 100644 components/fms-proto/README.md create mode 100644 components/fms-proto/build.rs create mode 100644 components/fms-proto/proto/fms/v4/fms.proto create mode 100644 components/fms-proto/src/lib.rs create mode 100644 components/fms-server/Cargo.toml create mode 100644 components/fms-server/src/influx_reader.rs create mode 100644 components/fms-server/src/main.rs create mode 100644 components/fms-server/src/models.rs create mode 100644 components/influx-client/Cargo.toml create mode 100644 components/influx-client/src/connection.rs create mode 100644 components/influx-client/src/lib.rs create mode 100644 components/influx-client/src/writer.rs create mode 100644 csv-provider/README.md create mode 100644 csv-provider/run_recorderFMS.sh create mode 100644 csv-provider/signalsFmsRecording.csv create mode 100644 csv-provider/signalsFmsRecording.csv.license create mode 100644 csv-provider/signalsFmsRecording.csv.zip create mode 100644 csv-provider/signalsFmsRecording.csv.zip.license delete mode 100644 docs/img/architecture.png create mode 100644 fms-blueprint-compose-hono.yaml create mode 100644 fms-blueprint-compose.yaml create mode 100644 grafana/dashboards/FMS-Fleet.json create mode 100644 grafana/dashboards/FMS-Fleet.json.license create mode 100644 grafana/provisioning/dashboards/dashboards_from_filesystem.yaml create mode 100644 img/.gitignore create mode 100644 img/architecture.drawio.svg create mode 100644 influxdb/fms-demo.env create mode 100755 influxdb/init-scripts/create-fms-token.sh create mode 100644 leda/Setup.md create mode 100644 leda/data/var/containers/manifests/databroker.json create mode 100644 leda/data/var/containers/manifests/databroker.json.license create mode 100644 leda/data/var/containers/manifests/feedercan.json create mode 100644 leda/data/var/containers/manifests/feedercan.json.license create mode 100644 leda/data/var/containers/manifests/fms-forwarder.json create mode 100644 leda/data/var/containers/manifests/fms-forwarder.json.license create mode 100755 provision-vehicle-to-hono.sh create mode 100644 spec/.gitignore create mode 100644 spec/README.md create mode 100644 spec/mapping-fms4-to-vss.md create mode 100644 spec/overlay/fms.vspec create mode 100644 spec/overlay/vss.json create mode 100644 spec/overlay/vss.json.license diff --git a/.github/workflows/containerize_fms_consumer.yaml b/.github/workflows/containerize_fms_consumer.yaml new file mode 100644 index 0000000..844d235 --- /dev/null +++ b/.github/workflows/containerize_fms_consumer.yaml @@ -0,0 +1,93 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +name: Containerize FMS Consumer and Push to Container Registry + +# Containerizes and pushes a build of the FMS Consumer to a container registry. +# + +on: + push: + branches: + - main + pull_request: + branches: + - main + paths: + - "components/Dockerfile.fms-consumer" + - "components/fms-consumer/src/**" + - "components/fms-consumer/Cargo.toml" + - "components/fms-proto/proto/**" + - "components/fms-proto/src/**" + - "components/fms-proto/Cargo.toml" + - "components/influx-client/src/**" + - "components/influx-client/Cargo.toml" + - ".github/workflows/containerize_fms_consumer.yaml" + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }}/fms-consumer + +jobs: + build-and-push-image: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up Docker buildx + id: buildx + uses: docker/setup-buildx-action@v2 + with: + install: true + + - name: Login to the Container registry + uses: docker/login-action@v2 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata and create tag + id: meta + uses: docker/metadata-action@v4 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=ref,event=branch + type=ref,event=tag + type=ref,event=pr + + - name: Build and push Docker image + uses: docker/build-push-action@v4 + with: + context: "components/." + file: "components/Dockerfile.fms-consumer" + push: true + platforms: linux/amd64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/containerize_fms_forwarder.yaml b/.github/workflows/containerize_fms_forwarder.yaml new file mode 100644 index 0000000..f94c930 --- /dev/null +++ b/.github/workflows/containerize_fms_forwarder.yaml @@ -0,0 +1,91 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +name: Containerize FMS Forwarder and Push to Container Registry + +# Containerizes and pushes a build of the FMS Forwarder to a container registry. +# + +on: + push: + branches: + - main + pull_request: + branches: + - main + paths: + - "components/Dockerfile.fms-forwarder" + - "components/fms-forwarder/src/**" + - "components/fms-forwarder/proto/**" + - "components/fms-proto/proto/**" + - "components/fms-proto/src/**" + - "components/fms-proto/Cargo.toml" + - "components/influx-client/src/**" + - "components/influx-client/Cargo.toml" + - ".github/workflows/containerize_fms_forwarder.yaml" + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }}/fms-forwarder + +jobs: + build-and-push-image: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to the Container registry + uses: docker/login-action@v2 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata and create {branch}-{sha} tag + id: meta + uses: docker/metadata-action@v4 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=ref,event=branch + type=ref,event=tag + type=ref,event=pr + + - name: Build and push Docker image + uses: docker/build-push-action@v4 + with: + context: "components/." + file: "components/Dockerfile.fms-forwarder" + push: true + platforms: linux/amd64,linux/arm64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/containerize_fms_server.yaml b/.github/workflows/containerize_fms_server.yaml new file mode 100644 index 0000000..7b5f882 --- /dev/null +++ b/.github/workflows/containerize_fms_server.yaml @@ -0,0 +1,90 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +name: Containerize FMS Server and Push to Container Registry + +# Containerizes and pushes a build of the FMS Server to a container registry. +# + +on: + push: + branches: + - main + pull_request: + branches: + - main + paths: + - "components/Dockerfile.fms-server" + - "components/fms-server/src/**" + - "components/fms-server/Cargo.toml" + - "components/influx-client/src/**" + - "components/influx-client/Cargo.toml" + - ".github/workflows/containerize_fms_server.yaml" + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }}/fms-server + +jobs: + build-and-push-image: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up Docker buildx + id: buildx + uses: docker/setup-buildx-action@v2 + with: + install: true + + - name: Login to the Container registry + uses: docker/login-action@v2 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata and create tag + id: meta + uses: docker/metadata-action@v4 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=ref,event=branch + type=ref,event=tag + type=ref,event=pr + + - name: Build and push Docker image + uses: docker/build-push-action@v4 + with: + context: "components/." + file: "components/Dockerfile.fms-server" + push: true + platforms: linux/amd64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f124a41 --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.DS_Store +*.drawio.bkp +**/target + +*-mqtt.env +*-kafka.env +*-kafka.properties diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..b097564 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,93 @@ +# Community Code of Conduct + +**Version 2.0 +January 1, 2023** + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as community members, contributors, Committers[^1], and Project Leads (collectively "Contributors") pledge to make participation in our projects and our community a harassment-free and inclusive experience for everyone. + +This Community Code of Conduct ("Code") outlines our behavior expectations as members of our community in all Eclipse Foundation activities, both offline and online. It is not intended to govern scenarios or behaviors outside of the scope of Eclipse Foundation activities. Nor is it intended to replace or supersede the protections offered to all our community members under the law. Please follow both the spirit and letter of this Code and encourage other Contributors to follow these principles into our work. Failure to read or acknowledge this Code does not excuse a Contributor from compliance with the Code. + +## Our Standards + +Examples of behavior that contribute to creating a positive and professional environment include: + +- Using welcoming and inclusive language; +- Actively encouraging all voices; +- Helping others bring their perspectives and listening actively. If you find yourself dominating a discussion, it is especially important to encourage other voices to join in; +- Being respectful of differing viewpoints and experiences; +- Gracefully accepting constructive criticism; +- Focusing on what is best for the community; +- Showing empathy towards other community members; +- Being direct but professional; and +- Leading by example by holding yourself and others accountable + +Examples of unacceptable behavior by Contributors include: + +- The use of sexualized language or imagery; +- Unwelcome sexual attention or advances; +- Trolling, insulting/derogatory comments, and personal or political attacks; +- Public or private harassment, repeated harassment; +- Publishing others' private information, such as a physical or electronic address, without explicit permission; +- Violent threats or language directed against another person; +- Sexist, racist, or otherwise discriminatory jokes and language; +- Posting sexually explicit or violent material; +- Sharing private content, such as emails sent privately or non-publicly, or unlogged forums such as IRC channel history; +- Personal insults, especially those using racist or sexist terms; +- Excessive or unnecessary profanity; +- Advocating for, or encouraging, any of the above behavior; and +- Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +With the support of the Eclipse Foundation employees, consultants, officers, and directors (collectively, the "Staff"), Committers, and Project Leads, the Eclipse Foundation Conduct Committee (the "Conduct Committee") is responsible for clarifying the standards of acceptable behavior. The Conduct Committee takes appropriate and fair corrective action in response to any instances of unacceptable behavior. + +## Scope + +This Code applies within all Project, Working Group, and Interest Group spaces and communication channels of the Eclipse Foundation (collectively, "Eclipse spaces"), within any Eclipse-organized event or meeting, and in public spaces when an individual is representing an Eclipse Foundation Project, Working Group, Interest Group, or their communities. Examples of representing a Project or community include posting via an official social media account, personal accounts, or acting as an appointed representative at an online or offline event. Representation of Projects, Working Groups, and Interest Groups may be further defined and clarified by Committers, Project Leads, or the Staff. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the Conduct Committee via conduct@eclipse-foundation.org. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. Without the explicit consent of the reporter, the Conduct Committee is obligated to maintain confidentiality with regard to the reporter of an incident. The Conduct Committee is further obligated to ensure that the respondent is provided with sufficient information about the complaint to reply. If such details cannot be provided while maintaining confidentiality, the Conduct Committee will take the respondent‘s inability to provide a defense into account in its deliberations and decisions. Further details of enforcement guidelines may be posted separately. + +Staff, Committers and Project Leads have the right to report, remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code, or to block temporarily or permanently any Contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. Any such actions will be reported to the Conduct Committee for transparency and record keeping. + +Any Staff (including officers and directors of the Eclipse Foundation), Committers, Project Leads, or Conduct Committee members who are the subject of a complaint to the Conduct Committee will be recused from the process of resolving any such complaint. + +## Responsibility + +The responsibility for administering this Code rests with the Conduct Committee, with oversight by the Executive Director and the Board of Directors. For additional information on the Conduct Committee and its process, please write to . + +## Investigation of Potential Code Violations + +All conflict is not bad as a healthy debate may sometimes be necessary to push us to do our best. It is, however, unacceptable to be disrespectful or offensive, or violate this Code. If you see someone engaging in objectionable behavior violating this Code, we encourage you to address the behavior directly with those involved. If for some reason, you are unable to resolve the matter or feel uncomfortable doing so, or if the behavior is threatening or harassing, please report it following the procedure laid out below. + +Reports should be directed to . It is the Conduct Committee’s role to receive and address reported violations of this Code and to ensure a fair and speedy resolution. + +The Eclipse Foundation takes all reports of potential Code violations seriously and is committed to confidentiality and a full investigation of all allegations. The identity of the reporter will be omitted from the details of the report supplied to the accused. Contributors who are being investigated for a potential Code violation will have an opportunity to be heard prior to any final determination. Those found to have violated the Code can seek reconsideration of the violation and disciplinary action decisions. Every effort will be made to have all matters disposed of within 60 days of the receipt of the complaint. + +## Actions +Contributors who do not follow this Code in good faith may face temporary or permanent repercussions as determined by the Conduct Committee. + +This Code does not address all conduct. It works in conjunction with our [Communication Channel Guidelines](https://www.eclipse.org/org/documents/communication-channel-guidelines/), [Social Media Guidelines](https://www.eclipse.org/org/documents/social_media_guidelines.php), [Bylaws](https://www.eclipse.org/org/documents/eclipse-foundation-be-bylaws-en.pdf), and [Internal Rules](https://www.eclipse.org/org/documents/ef-be-internal-rules.pdf) which set out additional protections for, and obligations of, all contributors. The Foundation has additional policies that provide further guidance on other matters. + +It’s impossible to spell out every possible scenario that might be deemed a violation of this Code. Instead, we rely on one another’s good judgment to uphold a high standard of integrity within all Eclipse Spaces. Sometimes, identifying the right thing to do isn’t an easy call. In such a scenario, raise the issue as early as possible. + +## No Retaliation + +The Eclipse community relies upon and values the help of Contributors who identify potential problems that may need to be addressed within an Eclipse Space. Any retaliation against a Contributor who raises an issue honestly is a violation of this Code. That a Contributor has raised a concern honestly or participated in an investigation, cannot be the basis for any adverse action, including threats, harassment, or discrimination. If you work with someone who has raised a concern or provided information in an investigation, you should continue to treat the person with courtesy and respect. If you believe someone has retaliated against you, report the matter as described by this Code. Honest reporting does not mean that you have to be right when you raise a concern; you just have to believe that the information you are providing is accurate. + +False reporting, especially when intended to retaliate or exclude, is itself a violation of this Code and will not be accepted or tolerated. + +Everyone is encouraged to ask questions about this Code. Your feedback is welcome, and you will get a response within three business days. Write to . + +## Amendments + +The Eclipse Foundation Board of Directors may amend this Code from time to time and may vary the procedures it sets out where appropriate in a particular case. + +### Attribution + +This Code was inspired by the [Contributor Covenant](https://www.contributor-covenant.org/), version 1.4, available [here](https://www.contributor-covenant.org/version/1/4/code-of-conduct/). + +[^1]: Capitalized terms used herein without definition shall have the meanings assigned to them in the Bylaws. diff --git a/DEPENDENCIES b/DEPENDENCIES new file mode 100644 index 0000000..5d78458 --- /dev/null +++ b/DEPENDENCIES @@ -0,0 +1,173 @@ +crate/cratesio/-/aho-corasick/1.0.2, Unlicense AND (MIT AND Unlicense) AND MIT AND LicenseRef-scancode-generic-exception, restricted, #9759 +crate/cratesio/-/anstream/0.3.2, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/anstyle/1.0.1, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/anstyle-parse/0.2.1, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/anstyle-query/1.0.0, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/anyhow/1.0.72, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/arrayvec/0.7.4, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/async-channel/1.9.0, Apache-2.0 OR MIT, approved, clearlydefined +crate/cratesio/-/async-stream/0.3.5, MIT, approved, clearlydefined +crate/cratesio/-/async-stream-impl/0.3.5, MIT, approved, clearlydefined +crate/cratesio/-/async-trait/0.1.72, Apache-2.0 AND MIT AND Apache-2.0 AND MIT, approved, #6666 +crate/cratesio/-/axum/0.6.19, MIT, approved, clearlydefined +crate/cratesio/-/axum-core/0.3.4, MIT, approved, clearlydefined +crate/cratesio/-/base64/0.21.2, Apache-2.0 AND MIT AND Apache-2.0 AND MIT, approved, #9764 +crate/cratesio/-/bitflags/1.3.2, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/bitflags/2.3.3, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/bytes/1.4.0, MIT, approved, clearlydefined +crate/cratesio/-/castaway/0.1.2, MIT, approved, clearlydefined +crate/cratesio/-/cfg-if/1.0.0, Apache-2.0 OR MIT, approved, clearlydefined +crate/cratesio/-/chrono/0.4.26, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/clap/4.3.19, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/clap_builder/4.3.19, Apache-2.0 AND MIT AND Apache-2.0 AND MIT, approved, #9774 +crate/cratesio/-/clap_lex/0.5.0, Apache-2.0 AND MIT AND Apache-2.0 AND MIT, approved, #9773 +crate/cratesio/-/colorchoice/1.0.0, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/concurrent-queue/2.2.0, Apache-2.0 OR MIT, approved, clearlydefined +crate/cratesio/-/const_format/0.2.31, Zlib, approved, clearlydefined +crate/cratesio/-/const_format_proc_macros/0.2.31, Zlib, approved, clearlydefined +crate/cratesio/-/crossbeam-channel/0.5.8, Apache-2.0 AND MIT AND Apache-2.0 AND MIT AND (Apache-2.0 AND BSD-3-Clause AND CC-BY-3.0 AND MIT), approved, #9756 +crate/cratesio/-/crossbeam-utils/0.8.16, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/csv/1.2.2, Unlicense OR MIT, approved, clearlydefined +crate/cratesio/-/csv-core/0.1.10, MIT OR (MIT AND Unlicense), approved, clearlydefined +crate/cratesio/-/curl/0.4.44, MIT AND (MIT AND curl), restricted, #9765 +crate/cratesio/-/curl-sys/0.4.65, , restricted, clearlydefined +crate/cratesio/-/duration-str/0.5.1, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/either/1.9.0, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/encoding_rs/0.8.32, Apache-2.0 AND BSD-3-Clause AND MIT AND Apache-2.0 AND (Apache-2.0 AND CC0-1.0 AND MIT) AND MIT AND BSD-3-Clause AND (Apache-2.0 AND BSD-3-Clause AND CC0-1.0 AND MIT) AND (Apache-2.0 AND MIT) AND CC0-1.0, approved, #9762 +crate/cratesio/-/env_logger/0.10.0, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/equivalent/1.0.1, Apache-2.0 OR MIT, approved, clearlydefined +crate/cratesio/-/event-listener/2.5.3, Apache-2.0 OR MIT, approved, clearlydefined +crate/cratesio/-/fastrand/1.9.0, Apache-2.0 OR MIT, approved, clearlydefined +crate/cratesio/-/fnv/1.0.7, Apache-2.0 AND MIT, approved, clearlydefined +crate/cratesio/-/form_urlencoded/1.2.0, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/futures/0.3.28, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/futures-channel/0.3.28, Apache-2.0 AND MIT AND Apache-2.0 AND MIT AND BSD-2-Clause-Views, approved, #6671 +crate/cratesio/-/futures-core/0.3.28, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/futures-executor/0.3.28, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/futures-io/0.3.28, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/futures-lite/1.13.0, Apache-2.0 OR MIT, approved, clearlydefined +crate/cratesio/-/futures-macro/0.3.28, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/futures-sink/0.3.28, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/futures-task/0.3.28, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/futures-timer/3.0.2, Apache-2.0 AND MIT, approved, clearlydefined +crate/cratesio/-/futures-util/0.3.28, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/getrandom/0.2.10, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/h2/0.3.20, MIT, approved, clearlydefined +crate/cratesio/-/hashbrown/0.12.3, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/hashbrown/0.14.0, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/http/0.2.9, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/httparse/1.8.0, Apache-2.0 AND MIT AND Apache-2.0 AND MIT, approved, #4256 +crate/cratesio/-/http-body/0.4.5, MIT, approved, clearlydefined +crate/cratesio/-/httpdate/1.0.2, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/humantime/2.1.0, Apache-2.0 OR (Apache-2.0 AND MIT), approved, clearlydefined +crate/cratesio/-/hyper/0.14.27, MIT, approved, clearlydefined +crate/cratesio/-/hyper-timeout/0.4.1, Apache-2.0 AND MIT, approved, clearlydefined +crate/cratesio/-/iana-time-zone/0.1.57, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/idna/0.4.0, Apache-2.0 AND MIT AND Apache-2.0 AND MIT AND LicenseRef-scancode-unicode, restricted, #9786 +crate/cratesio/-/indexmap/1.9.3, Apache-2.0 OR MIT, approved, clearlydefined +crate/cratesio/-/indexmap/2.0.0, Apache-2.0 OR MIT, approved, clearlydefined +crate/cratesio/-/influxrs/2.0.1, MIT, approved, clearlydefined +crate/cratesio/-/isahc/1.7.2, MIT AND CC-BY-4.0 AND MPL-2.0, approved, #9775 +crate/cratesio/-/is-terminal/0.4.9, MIT, approved, clearlydefined +crate/cratesio/-/itertools/0.10.5, Apache-2.0 AND MIT AND Apache-2.0 AND MIT, approved, #4247 +crate/cratesio/-/itoa/1.0.9, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/libc/0.2.147, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/libnghttp2-sys/0.1.7, , restricted, clearlydefined +crate/cratesio/-/libz-sys/1.1.12, Apache-2.0 AND MIT AND Apache-2.0 AND MIT AND Zlib AND GPL-1.0-or-later AND (GPL-2.0-or-later AND LicenseRef-scancode-ada-linking-exception) AND BSD-3-Clause AND BSL-1.0 AND LicenseRef-scancode-mit-old-style AND LicenseRef-scancode-other-permissive AND LicenseRef-scancode-info-zip-2009-01 AND LicenseRef-scancode-peter-deutsch-document AND (CC-BY-3.0 AND CC-BY-4.0 AND Zlib), restricted, #9763 +crate/cratesio/-/linux-raw-sys/0.4.3, Apache-2.0 WITH LLVM-exception AND MIT AND Apache-2.0 AND (Apache-2.0 WITH LLVM-exception) AND MIT, restricted, #9787 +crate/cratesio/-/log/0.4.19, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/matchit/0.7.0, MIT, approved, clearlydefined +crate/cratesio/-/memchr/2.5.0, Unlicense OR MIT, approved, clearlydefined +crate/cratesio/-/mime/0.3.17, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/minimal-lexical/0.2.1, Apache-2.0 AND MIT AND Apache-2.0 AND MIT AND (Apache-2.0 AND BSD-3-Clause AND LicenseRef-scancode-free-unknown AND MIT) AND (Apache-2.0 AND LicenseRef-scancode-free-unknown AND MIT) AND BSD-3-Clause AND (Apache-2.0 AND LicenseRef-scancode-red-hat-attribution AND LicenseRef-scancode-sunpro AND MIT), restricted, #9755 +crate/cratesio/-/mio/0.8.8, MIT, approved, clearlydefined +crate/cratesio/-/nom/7.1.3, MIT AND CC0-1.0, approved, #9761 +crate/cratesio/-/num_cpus/1.16.0, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/num_enum/0.5.11, BSD-3-Clause OR (MIT OR Apache-2.0), approved, clearlydefined +crate/cratesio/-/num_enum_derive/0.5.11, BSD-3-Clause OR (MIT OR Apache-2.0), approved, clearlydefined +crate/cratesio/-/num-traits/0.2.16, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/once_cell/1.18.0, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/openssl-probe/0.1.5, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/openssl-sys/0.9.90, MIT AND (Apache-2.0 AND MIT), approved, #9757 +crate/cratesio/-/paho-mqtt/0.12.1, BSD-3-Clause AND EPL-1.0 AND EPL-1.0 AND BSD-3-Clause AND (Apache-2.0 AND CPL-1.0 AND EPL-1.0 AND LicenseRef-scancode-eclipse-sua-2011 AND MPL-1.1), restricted, #9785 +crate/cratesio/-/paho-mqtt-sys/0.8.1, BSD-3-Clause AND EPL-1.0 AND EPL-1.0 AND (BSD-3-Clause AND EPL-1.0 AND EPL-2.0) AND (BSD-3-Clause AND EPL-2.0) AND BSD-3-Clause AND EPL-2.0 AND (Apache-2.0 AND CPL-1.0 AND LicenseRef-scancode-eclipse-sua-2011 AND MPL-1.1) AND GPL-2.0-or-later AND (BSD-3-Clause AND EPL-2.0 AND GPL-2.0-or-later) AND (GPL-2.0-only AND MIT) AND GPL-2.0-only, restricted, #9776 +crate/cratesio/-/parking/2.1.0, Apache-2.0 OR MIT, approved, clearlydefined +crate/cratesio/-/percent-encoding/2.3.0, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/pin-project/1.1.2, Apache-2.0 OR MIT, approved, clearlydefined +crate/cratesio/-/pin-project-internal/1.1.2, Apache-2.0 OR MIT, approved, clearlydefined +crate/cratesio/-/pin-project-lite/0.2.10, Apache-2.0 OR MIT, approved, clearlydefined +crate/cratesio/-/pin-utils/0.1.0, Apache-2.0 AND MIT, approved, clearlydefined +crate/cratesio/-/polling/2.8.0, Apache-2.0 OR MIT, approved, clearlydefined +crate/cratesio/-/ppv-lite86/0.2.17, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/proc-macro2/1.0.66, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/proc-macro-crate/1.3.1, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/prost/0.11.9, Apache-2.0, approved, #7713 +crate/cratesio/-/prost-derive/0.11.9, Apache-2.0, approved, #7717 +crate/cratesio/-/prost-types/0.11.9, Apache-2.0 AND BSD-2-Clause, approved, #7714 +crate/cratesio/-/protobuf/3.2.0, MIT, approved, clearlydefined +crate/cratesio/-/protobuf-support/3.2.0, MIT, approved, clearlydefined +crate/cratesio/-/quote/1.0.32, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/rand/0.8.5, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/rand_chacha/0.3.1, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/rand_core/0.6.4, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/rdkafka/0.33.2, MIT, approved, clearlydefined +crate/cratesio/-/rdkafka-sys/4.5.0, , restricted, clearlydefined +crate/cratesio/-/regex/1.9.1, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/regex-automata/0.3.3, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/regex-syntax/0.7.4, Apache-2.0 AND MIT AND Apache-2.0 AND MIT AND Unicode-DFS-2016, approved, #9758 +crate/cratesio/-/ring/0.16.20, ISC AND (LicenseRef-CRYPTOGAMS OR OpenSSL) AND MIT AND OpenSSL AND LicenseRef-SSLeay, approved, #7112 +crate/cratesio/-/rust_decimal/1.30.0, MIT, approved, clearlydefined +crate/cratesio/-/rustix/0.38.4, Apache-2.0 WITH LLVM-exception OR (Apache-2.0 OR MIT), approved, clearlydefined +crate/cratesio/-/rustls/0.21.5, Apache-2.0 OR (ISC OR MIT), approved, clearlydefined +crate/cratesio/-/rustls-pemfile/1.0.3, Apache-2.0 OR (ISC OR MIT), approved, clearlydefined +crate/cratesio/-/rustls-webpki/0.101.2, ISC, approved, #9798 +crate/cratesio/-/ryu/1.0.15, Apache-2.0 AND BSL-1.0 AND CC-BY-SA-3.0, approved, #4267 +crate/cratesio/-/sct/0.7.0, Apache-2.0 OR (ISC OR MIT), approved, clearlydefined +crate/cratesio/-/serde/1.0.176, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/serde_derive/1.0.176, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/serde_json/1.0.104, Apache-2.0 AND MIT, approved, #4264 +crate/cratesio/-/serde_path_to_error/0.1.14, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/serde_urlencoded/0.7.1, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/slab/0.4.8, MIT, approved, clearlydefined +crate/cratesio/-/sluice/0.5.5, MIT, approved, clearlydefined +crate/cratesio/-/socket2/0.4.9, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/spin/0.5.2, MIT, approved, clearlydefined +crate/cratesio/-/strsim/0.10.0, MIT, approved, clearlydefined +crate/cratesio/-/syn/1.0.109, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/syn/2.0.27, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/sync_wrapper/0.1.2, Apache-2.0, approved, clearlydefined +crate/cratesio/-/termcolor/1.2.0, Unlicense OR MIT, approved, clearlydefined +crate/cratesio/-/thiserror/1.0.44, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/thiserror-impl/1.0.44, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/time/0.1.45, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/time/0.3.23, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/time-core/0.1.1, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/tinyvec/1.6.0, Zlib OR (Apache-2.0 OR MIT), approved, clearlydefined +crate/cratesio/-/tinyvec_macros/0.1.1, MIT OR (Apache-2.0 OR Zlib), approved, clearlydefined +crate/cratesio/-/tokio/1.29.1, MIT, approved, clearlydefined +crate/cratesio/-/tokio-io-timeout/1.2.0, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/tokio-macros/2.1.0, MIT, approved, clearlydefined +crate/cratesio/-/tokio-rustls/0.24.1, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/tokio-stream/0.1.14, MIT, approved, clearlydefined +crate/cratesio/-/tokio-util/0.7.8, MIT, approved, clearlydefined +crate/cratesio/-/toml_datetime/0.6.3, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/toml_edit/0.19.14, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/tonic/0.9.2, MIT AND Apache-2.0, approved, #9772 +crate/cratesio/-/tower/0.4.13, MIT AND Apache-2.0, approved, #6661 +crate/cratesio/-/tower-layer/0.3.2, MIT, approved, clearlydefined +crate/cratesio/-/tower-service/0.3.2, MIT, approved, clearlydefined +crate/cratesio/-/tracing/0.1.37, MIT, approved, clearlydefined +crate/cratesio/-/tracing-attributes/0.1.26, MIT, approved, clearlydefined +crate/cratesio/-/tracing-core/0.1.31, MIT, approved, clearlydefined +crate/cratesio/-/tracing-futures/0.2.5, MIT, approved, clearlydefined +crate/cratesio/-/try-lock/0.2.4, MIT, approved, clearlydefined +crate/cratesio/-/unicode-bidi/0.3.13, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/unicode-ident/1.0.11, , approved, #4138 +crate/cratesio/-/unicode-normalization/0.1.22, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/unicode-xid/0.2.4, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/untrusted/0.7.1, ISC AND (ISC AND MIT), approved, #4249 +crate/cratesio/-/url/2.4.0, MIT OR Apache-2.0, approved, clearlydefined +crate/cratesio/-/utf8parse/0.2.1, Apache-2.0 OR MIT, approved, clearlydefined +crate/cratesio/-/waker-fn/1.1.0, Apache-2.0 AND MIT, approved, clearlydefined +crate/cratesio/-/want/0.3.1, MIT, approved, clearlydefined +crate/cratesio/-/winnow/0.5.1, MIT, approved, #9760 diff --git a/LICENSE b/LICENSE index f49a4e1..d645695 100644 --- a/LICENSE +++ b/LICENSE @@ -1,3 +1,4 @@ + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -198,4 +199,4 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file + limitations under the License. diff --git a/LICENSES b/LICENSES new file mode 120000 index 0000000..d342382 --- /dev/null +++ b/LICENSES @@ -0,0 +1 @@ +components/LICENSES \ No newline at end of file diff --git a/NOTICE.md b/NOTICE.md new file mode 100644 index 0000000..aee5a7f --- /dev/null +++ b/NOTICE.md @@ -0,0 +1,43 @@ +# Notices for the Fleet Management Service Blueprint + +This content is produced and maintained by the Eclipse SDV Blueprints project. + +* Project home: https://projects.eclipse.org/projects/automotive.sdv-blueprints + +## Trademarks + +Eclipse SDV Blueprints is a trademark of the Eclipse Foundation. Eclipse, and the +Eclipse Logo are registered trademarks of the Eclipse Foundation. + +## Copyright + +All content is the property of the respective authors or their employers. +For more information regarding authorship of content, please consult the +listed source code repository logs. + +## Declared Project Licenses + +This program and the accompanying materials are made available under the +terms of the Apache License, Version 2.0 which is available at +http://www.apache.org/licenses/LICENSE-2.0 + +SPDX-License-Identifier: Apache-2.0 + +## Source Code + +The project maintains the following source code repositories: + +* https://github.com/eclipse-sdv-blueprints/fleet-management + +## Third-Party Dependencies + +See [DEPENDENCIES](DEPENDENCIES) + +## Cryptography + +Content may contain encryption software. The country in which you are currently +may have restrictions on the import, possession, and use, and/or re-export to +another country, of encryption software. BEFORE using any encryption software, +please check the country's laws, regulations and policies concerning the import, +possession, or use, and re-export of encryption software, to see if this is +permitted. diff --git a/README.md b/README.md index 66031a0..2be242f 100644 --- a/README.md +++ b/README.md @@ -1,54 +1,102 @@ - -

Fleet Management Blueprint

+ -

A simple Eclipse SDV Blueprint for Truck Fleet Ops.

+See the NOTICE file(s) distributed with this work for additional +information regarding copyright ownership. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at - -

- status: maintained - issues: NA - -

+ http://www.apache.org/licenses/LICENSE-2.0 - - -

- Getting Started • - Documentation • - Need Help? • -

+Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. - -
+SPDX-License-Identifier: Apache-2.0 +--> +The [Eclipse SDV Blueprints](https://github.com/eclipse-sdv-blueprints) project is a collaborative initiative +led by Eclipse SDV members to bring the *software defined vehicle* concepts to life. -## Introduction -The **Eclipse SDV Blueprints** project is a collaborative initiative led by Eclipse SDV members to bring the "software defined vehicle" concepts to life. A crucial aspect of each blueprint is to ensure users can easily reproduce it on their own. This requires well-written and highly clear documentation. Users can utilize blueprints as they are, for inspiration or as a foundation to customize and meet their specific needs. +The project hosts a collection of blueprints that demonstrate the application of technologies developed in +the context of the [Eclipse SDV Working Group](https://sdv.eclipse.org). -The Eclipse SDV Blueprints project hosts a collection of blueprints that demonstrate the application of technologies developed within the projects of the Eclipse SDV working group (sdv.eclipse.org). This allows for showcasing the capabilities and features of the software provided by the Eclipse SDV working group, while also exploring collaboration opportunities and integration of these technologies. +This repository contains the **Fleet Management Blueprint** which is a close to *real-life* showcase +for truck fleet management where trucks run an SDV software stack so that logistics fleet operators can +manage apps, data and services for a diverse set of vehicles. +The use case showcases how one can customize the standard VSS model and use it to report data from a vehicle +to a back end. The following diagram provides an overview of the current architecture: + -**Fleet Management Blueprint** is a close to "real-life" showcase for truck fleet management where trucks run SDV stacks so that logistics fleet operators can manage apps, data and services for a diverse set of vehicles.. +The overall idea is to enable back end applications to consume data coming from a vehicle using the rFMS API. -
+Data originates from the vehicle's sensors which are represented by a CSV file that is being played back by the +kuksa.val CSV feeder. The CSV feeder publishes the data to the kuksa.val Databroker. From there, the FMS Forwarder +consumes the data and writes it to an InfluxDB in the back end. The measurements in the InfluxDB can then be +visualized in a web browser by means of a Grafana dashboard. Alternatively, the measurements can be retrieved by +a Fleet Management application via the FMS Server's (HTTP based) rFMS API. -## Getting Started -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. -
+# Quick Start -## Documentation +The easiest way to set up and start the services is by means of using the Docker Compose file in the top level folder: -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. -
+```sh +docker compose -f ./fms-blueprint-compose.yaml up --detach +``` -## Contributing +This will pull or build (if necessary) the container images and create and start all components. -If you want to contribute bug reports or feature requests, please use *GitHub Issues*. -
+Once all services have been started, the current vehicle status can be viewed on a [Grafana dashboard](http://127.0.0.1:3000), +using *admin*/*admin* as username and password for logging in. -## License and Copyright -This program and the accompanying materials are made available under the terms of the Apache License 2.0 which is available at -[https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) +The rFMS API can be used to retrieve the data, e.g. + +```sh +curl -v -s http://127.0.0.1:8081/rfms/vehicleposition?latestOnly=true | jq +``` + +# Using Eclipse Hono to send Vehicle Data to Back End + +By default, the Docker Compose file starts the FMS Forwarder configured to write vehicle data directly to the +Influx DB running in the back end. + +However, in a real world scenario, this tight coupling between the vehicle and the Influx DB is not desirable. +As an alternative, the Docker Compose file supports a profile which configures the FMS Forwarder to send vehicle data +to the MQTT adapter of an Eclipse Hono instance. + +1. Register the vehicle as a device in Hono using the [provision-vehicle-to.hono.sh script](./provision-vehicle-to.hono.sh): + + ```sh + ./provision-vehicle-to-hono.sh --tenant=MY_TENANT_ID --device-id=MY_DEVICE_ID --device-pwd=MY_PWD + ``` + + Make sure to replace `MY_TENANT_ID`, `MY_DEVICE_ID` and `MY_PWD` with your own values. + The script registers the tenant and device in Hono's Sandbox installation at `hono.eclipseprojects.io` unless the + *--host* and/or *--kafka-brokers* command line arguments are used. Use the *--help* switch to print usage information. + + The script will also create three property files (`hono-mqtt.env`, `hono-kafka.env` and `hono-kafka.properties`) that are + used to configure the FMS Forwarder and FMS Consumer components when started via Docker Compose in the next step. + +2. Start up the vehicle and back end services using Docker Compose: + + ```sh + docker compose -f ./fms-blueprint-compose.yaml -f ./fms-blueprint-compose-hono.yaml up --detach + ``` + + The second compose file specified on the command line will also start the [FMS Consumer](./components/fms-consumer) + back end component which receives vehicle data via Hono's north bound Kafka based Telemetry API and writes it to the + Influx DB. + +# Manual configuration + +All information required for setting up the networks, volumes, configs and containers is contained in the +Docker Compose file. Please refer to the Docker and/or Podman documentation for details how to perform the +setup manually. + +Additional information can be found in the components' corresponding subfolders. diff --git a/components/.dockerignore b/components/.dockerignore new file mode 100644 index 0000000..d2a4b93 --- /dev/null +++ b/components/.dockerignore @@ -0,0 +1,21 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +**/target +**/Cargo.lock diff --git a/components/.gitignore b/components/.gitignore new file mode 100644 index 0000000..84beb7f --- /dev/null +++ b/components/.gitignore @@ -0,0 +1,20 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +target diff --git a/components/Cargo.lock b/components/Cargo.lock new file mode 100644 index 0000000..84c4303 --- /dev/null +++ b/components/Cargo.lock @@ -0,0 +1,2391 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aho-corasick" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +dependencies = [ + "memchr", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is-terminal", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" + +[[package]] +name = "anstyle-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "anstyle-wincon" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +dependencies = [ + "anstyle", + "windows-sys", +] + +[[package]] +name = "anyhow" +version = "1.0.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-stream" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "async-trait" +version = "0.1.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "axum" +version = "0.6.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a1de45611fdb535bfde7b7de4fd54f4fd2b17b1737c0a59b69bf9b92074b8c" +dependencies = [ + "async-trait", + "axum-core", + "bitflags 1.3.2", + "bytes", + "futures-util", + "http", + "http-body", + "hyper", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "mime", + "rustversion", + "tower-layer", + "tower-service", +] + +[[package]] +name = "backtrace" +version = "0.3.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" + +[[package]] +name = "bumpalo" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "castaway" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2698f953def977c68f935bb0dfa959375ad4638570e969e2f1e9f433cbf1af6" + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "time 0.1.45", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "clap" +version = "4.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd304a20bff958a57f04c4e96a2e7594cc4490a0e809cbd48bb6437edaa452d" +dependencies = [ + "clap_builder", +] + +[[package]] +name = "clap_builder" +version = "4.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01c6a3f08f1fe5662a35cfe393aec09c4df95f60ee93b7556505260f75eee9e1" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_lex" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" + +[[package]] +name = "cmake" +version = "0.1.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" +dependencies = [ + "cc", +] + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "concurrent-queue" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "const_format" +version = "0.2.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c990efc7a285731f9a4378d81aff2f0e85a2c8781a05ef0f8baa8dac54d0ff48" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e026b6ce194a874cb9cf32cd5772d1ef9767cc8fcb5765948d74f37a9d8b2bf6" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "crossbeam-channel" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "csv" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "626ae34994d3d8d668f4269922248239db4ae42d538b14c398b74a52208e8086" +dependencies = [ + "csv-core", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +dependencies = [ + "memchr", +] + +[[package]] +name = "curl" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22" +dependencies = [ + "curl-sys", + "libc", + "openssl-probe", + "openssl-sys", + "schannel", + "socket2", + "winapi", +] + +[[package]] +name = "curl-sys" +version = "0.4.65+curl-8.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "961ba061c9ef2fe34bbd12b807152d96f0badd2bebe7b90ce6c8c8b7572a0986" +dependencies = [ + "cc", + "libc", + "libnghttp2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", + "winapi", +] + +[[package]] +name = "duration-str" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9f037c488d179e21c87ef5fa9c331e8e62f5dddfa84618b41bb197da03edff1" +dependencies = [ + "chrono", + "nom", + "rust_decimal", + "serde", + "thiserror", + "time 0.3.23", +] + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + +[[package]] +name = "encoding_rs" +version = "0.8.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "env_logger" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +dependencies = [ + "humantime", + "is-terminal", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrand" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "fms-consumer" +version = "0.1.0-SNAPSHOT" +dependencies = [ + "clap", + "env_logger", + "fms-proto", + "futures", + "influx-client", + "log", + "openssl-src", + "protobuf", + "rdkafka", + "tokio", +] + +[[package]] +name = "fms-forwarder" +version = "0.1.0-SNAPSHOT" +dependencies = [ + "async-trait", + "chrono", + "clap", + "duration-str", + "env_logger", + "fms-proto", + "influx-client", + "log", + "paho-mqtt", + "prost", + "prost-types", + "protobuf", + "protoc-bin-vendored", + "tokio", + "tonic", + "tonic-build", +] + +[[package]] +name = "fms-proto" +version = "0.1.0-SNAPSHOT" +dependencies = [ + "protobuf", + "protobuf-codegen", + "protoc-bin-vendored", +] + +[[package]] +name = "fms-server" +version = "0.1.0-SNAPSHOT" +dependencies = [ + "async-trait", + "axum", + "chrono", + "clap", + "const_format", + "env_logger", + "influx-client", + "influxrs", + "log", + "serde", + "serde_json", + "tokio", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" + +[[package]] +name = "futures-executor" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" + +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-macro" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "futures-sink" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" + +[[package]] +name = "futures-task" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" + +[[package]] +name = "futures-timer" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" + +[[package]] +name = "futures-util" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "getrandom" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gimli" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" + +[[package]] +name = "h2" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 1.9.3", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" + +[[package]] +name = "http" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper", + "pin-project-lite", + "tokio", + "tokio-io-timeout", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", +] + +[[package]] +name = "influx-client" +version = "0.1.0-SNAPSHOT" +dependencies = [ + "clap", + "fms-proto", + "influxrs", + "isahc", + "log", + "protobuf", +] + +[[package]] +name = "influxrs" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7862dbbb5d65b8a96c7b84738e32fc275d68d055f97577416c16298df00791f7" +dependencies = [ + "csv", + "isahc", + "log", + "serde", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "is-terminal" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +dependencies = [ + "hermit-abi", + "rustix", + "windows-sys", +] + +[[package]] +name = "isahc" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "334e04b4d781f436dc315cb1e7515bd96826426345d498149e4bde36b67f8ee9" +dependencies = [ + "async-channel", + "castaway", + "crossbeam-utils", + "curl", + "curl-sys", + "encoding_rs", + "event-listener", + "futures-lite", + "http", + "log", + "mime", + "once_cell", + "polling", + "slab", + "sluice", + "tracing", + "tracing-futures", + "url", + "waker-fn", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "js-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" + +[[package]] +name = "libnghttp2-sys" +version = "0.1.7+1.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57ed28aba195b38d5ff02b9170cbff627e336a20925e43b4945390401c5dc93f" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "libz-sys" +version = "1.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" + +[[package]] +name = "log" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" + +[[package]] +name = "matchit" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", +] + +[[package]] +name = "multimap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-traits" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "object" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-src" +version = "111.26.0+1.1.1u" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efc62c9f12b22b8f5208c23a7200a442b2e5999f8bdf80233852122b5a4f6f37" +dependencies = [ + "cc", +] + +[[package]] +name = "openssl-sys" +version = "0.9.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374533b0e45f3a7ced10fcaeccca020e66656bc03dac384f852e4e5a7a8104a6" +dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "paho-mqtt" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6a19171f5b405f350373e32b6c2c4b47c225afccc837c11d2e7e22ba1749c62" +dependencies = [ + "async-channel", + "crossbeam-channel", + "futures", + "futures-timer", + "libc", + "log", + "paho-mqtt-sys", + "thiserror", +] + +[[package]] +name = "paho-mqtt-sys" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1782b5e75d712f951a2a4c7d3175a2ef37d93ddb3ad8656b37092f3f05464bc9" +dependencies = [ + "cmake", + "openssl-sys", +] + +[[package]] +name = "parking" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" + +[[package]] +name = "percent-encoding" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + +[[package]] +name = "petgraph" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" +dependencies = [ + "fixedbitset", + "indexmap 1.9.3", +] + +[[package]] +name = "pin-project" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "030ad2bc4db10a8944cb0d837f158bdfec4d4a4873ab701a95046770d11f8842" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + +[[package]] +name = "polling" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "prettyplease" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" +dependencies = [ + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prost" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" +dependencies = [ + "bytes", + "heck", + "itertools", + "lazy_static", + "log", + "multimap", + "petgraph", + "prettyplease", + "prost", + "prost-types", + "regex", + "syn 1.0.109", + "tempfile", + "which", +] + +[[package]] +name = "prost-derive" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "prost-types" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" +dependencies = [ + "prost", +] + +[[package]] +name = "protobuf" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55bad9126f378a853655831eb7363b7b01b81d19f8cb1218861086ca4a1a61e" +dependencies = [ + "once_cell", + "protobuf-support", + "thiserror", +] + +[[package]] +name = "protobuf-codegen" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd418ac3c91caa4032d37cb80ff0d44e2ebe637b2fb243b6234bf89cdac4901" +dependencies = [ + "anyhow", + "once_cell", + "protobuf", + "protobuf-parse", + "regex", + "tempfile", + "thiserror", +] + +[[package]] +name = "protobuf-parse" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d39b14605eaa1f6a340aec7f320b34064feb26c93aec35d6a9a2272a8ddfa49" +dependencies = [ + "anyhow", + "indexmap 1.9.3", + "log", + "protobuf", + "protobuf-support", + "tempfile", + "thiserror", + "which", +] + +[[package]] +name = "protobuf-support" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d4d7b8601c814cfb36bcebb79f0e61e45e1e93640cf778837833bbed05c372" +dependencies = [ + "thiserror", +] + +[[package]] +name = "protoc-bin-vendored" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "005ca8623e5633e298ad1f917d8be0a44bcf406bf3cde3b80e63003e49a3f27d" +dependencies = [ + "protoc-bin-vendored-linux-aarch_64", + "protoc-bin-vendored-linux-ppcle_64", + "protoc-bin-vendored-linux-x86_32", + "protoc-bin-vendored-linux-x86_64", + "protoc-bin-vendored-macos-x86_64", + "protoc-bin-vendored-win32", +] + +[[package]] +name = "protoc-bin-vendored-linux-aarch_64" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb9fc9cce84c8694b6ea01cc6296617b288b703719b725b8c9c65f7c5874435" + +[[package]] +name = "protoc-bin-vendored-linux-ppcle_64" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d2a07dcf7173a04d49974930ccbfb7fd4d74df30ecfc8762cf2f895a094516" + +[[package]] +name = "protoc-bin-vendored-linux-x86_32" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d54fef0b04fcacba64d1d80eed74a20356d96847da8497a59b0a0a436c9165b0" + +[[package]] +name = "protoc-bin-vendored-linux-x86_64" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8782f2ce7d43a9a5c74ea4936f001e9e8442205c244f7a3d4286bd4c37bc924" + +[[package]] +name = "protoc-bin-vendored-macos-x86_64" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5de656c7ee83f08e0ae5b81792ccfdc1d04e7876b1d9a38e6876a9e09e02537" + +[[package]] +name = "protoc-bin-vendored-win32" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9653c3ed92974e34c5a6e0a510864dab979760481714c172e0a34e437cb98804" + +[[package]] +name = "quote" +version = "1.0.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rdkafka" +version = "0.33.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da18026aad1c24033da3da726200de7e911e75c2e2cc2f77ffb9b4502720faae" +dependencies = [ + "futures-channel", + "futures-util", + "libc", + "log", + "rdkafka-sys", + "serde", + "serde_derive", + "serde_json", + "slab", + "tokio", +] + +[[package]] +name = "rdkafka-sys" +version = "4.5.0+1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bb0676c2112342ac7165decdedbc4e7086c0af384479ccce534546b10687a5d" +dependencies = [ + "cmake", + "libc", + "libz-sys", + "num_enum", + "openssl-sys", + "pkg-config", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "regex" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi", +] + +[[package]] +name = "rust_decimal" +version = "1.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0446843641c69436765a35a5a77088e28c2e6a12da93e84aa3ab1cd4aa5a042" +dependencies = [ + "arrayvec", + "num-traits", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustix" +version = "0.38.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5" +dependencies = [ + "bitflags 2.3.3", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + +[[package]] +name = "rustls" +version = "0.21.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79ea77c539259495ce8ca47f53e66ae0330a8819f67e23ac96ca02f50e7b7d36" +dependencies = [ + "log", + "ring", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +dependencies = [ + "base64", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "513722fd73ad80a71f72b61009ea1b584bcfa1483ca93949c8f290298837fa59" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "schannel" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "serde" +version = "1.0.176" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76dc28c9523c5d70816e393136b86d48909cfb27cecaa902d338c19ed47164dc" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.176" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e7b8c5dc823e3b90651ff1d3808419cd14e5ad76de04feaf37da114e7a306f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "serde_json" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4beec8bce849d58d06238cb50db2e1c417cfeafa4c63f692b15c82b7c80f8335" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "slab" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +dependencies = [ + "autocfg", +] + +[[package]] +name = "sluice" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d7400c0eff44aa2fcb5e31a5f24ba9716ed90138769e4977a2ba6014ae63eb5" +dependencies = [ + "async-channel", + "futures-core", + "futures-io", +] + +[[package]] +name = "socket2" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b60f673f44a8255b9c8c657daf66a596d435f2da81a555b06dc644d080ba45e0" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "tempfile" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5486094ee78b2e5038a6382ed7645bc084dc2ec433426ca4c3cb61e2007b8998" +dependencies = [ + "cfg-if", + "fastrand 2.0.0", + "redox_syscall", + "rustix", + "windows-sys", +] + +[[package]] +name = "termcolor" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "time" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "time" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59e399c068f43a5d116fedaf73b203fa4f9c519f17e2b34f63221d3792f81446" +dependencies = [ + "serde", + "time-core", +] + +[[package]] +name = "time-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" +dependencies = [ + "autocfg", + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "pin-project-lite", + "socket2", + "tokio-macros", + "windows-sys", +] + +[[package]] +name = "tokio-io-timeout" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" +dependencies = [ + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-macros" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" + +[[package]] +name = "toml_edit" +version = "0.19.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +dependencies = [ + "indexmap 2.0.0", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tonic" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" +dependencies = [ + "async-stream", + "async-trait", + "axum", + "base64", + "bytes", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-timeout", + "percent-encoding", + "pin-project", + "prost", + "rustls-pemfile", + "tokio", + "tokio-rustls", + "tokio-stream", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tonic-build" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6fdaae4c2c638bb70fe42803a26fbd6fc6ac8c72f5c59f67ecc2a2dcabf4b07" +dependencies = [ + "prettyplease", + "proc-macro2", + "prost-build", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "tracing-core" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "try-lock" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "unicode-bidi" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + +[[package]] +name = "unicode-ident" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "url" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "waker-fn" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.27", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" + +[[package]] +name = "web-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "which" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" +dependencies = [ + "either", + "libc", + "once_cell", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "winnow" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b5872fa2e10bd067ae946f927e726d7d603eaeb6e02fa6a350e0722d2b8c11" +dependencies = [ + "memchr", +] diff --git a/components/Cargo.lock.license b/components/Cargo.lock.license new file mode 100644 index 0000000..59baed3 --- /dev/null +++ b/components/Cargo.lock.license @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 diff --git a/components/Cargo.toml b/components/Cargo.toml new file mode 100644 index 0000000..4b2b288 --- /dev/null +++ b/components/Cargo.toml @@ -0,0 +1,65 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +[workspace] +members = [ + "fms-consumer", + "fms-forwarder", + "fms-server", + "influx-client", +] + +[workspace.package] +license = "Apache-2.0" +readme = "../README.md" +repository = "https://github.com/eclipse-sdv-blueprints/fleet-management" +version = "0.1.0-SNAPSHOT" +edition = "2021" +documentation = "https://eclipse-sdv-blueprints.github.io/blueprints-website/" + +[workspace.dependencies] +async-trait = { version = "0.1" } +chrono = { version = "0.4" } +clap = { version = "4.3", default-features = false } +duration-str = { version = "0.5" } +env_logger = { version = "0.10" } +fms-proto = { path = "fms-proto" } +influx-client = { path = "influx-client", default-features = false } +influxrs = { version = "2.0" } +log = { version = "0.4" } +openssl = { version = "0.10", default-features = false } +protobuf = { version = "3" } +protobuf-codegen = { version = "3" } +protoc-bin-vendored = { version = "3" } +# prost has no features +prost = { version = "0.11" } +# prost-types has no features +prost-types = { version = "0.11" } +# tokio does not enable features by default +tokio = { version = "1.29" } +tonic = { version = "0.9", default-features = false } +tonic-build = { version = "0.9", default-features = false } + +[profile.release] +lto = true # Link time optimization (dead code removal etc...) +opt-level = "s" +codegen-units = 1 +incremental = false +strip = true + diff --git a/components/DEPENDENCIES b/components/DEPENDENCIES new file mode 100644 index 0000000..e69de29 diff --git a/components/Dockerfile.fms-consumer b/components/Dockerfile.fms-consumer new file mode 100644 index 0000000..121d4b2 --- /dev/null +++ b/components/Dockerfile.fms-consumer @@ -0,0 +1,50 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +FROM ghcr.io/rust-cross/rust-musl-cross:x86_64-musl AS builder-amd64 +ENV BUILDTARGET="x86_64-unknown-linux-musl" + + +FROM ghcr.io/rust-cross/rust-musl-cross:aarch64-musl AS builder-arm64 +ENV BUILDTARGET="aarch64-unknown-linux-musl" + +FROM builder-$TARGETARCH as builder +ARG TARGETARCH +RUN apt-get update && apt-get install -y ca-certificates \ + && apt-get clean && rm -rf /var/lib/apt/lists/* + +# This will speed up fetching the crate.io index in the future, see +# https://blog.rust-lang.org/2022/06/22/sparse-registry-testing.html +ENV CARGO_UNSTABLE_SPARSE_REGISTRY=true + +RUN echo "Building for $TARGETARCH" +RUN mkdir components +COPY . components/ +WORKDIR /home/rust/src/components + +RUN cargo build --package fms-consumer --release --target $BUILDTARGET +RUN mv target/${BUILDTARGET}/release/fms-consumer /home/rust + +FROM scratch + +COPY --from=builder /home/rust/fms-consumer /app/fms-consumer +COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ +COPY LICENSES /app/ + +ENTRYPOINT [ "/app/fms-consumer" ] diff --git a/components/Dockerfile.fms-forwarder b/components/Dockerfile.fms-forwarder new file mode 100644 index 0000000..4c50020 --- /dev/null +++ b/components/Dockerfile.fms-forwarder @@ -0,0 +1,52 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +FROM ghcr.io/rust-cross/rust-musl-cross:x86_64-musl AS builder-amd64 +ENV BUILDTARGET="x86_64-unknown-linux-musl" + + +FROM ghcr.io/rust-cross/rust-musl-cross:aarch64-musl AS builder-arm64 +ENV BUILDTARGET="aarch64-unknown-linux-musl" + +FROM builder-$TARGETARCH as builder +ARG TARGETARCH +RUN apt-get update && apt-get install -y ca-certificates \ + && apt-get clean && rm -rf /var/lib/apt/lists/* +# This will speed up fetching the crate.io index in the future, see +# https://blog.rust-lang.org/2022/06/22/sparse-registry-testing.html +ENV CARGO_UNSTABLE_SPARSE_REGISTRY=true +# This is supposedly required for successfully building for arm64 using buildx with QEMU +# see https://github.com/rust-lang/cargo/issues/10583 +ENV CARGO_NET_GIT_FETCH_WITH_CLI=true + +RUN echo "Building for $TARGETARCH" +RUN mkdir components +COPY . components/ +WORKDIR /home/rust/src/components + +RUN cargo build --package fms-forwarder --release --target $BUILDTARGET +RUN mv target/${BUILDTARGET}/release/fms-forwarder /home/rust + +FROM scratch + +COPY --from=builder /home/rust/fms-forwarder /app/fms-forwarder +COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ +COPY LICENSES /app/ + +ENTRYPOINT [ "/app/fms-forwarder" ] diff --git a/components/Dockerfile.fms-server b/components/Dockerfile.fms-server new file mode 100644 index 0000000..28782ab --- /dev/null +++ b/components/Dockerfile.fms-server @@ -0,0 +1,48 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +FROM ghcr.io/rust-cross/rust-musl-cross:x86_64-musl AS builder-amd64 +ENV BUILDTARGET="x86_64-unknown-linux-musl" + + +FROM ghcr.io/rust-cross/rust-musl-cross:aarch64-musl AS builder-arm64 +ENV BUILDTARGET="aarch64-unknown-linux-musl" + +FROM builder-$TARGETARCH as builder +ARG TARGETARCH + +# This will speed up fetching the crate.io index in the future, see +# https://blog.rust-lang.org/2022/06/22/sparse-registry-testing.html +ENV CARGO_UNSTABLE_SPARSE_REGISTRY=true + +RUN echo "Building for $TARGETARCH" +RUN mkdir components +COPY . components/ +WORKDIR /home/rust/src/components + +RUN cargo build --package fms-server --release --target $BUILDTARGET +RUN mv target/${BUILDTARGET}/release/fms-server /home/rust + +FROM scratch + +COPY --from=builder /home/rust/fms-server /app/fms-server +COPY LICENSES /app/ + +EXPOSE 8081 +ENTRYPOINT [ "/app/fms-server" ] diff --git a/components/LICENSES/Apache-2.0.txt b/components/LICENSES/Apache-2.0.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/components/LICENSES/Apache-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/components/LICENSES/Unicode-DFS-2016.txt b/components/LICENSES/Unicode-DFS-2016.txt new file mode 100644 index 0000000..85d0d58 --- /dev/null +++ b/components/LICENSES/Unicode-DFS-2016.txt @@ -0,0 +1,46 @@ +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + +See Terms of Use +for definitions of Unicode Inc.’s Data Files and Software. + +NOTICE TO USER: Carefully read the following legal agreement. +BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S +DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), +YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE +TERMS AND CONDITIONS OF THIS AGREEMENT. +IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE +THE DATA FILES OR SOFTWARE. + +COPYRIGHT AND PERMISSION NOTICE + +Copyright © 1991-2022 Unicode, Inc. All rights reserved. +Distributed under the Terms of Use in https://www.unicode.org/copyright.html. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Unicode data files and any associated documentation +(the "Data Files") or Unicode software and any associated documentation +(the "Software") to deal in the Data Files or Software +without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, and/or sell copies of +the Data Files or Software, and to permit persons to whom the Data Files +or Software are furnished to do so, provided that either +(a) this copyright and permission notice appear with all copies +of the Data Files or Software, or +(b) this copyright and permission notice appear in associated +Documentation. + +THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS +NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THE DATA FILES OR SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, +use or other dealings in these Data Files or Software without prior +written authorization of the copyright holder. diff --git a/components/LICENSES/async-stream-0.3.5.txt b/components/LICENSES/async-stream-0.3.5.txt new file mode 100644 index 0000000..8cbd7d6 --- /dev/null +++ b/components/LICENSES/async-stream-0.3.5.txt @@ -0,0 +1,51 @@ +Copyright (c) 2019 Carl Lerche + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +Copyright (c) 2018 David Tolnay + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/components/LICENSES/axum-0.6.19.txt b/components/LICENSES/axum-0.6.19.txt new file mode 100644 index 0000000..11598b4 --- /dev/null +++ b/components/LICENSES/axum-0.6.19.txt @@ -0,0 +1,25 @@ +Copyright (c) 2019 Axum Contributors + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/components/LICENSES/bytes-1.4.0.txt b/components/LICENSES/bytes-1.4.0.txt new file mode 100644 index 0000000..58fb29a --- /dev/null +++ b/components/LICENSES/bytes-1.4.0.txt @@ -0,0 +1,25 @@ +Copyright (c) 2018 Carl Lerche + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/components/LICENSES/castaway-0.1.2.txt b/components/LICENSES/castaway-0.1.2.txt new file mode 100644 index 0000000..efda8e4 --- /dev/null +++ b/components/LICENSES/castaway-0.1.2.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Stephen M. Coakley + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/components/LICENSES/const-format-0.2.31.txt b/components/LICENSES/const-format-0.2.31.txt new file mode 100644 index 0000000..0712d0f --- /dev/null +++ b/components/LICENSES/const-format-0.2.31.txt @@ -0,0 +1,17 @@ +Copyright (c) 2020 Matias Rodriguez. + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. \ No newline at end of file diff --git a/components/LICENSES/curl-0.4.44.txt b/components/LICENSES/curl-0.4.44.txt new file mode 100644 index 0000000..5f5e4b0 --- /dev/null +++ b/components/LICENSES/curl-0.4.44.txt @@ -0,0 +1,19 @@ +Copyright (c) 2014 Carl Lerche + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/components/LICENSES/curl-sys-0.4.65.txt b/components/LICENSES/curl-sys-0.4.65.txt new file mode 100644 index 0000000..5f5e4b0 --- /dev/null +++ b/components/LICENSES/curl-sys-0.4.65.txt @@ -0,0 +1,19 @@ +Copyright (c) 2014 Carl Lerche + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/components/LICENSES/encoding_rs-0.8.32.txt b/components/LICENSES/encoding_rs-0.8.32.txt new file mode 100644 index 0000000..f690e71 --- /dev/null +++ b/components/LICENSES/encoding_rs-0.8.32.txt @@ -0,0 +1,26 @@ +Copyright © WHATWG (Apple, Google, Mozilla, Microsoft). + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/components/LICENSES/h2-0.3.20.txt b/components/LICENSES/h2-0.3.20.txt new file mode 100644 index 0000000..11239dd --- /dev/null +++ b/components/LICENSES/h2-0.3.20.txt @@ -0,0 +1,25 @@ +Copyright (c) 2017 h2 authors + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/components/LICENSES/http-body-0.4.5.txt b/components/LICENSES/http-body-0.4.5.txt new file mode 100644 index 0000000..27b08f2 --- /dev/null +++ b/components/LICENSES/http-body-0.4.5.txt @@ -0,0 +1,25 @@ +Copyright (c) 2019 Hyper Contributors + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/components/LICENSES/hyper-0.14.27.txt b/components/LICENSES/hyper-0.14.27.txt new file mode 100644 index 0000000..bc1e966 --- /dev/null +++ b/components/LICENSES/hyper-0.14.27.txt @@ -0,0 +1,19 @@ +Copyright (c) 2014-2021 Sean McArthur + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/components/LICENSES/is-terminal-0.4.9.txt b/components/LICENSES/is-terminal-0.4.9.txt new file mode 100644 index 0000000..b2319d8 --- /dev/null +++ b/components/LICENSES/is-terminal-0.4.9.txt @@ -0,0 +1,23 @@ +Portions of this project are derived from atty, which bears the following +copyright notice and permission notice: + +Copyright (c) 2015-2019 Doug Tangren + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/components/LICENSES/matchit-0.7.0.txt b/components/LICENSES/matchit-0.7.0.txt new file mode 100644 index 0000000..a2978d5 --- /dev/null +++ b/components/LICENSES/matchit-0.7.0.txt @@ -0,0 +1,53 @@ +MIT License + +Copyright (c) 2022 Ibraheem Ahmed + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +------------------ + +BSD 3-Clause License + +Copyright (c) 2013, Julien Schmidt +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/components/LICENSES/mio-0.8.8.txt b/components/LICENSES/mio-0.8.8.txt new file mode 100644 index 0000000..3516413 --- /dev/null +++ b/components/LICENSES/mio-0.8.8.txt @@ -0,0 +1,19 @@ +Copyright (c) 2014 Carl Lerche and other MIO contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/components/LICENSES/nom-7.1.3.txt b/components/LICENSES/nom-7.1.3.txt new file mode 100644 index 0000000..88557e4 --- /dev/null +++ b/components/LICENSES/nom-7.1.3.txt @@ -0,0 +1,20 @@ +Copyright (c) 2014-2019 Geoffroy Couprie + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/components/LICENSES/openssl-sys-0.9.90.txt b/components/LICENSES/openssl-sys-0.9.90.txt new file mode 100644 index 0000000..39e0ed6 --- /dev/null +++ b/components/LICENSES/openssl-sys-0.9.90.txt @@ -0,0 +1,25 @@ +Copyright (c) 2014 Alex Crichton + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/components/LICENSES/protobuf-3.2.0.txt b/components/LICENSES/protobuf-3.2.0.txt new file mode 100644 index 0000000..acce639 --- /dev/null +++ b/components/LICENSES/protobuf-3.2.0.txt @@ -0,0 +1,19 @@ +Copyright (c) 2019 Stepan Koltsov + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/components/LICENSES/rdkafka-0.33.2.txt b/components/LICENSES/rdkafka-0.33.2.txt new file mode 100644 index 0000000..eb7158a --- /dev/null +++ b/components/LICENSES/rdkafka-0.33.2.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Federico Giraud + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/components/LICENSES/ring.txt b/components/LICENSES/ring.txt new file mode 100644 index 0000000..bf78743 --- /dev/null +++ b/components/LICENSES/ring.txt @@ -0,0 +1,204 @@ +Note that it is easy for this file to get out of sync with the licenses in the +source code files. It's recommended to compare the licenses in the source code +with what's mentioned here. + +*ring* is derived from BoringSSL, so the licensing situation in *ring* is +similar to BoringSSL. + +*ring* uses an ISC-style license like BoringSSL for code in new files, +including in particular all the Rust code: + + Copyright 2015-2016 Brian Smith. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY + SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +BoringSSL is a fork of OpenSSL. As such, large parts of it fall under OpenSSL +licensing. Files that are completely new have a Google copyright and an ISC +license. This license is reproduced at the bottom of this file. + +Contributors to BoringSSL are required to follow the CLA rules for Chromium: +https://cla.developers.google.com/clas + +Files in third_party/ have their own licenses, as described therein. The MIT +license, for third_party/fiat, which, unlike other third_party directories, is +compiled into non-test libraries, is included below. + +The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the +OpenSSL License and the original SSLeay license apply to the toolkit. See below +for the actual license texts. Actually both licenses are BSD-style Open Source +licenses. In case of any license issues related to OpenSSL please contact +openssl-core@openssl.org. + +The following are Google-internal bug numbers where explicit permission from +some authors is recorded for use of their work: + 27287199 + 27287880 + 27287883 + + OpenSSL License + --------------- + +/* ==================================================================== + * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + + Original SSLeay License + ----------------------- + +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + + +ISC license used for completely new code in BoringSSL: + +/* Copyright (c) 2015, Google Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ + + +The code in third_party/fiat carries the MIT license: + +Copyright (c) 2015-2016 the fiat-crypto authors (see +https://github.com/mit-plv/fiat-crypto/blob/master/AUTHORS). + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/components/LICENSES/rust_decimal-1.30.0.txt b/components/LICENSES/rust_decimal-1.30.0.txt new file mode 100644 index 0000000..68364ef --- /dev/null +++ b/components/LICENSES/rust_decimal-1.30.0.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Paul Mason + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/components/LICENSES/rustls-webpki-0.101.2.txt b/components/LICENSES/rustls-webpki-0.101.2.txt new file mode 100644 index 0000000..cd87be1 --- /dev/null +++ b/components/LICENSES/rustls-webpki-0.101.2.txt @@ -0,0 +1,19 @@ +Except as otherwise noted, this project is licensed under the following +(ISC-style) terms: + +Copyright 2015 Brian Smith. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +The files under third-party/chromium are licensed as described in +third-party/chromium/LICENSE. diff --git a/components/LICENSES/slab-0.4.8.txt b/components/LICENSES/slab-0.4.8.txt new file mode 100644 index 0000000..819ce21 --- /dev/null +++ b/components/LICENSES/slab-0.4.8.txt @@ -0,0 +1,25 @@ +Copyright (c) 2019 Carl Lerche + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/components/LICENSES/sluice-0.5.5.txt b/components/LICENSES/sluice-0.5.5.txt new file mode 100644 index 0000000..6552d1f --- /dev/null +++ b/components/LICENSES/sluice-0.5.5.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Stephen M. Coakley + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/components/LICENSES/spin.txt b/components/LICENSES/spin.txt new file mode 100644 index 0000000..b2d7f7b --- /dev/null +++ b/components/LICENSES/spin.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Mathijs van de Nes + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/components/LICENSES/strsim-0.10.0.txt b/components/LICENSES/strsim-0.10.0.txt new file mode 100644 index 0000000..8d1fbe1 --- /dev/null +++ b/components/LICENSES/strsim-0.10.0.txt @@ -0,0 +1,23 @@ +The MIT License (MIT) + +Copyright (c) 2015 Danny Guo +Copyright (c) 2016 Titus Wormer +Copyright (c) 2018 Akash Kurdekar + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/components/LICENSES/tokio-1.29.1.txt b/components/LICENSES/tokio-1.29.1.txt new file mode 100644 index 0000000..8bdf6bd --- /dev/null +++ b/components/LICENSES/tokio-1.29.1.txt @@ -0,0 +1,25 @@ +Copyright (c) 2023 Tokio Contributors + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/components/LICENSES/tokio-macros-2.1.0.txt b/components/LICENSES/tokio-macros-2.1.0.txt new file mode 100644 index 0000000..12d1037 --- /dev/null +++ b/components/LICENSES/tokio-macros-2.1.0.txt @@ -0,0 +1,47 @@ +Copyright (c) 2023 Tokio Contributors + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +The MIT License (MIT) + +Copyright (c) 2019 Yoshua Wuyts + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/components/LICENSES/tokio-stream-0.1.14.txt b/components/LICENSES/tokio-stream-0.1.14.txt new file mode 100644 index 0000000..8bdf6bd --- /dev/null +++ b/components/LICENSES/tokio-stream-0.1.14.txt @@ -0,0 +1,25 @@ +Copyright (c) 2023 Tokio Contributors + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/components/LICENSES/tokio-util-0.7.8.txt b/components/LICENSES/tokio-util-0.7.8.txt new file mode 100644 index 0000000..8bdf6bd --- /dev/null +++ b/components/LICENSES/tokio-util-0.7.8.txt @@ -0,0 +1,25 @@ +Copyright (c) 2023 Tokio Contributors + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/components/LICENSES/tonic-0.9.2.txt b/components/LICENSES/tonic-0.9.2.txt new file mode 100644 index 0000000..3077098 --- /dev/null +++ b/components/LICENSES/tonic-0.9.2.txt @@ -0,0 +1,19 @@ +Copyright (c) 2020 Lucio Franco + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/components/LICENSES/tower-0.4.13.txt b/components/LICENSES/tower-0.4.13.txt new file mode 100644 index 0000000..b980cac --- /dev/null +++ b/components/LICENSES/tower-0.4.13.txt @@ -0,0 +1,25 @@ +Copyright (c) 2019 Tower Contributors + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/components/LICENSES/tower-layer-0.3.2.txt b/components/LICENSES/tower-layer-0.3.2.txt new file mode 100644 index 0000000..b980cac --- /dev/null +++ b/components/LICENSES/tower-layer-0.3.2.txt @@ -0,0 +1,25 @@ +Copyright (c) 2019 Tower Contributors + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/components/LICENSES/tower-service-0.3.2.txt b/components/LICENSES/tower-service-0.3.2.txt new file mode 100644 index 0000000..b980cac --- /dev/null +++ b/components/LICENSES/tower-service-0.3.2.txt @@ -0,0 +1,25 @@ +Copyright (c) 2019 Tower Contributors + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/components/LICENSES/tracing-0.1.37.txt b/components/LICENSES/tracing-0.1.37.txt new file mode 100644 index 0000000..cdb28b4 --- /dev/null +++ b/components/LICENSES/tracing-0.1.37.txt @@ -0,0 +1,25 @@ +Copyright (c) 2019 Tokio Contributors + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/components/LICENSES/tracing-attributes-0.1.26.txt b/components/LICENSES/tracing-attributes-0.1.26.txt new file mode 100644 index 0000000..cdb28b4 --- /dev/null +++ b/components/LICENSES/tracing-attributes-0.1.26.txt @@ -0,0 +1,25 @@ +Copyright (c) 2019 Tokio Contributors + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/components/LICENSES/tracing-core-0.1.31.txt b/components/LICENSES/tracing-core-0.1.31.txt new file mode 100644 index 0000000..cdb28b4 --- /dev/null +++ b/components/LICENSES/tracing-core-0.1.31.txt @@ -0,0 +1,25 @@ +Copyright (c) 2019 Tokio Contributors + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/components/LICENSES/tracing-futures-0.2.5.txt b/components/LICENSES/tracing-futures-0.2.5.txt new file mode 100644 index 0000000..cdb28b4 --- /dev/null +++ b/components/LICENSES/tracing-futures-0.2.5.txt @@ -0,0 +1,25 @@ +Copyright (c) 2019 Tokio Contributors + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/components/LICENSES/try-lock-0.2.4.txt b/components/LICENSES/try-lock-0.2.4.txt new file mode 100644 index 0000000..5cddb26 --- /dev/null +++ b/components/LICENSES/try-lock-0.2.4.txt @@ -0,0 +1,21 @@ +Copyright (c) 2018 Sean McArthur +Copyright (c) 2016 Alex Crichton + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/components/LICENSES/untrusted-0.7.1.txt b/components/LICENSES/untrusted-0.7.1.txt new file mode 100644 index 0000000..7151db6 --- /dev/null +++ b/components/LICENSES/untrusted-0.7.1.txt @@ -0,0 +1,13 @@ +// Copyright 2015-2016 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/components/LICENSES/want-0.3.1.txt b/components/LICENSES/want-0.3.1.txt new file mode 100644 index 0000000..e0f0f8a --- /dev/null +++ b/components/LICENSES/want-0.3.1.txt @@ -0,0 +1,20 @@ +Copyright (c) 2018-2019 Sean McArthur + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/components/LICENSES/winnow-0.5.1.txt b/components/LICENSES/winnow-0.5.1.txt new file mode 100644 index 0000000..c9b44cb --- /dev/null +++ b/components/LICENSES/winnow-0.5.1.txt @@ -0,0 +1,18 @@ +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/components/fms-consumer/Cargo.toml b/components/fms-consumer/Cargo.toml new file mode 100644 index 0000000..70d6170 --- /dev/null +++ b/components/fms-consumer/Cargo.toml @@ -0,0 +1,44 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +[package] +name = "fms-consumer" +version.workspace = true +edition.workspace = true +license.workspace = true +repository.workspace = true +documentation.workspace = true +readme.workspace = true + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +clap = { workspace = true, features = ["std", "env", "color", "help", "usage", "error-context", "suggestions"] } +env_logger = { workspace = true } +fms-proto = { workspace = true } +futures = "0.3" +influx-client = { workspace = true, features = ["writer"] } +rdkafka = { version = "0.33", default-features = false, features = ["libz", "tokio", "cmake-build", "ssl-vendored"] } +log = { workspace = true } +protobuf = { workspace = true } +tokio = { workspace = true, features = ["macros", "rt-multi-thread", "time"] } + +[build-dependencies] +# see https://github.com/fede1024/rust-rdkafka/issues/572#issuecomment-1529316876 +openssl-src = { version = "111", features = ["force-engine"] } diff --git a/components/fms-consumer/src/main.rs b/components/fms-consumer/src/main.rs new file mode 100644 index 0000000..80e2acb --- /dev/null +++ b/components/fms-consumer/src/main.rs @@ -0,0 +1,283 @@ +// SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +use std::collections::HashMap; +use std::fs::File; +use std::io::{self, BufRead, BufReader}; +use std::process; +use std::sync::Arc; +use std::time::Duration; + +use clap::{Arg, ArgAction, ArgMatches, Command}; +use fms_proto::fms::VehicleStatus; +use futures::TryStreamExt; +use influx_client::writer::InfluxWriter; +use log::{debug, error, info, trace}; + +use rdkafka::config::RDKafkaLogLevel; +use rdkafka::consumer::stream_consumer::StreamConsumer; +use rdkafka::consumer::Consumer; +use rdkafka::message::{BorrowedHeaders, BorrowedMessage, Headers}; +use rdkafka::{ClientConfig, Message}; + +const CONTENT_TYPE_PROTOBUF: &str = "application/vnd.google.protobuf"; + +const HEADER_NAME_ORIG_ADDRESS: &str = "orig_address"; + +const PARAM_KAFKA_PROPERTIES_FILE: &str = "kafka-properties-file"; +const PARAM_KAFKA_TOPIC_NAME: &str = "kafka-topic"; + +fn add_property_bag_to_map(property_bag: String, headers: &mut HashMap) { + property_bag.split("&").for_each(|p| { + trace!("processing property: {p}"); + p.split_once('=') + .map(|(k,v)| { + if headers.contains_key(k) { + trace!("skipping property [{k}] from property bag because header with same name exists"); + } else { + trace!("adding propery [k: {k}, v: {v}] to header map"); + headers.insert(k.to_string(), v.to_string()); + } + }); + }); +} + +fn get_headers_as_map(headers: &BorrowedHeaders) -> HashMap { + let mut result = HashMap::new(); + headers.iter().for_each(|header| { + match ( + header.key, + header + .value + .and_then(|v| String::from_utf8(v.to_vec()).map_or(None, Option::Some)), + ) { + (HEADER_NAME_ORIG_ADDRESS, Some(value)) => { + value.rsplit_once("/?").map(|(_topic, props)| { + debug!("found property bag in {HEADER_NAME_ORIG_ADDRESS} header: {props}"); + add_property_bag_to_map(props.to_string(), &mut result); + }); + } + (_, Some(value)) => { + result.insert(header.key.to_string(), value); + } + (_, None) => { + debug!("message contains empty header [{}]", header.key); + } + }; + }); + + result +} + +fn read_lines(filename: &String) -> Result>, Box> { + // Open the file in read-only mode. + match File::open(filename) { + Ok(file) => { + // Read the file line by line, and return an iterator of the lines of the file. + Ok(io::BufReader::new(file).lines()) + } + Err(e) => Err(Box::new(e)), + } +} + +fn get_kafka_client_config(filename: &String) -> Result> { + read_lines(filename).map(|lines| { + let mut client_config = ClientConfig::new(); + for line in lines { + match line { + Ok(property) => match property.split_once("=") { + Some((key, value)) => { + client_config.set(key, value); + } + None => { + debug!("cannot parse line into property: {}", property); + } + }, + Err(e) => { + debug!("cannot read line from file: {e}"); + } + } + } + client_config + }) +} + +fn deserialize_vehicle_status(protobuf: &[u8]) -> Option { + use protobuf::Message; + + match VehicleStatus::parse_from_bytes(protobuf) { + Ok(vehicle_status) => { + trace!("successfully deserialized VehicleStatus from protobuf"); + Some(vehicle_status) + } + Err(e) => { + debug!("failed to deserialize VehicleStatus from protobuf: {}", e); + None + } + } +} + +async fn process_protobuf_message( + message_properties: HashMap, + payload: &[u8], + influx_writer: Arc, +) { + match message_properties.get("device_id") { + Some(device_id) => { + debug!("received message from vehicle {}", device_id); + match deserialize_vehicle_status(payload) { + Some(vehicle_status) => influx_writer.write_vehicle_status(&vehicle_status).await, + None => {} + } + } + None => debug!("discarding message from unknown device"), + } +} + +async fn process_message(m: &BorrowedMessage<'_>, influx_writer: Arc) { + if let Some(headers) = m.headers() { + let message_properties = get_headers_as_map(headers); + match ( + message_properties.get("content-type").map(String::as_str), + m.payload(), + ) { + (Some(CONTENT_TYPE_PROTOBUF), Some(payload)) => { + debug!("received protobuf message"); + process_protobuf_message(message_properties, payload, influx_writer).await + } + (_, None) => debug!("ignoring message without payload"), + _ => {} + } + } else { + debug!("ignoring message without headers"); + } +} + +async fn run_async_processor(args: &ArgMatches) { + let influx_writer = InfluxWriter::new(&args).map_or_else( + |e| { + error!("failed to create InfluxDB writer: {e}"); + process::exit(1); + }, + Arc::new, + ); + + let mut client_config = + get_kafka_client_config(args.get_one::(PARAM_KAFKA_PROPERTIES_FILE).unwrap()) + .unwrap_or_else(|e| { + error!("failed to create Kafka client: {e}"); + process::exit(1); + }); + + // Create the `StreamConsumer`, to receive the messages from the topic in form of a `Stream`. + let consumer: StreamConsumer = client_config + .set_log_level(RDKafkaLogLevel::Debug) + .create() + .unwrap_or_else(|e| { + error!("failed to create Kafka client: {e}"); + process::exit(1); + }); + + let topic_name = args.get_one::(PARAM_KAFKA_TOPIC_NAME).unwrap(); + + match consumer.fetch_metadata(Some(topic_name), Duration::from_secs(10)) { + Err(e) => { + error!("could not retrieve meta data for topic [{topic_name}] from broker: {e}"); + process::exit(1); + } + Ok(metadata) => match metadata + .topics() + .into_iter() + .find(|topic| topic.name() == topic_name) + { + Some(topic) => { + if topic.partitions().len() == 0 { + error!("topic [{topic_name}] does not exist (yet)"); + process::exit(1); + } + } + None => { + error!("broker did not return meta data for topic [{topic_name}]"); + process::exit(1); + } + }, + } + + match consumer.subscribe(&[topic_name.as_str()]) { + Err(e) => { + error!("failed to subscribe to topic: {e}"); + process::exit(1); + } + Ok(_) => { + info!("successfully subscribed to topic {topic_name}"); + info!("starting message consumer"); + consumer + .stream() + .try_for_each(|borrowed_message| { + let cloned_writer = influx_writer.clone(); + async move { + process_message(&borrowed_message, cloned_writer).await; + Ok(()) + } + }) + .await + .unwrap_or_else(|e| { + error!("could not start consumer for topic [{topic_name}]: {e}"); + process::exit(1); + }); + } + } +} + +#[tokio::main] +pub async fn main() { + env_logger::init(); + + let version = option_env!("VERGEN_GIT_SEMVER_LIGHTWEIGHT") + .unwrap_or(option_env!("VERGEN_GIT_SHA").unwrap_or("unknown")); + + let mut parser = Command::new("FMS data consumer") + .version(version) + .about("Receives FMS related VSS data points via Hono's Kafka based Telemetry API and writes them to an InfluxDB server") + .arg( + Arg::new(PARAM_KAFKA_PROPERTIES_FILE) + .value_parser(clap::builder::NonEmptyStringValueParser::new()) + .long(PARAM_KAFKA_PROPERTIES_FILE) + .help("The path to a file containing Kafka client properties for connecting to the Kafka broker(s).") + .action(ArgAction::Set) + .value_name("PATH") + .env("KAFKA_PROPERTIES_FILE") + .required(true), + ) + .arg( + Arg::new(PARAM_KAFKA_TOPIC_NAME) + .value_parser(clap::builder::NonEmptyStringValueParser::new()) + .long(PARAM_KAFKA_TOPIC_NAME) + .alias("topic") + .help("The name of the Kafka topic to consume VSS data from.") + .value_name("TOPIC") + .required(true) + .env("KAFKA_TOPIC_NAME"), + ); + + parser = influx_client::connection::add_command_line_args(parser); + let args = parser.get_matches(); + info!("starting FMS data consumer"); + run_async_processor(&args).await +} diff --git a/components/fms-forwarder/Cargo.toml b/components/fms-forwarder/Cargo.toml new file mode 100644 index 0000000..00579b2 --- /dev/null +++ b/components/fms-forwarder/Cargo.toml @@ -0,0 +1,49 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +[package] +name = "fms-forwarder" +version.workspace = true +edition.workspace = true +license.workspace = true +repository.workspace = true +documentation.workspace = true +readme.workspace = true + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +async-trait = { workspace = true } +chrono = { workspace = true } +clap = { workspace = true, features = ["std", "env", "color", "help", "usage", "error-context", "suggestions"] } +duration-str = { workspace = true } +env_logger = { workspace = true } +fms-proto = { workspace = true } +influx-client = { workspace = true, features = ["writer"] } +log = { workspace = true } +paho-mqtt = { version = "0.12", default-features = false, features = [ "vendored-ssl" ] } +protobuf = { workspace = true } +prost = { workspace = true } +prost-types = { workspace = true } +tokio = { workspace = true, features = ["macros", "rt-multi-thread", "time"] } +tonic = { workspace = true, features = ["channel", "codegen", "tls", "prost"] } + +[build-dependencies] +protoc-bin-vendored = { workspace = true } +tonic-build = { workspace = true, features = ["prost", "transport"]} diff --git a/components/fms-forwarder/README.md b/components/fms-forwarder/README.md new file mode 100644 index 0000000..04df059 --- /dev/null +++ b/components/fms-forwarder/README.md @@ -0,0 +1,64 @@ + +The FMS Forwarder polls FMS related data from a [kuksa.val Databroker](https://github.com/eclipse/kuksa.val/tree/master/kuksa_databroker) +and HTTP POSTs the data as a set of *measurements* to an InfluxDB server. + +The implementation uses the proto definition for [kuksa.val.v1](https://github.com/eclipse/kuksa.val/tree/master/proto/kuksa/val/v1) +which has been copied to [/proto/kuksa/val/v1](/proto/kuksa/val/v1/). + +# Building + +Building the forwarder requires a [Rust development toolchain](https://rustup.rs/). + +# Running + +THe forwarder reads the current vehicle status data from a kuksa.val Databroker and forwards it to one of multiple supported +back ends. The type of back end can be selected by means of command line arguments when starting the forwarder. + +Please refer to the command line help for details: + +```sh +fms-forwarder --help +``` + +## Writing directly to an InfluxDB Server + +The forwarder can write status information directly to an InfluxDB server using its HTTP based API. +For this to work, the forwarder needs to be configured with the URI of the InfluxDB server and an API token for +authenticating to the server. + +Please refer to the command line help for details: + +```sh +fms-forwarder influx --help +``` + +## Publishing to Eclipse Hono + +The forwarder can publish status information to the MQTT adapter of an [Eclipse Hono](https://eclipse.org/hono) instance. +For this to work, the forwarder needs to be configured with the URI of the MQTT adapter endpoint, the credentials to use for +authentication and the name of the tenant that the device belongs to. + +Please refer to the command line help for details: + +```sh +fms-forwarder hono --help +``` diff --git a/components/fms-forwarder/build.rs b/components/fms-forwarder/build.rs new file mode 100644 index 0000000..09222d3 --- /dev/null +++ b/components/fms-forwarder/build.rs @@ -0,0 +1,35 @@ +// SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +fn main() -> Result<(), Box> { + + // use vendored protoc instead of relying on user provided protobuf installation + std::env::set_var("PROTOC", protoc_bin_vendored::protoc_bin_path().unwrap()); + + tonic_build::configure() + .compile_well_known_types(false) + .build_server(false) + .compile( + &["proto/kuksa/val/v1/val.proto"], + &[ + "proto", + "proto/kuksa/val/v1", + ])?; + Ok(()) +} diff --git a/components/fms-forwarder/proto/kuksa/val/v1/types.proto b/components/fms-forwarder/proto/kuksa/val/v1/types.proto new file mode 100644 index 0000000..21ddc33 --- /dev/null +++ b/components/fms-forwarder/proto/kuksa/val/v1/types.proto @@ -0,0 +1,284 @@ +// Copyright Robert Bosch GmbH, 2022. Part of the Eclipse Kuksa Project. +// +// All rights reserved. This configuration file is provided to you under the +// terms and conditions of the Eclipse Distribution License v1.0 which +// accompanies this distribution, and is available at +// http://www.eclipse.org/org/documents/edl-v10.php + +syntax = "proto3"; + +// I added V1 as in databroker. Is this good practice? +package kuksa.val.v1; +import "google/protobuf/timestamp.proto"; + +// Should probably be changed to something like: +// option go_package = "github.com/eclipse/kuksa.val/proto/v1"; +option go_package = "/kuksa_grpc_proto"; + +// Describes a VSS entry +// When requesting an entry, the amount of information returned can +// be controlled by specifying either a `View` or a set of `Field`s. +message DataEntry { + // Defines the full VSS path of the entry. + string path = 1; // [field: FIELD_PATH] + + // The value (datapoint) + Datapoint value = 2; // [field: FIELD_VALUE] + + // Actuator target (only used if the entry is an actuator) + Datapoint actuator_target = 3; // [field: FIELD_ACTUATOR_TARGET] + + // Metadata for this entry + Metadata metadata = 10; // [field: FIELD_METADATA] +} + +message Datapoint { + google.protobuf.Timestamp timestamp = 1; + + oneof value { + string string = 11; + bool bool = 12; + sint32 int32 = 13; + sint64 int64 = 14; + uint32 uint32 = 15; + uint64 uint64 = 16; + float float = 17; + double double = 18; + StringArray string_array = 21; + BoolArray bool_array = 22; + Int32Array int32_array = 23; + Int64Array int64_array = 24; + Uint32Array uint32_array = 25; + Uint64Array uint64_array = 26; + FloatArray float_array = 27; + DoubleArray double_array = 28; + } +} + +message Metadata { + // Data type + // The VSS data type of the entry (i.e. the value, min, max etc). + // + // NOTE: protobuf doesn't have int8, int16, uint8 or uint16 which means + // that these values must be serialized as int32 and uint32 respectively. + DataType data_type = 11; // [field: FIELD_METADATA_DATA_TYPE] + + // Entry type + EntryType entry_type = 12; // [field: FIELD_METADATA_ENTRY_TYPE] + + // Description + // Describes the meaning and content of the entry. + optional string description = 13; // [field: FIELD_METADATA_DESCRIPTION] + + // Comment [optional] + // A comment can be used to provide additional informal information + // on a entry. + optional string comment = 14; // [field: FIELD_METADATA_COMMENT] + + // Deprecation [optional] + // Whether this entry is deprecated. Can contain recommendations of what + // to use instead. + optional string deprecation = 15; // [field: FIELD_METADATA_DEPRECATION] + + // Unit [optional] + // The unit of measurement + optional string unit = 16; // [field: FIELD_METADATA_UNIT] + + // Value restrictions [optional] + // Restrict which values are allowed. + // Only restrictions matching the DataType {datatype} above are valid. + ValueRestriction value_restriction = 17; // [field: FIELD_METADATA_VALUE_RESTRICTION] + + // Entry type specific metadata + oneof entry_specific { + Actuator actuator = 20; // [field: FIELD_METADATA_ACTUATOR] + Sensor sensor = 30; // [field: FIELD_METADATA_SENSOR] + Attribute attribute = 40; // [field: FIELD_METADATA_ATTRIBUTE] + } +} + +/////////////////////// +// Actuator specific fields +message Actuator { + // Nothing for now +} + +//////////////////////// +// Sensor specific +message Sensor { + // Nothing for now +} + +//////////////////////// +// Attribute specific +message Attribute { + // Nothing for now. +} + +// Value restriction +// +// One ValueRestriction{type} for each type, since +// they don't make sense unless the types match +// +message ValueRestriction { + oneof type { + ValueRestrictionString string = 21; + // For signed VSS integers + ValueRestrictionInt signed = 22; + // For unsigned VSS integers + ValueRestrictionUint unsigned = 23; + // For floating point VSS values (float and double) + ValueRestrictionFloat floating_point = 24; + } +} + +message ValueRestrictionInt { + optional sint64 min = 1; + optional sint64 max = 2; + repeated sint64 allowed_values = 3; +} + +message ValueRestrictionUint { + optional uint64 min = 1; + optional uint64 max = 2; + repeated uint64 allowed_values = 3; +} + +message ValueRestrictionFloat { + optional double min = 1; + optional double max = 2; + + // allowed for doubles/floats not recommended + repeated double allowed_values = 3; +} + +// min, max doesn't make much sense for a string +message ValueRestrictionString { + repeated string allowed_values = 3; +} + +// VSS Data type of a signal +// +// Protobuf doesn't support int8, int16, uint8 or uint16. +// These are mapped to int32 and uint32 respectively. +// +enum DataType { + DATA_TYPE_UNSPECIFIED = 0; + DATA_TYPE_STRING = 1; + DATA_TYPE_BOOLEAN = 2; + DATA_TYPE_INT8 = 3; + DATA_TYPE_INT16 = 4; + DATA_TYPE_INT32 = 5; + DATA_TYPE_INT64 = 6; + DATA_TYPE_UINT8 = 7; + DATA_TYPE_UINT16 = 8; + DATA_TYPE_UINT32 = 9; + DATA_TYPE_UINT64 = 10; + DATA_TYPE_FLOAT = 11; + DATA_TYPE_DOUBLE = 12; + DATA_TYPE_TIMESTAMP = 13; + DATA_TYPE_STRING_ARRAY = 20; + DATA_TYPE_BOOLEAN_ARRAY = 21; + DATA_TYPE_INT8_ARRAY = 22; + DATA_TYPE_INT16_ARRAY = 23; + DATA_TYPE_INT32_ARRAY = 24; + DATA_TYPE_INT64_ARRAY = 25; + DATA_TYPE_UINT8_ARRAY = 26; + DATA_TYPE_UINT16_ARRAY = 27; + DATA_TYPE_UINT32_ARRAY = 28; + DATA_TYPE_UINT64_ARRAY = 29; + DATA_TYPE_FLOAT_ARRAY = 30; + DATA_TYPE_DOUBLE_ARRAY = 31; + DATA_TYPE_TIMESTAMP_ARRAY = 32; +} + +// Entry type +enum EntryType { + ENTRY_TYPE_UNSPECIFIED = 0; + ENTRY_TYPE_ATTRIBUTE = 1; + ENTRY_TYPE_SENSOR = 2; + ENTRY_TYPE_ACTUATOR = 3; +} + +// A `View` specifies a set of fields which should +// be populated in a `DataEntry` (in a response message) +enum View { + VIEW_UNSPECIFIED = 0; // Unspecified. Equivalent to VIEW_CURRENT_VALUE unless `fields` are explicitly set. + VIEW_CURRENT_VALUE = 1; // Populate DataEntry with value. + VIEW_TARGET_VALUE = 2; // Populate DataEntry with actuator target. + VIEW_METADATA = 3; // Populate DataEntry with metadata. + VIEW_FIELDS = 10; // Populate DataEntry only with requested fields. + VIEW_ALL = 20; // Populate DataEntry with everything. +} + +// A `Field` corresponds to a specific field of a `DataEntry`. +// +// It can be used to: +// * populate only specific fields of a `DataEntry` response. +// * specify which fields of a `DataEntry` should be set as +// part of a `Set` request. +// * subscribe to only specific fields of a data entry. +// * convey which fields of an updated `DataEntry` have changed. +enum Field { + FIELD_UNSPECIFIED = 0; // "*" i.e. everything + FIELD_PATH = 1; // path + FIELD_VALUE = 2; // value + FIELD_ACTUATOR_TARGET = 3; // actuator_target + FIELD_METADATA = 10; // metadata.* + FIELD_METADATA_DATA_TYPE = 11; // metadata.data_type + FIELD_METADATA_DESCRIPTION = 12; // metadata.description + FIELD_METADATA_ENTRY_TYPE = 13; // metadata.entry_type + FIELD_METADATA_COMMENT = 14; // metadata.comment + FIELD_METADATA_DEPRECATION = 15; // metadata.deprecation + FIELD_METADATA_UNIT = 16; // metadata.unit + FIELD_METADATA_VALUE_RESTRICTION = 17; // metadata.value_restriction.* + FIELD_METADATA_ACTUATOR = 20; // metadata.actuator.* + FIELD_METADATA_SENSOR = 30; // metadata.sensor.* + FIELD_METADATA_ATTRIBUTE = 40; // metadata.attribute.* +} + +// Error response shall be an HTTP-like code. +// Should follow https://www.w3.org/TR/viss2-transport/#status-codes. +message Error { + uint32 code = 1; + string reason = 2; + string message = 3; +} + +// Used in get/set requests to report errors for specific entries +message DataEntryError { + string path = 1; // vss path + Error error = 2; +} + +message StringArray { + repeated string values = 1; +} + +message BoolArray { + repeated bool values = 1; +} + +message Int32Array { + repeated sint32 values = 1; +} + +message Int64Array { + repeated sint64 values = 1; +} + +message Uint32Array { + repeated uint32 values = 1; +} + +message Uint64Array { + repeated uint64 values = 1; +} + +message FloatArray { + repeated float values = 1; +} + +message DoubleArray { + repeated double values = 1; +} diff --git a/components/fms-forwarder/proto/kuksa/val/v1/val.proto b/components/fms-forwarder/proto/kuksa/val/v1/val.proto new file mode 100644 index 0000000..948cd71 --- /dev/null +++ b/components/fms-forwarder/proto/kuksa/val/v1/val.proto @@ -0,0 +1,114 @@ +// Copyright Robert Bosch GmbH, 2022. Part of the Eclipse Kuksa Project. +// +// All rights reserved. This configuration file is provided to you under the +// terms and conditions of the Eclipse Distribution License v1.0 which +// accompanies this distribution, and is available at +// http://www.eclipse.org/org/documents/edl-v10.php + +// This is a base proto file for databroker and kuksa-val-basic +// function set + +syntax = "proto3"; + +package kuksa.val.v1; + +import "types.proto"; + +// Should probably be changed to something like: +// option go_package = "github.com/eclipse/kuksa.val/proto/v1"; +option go_package = "/kuksa_grpc_proto"; + +// Note on authorization: +// Tokens (auth-token or auth-uuid) are sent as (GRPC / http2) metadata. +// +// The auth-token is a JWT compliant token as the examples found here: +// https://github.com/eclipse/kuksa.val/tree/master/kuksa_certificates/jwt +// +// See also https://github.com/eclipse/kuksa.val/blob/master/doc/jwt.md +// +// Upon reception of auth-token, server shall generate an auth-uuid in metadata +// that the client can use instead of auth-token in subsequent calls. + +service VAL { + // Get entries + rpc Get(GetRequest) returns (GetResponse); + + // Set entries + rpc Set(SetRequest) returns (SetResponse); + + // Subscribe to a set of entries + // + // Returns a stream of notifications. + // + // InvalidArgument is returned if the request is malformed. + rpc Subscribe(SubscribeRequest) returns (stream SubscribeResponse); + + // Shall return information that allows the client to determine + // what server/server implementation/version it is talking to + // eg. kuksa-databroker 0.5.1 + rpc GetServerInfo(GetServerInfoRequest) returns (GetServerInfoResponse); +} + +// Define which data we want +message EntryRequest { + string path = 1; + View view = 2; + repeated Field fields = 3; +} + +// Request a set of entries. +message GetRequest { + repeated EntryRequest entries = 1; +} + +// Global errors are specified in `error`. +// Errors for individual entries are specified in `errors`. +message GetResponse { + repeated DataEntry entries = 1; + repeated DataEntryError errors = 2; + Error error = 3; +} + +// Define the data we want to set +message EntryUpdate { + DataEntry entry = 1; + repeated Field fields = 2; +} + +// A list of entries to be updated +message SetRequest { + repeated EntryUpdate updates = 1; +} + +// Global errors are specified in `error`. +// Errors for individual entries are specified in `errors`. +message SetResponse { + Error error = 1; + repeated DataEntryError errors = 2; +} + +// Define what to subscribe to +message SubscribeEntry { + string path = 1; + View view = 2; + repeated Field fields = 3; +} + +// Subscribe to changes in datapoints. +message SubscribeRequest { + repeated SubscribeEntry entries = 1; +} + +// A subscription response +message SubscribeResponse { + repeated EntryUpdate updates = 1; +} + +message GetServerInfoRequest { + // Nothing yet +} + +message GetServerInfoResponse { + string name = 1; + string version = 2; +} \ No newline at end of file diff --git a/components/fms-forwarder/src/hono_publisher.rs b/components/fms-forwarder/src/hono_publisher.rs new file mode 100644 index 0000000..2c9ad2e --- /dev/null +++ b/components/fms-forwarder/src/hono_publisher.rs @@ -0,0 +1,92 @@ +// SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +use async_trait::async_trait; +use clap::{ArgMatches, Command}; +use fms_proto::fms::VehicleStatus; +use log::{debug, warn}; +use mqtt::MessageBuilder; +use paho_mqtt as mqtt; +use protobuf::Message; + +use crate::{status_publishing::StatusPublisher, mqtt_connection::{self, MqttConnection}}; + +const TOPIC_TELEMETRY: &str = "telemetry/?content-type=application%2Fvnd.google.protobuf"; + +/// Adds arguments to an existing command line which can be +/// used to configure the connection to a Hono MQTT protocol adapter. +/// +/// See [`mqtt_connection::add_command_line_args`] +/// +pub fn add_command_line_args(command: Command) -> Command { + mqtt_connection::add_command_line_args(command) +} + +pub struct HonoPublisher { + mqtt_connection: MqttConnection, +} + +impl HonoPublisher { + + /// Creates a new publisher. + /// + /// Determines the parameters necessary for creating the publisher from values specified on + /// the command line or via environment variables as defined by [`add_command_line_args`]. + /// + /// The publisher returned is configured to keep trying to (re-)connect to the configured + /// MQTT endpoint using a client certificate of username/password credentials. + pub async fn new(args: &ArgMatches) -> Result> { + + MqttConnection::new(&args).await + .map(|con| { + HonoPublisher { mqtt_connection: con } + }) + } + } + +#[async_trait] +impl StatusPublisher for HonoPublisher { + async fn publish_vehicle_status(&self, vehicle_status: &VehicleStatus) { + match vehicle_status.write_to_bytes() { + Ok(payload) => { + let msg = MessageBuilder::new() + .topic(TOPIC_TELEMETRY) + .payload(payload) + .finalize(); + match self.mqtt_connection.mqtt_client.publish(msg).await { + Ok(_t) => debug!( + "successfully published vehicle status to MQTT endpoint [uri: {}, topic: {}]", + self.mqtt_connection.uri, TOPIC_TELEMETRY + ), + Err(e) => { + warn!( + "error publishing vehicle status to MQTT endpoint [uri: {}, topic: {}]: {}", + self.mqtt_connection.uri, TOPIC_TELEMETRY, e + ); + } + }; + return; + } + Err(e) => warn!( + "error serializing vehicle status to protobuf message: {}", + e + ), + } + } +} diff --git a/components/fms-forwarder/src/main.rs b/components/fms-forwarder/src/main.rs new file mode 100644 index 0000000..8185955 --- /dev/null +++ b/components/fms-forwarder/src/main.rs @@ -0,0 +1,103 @@ +// SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +use std::process; + +use clap::Command; +use fms_proto::fms::VehicleStatus; +use status_publishing::StatusPublisher; +use hono_publisher::HonoPublisher; +use influx_client::writer::InfluxWriter; +use log::{error, info}; +use tokio::sync::mpsc; + +mod status_publishing; +mod vehicle_abstraction; +mod hono_publisher; +mod mqtt_connection; + +const SUBCOMMAND_HONO: &str = "hono"; +const SUBCOMMAND_INFLUX: &str = "influx"; + +#[tokio::main] +async fn main() -> Result<(), Box> { + env_logger::init(); + let version = option_env!("VERGEN_GIT_SEMVER_LIGHTWEIGHT") + .unwrap_or(option_env!("VERGEN_GIT_SHA").unwrap_or("unknown")); + + let mut parser = Command::new("fms-forwarder") + .arg_required_else_help(true) + .version(version) + .about("Forwards FMS related VSS data points to a back end system"); + parser = vehicle_abstraction::add_command_line_args(parser); + parser = parser + .subcommand_required(true) + .subcommand(hono_publisher::add_command_line_args( + Command::new(SUBCOMMAND_HONO).about("Forwards VSS data to Hono's MQTT adapter"), + )) + .subcommand(influx_client::connection::add_command_line_args( + Command::new(SUBCOMMAND_INFLUX).about("Forwards VSS data to an Influx DB server"), + )); + + let args = parser.get_matches(); + + let publisher: Box = match args.subcommand_name() { + Some(SUBCOMMAND_HONO) => { + let hono_args = args.subcommand_matches(SUBCOMMAND_HONO).unwrap(); + match HonoPublisher::new(&hono_args).await { + Ok(writer) => Box::new(writer), + Err(e) => { + error!("failed to create Hono publisher: {}", e); + process::exit(1); + }, + } + }, + Some(SUBCOMMAND_INFLUX) => { + let influx_args = args.subcommand_matches(SUBCOMMAND_INFLUX).unwrap(); + match InfluxWriter::new(&influx_args) { + Ok(writer) => Box::new(writer), + Err(e) => { + error!("failed to create InfluxDB writer: {e}"); + process::exit(1); + } + } + }, + Some(_) => { + // cannot happen because subcommand is required + process::exit(1); + }, + None => { + // cannot happen because subcommand is required + process::exit(1); + }, + }; + + info!("starting FMS forwarder"); + + let (tx, mut rx) = mpsc::channel::(30); + vehicle_abstraction::init(&args, tx).await?; + + while let Some(vehicle_status) = rx.recv().await { + publisher + .as_ref() + .publish_vehicle_status(&vehicle_status) + .await; + } + Ok(()) +} diff --git a/components/fms-forwarder/src/mqtt_connection.rs b/components/fms-forwarder/src/mqtt_connection.rs new file mode 100644 index 0000000..2f2587f --- /dev/null +++ b/components/fms-forwarder/src/mqtt_connection.rs @@ -0,0 +1,264 @@ +// SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +use clap::{Arg, ArgMatches, Command}; +use log::{error, info, warn}; +use mqtt::{ + AsyncClient, ConnectOptionsBuilder, CreateOptionsBuilder, SslOptionsBuilder, +}; +use paho_mqtt as mqtt; +use std::{thread, time::Duration}; + + +const PARAM_CA_PATH: &str = "ca-path"; +const PARAM_DEVICE_CERT: &str = "device-cert"; +const PARAM_DEVICE_KEY: &str = "device-key"; +const PARAM_MQTT_CLIENT_ID: &str = "mqtt-client-id"; +const PARAM_MQTT_URI: &str = "mqtt-uri"; +const PARAM_MQTT_USERNAME: &str = "mqtt-username"; +const PARAM_MQTT_PASSWORD: &str = "mqtt-password"; +const PARAM_TRUST_STORE_PATH: &str = "trust-store-path"; + +/// Adds arguments to an existing command line which can be +/// used to configure the connection to an MQTT endpoint. +/// +/// The following arguments are being added: +/// +/// | long name | environment variable | default value | +/// |---------------------|----------------------|---------------| +/// | mqtt-client-id | MQTT_CLIENT_ID | random ID | +/// | mqtt-uri | MQTT_URI | - | +/// | mqtt-username | MQTT_USERNAME | - | +/// | mqtt-password | MQTT_PASSWORD | - | +/// | device-cert | DEVICE_CERT | - | +/// | device-key | DEVICE_KEY | - | +/// | ca-path | CA_PATH | - | +/// | trust-store-path | TRUST_STORE_PATH | - | +/// +pub fn add_command_line_args(command: Command) -> Command { + command + .arg( + Arg::new(PARAM_MQTT_CLIENT_ID) + .value_parser(clap::builder::NonEmptyStringValueParser::new()) + .long(PARAM_MQTT_CLIENT_ID) + .help("The client identifier to use in the MQTT Connect Packet.") + .value_name("ID") + .required(false) + .env("MQTT_CLIENT_ID"), + ) + .arg( + Arg::new(PARAM_MQTT_URI) + .value_parser(clap::builder::NonEmptyStringValueParser::new()) + .long(PARAM_MQTT_URI) + .help("The URI of the MQTT adapter to publish data to.") + .value_name("URI") + .required(true) + .env("MQTT_URI"), + ) + .arg( + Arg::new(PARAM_MQTT_USERNAME) + .value_parser(clap::builder::NonEmptyStringValueParser::new()) + .long(PARAM_MQTT_USERNAME) + .help("The username to use for authenticating to the MQTT endpoint.") + .value_name("USERNAME") + .required(false) + .env("MQTT_USERNAME"), + ) + .arg( + Arg::new(PARAM_MQTT_PASSWORD) + .value_parser(clap::builder::NonEmptyStringValueParser::new()) + .long(PARAM_MQTT_PASSWORD) + .help("The password to use for authenticating to the MQTT endpoint.") + .value_name("PWD") + .required(false) + .env("MQTT_PASSWORD"), + ) + .arg( + Arg::new(PARAM_DEVICE_CERT) + .value_parser(clap::builder::NonEmptyStringValueParser::new()) + .long(PARAM_DEVICE_CERT) + .help("The path to a PEM file containing the X.509 certificate that the device should use for authentication.") + .value_name("PATH") + .required(false) + .env("DEVICE_CERT"), + ) + .arg( + Arg::new(PARAM_DEVICE_KEY) + .value_parser(clap::builder::NonEmptyStringValueParser::new()) + .long(PARAM_DEVICE_KEY) + .help("The path to a PEM file containing the private key that the device should use for authentication.") + .value_name("PATH") + .required(false) + .env("DEVICE_KEY"), + ) + .arg( + Arg::new(PARAM_CA_PATH) + .value_parser(clap::builder::NonEmptyStringValueParser::new()) + .long(PARAM_CA_PATH) + .help("The path to a folder that contains PEM files for trusted certificate authorities.") + .value_name("PATH") + .required(false) + .env("CA_PATH"), + ) + .arg( + Arg::new(PARAM_TRUST_STORE_PATH) + .value_parser(clap::builder::NonEmptyStringValueParser::new()) + .long(PARAM_TRUST_STORE_PATH) + .help("The path to a file that contains PEM encoded trusted certificates.") + .value_name("PATH") + .required(false) + .env("TRUST_STORE_PATH"), + ) +} + +/// A connection to an MQTT endpoint. +/// +pub struct MqttConnection { + pub mqtt_client: AsyncClient, + pub uri: String, + pub client_id: String, +} + +impl MqttConnection { + + /// Creates a new connection to an MQTT endpoint. + /// + /// Expects to find parameters as defined by [`add_command_line_args`] in the passed + /// in *args*. + /// + /// The connection returned is configured to keep trying to (re-)connect to the configured + /// MQTT endpoint. + pub async fn new(args: &ArgMatches) -> Result> { + let mqtt_uri = args + .get_one::(PARAM_MQTT_URI) + .unwrap() + .to_owned(); + let client_id = args + .get_one::(PARAM_MQTT_CLIENT_ID) + .unwrap_or(&"".to_string()) + .to_owned(); + let mut ssl_options_builder = SslOptionsBuilder::new(); + match args.get_one::(PARAM_CA_PATH) { + Some(path) => match ssl_options_builder.ca_path(path) { + Err(e) => { + error!("failed to set CA path on MQTT client: {e}"); + return Err(Box::new(e)); + } + Ok(_builder) => (), + }, + None => (), + }; + match args.get_one::(PARAM_TRUST_STORE_PATH) { + Some(path) => match ssl_options_builder.trust_store(path) { + Err(e) => { + error!("failed to set trust store path on MQTT client: {e}"); + return Err(Box::new(e)); + } + Ok(_builder) => (), + }, + None => (), + }; + + let mut connect_options_builder = ConnectOptionsBuilder::new_v3(); + connect_options_builder.connect_timeout(Duration::from_secs(10)); + connect_options_builder + .automatic_reconnect(Duration::from_secs(1), Duration::from_secs(16)); + connect_options_builder.clean_session(true); + connect_options_builder.keep_alive_interval(Duration::from_secs(10)); + connect_options_builder.max_inflight(10); + + match ( + args.get_one::(PARAM_MQTT_USERNAME), + args.get_one::(PARAM_MQTT_PASSWORD), + args.get_one::(PARAM_DEVICE_CERT), + args.get_one::(PARAM_DEVICE_KEY), + ) { + (_, _, Some(cert_path), Some(key_path)) => { + match ssl_options_builder.key_store(cert_path) { + Ok(_builder) => (), + Err(e) => { + error!("failed to set client certificate for MQTT client: {e}"); + return Err(Box::new(e)); + } + } + match ssl_options_builder.private_key(key_path) { + Ok(_builder) => (), + Err(e) => { + error!("failed to set private key for MQTT client: {e}"); + return Err(Box::new(e)); + } + } + info!("using client certificate for authenticating to MQTT endpoint"); + } + (Some(username), Some(password), _, _) => { + connect_options_builder.user_name(username); + connect_options_builder.password(password); + info!("using username and password for authenticating to MQTT endpoint"); + } + _ => { + info!("no credentials specified, trying to connect anonymously to MQTT endpoint"); + } + } + + connect_options_builder.ssl_options(ssl_options_builder.finalize()); + let connect_options = connect_options_builder.finalize(); + info!("connecting to MQTT endpoint at {}", mqtt_uri); + match CreateOptionsBuilder::new() + .server_uri(&mqtt_uri) + .max_buffered_messages(50) + .send_while_disconnected(true) + .delete_oldest_messages(true) + .client_id(&client_id) + .create_client() + { + Err(e) => { + error!("failed to create MQTT client: {}", e); + Err(Box::new(e)) + } + Ok(client) => { + client.connect_with_callbacks( + connect_options, + MqttConnection::on_connect_success, + MqttConnection::on_connect_failure, + ); + Ok(MqttConnection { + mqtt_client: client, + uri: mqtt_uri, + client_id, + }) + } + } + } + + fn on_connect_success(_client: &AsyncClient, _msgid: u16) { + info!("successfully connected to MQTT endpoint"); + } + + fn on_connect_failure(client: &AsyncClient, _msgid: u16, rc: i32) { + warn!( + "attempt to connect to MQTT endpoint failed with error code {}, retrying ...", + rc + ); + thread::sleep(Duration::from_secs(3)); + client.reconnect_with_callbacks( + MqttConnection::on_connect_success, + MqttConnection::on_connect_failure, + ); + } +} diff --git a/components/fms-forwarder/src/status_publishing.rs b/components/fms-forwarder/src/status_publishing.rs new file mode 100644 index 0000000..4147ada --- /dev/null +++ b/components/fms-forwarder/src/status_publishing.rs @@ -0,0 +1,36 @@ +// SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +use async_trait::async_trait; +use fms_proto::fms::VehicleStatus; +use influx_client::writer::InfluxWriter; + +/// A facade for publishing Vehicle status information to a back end store. +#[async_trait] +pub trait StatusPublisher { + /// Publishes status information. + async fn publish_vehicle_status(&self, vehicle_status: &VehicleStatus); +} + +#[async_trait] +impl StatusPublisher for InfluxWriter { + async fn publish_vehicle_status(&self, vehicle_status: &VehicleStatus) { + self.write_vehicle_status(vehicle_status).await + } +} diff --git a/components/fms-forwarder/src/vehicle_abstraction.rs b/components/fms-forwarder/src/vehicle_abstraction.rs new file mode 100644 index 0000000..c34af5d --- /dev/null +++ b/components/fms-forwarder/src/vehicle_abstraction.rs @@ -0,0 +1,593 @@ +// SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +//! An abstraction of a vehicle's (current) status based on +//! [Eclipse kuksa.val Databroker](https://github.com/eclipse/kuksa.val). +//! +use clap::{Arg, ArgMatches, Command}; +use log::{debug, error, info, warn}; +use protobuf::MessageField; +use tokio::sync::mpsc::Sender; + +use std::{collections::HashMap, error::Error, fmt::Display, time::Duration}; + +use tonic::{ + transport::{Channel, Endpoint}, + Request, +}; + +use fms_proto::fms::{TellTaleInfo, Trigger, VehicleStatus}; +use kuksa::{datapoint::Value, val_client::ValClient, EntryRequest, Field, GetRequest, View}; + +use self::kuksa::{DataEntry, SubscribeEntry, SubscribeRequest, UnsupportedValueTypeError}; + +const SNAPSHOT_VSS_PATHS: &[&str] = &[ + vss::VSS_VEHICLE_CHASSIS_PARKINGBRAKE_ISENGAGED, + vss::VSS_VEHICLE_CURRENTLOCATION_ALTITUDE, + vss::VSS_VEHICLE_CURRENTLOCATION_HEADING, + vss::VSS_VEHICLE_CURRENTLOCATION_LATITUDE, + vss::VSS_VEHICLE_CURRENTLOCATION_LONGITUDE, + vss::FMS_VEHICLE_CURRENTLOCATION_SPEED, + vss::VSS_VEHICLE_CURRENTLOCATION_TIMESTAMP, + vss::VSS_VEHICLE_CURRENTOVERALLWEIGHT, + vss::VSS_VEHICLE_EXTERIOR_AIRTEMPERATURE, + vss::VSS_VEHICLE_POWERTRAIN_COMBUSTIONENGINE_DIESELEXHAUSTFLUID_LEVEL, + vss::VSS_VEHICLE_POWERTRAIN_COMBUSTIONENGINE_ENGINEHOURS, + vss::VSS_VEHICLE_POWERTRAIN_COMBUSTIONENGINE_SPEED, + vss::FMS_VEHICLE_POWERTRAIN_CURRENTFUELTYPE, + vss::FMS_VEHICLE_POWERTRAIN_FUELSYSTEM_ACCUMULATEDCONSUMPTION, + vss::VSS_VEHICLE_POWERTRAIN_FUELSYSTEM_RANGE, + vss::FMS_VEHICLE_POWERTRAIN_FUELSYSTEM_TANK_FIRST_LEVEL, + vss::FMS_VEHICLE_POWERTRAIN_FUELSYSTEM_TANK_SECOND_LEVEL, + vss::VSS_VEHICLE_POWERTRAIN_RANGE, + vss::VSS_VEHICLE_SPEED, + vss::FMS_VEHICLE_TACHOGRAPH_DRIVER1_CARDISSUINGMEMBERSTATE, + vss::FMS_VEHICLE_TACHOGRAPH_DRIVER1_IDENTIFICATION, + vss::FMS_VEHICLE_TACHOGRAPH_DRIVER1_WORKINGSTATE, + vss::FMS_VEHICLE_TACHOGRAPH_DRIVER2_WORKINGSTATE, + vss::FMS_VEHICLE_TACHOGRAPH_VEHICLESPEED, + vss::FMS_VEHICLE_TRAVELED_DISTANCE_HIGH_RES, + vss::VSS_VEHICLE_VEHICLEIDENTIFICATION_VIN, +]; + +const TRIGGER_VSS_PATHS: &[&str] = &[ + vss::FMS_VEHICLE_CABIN_TELLTALE_ECT_STATUS, + vss::FMS_VEHICLE_CABIN_TELLTALE_ENGINEOIL_STATUS, + vss::FMS_VEHICLE_CABIN_TELLTALE_ENGINE_STATUS, + vss::FMS_VEHICLE_CABIN_TELLTALE_FUELLEVEL_STATUS, + vss::FMS_VEHICLE_CABIN_TELLTALE_PARKINGBRAKE_STATUS, + vss::VSS_VEHICLE_CHASSIS_PARKINGBRAKE_ISENGAGED, + vss::VSS_VEHICLE_POWERTRAIN_COMBUSTIONENGINE_ISRUNNING, + vss::FMS_VEHICLE_TACHOGRAPH_DRIVER1_ISCARDPRESENT, + vss::FMS_VEHICLE_TACHOGRAPH_DRIVER1_WORKINGSTATE, + vss::FMS_VEHICLE_TACHOGRAPH_DRIVER2_ISCARDPRESENT, + vss::FMS_VEHICLE_TACHOGRAPH_DRIVER2_WORKINGSTATE, +]; + +const PARAM_DATABROKER_URI: &str = "databroker-uri"; +const PARAM_DEFAULT_VIN: &str = "default-vin"; +const PARAM_TIMER_INTERVAL: &str = "timer-interval"; + +const TELL_TALE_NAME_ECT: &str = "ENGINE_COOLANT_TEMPERATURE"; +const TELL_TALE_NAME_ENGINE_OIL: &str = "ENGINE_OIL"; +const TELL_TALE_NAME_ENGINE_MIL_INDICATOR: &str = "ENGINE_MIL_INDICATOR"; +const TELL_TALE_NAME_FUEL_LEVEL: &str = "FUEL_LEVEL"; +const TELL_TALE_NAME_PARKING_BRAKE: &str = "PARKING_BRAKE"; + +const TRIGGER_DRIVER1_WORKING_STATE_CHANGED: &str = "DRIVER_1_WORKING_STATE_CHANGED"; +const TRIGGER_DRIVER2_WORKING_STATE_CHANGED: &str = "DRIVER_2_WORKING_STATE_CHANGED"; +const TRIGGER_PARKING_BRAKE_SWITCH_CHANGE: &str = "PARKING_BRAKE_SWITCH_CHANGE"; +const TRIGGER_DRIVER_LOGIN: &str = "DRIVER_LOGIN"; +const TRIGGER_DRIVER_LOGOUT: &str = "DRIVER_LOGOUT"; +const TRIGGER_ENGINE_ON: &str = "ENGINE_ON"; +const TRIGGER_ENGINE_OFF: &str = "ENGINE_OFF"; +const TRIGGER_TELL_TALE: &str = "TELL_TALE"; +const TRIGGER_TIMER: &str = "TIMER"; + +mod kuksa; +mod vss; + +/// Adds arguments to an existing command line which can be +/// used to configure the component's behavior. +/// +/// The following arguments are being added: +/// +/// | long name | environment variable | default value | description | +/// |---------------------|----------------------|---------------|-------------| +/// | *databroker-uri* | *KUKSA_DATA_BROKER_URI*| `http://127.0.0.1:55555` | The HTTP(S) URI of the kuksa.val Databroker's gRPC endpoint. | +/// | *default-vin* | *DEFAULT_VIN* | `YV2E4C3A5VB180691` | The default VIN to use if the kuksa.val Databroker does not contain the vehicle's VIN. The VIN is used as a tag on measurements written to the InfluxDB server. | +/// | *timer-interval* | *TIMER_INTERVAL* | `5s` | The time period to wait after polling FMS snapshot data from the kuksa.val Databroker, e.g 5m10s or 1h15m. | +/// +pub fn add_command_line_args(command_line: Command) -> Command { + command_line + .arg( + Arg::new(PARAM_DATABROKER_URI) + .value_parser(clap::builder::NonEmptyStringValueParser::new()) + .long(PARAM_DATABROKER_URI) + .alias("uri") + .help("The HTTP(S) URI of the kuksa.val Databroker's gRPC endpoint.") + .value_name("URI") + .required(false) + .env("KUKSA_DATA_BROKER_URI") + .default_value("http://127.0.0.1:55555"), + ) + .arg( + Arg::new(PARAM_DEFAULT_VIN) + .value_parser(clap::builder::NonEmptyStringValueParser::new()) + .long(PARAM_DEFAULT_VIN) + .help("The default VIN to use if the kuksa.val Databroker does not contain the vehicle's VIN. The VIN is used as a tag on measurements written to the InfluxDB server.") + .value_name("IDENTIFIER") + .required(false) + .env("DEFAULT_VIN") + .default_value("YV2E4C3A5VB180691"), + ) + .arg( + Arg::new(PARAM_TIMER_INTERVAL) + .value_parser(duration_str::parse) + .long(PARAM_TIMER_INTERVAL) + .alias("timer") + .help("The time period to wait after polling FMS snapshot data from the kuksa.val Databroker, e.g 5m10s or 1h15m.") + .value_name("DURATION_SPEC") + .required(false) + .env("TIMER_INTERVAL") + .default_value("5s"), + ) +} + +/// Indicates a problem while invoking a Databroker operation. +#[derive(Debug)] +pub struct DatabrokerError { + description: String, +} + +impl Error for DatabrokerError { + fn description(&self) -> &str { + self.description.as_str() + } +} + +impl Display for DatabrokerError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "error invoking Databroker: {:?}", self.description) + } +} + +enum FmsTrigger { + Timer, + Driver1Login, + Driver1Logout, + Driver1WorkingStateChanged(String), + Driver2Login, + Driver2Logout, + Driver2WorkingStateChanged(String), + EngineOn, + EngineOff, + ParkingBreakSwitchChanged(bool), + TellTale(TellTaleInfo), +} + +impl FmsTrigger { + fn new_trigger(type_: &str) -> Trigger { + let mut trigger = Trigger::new(); + trigger.context = "RFMS".to_string(); + trigger.type_ = type_.to_string(); + trigger + } + + pub fn as_trigger(&self) -> Trigger { + match self { + Self::Timer => FmsTrigger::new_trigger(TRIGGER_TIMER), + Self::Driver1Login => FmsTrigger::new_trigger(TRIGGER_DRIVER_LOGIN), + Self::Driver1Logout => FmsTrigger::new_trigger(TRIGGER_DRIVER_LOGOUT), + Self::Driver1WorkingStateChanged(_status) => { + FmsTrigger::new_trigger(TRIGGER_DRIVER1_WORKING_STATE_CHANGED) + } + Self::Driver2Login => FmsTrigger::new_trigger(TRIGGER_DRIVER_LOGIN), + Self::Driver2Logout => FmsTrigger::new_trigger(TRIGGER_DRIVER_LOGOUT), + Self::Driver2WorkingStateChanged(_status) => { + FmsTrigger::new_trigger(TRIGGER_DRIVER2_WORKING_STATE_CHANGED) + } + Self::EngineOn => FmsTrigger::new_trigger(TRIGGER_ENGINE_ON), + Self::EngineOff => FmsTrigger::new_trigger(TRIGGER_ENGINE_OFF), + Self::ParkingBreakSwitchChanged(_is_engaged) => { + FmsTrigger::new_trigger(TRIGGER_PARKING_BRAKE_SWITCH_CHANGE) + } + Self::TellTale(info) => { + let mut trigger = FmsTrigger::new_trigger(TRIGGER_TELL_TALE); + trigger.tell_tale_info = MessageField::some(info.clone()); + trigger + } + } + } + + fn new_tell_tale_trigger( + data_entry: DataEntry, + name: &str, + ) -> Result { + if let Some(value) = data_entry.clone().value.and_then(|v| v.value) { + match String::try_from(value) { + Ok(status) => { + let mut tell_tale_info = TellTaleInfo::new(); + tell_tale_info.tell_tale = name.to_string(); + tell_tale_info.status = status; + Ok(FmsTrigger::TellTale(tell_tale_info)) + } + Err(e) => Err(e), + } + } else { + Err(UnsupportedValueTypeError {}) + } + } + + fn new_boolean_trigger FmsTrigger>( + data_entry: DataEntry, + trigger_producer: P, + ) -> Result { + if let Some(data_point) = data_entry.clone().value { + bool::try_from(data_point.value.unwrap()).map(trigger_producer) + } else { + Err(UnsupportedValueTypeError {}) + } + } + + fn new_string_value_trigger FmsTrigger>( + data_entry: DataEntry, + trigger_producer: P, + ) -> Result { + if let Some(data_point) = data_entry.clone().value { + String::try_from(data_point.value.unwrap()).map(trigger_producer) + } else { + Err(UnsupportedValueTypeError {}) + } + } +} + +impl TryFrom for FmsTrigger { + type Error = UnsupportedValueTypeError; + + fn try_from(data_entry: DataEntry) -> Result { + match data_entry.path.as_str() { + vss::FMS_VEHICLE_CABIN_TELLTALE_ECT_STATUS => { + FmsTrigger::new_tell_tale_trigger(data_entry, TELL_TALE_NAME_ECT) + } + vss::FMS_VEHICLE_CABIN_TELLTALE_ENGINEOIL_STATUS => { + FmsTrigger::new_tell_tale_trigger(data_entry, TELL_TALE_NAME_ENGINE_OIL) + } + vss::FMS_VEHICLE_CABIN_TELLTALE_ENGINE_STATUS => { + FmsTrigger::new_tell_tale_trigger(data_entry, TELL_TALE_NAME_ENGINE_MIL_INDICATOR) + } + vss::FMS_VEHICLE_CABIN_TELLTALE_FUELLEVEL_STATUS => { + FmsTrigger::new_tell_tale_trigger(data_entry, TELL_TALE_NAME_FUEL_LEVEL) + } + vss::FMS_VEHICLE_CABIN_TELLTALE_PARKINGBRAKE_STATUS => { + FmsTrigger::new_tell_tale_trigger(data_entry, TELL_TALE_NAME_PARKING_BRAKE) + } + vss::VSS_VEHICLE_CHASSIS_PARKINGBRAKE_ISENGAGED => { + FmsTrigger::new_boolean_trigger(data_entry, FmsTrigger::ParkingBreakSwitchChanged) + } + vss::VSS_VEHICLE_POWERTRAIN_COMBUSTIONENGINE_ISRUNNING => { + FmsTrigger::new_boolean_trigger(data_entry, |is_running| { + if is_running { + FmsTrigger::EngineOn + } else { + FmsTrigger::EngineOff + } + }) + } + vss::FMS_VEHICLE_TACHOGRAPH_DRIVER1_ISCARDPRESENT => { + FmsTrigger::new_boolean_trigger(data_entry, |card_is_present| { + if card_is_present { + FmsTrigger::Driver1Login + } else { + FmsTrigger::Driver1Logout + } + }) + } + vss::FMS_VEHICLE_TACHOGRAPH_DRIVER1_WORKINGSTATE => { + FmsTrigger::new_string_value_trigger( + data_entry, + FmsTrigger::Driver1WorkingStateChanged, + ) + } + vss::FMS_VEHICLE_TACHOGRAPH_DRIVER2_ISCARDPRESENT => { + FmsTrigger::new_boolean_trigger(data_entry, |card_is_present| { + if card_is_present { + FmsTrigger::Driver2Login + } else { + FmsTrigger::Driver2Logout + } + }) + } + vss::FMS_VEHICLE_TACHOGRAPH_DRIVER2_WORKINGSTATE => { + FmsTrigger::new_string_value_trigger( + data_entry, + FmsTrigger::Driver2WorkingStateChanged, + ) + } + _ => Err(UnsupportedValueTypeError {}), + } + } +} + +struct KuksaValDatabroker { + client: Box>, + default_vin: String, +} + +impl KuksaValDatabroker { + async fn new(args: &ArgMatches) -> Result { + let databroker_uri = args + .get_one::(PARAM_DATABROKER_URI) + .unwrap() + .to_owned(); + + let default_vin = args + .get_one::(PARAM_DEFAULT_VIN) + .unwrap() + .to_owned(); + + info!( + "creating client for kuksa.val Databroker at {}", + databroker_uri + ); + Endpoint::from_shared(databroker_uri.to_owned()) + .map_err(|e| { + error!("invalid Databroker URI: {}", e); + DatabrokerError { + description: e.to_string(), + } + }) + .map(|builder| { + let channel = builder + .connect_timeout(Duration::from_secs(5)) + .timeout(Duration::from_secs(5)) + .connect_lazy(); + let client = ValClient::new(channel); + KuksaValDatabroker { + client: Box::new(client), + default_vin, + } + }) + } + + pub async fn get_vehicle_status(&mut self) -> Result { + let entry_requests: Vec = SNAPSHOT_VSS_PATHS + .into_iter() + .map(|path| EntryRequest { + path: path.to_string(), + view: View::CurrentValue as i32, + fields: vec![Field::Value as i32], + }) + .collect(); + + let mut vss_data: HashMap = HashMap::new(); + match self + .client + .get(Request::new(GetRequest { + entries: entry_requests, + })) + .await + .map(|res| res.into_inner()) + { + Err(status) => { + warn!("failed to retrieve snapshot data points from Databroker {status}"); + Err(DatabrokerError { + description: format!("status code {}", status.code()), + }) + } + Ok(get_response) => { + if let Some(error) = get_response.error { + warn!( + "response from Databroker contains global error [code: {}, message: {}]", + error.code, error.message + ); + } else { + get_response + .errors + .into_iter() + .for_each(|data_entry_error| { + if let Some(err) = data_entry_error.error { + warn!( + "response from Databroker contains error [path: {}, error: {:?}]", + data_entry_error.path, err + ); + } + }); + get_response.entries.into_iter().for_each(|data_entry| { + let name = data_entry.path.to_owned(); + if let Some(value) = data_entry.value.and_then(|dp| dp.value) { + debug!("got value [path: {}]: {:?}", name, value); + vss_data.insert(name, value); + } + }); + } + Ok(kuksa::new_vehicle_status(vss_data, &self.default_vin)) + } + } + } + + pub async fn register_triggers( + &mut self, + sender: Sender, + ) -> Result<(), DatabrokerError> { + let subscribe_entries: Vec = TRIGGER_VSS_PATHS + .into_iter() + .map(|path| SubscribeEntry { + path: path.to_string(), + view: View::CurrentValue as i32, + fields: vec![Field::Value as i32], + }) + .collect(); + + let req = SubscribeRequest { + entries: subscribe_entries, + }; + + match self.client.subscribe(req).await { + Ok(response) => { + let mut stream = response.into_inner(); + tokio::task::spawn(async move { + while let Ok(message) = stream.message().await { + if let Some(response) = message { + for update in response.updates { + match update.entry { + Some(data_entry) => { + if let Ok(trigger) = FmsTrigger::try_from(data_entry) { + let _ = sender.send(trigger).await; + } + } + None => { + debug!( + "ignoring notification from Databroker containing no data" + ); + } + } + } + } + } + }); + Ok(()) + } + Err(e) => { + warn!("failed to register triggers for signals: {}", e); + Err(DatabrokerError { + description: e.message().to_string(), + }) + } + } + } +} + +/// Sets up a connection to the Databroker and registers callbacks for +/// signals that trigger the reporting of the vehicle's current status. +/// +/// Expects to find parameters as defined by [`add_command_line_args`] in the passed +/// in *args*. +/// +pub async fn init( + args: &ArgMatches, + status_publisher: Sender, +) -> Result<(), DatabrokerError> { + let timer_interval = args + .get_one::(PARAM_TIMER_INTERVAL) + .unwrap() + .to_owned(); + + let mut databroker = KuksaValDatabroker::new(args).await?; + let (tx, mut rx) = tokio::sync::mpsc::channel::(50); + let _ = &databroker.register_triggers(tx.clone()).await?; + + tokio::task::spawn(async move { + let mut current_status = VehicleStatus::new(); + + while let Some(fms_trigger) = rx.recv().await { + match databroker.get_vehicle_status().await { + Err(e) => { + warn!( + "failed to retrieve current vehicle status from databroker: {}", + e + ); + } + Ok(mut new_vehicle_status) => { + let last_known_status = current_status.clone(); + current_status = new_vehicle_status.clone(); + let mut trigger = fms_trigger.as_trigger(); + match fms_trigger { + FmsTrigger::Driver1Login => { + info!("driver one has logged in"); + trigger.driver = new_vehicle_status.driver1_id.clone(); + } + FmsTrigger::Driver1Logout => { + info!("driver one has logged out"); + trigger.driver = last_known_status.driver1_id.clone(); + } + FmsTrigger::Driver1WorkingStateChanged(status) => { + info!( + "driver one's working state has changed to status {}", + status + ); + trigger.driver = last_known_status.driver1_id.clone(); + } + FmsTrigger::Driver2Login => { + info!("driver two has logged in"); + trigger.driver = new_vehicle_status + .snapshot_data + .get_or_default() + .driver2_id + .clone(); + } + FmsTrigger::Driver2Logout => { + info!("driver two has logged out"); + trigger.driver = last_known_status + .snapshot_data + .get_or_default() + .driver2_id + .clone(); + } + FmsTrigger::Driver2WorkingStateChanged(status) => { + info!( + "driver two's working state has changed to status {}", + status + ); + trigger.driver = last_known_status + .snapshot_data + .get_or_default() + .driver2_id + .clone(); + } + FmsTrigger::EngineOn => { + info!("engine has been started"); + } + FmsTrigger::EngineOff => { + info!("engine has been stopped"); + } + FmsTrigger::ParkingBreakSwitchChanged(is_engaged) => { + info!("parking brake engaged: {}", is_engaged); + } + FmsTrigger::TellTale(info) => { + info!( + "tell tale {} has changed to status {}]", + info.tell_tale, info.status + ); + } + FmsTrigger::Timer => { + info!("timer has fired"); + } + } + new_vehicle_status.trigger = MessageField::some(trigger); + match status_publisher.send(new_vehicle_status).await { + Ok(_) => {} + Err(e) => { + warn!("failed to send new vehicle status via channel: {}", e); + } + }; + } + } + } + }); + + let timer_sender = tx.clone(); + tokio::task::spawn(async move { + loop { + tokio::time::sleep(timer_interval).await; + let _ = timer_sender.send(FmsTrigger::Timer).await; + } + }); + Ok(()) +} diff --git a/components/fms-forwarder/src/vehicle_abstraction/kuksa.rs b/components/fms-forwarder/src/vehicle_abstraction/kuksa.rs new file mode 100644 index 0000000..a05d328 --- /dev/null +++ b/components/fms-forwarder/src/vehicle_abstraction/kuksa.rs @@ -0,0 +1,404 @@ +// SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +tonic::include_proto!("kuksa.val.v1"); + +use log::debug; +use protobuf::{MessageField, well_known_types::timestamp::Timestamp}; + +use std::collections::HashMap; + +use self::datapoint::Value; +use fms_proto::fms::VehicleStatus; +use crate::vehicle_abstraction::vss; + +#[derive(Debug)] +pub struct UnsupportedValueTypeError{} + +impl TryFrom for u32 { + type Error = UnsupportedValueTypeError; + fn try_from(value: Value) -> Result { + match value { + Value::Uint32(v) => Ok(v), + _ => Err(UnsupportedValueTypeError{}), + } + } +} + +impl TryFrom for Option { + type Error = UnsupportedValueTypeError; + fn try_from(value: Value) -> Result { + match value { + Value::Uint32(v) => Ok(Some(v)), + _ => Err(UnsupportedValueTypeError{}), + } + } +} + +impl TryFrom for u64 { + type Error = UnsupportedValueTypeError; + fn try_from(value: Value) -> Result { + match value { + Value::Uint32(v) => Ok(v as u64), + Value::Uint64(v) => Ok(v), + _ => Err(UnsupportedValueTypeError{}), + } + } +} + +impl TryFrom for Option { + type Error = UnsupportedValueTypeError; + fn try_from(value: Value) -> Result { + match value { + Value::Uint32(v) => Ok(Some(v as u64)), + Value::Uint64(v) => Ok(Some(v)), + _ => Err(UnsupportedValueTypeError{}), + } + } +} + +impl TryFrom for i32 { + type Error = UnsupportedValueTypeError; + fn try_from(value: Value) -> Result { + match value { + Value::Uint32(v) => Ok(v as i32), + Value::Int32(v) => Ok(v), + _ => Err(UnsupportedValueTypeError{}), + } + } +} + +impl TryFrom for Option { + type Error = UnsupportedValueTypeError; + fn try_from(value: Value) -> Result { + match value { + Value::Uint32(v) => Ok(Some(v as i32)), + Value::Int32(v) => Ok(Some(v)), + _ => Err(UnsupportedValueTypeError{}), + } + } +} + +impl TryFrom for i64 { + type Error = UnsupportedValueTypeError; + fn try_from(value: Value) -> Result { + match value { + Value::Uint32(v) => Ok(v as i64), + Value::Uint64(v) => Ok(v as i64), + Value::Int32(v) => Ok(v as i64), + Value::Int64(v) => Ok(v), + _ => Err(UnsupportedValueTypeError{}), + } + } +} + +impl TryFrom for Option { + type Error = UnsupportedValueTypeError; + fn try_from(value: Value) -> Result { + match value { + Value::Uint32(v) => Ok(Some(v as i64)), + Value::Uint64(v) => Ok(Some(v as i64)), + Value::Int32(v) => Ok(Some(v as i64)), + Value::Int64(v) => Ok(Some(v)), + _ => Err(UnsupportedValueTypeError{}), + } + } +} + +impl TryFrom for f32 { + type Error = UnsupportedValueTypeError; + fn try_from(value: Value) -> Result { + match value { + Value::Uint32(v) => Ok(v as f32), + Value::Int32(v) => Ok(v as f32), + Value::Float(v) => Ok(v), + _ => Err(UnsupportedValueTypeError{}), + } + } +} + +impl TryFrom for Option { + type Error = UnsupportedValueTypeError; + fn try_from(value: Value) -> Result { + match value { + Value::Uint32(v) => Ok(Some(v as f32)), + Value::Int32(v) => Ok(Some(v as f32)), + Value::Float(v) => Ok(Some(v)), + _ => Err(UnsupportedValueTypeError{}), + } + } +} + +impl TryFrom for f64 { + type Error = UnsupportedValueTypeError; + fn try_from(value: Value) -> Result { + match value { + Value::Uint32(v) => Ok(v as f64), + Value::Uint64(v) => Ok(v as f64), + Value::Int32(v) => Ok(v as f64), + Value::Int64(v) => Ok(v as f64), + Value::Double(v) => Ok(v), + Value::Float(v) => Ok(v as f64), + _ => Err(UnsupportedValueTypeError{}), + } + } +} + +impl TryFrom for Option { + type Error = UnsupportedValueTypeError; + fn try_from(value: Value) -> Result { + match value { + Value::Uint32(v) => Ok(Some(v as f64)), + Value::Uint64(v) => Ok(Some(v as f64)), + Value::Int32(v) => Ok(Some(v as f64)), + Value::Int64(v) => Ok(Some(v as f64)), + Value::Double(v) => Ok(Some(v as f64)), + Value::Float(v) => Ok(Some(v as f64)), + _ => Err(UnsupportedValueTypeError{}), + } + } +} + +impl TryFrom for String { + type Error = UnsupportedValueTypeError; + fn try_from(value: Value) -> Result { + match value { + Value::String(v) => Ok(v), + _ => Err(UnsupportedValueTypeError{}), + } + } +} + +impl TryFrom for Option { + type Error = UnsupportedValueTypeError; + fn try_from(value: Value) -> Result { + match value { + Value::String(v) => Ok(Some(v)), + _ => Err(UnsupportedValueTypeError{}), + } + } +} + +impl TryFrom for bool { + type Error = UnsupportedValueTypeError; + fn try_from(value: Value) -> Result { + match value { + Value::Bool(v) => Ok(v), + _ => Err(UnsupportedValueTypeError{}), + } + } +} + +impl TryFrom for Option { + type Error = UnsupportedValueTypeError; + fn try_from(value: Value) -> Result { + match value { + Value::Bool(v) => Ok(Some(v)), + _ => Err(UnsupportedValueTypeError{}), + } + } +} + +pub fn new_vehicle_status(data: HashMap, default_vin: &String) -> VehicleStatus { + let mut vehicle_status = VehicleStatus::new(); + vehicle_status.created = MessageField::some(Timestamp::now()); + + vehicle_status.vin = data + .get(vss::VSS_VEHICLE_VEHICLEIDENTIFICATION_VIN) + .map_or(default_vin.to_owned(), |value| { + value.clone().try_into().unwrap() + }); + + if let Some(value) = data.get(vss::VSS_VEHICLE_CHASSIS_PARKINGBRAKE_ISENGAGED) { + vehicle_status + .snapshot_data + .mut_or_insert_default() + .parking_brake_engaged = value.clone().try_into().unwrap(); + } + + if let Some(value) = data.get(vss::VSS_VEHICLE_CURRENTLOCATION_LATITUDE) { + vehicle_status + .snapshot_data + .mut_or_insert_default() + .gnss_position + .mut_or_insert_default() + .latitude = value.clone().try_into().unwrap(); + } + if let Some(value) = data.get(vss::VSS_VEHICLE_CURRENTLOCATION_LONGITUDE) { + vehicle_status + .snapshot_data + .mut_or_insert_default() + .gnss_position + .mut_or_insert_default() + .longitude = value.clone().try_into().unwrap(); + } + if let Some(value) = data.get(vss::VSS_VEHICLE_CURRENTLOCATION_ALTITUDE) { + vehicle_status + .snapshot_data + .mut_or_insert_default() + .gnss_position + .mut_or_insert_default() + .altitude = value.clone().try_into().unwrap(); + } + if let Some(value) = data.get(vss::VSS_VEHICLE_CURRENTLOCATION_HEADING) { + vehicle_status + .snapshot_data + .mut_or_insert_default() + .gnss_position + .mut_or_insert_default() + .heading = value.clone().try_into().unwrap(); + } + if let Some(value) = data.get(vss::FMS_VEHICLE_CURRENTLOCATION_SPEED) { + vehicle_status + .snapshot_data + .mut_or_insert_default() + .gnss_position + .mut_or_insert_default() + .speed = value.clone().try_into().unwrap(); + } + if let Some(value) = data.get(vss::VSS_VEHICLE_CURRENTLOCATION_TIMESTAMP) { + // this will succeed because we know that the Databroker will only accept a String as + // this VSS Data Entry's value + let iso_date_time: String = value.clone().try_into().unwrap(); + match chrono::DateTime::parse_from_rfc3339(&iso_date_time) { + Ok(instant) => { + let position_instant = vehicle_status + .snapshot_data + .mut_or_insert_default() + .gnss_position + .mut_or_insert_default() + .instant + .mut_or_insert_default(); + position_instant.seconds = instant.timestamp(); + position_instant.nanos = instant.timestamp_subsec_nanos() as i32; + } + Err(_e) => debug!("failed to parse value as ISO8601 date-time string"), + } + } + + if let Some(value) = data.get(vss::VSS_VEHICLE_CURRENTOVERALLWEIGHT) { + vehicle_status.gross_combination_vehicle_weight = value.clone().try_into().unwrap(); + } + + if let Some(value) = data.get(vss::VSS_VEHICLE_EXTERIOR_AIRTEMPERATURE) { + vehicle_status + .snapshot_data + .mut_or_insert_default() + .ambient_air_temperature = value.clone().try_into().unwrap(); + } + + if let Some(value) = + data.get(vss::VSS_VEHICLE_POWERTRAIN_COMBUSTIONENGINE_DIESELEXHAUSTFLUID_LEVEL) + { + vehicle_status + .snapshot_data + .mut_or_insert_default() + .catalyst_fuel_level = value.clone().try_into().unwrap(); + } + + if let Some(value) = data.get(vss::VSS_VEHICLE_POWERTRAIN_COMBUSTIONENGINE_ENGINEHOURS) { + vehicle_status.total_engine_hours = value.clone().try_into().unwrap(); + } + if let Some(value) = data.get(vss::VSS_VEHICLE_POWERTRAIN_COMBUSTIONENGINE_SPEED) { + vehicle_status + .snapshot_data + .mut_or_insert_default() + .engine_speed = value.clone().try_into().unwrap(); + } + + if let Some(value) = data.get(vss::FMS_VEHICLE_POWERTRAIN_CURRENTFUELTYPE) { + vehicle_status + .snapshot_data + .mut_or_insert_default() + .fuel_type = value.clone().try_into().unwrap(); + } + + if let Some(value) = data.get(vss::FMS_VEHICLE_POWERTRAIN_FUELSYSTEM_ACCUMULATEDCONSUMPTION) { + vehicle_status.engine_total_fuel_used = value.clone().try_into().unwrap(); + } + + if let Some(value) = data.get(vss::VSS_VEHICLE_POWERTRAIN_RANGE) { + vehicle_status + .snapshot_data + .mut_or_insert_default() + .estimated_distance_to_empty + .mut_or_insert_default() + .total = value.clone().try_into().unwrap(); + } + if let Some(value) = data.get(vss::VSS_VEHICLE_POWERTRAIN_FUELSYSTEM_RANGE) { + vehicle_status + .snapshot_data + .mut_or_insert_default() + .estimated_distance_to_empty + .mut_or_insert_default() + .fuel = value.clone().try_into().unwrap(); + } + + if let Some(value) = data.get(vss::FMS_VEHICLE_POWERTRAIN_FUELSYSTEM_TANK_FIRST_LEVEL) { + vehicle_status + .snapshot_data + .mut_or_insert_default() + .fuel_level1 = value.clone().try_into().unwrap(); + } + if let Some(value) = data.get(vss::FMS_VEHICLE_POWERTRAIN_FUELSYSTEM_TANK_SECOND_LEVEL) { + vehicle_status + .snapshot_data + .mut_or_insert_default() + .fuel_level2 = value.clone().try_into().unwrap(); + } + + if let Some(value) = data.get(vss::VSS_VEHICLE_SPEED) { + vehicle_status + .snapshot_data + .mut_or_insert_default() + .wheel_based_speed = value.clone().try_into().unwrap(); + } + + if let Some(value) = data.get(vss::FMS_VEHICLE_TACHOGRAPH_DRIVER1_IDENTIFICATION) { + vehicle_status + .driver1_id + .mut_or_insert_default() + .tacho_driver_identification + .mut_or_insert_default() + .driver_identification = value.clone().try_into().unwrap(); + } + if let Some(value) = data.get(vss::FMS_VEHICLE_TACHOGRAPH_DRIVER1_WORKINGSTATE) { + vehicle_status + .snapshot_data + .mut_or_insert_default() + .driver1_working_state = value.clone().try_into().unwrap(); + } + if let Some(value) = data.get(vss::FMS_VEHICLE_TACHOGRAPH_DRIVER2_WORKINGSTATE) { + vehicle_status + .snapshot_data + .mut_or_insert_default() + .driver2_working_state = value.clone().try_into().unwrap(); + } + if let Some(value) = data.get(vss::FMS_VEHICLE_TACHOGRAPH_VEHICLESPEED) { + vehicle_status + .snapshot_data + .mut_or_insert_default() + .tachograph_speed = value.clone().try_into().unwrap(); + } + + if let Some(value) = data.get(vss::FMS_VEHICLE_TRAVELED_DISTANCE_HIGH_RES) { + vehicle_status.hr_total_vehicle_distance = value.clone().try_into().unwrap(); + } + vehicle_status +} diff --git a/components/fms-forwarder/src/vehicle_abstraction/vss.rs b/components/fms-forwarder/src/vehicle_abstraction/vss.rs new file mode 100644 index 0000000..9adad88 --- /dev/null +++ b/components/fms-forwarder/src/vehicle_abstraction/vss.rs @@ -0,0 +1,71 @@ +// SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +pub const FMS_VEHICLE_CABIN_TELLTALE_ECT_STATUS: &str = + "Vehicle.Cabin.Telltale.ECT.Status"; +pub const FMS_VEHICLE_CABIN_TELLTALE_ENGINE_STATUS: &str = + "Vehicle.Cabin.Telltale.Engine.Status"; +pub const FMS_VEHICLE_CABIN_TELLTALE_ENGINEOIL_STATUS: &str = + "Vehicle.Cabin.Telltale.EngineOil.Status"; +pub const FMS_VEHICLE_CABIN_TELLTALE_FUELLEVEL_STATUS: &str = + "Vehicle.Cabin.Telltale.FuelLevel.Status"; +pub const FMS_VEHICLE_CABIN_TELLTALE_PARKINGBRAKE_STATUS: &str = + "Vehicle.Cabin.Telltale.ParkingBrake.Status"; +pub const VSS_VEHICLE_CURRENTOVERALLWEIGHT: &str = "Vehicle.CurrentOverallWeight"; +pub const VSS_VEHICLE_CHASSIS_PARKINGBRAKE_ISENGAGED: &str = "Vehicle.Chassis.ParkingBrake.IsEngaged"; +pub const VSS_VEHICLE_CURRENTLOCATION_LATITUDE: &str = "Vehicle.CurrentLocation.Latitude"; +pub const VSS_VEHICLE_CURRENTLOCATION_LONGITUDE: &str = "Vehicle.CurrentLocation.Longitude"; +pub const VSS_VEHICLE_CURRENTLOCATION_ALTITUDE: &str = "Vehicle.CurrentLocation.Altitude"; +pub const VSS_VEHICLE_CURRENTLOCATION_HEADING: &str = "Vehicle.CurrentLocation.Heading"; +pub const FMS_VEHICLE_CURRENTLOCATION_SPEED: &str = "Vehicle.CurrentLocation.Speed"; +pub const VSS_VEHICLE_CURRENTLOCATION_TIMESTAMP: &str = "Vehicle.CurrentLocation.Timestamp"; +pub const VSS_VEHICLE_EXTERIOR_AIRTEMPERATURE: &str = "Vehicle.Exterior.AirTemperature"; +pub const VSS_VEHICLE_POWERTRAIN_COMBUSTIONENGINE_DIESELEXHAUSTFLUID_LEVEL: &str = + "Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid.Level"; +pub const VSS_VEHICLE_POWERTRAIN_COMBUSTIONENGINE_ENGINEHOURS: &str = + "Vehicle.Powertrain.CombustionEngine.EngineHours"; +pub const VSS_VEHICLE_POWERTRAIN_COMBUSTIONENGINE_ISRUNNING: &str = + "Vehicle.Powertrain.CombustionEngine.IsRunning"; +pub const VSS_VEHICLE_POWERTRAIN_COMBUSTIONENGINE_SPEED: &str = + "Vehicle.Powertrain.CombustionEngine.Speed"; +pub const FMS_VEHICLE_POWERTRAIN_CURRENTFUELTYPE: &str = "Vehicle.Powertrain.CurrentFuelType"; +pub const FMS_VEHICLE_POWERTRAIN_FUELSYSTEM_ACCUMULATEDCONSUMPTION: &str = + "Vehicle.Powertrain.FuelSystem.AccumulatedConsumption"; +pub const VSS_VEHICLE_POWERTRAIN_FUELSYSTEM_RANGE: &str = "Vehicle.Powertrain.FuelSystem.Range"; +pub const FMS_VEHICLE_POWERTRAIN_FUELSYSTEM_TANK_FIRST_LEVEL: &str = + "Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel"; +pub const FMS_VEHICLE_POWERTRAIN_FUELSYSTEM_TANK_SECOND_LEVEL: &str = + "Vehicle.Powertrain.FuelSystem.Tank.Second.RelativeLevel"; +pub const VSS_VEHICLE_POWERTRAIN_RANGE: &str = "Vehicle.Powertrain.Range"; +pub const VSS_VEHICLE_SPEED: &str = "Vehicle.Speed"; +pub const FMS_VEHICLE_TACHOGRAPH_DRIVER1_CARDISSUINGMEMBERSTATE: &str = + "Vehicle.Tachograph.Driver.Driver1.CardIssuingMemberState"; +pub const FMS_VEHICLE_TACHOGRAPH_DRIVER1_IDENTIFICATION: &str = + "Vehicle.Tachograph.Driver.Driver1.Identification"; +pub const FMS_VEHICLE_TACHOGRAPH_DRIVER1_ISCARDPRESENT: &str = + "Vehicle.Tachograph.Driver.Driver1.IsCardPresent"; +pub const FMS_VEHICLE_TACHOGRAPH_DRIVER1_WORKINGSTATE: &str = + "Vehicle.Tachograph.Driver.Driver1.WorkingState"; +pub const FMS_VEHICLE_TACHOGRAPH_DRIVER2_ISCARDPRESENT: &str = + "Vehicle.Tachograph.Driver.Driver2.IsCardPresent"; +pub const FMS_VEHICLE_TACHOGRAPH_DRIVER2_WORKINGSTATE: &str = + "Vehicle.Tachograph.Driver.Driver2.WorkingState"; +pub const FMS_VEHICLE_TACHOGRAPH_VEHICLESPEED: &str = "Vehicle.Tachograph.VehicleSpeed"; +pub const FMS_VEHICLE_TRAVELED_DISTANCE_HIGH_RES: &str = "Vehicle.TraveledDistanceHighRes"; +pub const VSS_VEHICLE_VEHICLEIDENTIFICATION_VIN: &str = "Vehicle.VehicleIdentification.VIN"; diff --git a/components/fms-proto/Cargo.toml b/components/fms-proto/Cargo.toml new file mode 100644 index 0000000..adbb8a1 --- /dev/null +++ b/components/fms-proto/Cargo.toml @@ -0,0 +1,36 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +[package] +name = "fms-proto" +version.workspace = true +edition.workspace = true +license.workspace = true +repository.workspace = true +documentation.workspace = true +readme.workspace = true + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +protobuf = { workspace = true } + +[build-dependencies] +protobuf-codegen = { workspace = true } +protoc-bin-vendored = { workspace = true } diff --git a/components/fms-proto/README.md b/components/fms-proto/README.md new file mode 100644 index 0000000..4a9dbcf --- /dev/null +++ b/components/fms-proto/README.md @@ -0,0 +1,5 @@ +This package contains *protobuf* definitions and corresponding Rust code bindings for the types defined by the +[FMS specific VSS overlay](../../spec). + +The [FMS Forwarder](../fms-forwarder) and [FMS Server](../fms-server) components use these bindings to serialize +and deserialize FMS data being sent from a vehicle to the back end. diff --git a/components/fms-proto/build.rs b/components/fms-proto/build.rs new file mode 100644 index 0000000..88236f8 --- /dev/null +++ b/components/fms-proto/build.rs @@ -0,0 +1,31 @@ +// SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +fn main() -> Result<(), Box> { + + protobuf_codegen::Codegen::new() + .protoc() + // use vendored protoc instead of relying on user provided protobuf installation + .protoc_path(&protoc_bin_vendored::protoc_bin_path().unwrap()) + .include("proto") + .inputs(["proto/fms/v4/fms.proto"]) + .cargo_out_dir("fms") + .run_from_script(); + Ok(()) +} diff --git a/components/fms-proto/proto/fms/v4/fms.proto b/components/fms-proto/proto/fms/v4/fms.proto new file mode 100644 index 0000000..1e2076e --- /dev/null +++ b/components/fms-proto/proto/fms/v4/fms.proto @@ -0,0 +1,325 @@ +// SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +// This file contains message descriptions reflecting the data used by the FMS Standard v4.0 + +syntax = "proto3"; + +package fms.v4; + +import "google/protobuf/timestamp.proto"; + +message AccumulatedData { + // TBD +} + +// The status of an alternator. +message AlternatorInfo { + // The alternator's identifier. + uint32 id = 1; + string status = 2; +} + +message AxleLoad { + // Axle position from 1 to 15, 1 being in the front of the truck. + uint32 position = 1; + // The static vertical load of a vehicle axle in kilograms. + float load = 2; +} + +message ChargingStatusInfo { + // The event that caused the status to change: + // STARTED, COMPLETED, INTERRUPTED, COMPLETION_TIME_CHANGED, TIMER, CHARGIN_LEVEL, ERROR + string event = 1; + // Details regarding the event. Content is OEM specific. + string event_detail = 2; +} + +message ChargingConnectionStatusInfo { + // The event that caused the status to change: + // NOT_AVAILABLE, CONNECTING, CONNECTED, DISCONNECTING, DISCONNECTED, ERROR + string event = 1; + // Details regarding the event. Content is OEM specific. + string event_detail = 2; +} + +message DistanceToEmpty { + // Estimated distance to empty, summarizing fuel, gas and battery in meters. + optional uint64 total = 1; + // Estimated distance to empty, fuel tank, in meters. + optional uint64 fuel = 2; + // Estimated distance to empty, gas tank, in meters. + optional uint64 gas = 3; + // Estimated distance to empty, battery pack, in meters. + optional uint64 battery_pack = 4; +} + +// Status of a bus door. +message DoorStatus { + uint32 number = 1; + // allowed values: NOT_AVAILABLE, ENABLED, DISABLED, ERROR + string enabled_status = 2; + // allowed values: NOT_AVAILABLE, CLOSED, OPEN, ERROR + string open_status = 3; + // allowed values: NOT_AVAILABLE, UNLOCKED, LOCKED, ERROR + string lock_status = 4; +} + +message DriverId { + TachoDriverId tacho_driver_identification = 1; + OemDriverId oem_driver_identification = 2; +} + +message GnssPosition { + // Latitude (WGS84 based) + double latitude = 1; + // Longitude (WGS84 based) + double longitude = 2; + // The direction of the vehicle (0-359) + optional uint32 heading = 3; + // The altitude of the vehicle. Where 0 is sea level, negative + // values below sealevel and positive above sealevel. Unit in meters. + optional int32 altitude = 4; + // The GNSS(e.g. GPS)-speed in km/h. + optional double speed = 5; + // The time of the position data. + google.protobuf.Timestamp instant = 6; +} + +message OemDriverId { + // An OEM specific driver id. + optional string id = 1; + // An optional id type (e.g. pin, USB, encrypted EU id etc). + optional string type = 2; +} + +message SnapshotData { + GnssPosition gnss_position = 1; + // The vehicle wheelbased speed. + optional double wheel_based_speed = 2; + // The Tacho speed. + optional double tachograph_speed = 3; + // The engine (Diesel/gaseous) speed in rev/min. + optional double engine_speed = 4; + // The electric motor speed in rev/min. + optional double electric_motor_speed = 5; + // Type of fuel currently being utilized by the vehicle acc. j1939's SPN 5837. + optional string fuel_type = 6; + // The fuel level percentage. + optional double fuel_level1 = 7; + // Ratio of volume of fuel to the total volume of fuel storage container, in percent. + // When Fuel Level 2 is not used, Fuel Level 1 represents the total fuel in all fuel + // storage containers. When Fuel Level 2 is used, Fuel Level 1 represents the fuel + // level in the primary or left-side fuel storage container. + optional double fuel_level2 = 8; + // The adblue level percentage. + optional double catalyst_fuel_level = 9; + // Tachograph Working state of the first driver. + optional string driver1_working_state = 10; + // The identity of the second driver. + DriverId driver2_id = 11; + // Tachograph Working state of the second driver. + optional string driver2_working_state = 12; + // The Ambient air temperature in Celsius. + optional double ambient_air_temperature = 13; + // Switch signal which indicates when the parking brake is set. + // In general the switch actuated by the operator's park brake control, whether + // a pedal, lever or other control mechanism. + optional bool parking_brake_engaged = 14; + // Indicates the hybrid battery pack remaining charge. + // 0% means no charge remaining, + // 100% means full charge remaining. + // Is used as well for full electrical vehicles. + optional double hybrid_battery_pack_remaining_charge = 15; + // Indicates the charging status of the battery pack. Recuperation is excluded. + // NOT_AVAILABLE, NOT_CHARGING, CHARGING, CHARGING_AC, CHARGING_DC, ERROR + optional string battery_pack_charging_status = 16; + // Indicates the charging connection status of the battery pack. + // NOT_AVAILABLE, CONNECTING, CONNECTED, DISCONNECTING, DISCONNECTED, ERROR + optional string battery_pack_charging_connection_status = 17; + // Device used to charge the battery pack. Standard rFMS values + // taken from ISO 15118 (OEM can have additional values): + // ACD - Automatic Connection Device + // WPT - Wireless Power Transfer + // VEHICLE_COUPLER - manual connection of a flexible cable to an EV + // NONE - No device connected + // NOT_AVAILABLE - Unknown + optional string battery_pack_charging_device = 18; + // Charging power in watts. + optional double battery_pack_charging_power = 19; + // Estimated time when charging has reached the target level. + google.protobuf.Timestamp estimated_time_battery_pack_charging_completed = 20; + // Estimated distance to empty (tanks and/or battery packs) in meters. + DistanceToEmpty estimated_distance_to_empty = 21; + // The vehicle's axles and their current load. + repeated AxleLoad vehicle_axles = 22; + // List of trailers connected to the truck. + repeated Trailer trailers = 23; +} + +message TachoDriverId { + // The unique identification of a driver in a Member State. + // This field is formatted according the definition for driverIdentification + // in COMMISSION REGULATION (EC) No 1360/2002 Annex 1b + string driver_identification = 1; + // The country alpha code of the Member State having issued the card. + // This fieldd is formatted according the definition for NationAlpha + // in COMMISSION REGULATION (EC) No 1360/2002 Annex 1b + string card_issuing_memberState = 2; + // The type of equipment used to authenticate the driver. + optional string driver_authentication_equipment = 3; + // A card replacement index. This fields is formatted according the + // definition for CardReplacementIndex (chap 2.26) in: + // COMMISSION REGULATION (EC) No 1360/2002 Annex 1b + optional string card_replacement_index = 4; + // A card renewal index. This fields is formatted according the + // definition for CardRenewalIndex (chap 2.25) in: + // COMMISSION REGULATION (EC) No 1360/2002 Annex 1b + optional string card_renewal_index = 5; +} + +message TellTaleInfo { + string tell_tale = 1; + string status = 2; + // This is only set when tell_tale == OEM_SPECIFIC. + // This is an OEM specific string defining a tell tale in the OEM context. + optional string oem_tell_tale = 3; +} + +message Trailer { + // Trailer number from 1 to 5, 1 being closest to the truck, according to ISO 11992-2. + uint32 position = 1; + // The identification data sent by the trailer to the truck in the RGE23 message of ISO 11992-2. + // An alternative source is the DID (Data identifier definition) record VIN, as specified in + // ISO 11992-4. Even though both ISO 11992-2 and ISO 11992-4 specifies this as a VIN, the + // actual data sent from a trailer is not always the true VIN of the trailer. + string identification_data = 2; + // The vehicle identification number of the trailer. + // See ISO 3779 (17 characters) If the trailerIdentificationData is reporting + // a true VIN, trailerVin will have the same value. If it is possible to map the + // identification_data to a true VIN using other sources, the value can be provided here. + string vin = 3; + // The customer's name for the trailer + string custom_name = 4; + string type = 5; + // The sum of the static vertical loads of the trailer axles in kilograms. + // The load is sent in the EBS22 message of ISO 11992-2. + uint64 axle_load_sum = 6; + // The trailer's axles and their current load. + repeated AxleLoad axles = 7; +} + +message Trigger { + // If the trigger is based on one of the events defined by rFMS then this property MUST be set to "RFMS" + // and the "type" property MUST be set to the corresponding trigger type. + // Otherwise, this property MUST be set to a value indicating the (OEM specific) context in which the + // event occurred. + // rFMS standard values are "VOLVO TRUCKS", "SCANIA", "DAIMLER", "IVECO", "DAF", "MAN", + // "RENAULT TRUCKS", "VDL", "VOLVO BUSES", "IVECO BUS", "IRISBUS" + string context = 1; + string type = 2; + // Additional TriggerInfo content for OEM specific triggers, e.g. TRAILER_ATTACHED_TRIGGER [id of trailer] + repeated string info_items = 3; + // The id of the driver. This is only set if the trigger type is one of + // DRIVER_LOGIN, DRIVER_LOGOUT, DRIVER_1_WORKING_STATE_CHANGED, DRIVER_2_WORKING_STATE_CHANGED + DriverId driver = 4; + // The id of a PTO. This is only set if the trigger type is PTO_ENABLED or PTO_DISABLED + optional string pto_id = 5; + // Additional information which can be provide if the trigger type is TELL_TALE + TellTaleInfo tell_tale_info = 6; + // Additional information which can be provided if the trigger type is BATTERY_PACK_CHARGING_STATUS_CHANGE. + ChargingStatusInfo charging_status_info = 7; + // Additional information which can be provided if the trigger type is BATTERY_PACK_CHARGING_CONNECTION_STATUS_CHANGE. + // allowed values: NOT_AVAILABLE, CONNECTING, CONNECTED, DISCONNECTING, DISCONNECTED, ERROR + optional string charging_connection_status_info = 8; +} + +message UptimeData { + // List of tell tales with the actual status for each tell tale. + repeated TellTaleInfo tell_tales = 1; + // The distance in meter to the next service. + optional uint64 service_distance = 2; + // The temperature of the engine's coolant liquid in Celsius. + optional double engine_coolant_temperature = 3; + // The temperature of the battery pack coolant in Celsius. + // HVESS: High Voltage Energy Storage System + optional double hvess_outlet_coolant_temperature = 4; + // The temperature of the battery pack in Celsius. + // HVESS: High Voltage Energy Storage System + optional double hvess_temperature = 5; + // The air pressure in circuit 1 in Pascal. + optional uint64 service_brake_air_pressure_circuit1 = 6; + // The air pressure in circuit 2 in Pascal. + optional uint64 service_brake_air_pressure_circuit2 = 7; + // The total amount of time (seconds) that at least one door has been opened in the bus. + // Used mainly for buses. + optional uint64 duration_at_least_one_door_open = 8; + // The alternator status of the up to 4 alternators. Used mainly for buses. + AlternatorInfo alternator_info = 9; + // The bellow pressure in the front axle left side in Pascal. Used mainly for buses. + optional uint64 bellow_pressure_front_axle_left = 10; + // The bellow pressure in the front axle right side in Pascal. Used mainly for buses. + optional uint64 bellow_pressure_front_axle_right = 11; + // The bellow pressure in the rear axle left side in Pascal. Used mainly for buses. + optional uint64 bellow_pressure_rear_axle_left = 12; + // The bellow pressure in the rear axle right side in Pascal. Used mainly for buses. + optional uint64 bellow_pressure_rear_axle_right = 13; +} + +message VehicleStatus { + string vin = 1; + Trigger trigger = 2; + google.protobuf.Timestamp created = 3; + // Accumulated distance travelled by the vehicle during its operation in meter. + optional uint64 hr_total_vehicle_distance = 4; + // The total hours of operation for the vehicle combustion engine. + // At least one of total_engine_hours or total_electric_motor_hours is mandatory. + optional double total_engine_hours = 5; + // The total hours the electric motor is ready for propulsion (i.e. crank mode). + // At least one of total_engine_hours or total_electric_motor_hours is mandatory. + optional double total_electric_motor_hours = 6; + // The identity of the first driver. + DriverId driver1_id = 7; + // The full vehicle weight in kg. + optional uint32 gross_combination_vehicle_weight = 8; + // The total amount of fuel the vehicle has used during its lifetime in MilliLitres. + // At least one of engine_total_fuel_used, total_fuel_used_gaseous + // or total_electric_energy_used is mandatory. + optional uint64 engine_total_fuel_used = 9; + // The total amount of fuel consumed in kg (trip drive fuel + trip PTO governor + // moving fuel + trip PTO governor non-moving fuel + trip idle fuel) over the + // life of the engine. + // At least one of engine_total_fuel_used, total_fuel_used_gaseous + // or total_electric_energy_used is mandatory. + optional uint64 total_fuel_used_gaseous = 10; + // The total amount of electric energy consumed by the vehicle, excluding when + // plugged in (vehicle coupler) for charging, (incl. motor, PTO, cooling, + // etc.) in watt hours. Recuperation is subtracted from the value. + // At least one of engine_total_fuel_used, total_fuel_used_gaseous + // or total_electric_energy_used is mandatory. + optional uint64 total_electric_energy_used = 11; + // Composite indication of all bus door statuses. Bus specific parameter. + // allowed values: NOT_AVAILABLE, ALL_DOORS_DISABLED, AT_LEAST_ONE_DOOR_ENABLED, ERROR + optional string status2_of_doors = 12; + // Individual status for each bus door. Bus specific parameter. + repeated DoorStatus door_status = 13; + AccumulatedData accumulated_data = 14; + SnapshotData snapshot_data = 15; + UptimeData uptime_data = 16; +} \ No newline at end of file diff --git a/components/fms-proto/src/lib.rs b/components/fms-proto/src/lib.rs new file mode 100644 index 0000000..8f26e3b --- /dev/null +++ b/components/fms-proto/src/lib.rs @@ -0,0 +1,20 @@ +// SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +include!(concat!(env!("OUT_DIR"), "/fms/mod.rs")); diff --git a/components/fms-server/Cargo.toml b/components/fms-server/Cargo.toml new file mode 100644 index 0000000..354450f --- /dev/null +++ b/components/fms-server/Cargo.toml @@ -0,0 +1,43 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +[package] +name = "fms-server" +version.workspace = true +edition.workspace = true +license.workspace = true +repository.workspace = true +documentation.workspace = true +readme.workspace = true + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +async-trait = "0.1" +axum = "0.6" +chrono = { workspace = true, features = ["serde"] } +clap = { workspace = true, features = ["std", "env", "color", "help", "usage", "error-context", "suggestions"] } +const_format = { version = "0.2" } +env_logger = { workspace = true } +influx-client = { workspace = true } +influxrs = { workspace = true } +log = { workspace = true } +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } diff --git a/components/fms-server/src/influx_reader.rs b/components/fms-server/src/influx_reader.rs new file mode 100644 index 0000000..55ef32f --- /dev/null +++ b/components/fms-server/src/influx_reader.rs @@ -0,0 +1,169 @@ +// SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +use chrono::{DateTime, Utc}; +use clap::ArgMatches; +use const_format::formatcp; +use influx_client::connection::InfluxConnection; +use influxrs::InfluxError; + +use crate::models::{self, GnssPositionObject, TriggerObject, VehiclePositionObject}; + +const FILTER_FIELDS_POSITION: &'static str = formatcp!( + r#"filter(fn: (r) => contains(set: ["{}","{}","{}","{}","{}","{}","{}","{}", "{}"], value: r._field)"#, + influx_client::FIELD_CREATED_DATE_TIME, + influx_client::FIELD_LATITUDE, + influx_client::FIELD_LONGITUDE, + influx_client::FIELD_ALTITUDE, + influx_client::FIELD_HEADING, + influx_client::FIELD_SPEED, + influx_client::FIELD_POSITION_DATE_TIME, + influx_client::FIELD_TACHOGRAPH_SPEED, + influx_client::FIELD_WHEEL_BASED_SPEED, +); +const FILTER_MEASUREMENT_SNAPSHOT: &'static str = formatcp!( + r#"filter(fn: (r) => r._measurement == "{}")"#, + influx_client::MEASUREMENT_SNAPSHOT, +); +const FILTER_TAG_ANY_VIN: &'static str = formatcp!(r#"filter(fn: (r) => r["{}"] =~ /.*/)"#, influx_client::TAG_VIN); +const FILTER_TAG_ANY_TRIGGER: &'static str = formatcp!(r#"filter(fn: (r) => r["{}"] =~ /.*/)"#, influx_client::TAG_TRIGGER); + +fn unpack_value_i32(value: Option<&String>) -> Option { + value.and_then(|v| v.parse().map_or(None, Option::Some)) +} + +fn unpack_value_f64(value: Option<&String>) -> Option { + value.and_then(|v| v.parse().map_or(None, Option::Some)) +} + +fn unpack_time(value: Option<&String>) -> Option> { + value.and_then(|v| v.parse().map_or(None, Option::Some)) +} + +pub struct InfluxReader { + influx_con: InfluxConnection, +} + +impl InfluxReader { + + pub fn new(args: &ArgMatches) -> Result> { + InfluxConnection::new(&args).map(|con| InfluxReader { influx_con: con }) + } + + pub async fn get_vehicles(&self) -> Result, InfluxError> { + let read_query = influxrs::Query::new(format!( + r#" + import "influxdata/influxdb/schema" + schema.tagValues(bucket: "{}", tag: "{}") + "#, + self.influx_con.bucket, + influx_client::TAG_VIN, + )); + + self.influx_con.client.query(read_query).await.map(|vins| { + vins.into_iter() + .filter_map(|entry| { + entry + .get("_value") + .map(|vin| models::VehicleObject::new(vin.to_string())) + }) + .collect() + }) + } + + pub async fn get_vehicleposition( + &self, + start_time: i64, + stop_time: i64, + vin: Option<&String>, + trigger: Option<&String>, + latest_only: bool, + ) -> Result, InfluxError> { + // Build Query + let time_filter = format!("range(start: {}, stop: {})", start_time, stop_time); + let vin_filter = match vin { + Some(v) => format!(r#"filter(fn: (r) => r["{}"] == "{}""#, influx_client::TAG_VIN, v), + None => FILTER_TAG_ANY_VIN.to_string(), + }; + let trigger_filter = match trigger { + Some(t) => format!(r#"filter(fn: (r) => r["{}"] == "{}")"#, influx_client::TAG_TRIGGER, t), + None => FILTER_TAG_ANY_TRIGGER.to_string(), + }; + + let mut read_query = influxrs::Query::new(format!(r#"from(bucket: "{}")"#, self.influx_con.bucket)) + .then(time_filter) + .then(FILTER_MEASUREMENT_SNAPSHOT) + .then(vin_filter) + .then(trigger_filter) + .then(FILTER_FIELDS_POSITION); + if latest_only { + read_query = read_query.then("last()"); + } + read_query = read_query + .then(r#"pivot(rowKey: ["_time"], columnKey: ["_field"], valueColumn: "_value")"#); + + self.influx_con.client.query(read_query).await.map(|measurements| { + measurements + .into_iter() + .filter_map(|entry| { + match ( + entry.get(influx_client::TAG_VIN), + entry.get(influx_client::TAG_TRIGGER), + unpack_time(entry.get(influx_client::FIELD_CREATED_DATE_TIME)), + ) { + (Some(vin), Some(trigger), Some(created_date_time)) => { + let gnss_position = match ( + unpack_time(entry.get(influx_client::FIELD_POSITION_DATE_TIME)), + unpack_value_f64(entry.get(influx_client::FIELD_LONGITUDE)), + unpack_value_f64(entry.get(influx_client::FIELD_LATITUDE)), + ) { + (Some(position_date_time), Some(longitude), Some(latitude)) => { + Some(GnssPositionObject { + latitude, + longitude, + heading: unpack_value_i32(entry.get(influx_client::FIELD_HEADING)), + altitude: unpack_value_i32(entry.get(influx_client::FIELD_ALTITUDE)), + speed: unpack_value_f64(entry.get(influx_client::FIELD_SPEED)), + position_date_time, + }) + } + _ => None, + }; + + // set vehicle positions from result + Some(VehiclePositionObject { + vin: vin.to_string(), + trigger_type: TriggerObject::new( + trigger.to_string(), + "RFMS".to_string(), + ), + created_date_time, + received_date_time: chrono::Utc::now(), + gnss_position, + wheel_based_speed: unpack_value_f64(entry.get(influx_client::FIELD_WHEEL_BASED_SPEED)), + tachograph_speed: unpack_value_f64(entry.get(influx_client::FIELD_TACHOGRAPH_SPEED)), + }) + } + _ => None, + } + }) + .collect() + }) + } +} diff --git a/components/fms-server/src/main.rs b/components/fms-server/src/main.rs new file mode 100644 index 0000000..d745518 --- /dev/null +++ b/components/fms-server/src/main.rs @@ -0,0 +1,137 @@ +// SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +use axum::http::StatusCode; +use axum::{routing::get, Json, Router}; + +use axum::extract::{Query, State}; +use clap::Command; +use log::{error, info}; + +use serde_json; +use serde_json::json; +use std::collections::HashMap; +use std::process; +use std::str::FromStr; +use std::sync::Arc; + +use chrono::{DateTime, Utc}; + +use influx_reader::InfluxReader; + +mod influx_reader; +mod models; + +#[tokio::main] +async fn main() { + env_logger::init(); + + let mut parser = Command::new("rFMS server") + .about("Exposes data from an InfluxDB via an rFMS API endpoint."); + parser = influx_client::connection::add_command_line_args(parser); + let args = parser.get_matches(); + let influx_reader = InfluxReader::new(&args).map_or_else( + |e| { + error!("failed to create InfluxDB client: {e}"); + process::exit(1); + }, + Arc::new, + ); + info!("starting rFMS server"); + let app = Router::new() + .route("/", get(root)) + .route("/rfms/vehicleposition", get(get_vehicleposition)) + .route("/rfms/vehicles", get(get_vehicles)) + .with_state(influx_reader); + axum::Server::bind(&"0.0.0.0:8081".parse().unwrap()) + .serve(app.into_make_service()) + .await + .unwrap(); +} + +async fn root() -> &'static str { + "Welcome to the rFMS server. The following endpoints are implemented: '/rfms/vehicleposition and /rfms/vehicles'" +} + +async fn get_vehicleposition( + State(influx_server): State>, + Query(params): Query>, +) -> Result, StatusCode> { + let start_time = params.get("starttime").map_or(0, |text| { + DateTime::::from_str(text).map_or(0, |time| time.timestamp()) + }); + + let stop_time = params + .get("stoptime") + .map_or_else(|| Utc::now().timestamp(), |text| { + DateTime::::from_str(text).map_or_else(|_| Utc::now().timestamp(), |time| time.timestamp()) + }); + + let vin = params.get("vin"); + let trigger_filter = params.get("triggerFilter"); + let latest_only = params + .get("latestOnly") + .map_or(false, |text| text.parse().unwrap_or(false)); + + influx_server + .get_vehicleposition(start_time, stop_time, vin, trigger_filter, latest_only) + .await + .map(|positions| { + let result = json!(models::VehiclePositionResponseObject { + vehicle_position_response: + models::VehiclePositionResponseObjectVehiclePositionResponse { + vehicle_positions: Some(positions) + }, + more_data_available: false, + more_data_available_link: None, + request_server_date_time: chrono::Utc::now() + }); + + Json(result) + }) + .map_err(|e| { + error!("error retrieving vehicle positions: {e}"); + StatusCode::INTERNAL_SERVER_ERROR + }) +} + +async fn get_vehicles( + State(influx_server): State>, + Query(_params): Query>, +) -> Result, StatusCode> { + influx_server + .get_vehicles() + .await + .map(|vehicles| { + let response = models::VehicleResponseObjectVehicleResponse { + vehicles: Some(vehicles), + }; + + let result_object = json!(models::VehicleResponseObject { + vehicle_response: response, + more_data_available: false, + more_data_available_link: None, + }); + Json(result_object) + }) + .map_err(|e| { + error!("error retrieving vehicle status: {e}"); + StatusCode::INTERNAL_SERVER_ERROR + }) +} diff --git a/components/fms-server/src/models.rs b/components/fms-server/src/models.rs new file mode 100644 index 0000000..69fb050 --- /dev/null +++ b/components/fms-server/src/models.rs @@ -0,0 +1,518 @@ +// SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + + +use crate::models; + +use serde::Deserialize; +use serde::Serialize; + +#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] +pub struct VehiclePositionObject { + /// vehicle identification number. See ISO 3779 (17 characters) + #[serde(rename = "vin")] + pub vin: String, + + #[serde(rename = "triggerType")] + pub trigger_type: TriggerObject, + + /// When the data was retrieved in the vehicle in iso8601 format. + #[serde(rename = "createdDateTime")] + pub created_date_time: chrono::DateTime::, + + /// Reception at Server. To be used for handling of \"more data available\" in iso8601 format. + #[serde(rename = "receivedDateTime")] + pub received_date_time: chrono::DateTime::, + + #[serde(rename = "gnssPosition")] + #[serde(skip_serializing_if="Option::is_none")] + pub gnss_position: Option, + + /// Wheel-Based Vehicle Speed in km/h (Speed of the vehicle as calculated from wheel or tailshaft speed) + #[serde(rename = "wheelBasedSpeed")] + #[serde(skip_serializing_if="Option::is_none")] + pub wheel_based_speed: Option, + + /// Tachograph vehicle speed in km/h (Speed of the vehicle registered by the tachograph) + #[serde(rename = "tachographSpeed")] + #[serde(skip_serializing_if="Option::is_none")] + pub tachograph_speed: Option, + +} + +/// This description is placed here due to limitations of describing references in OpenAPI Property __driverId__: The driver id of driver. (independant whether it is driver or Co-driver) This is only set if the TriggerType = DRIVER_LOGIN, DRIVER_LOGOUT, DRIVER_1_WORKING_STATE_CHANGED or DRIVER_2_WORKING_STATE_CHANGED For DRIVER_LOGIN it is the id of the driver that logged in For DRIVER_LOGOUT it is the id of the driver that logged out For DRIVER_1_WORKING_STATE_CHANGED it is the id of driver 1 For DRIVER_2_WORKING_STATE_CHANGED it is the id of driver 2 Property __tellTaleInfo__: The tell tale(s) that triggered this message. This is only set if the TriggerType = TELL_TALE +#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] +pub struct TriggerObject { + /// Trigger types for Context=RFMS: TIMER - Data was sent due to a timer trigger. (Timer value set outside rFMS scope) IGNITION_ON - Data was sent due to an ignition on IGNITION_OFF - Data was sent due to an ignition off PTO_ENABLED - Data was sent due to that a PTO was enabled, will be sent for each PTO that gets enabled PTO_DISABLED - Data was sent due to that a PTO was disabled, will be sent for each PTO that gets disabled. DRIVER_LOGIN - Data was sent due to a successful driver login. DRIVER_LOGOUT - Data was sent due to a driver logout TELL_TALE - Data was sent due to that at least one tell tale changed state ENGINE_ON - Data was sent due to an engine on. For electric motor crank is on ENGINE_OFF - Data was sent due to an engine off. For electric motor crank is off DRIVER_1_WORKING_STATE_CHANGED - Data was sent due to that driver 1 changed working state DRIVER_2_WORKING_STATE_CHANGED - Data was sent due to that driver 2 changed working state DISTANCE_TRAVELLED - Data was sent due to that a set distance was travelled. (Distance set outside rFMS scope) FUEL_TYPE_CHANGE - Data was sent due to that the type of fuel currently being utilized by the vehicle changed PARKING_BRAKE_SWITCH_CHANGE - Data was sent due to that the parking brake state has changed BATTERY_PACK_CHARGING_STATUS_CHANGE - Data was sent due to a change in the battery pack charging status. BATTERY_PACK_CHARGING_CONNECTION_STATUS_CHANGE - Data was sent due to a change in the battery pack charging connection status. TRAILER_CONNECTED - One or several trailers were connected TRAILER_DISCONNECTED - One or several trailers were disconnected + #[serde(rename = "triggerType")] + pub trigger_type: String, + + /// The context defines if this is part of the standard or OEM specific. rFMS standard values VOLVO TRUCKS, SCANIA, DAIMLER, IVECO, DAF, MAN, RENAULT TRUCKS, VDL, VOLVO BUSES, IVECO BUS, IRISBUS If the Trigger is defined in the rFMS standard, the Context = RFMS + #[serde(rename = "context")] + pub context: String, + + /// Additional TriggerInfo content for OEM specific triggers E.g. TRAILER_ATTACHED_TRIGGER [id of trailer] + #[serde(rename = "triggerInfo")] + #[serde(skip_serializing_if="Option::is_none")] + pub trigger_info: Option>, + + #[serde(rename = "driverId")] + #[serde(skip_serializing_if="Option::is_none")] + pub driver_id: Option, + + /// The id of a PTO. This is only set if the TriggerType = PTO_ENABLED or PTO_DISABLED + #[serde(rename = "ptoId")] + #[serde(skip_serializing_if="Option::is_none")] + pub pto_id: Option, + + #[serde(rename = "tellTaleInfo")] + #[serde(skip_serializing_if="Option::is_none")] + pub tell_tale_info: Option, + + #[serde(rename = "chargingStatusInfo")] + #[serde(skip_serializing_if="Option::is_none")] + pub charging_status_info: Option, + + #[serde(rename = "chargingConnectionStatusInfo")] + #[serde(skip_serializing_if="Option::is_none")] + pub charging_connection_status_info: Option, + +} + +impl TriggerObject { + #[allow(clippy::new_without_default)] + pub fn new(trigger_type: String, context: String, ) -> TriggerObject { + TriggerObject { + trigger_type, + context, + trigger_info: None, + driver_id: None, + pto_id: None, + tell_tale_info: None, + charging_status_info: None, + charging_connection_status_info: None, + } + } +} + +#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] +pub struct GnssPositionObject { + /// Latitude (WGS84 based) + #[serde(rename = "latitude")] + pub latitude: f64, + + /// Longitude (WGS84 based) + #[serde(rename = "longitude")] + pub longitude: f64, + + /// The direction of the vehicle (0-359) + #[serde(rename = "heading")] + #[serde(skip_serializing_if="Option::is_none")] + pub heading: Option, + + /// The altitude of the vehicle. Where 0 is sea level, negative values below sealevel and positive above sealevel. Unit in meters. + #[serde(rename = "altitude")] + #[serde(skip_serializing_if="Option::is_none")] + pub altitude: Option, + + /// The GNSS(e.g. GPS)-speed in km/h + #[serde(rename = "speed")] + #[serde(skip_serializing_if="Option::is_none")] + pub speed: Option, + + /// The time of the position data in iso8601 format. + #[serde(rename = "positionDateTime")] + pub position_date_time: chrono::DateTime::, + +} + +#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] +pub struct DriverIdObject { + #[serde(rename = "tachoDriverIdentification")] + #[serde(skip_serializing_if="Option::is_none")] + pub tacho_driver_identification: Option, + + #[serde(rename = "oemDriverIdentification")] + #[serde(skip_serializing_if="Option::is_none")] + pub oem_driver_identification: Option, + +} + +#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] +pub struct TellTaleObject { + // Note: inline enums are not fully supported by openapi-generator + #[serde(rename = "tellTale")] + pub tell_tale: String, + + /// The OemTellTale is only set when the TellTale == OEM_SPECIFIC_TELL_TALE. This is an OEM specific string defining a tell tale in the OEM context. + #[serde(rename = "oemTellTale")] + #[serde(skip_serializing_if="Option::is_none")] + pub oem_tell_tale: Option, + + /// The current state of the tell tale. + // Note: inline enums are not fully supported by openapi-generator + #[serde(rename = "state")] + pub state: String, + +} + +/// Additional information can be provided if the trigger type is BATTERY_PACK_CHARGING_STATUS_CHANGE. +#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] +pub struct TriggerObjectChargingStatusInfo { + /// CHARGING_STARTED - Charging has started CHARGING_COMPLETED - Charging is completed CHARGING_INTERRUPTED - Charging has been interrupted (no error) ERROR - An error occurred when charging ESTIMATED_COMPLETION_TIME_CHANGED - The estimated time for completed charging has changed. (Threshold is outside scope of rFMS) TIMER - A predefined time has passed since last charge status update. (Frequency is outside the scope of rFMS) CHARGING_LEVEL - The charging level has reached a predefined level. (Charging levels are outside the scope of rFMS) + // Note: inline enums are not fully supported by openapi-generator + #[serde(rename = "event")] + #[serde(skip_serializing_if="Option::is_none")] + pub event: Option, + + /// Details regarding the event. Content is OEM specific + #[serde(rename = "eventDetail")] + #[serde(skip_serializing_if="Option::is_none")] + pub event_detail: Option, + +} + +/// Additional information can be provided if the trigger type is BATTERY_PACK_CHARGING_CONNECTION_STATUS_CHANGE. +#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] +pub struct TriggerObjectChargingConnectionStatusInfo { + /// CONNECTING - Vehicle is being connected to a charger CONNECTED - Vehicle is connected to a charger DISCONNECTING - Vehicle is being disconnected from the charger DISCONNECTED - Vehicle is not connected to a charger ERROR - An error occurred + // Note: inline enums are not fully supported by openapi-generator + #[serde(rename = "event")] + #[serde(skip_serializing_if="Option::is_none")] + pub event: Option, + + /// Details regarding the event. Content is OEM specific + #[serde(rename = "eventDetail")] + #[serde(skip_serializing_if="Option::is_none")] + pub event_detail: Option, + +} + +#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] +pub struct DriverIdObjectTachoDriverIdentification { + /// The unique identification of a driver in a Member State. This fields is formatted according the definition for driverIdentification in COMMISSION REGULATION (EC) No 1360/2002 Annex 1b + #[serde(rename = "driverIdentification")] + pub driver_identification: String, + + /// The country alpha code of the Member State having issued the card. This fields is formatted according the definition for NationAlpha in COMMISSION REGULATION (EC) No 1360/2002 Annex 1b + #[serde(rename = "cardIssuingMemberState")] + pub card_issuing_member_state: String, + + /// Code to distinguish different types of equipment for the tachograph application. See description of the field 'DriverAuthenticationEquipment' in COMMISSION REGULATION (EC) No 1360/2002 Annex 1b + // Note: inline enums are not fully supported by openapi-generator + #[serde(rename = "driverAuthenticationEquipment")] + #[serde(skip_serializing_if="Option::is_none")] + pub driver_authentication_equipment: Option, + + /// A card replacement index. This fields is formatted according the definition for CardReplacementIndex (chap 2.26) in: COMMISSION REGULATION (EC) No 1360/2002 Annex 1b + #[serde(rename = "cardReplacementIndex")] + #[serde(skip_serializing_if="Option::is_none")] + pub card_replacement_index: Option, + + /// A card renewal index. This fields is formatted according the definition for CardRenewalIndex (chap 2.25) in: COMMISSION REGULATION (EC) No 1360/2002 Annex 1b + #[serde(rename = "cardRenewalIndex")] + #[serde(skip_serializing_if="Option::is_none")] + pub card_renewal_index: Option, + +} + +#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] +pub struct DriverIdObjectOemDriverIdentification { + /// Contains an optional id type (e.g. pin, USB, encrypted EU id...) + #[serde(rename = "idType")] + #[serde(skip_serializing_if="Option::is_none")] + pub id_type: Option, + + /// An OEM specific driver id. + #[serde(rename = "oemDriverIdentification")] + #[serde(skip_serializing_if="Option::is_none")] + pub oem_driver_identification: Option, + +} + +#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] +pub struct VehiclePositionResponseObject { + #[serde(rename = "vehiclePositionResponse")] + pub vehicle_position_response: models::VehiclePositionResponseObjectVehiclePositionResponse, + + /// This will be set to true if the result set was too large to be sent back in one reply. A new request must be sent to get the rest of the vehicle positions, where the starttime parameter must be supplied. The starttime should be set to the latest ReceivedDateTime + 1 second of the last vehicle in the result set of this message. + #[serde(rename = "moreDataAvailable")] + pub more_data_available: bool, + + /// Populated with the link to the next part of the result when moreDataAvailable is true. The link is relative, i.e. starts with /rfms/vehiclepositions, and preserves any query parameters from the original request. + #[serde(rename = "moreDataAvailableLink")] + #[serde(skip_serializing_if="Option::is_none")] + pub more_data_available_link: Option, + + /// Time to be used to ask for historical data at customers (for starttime), to solve the problem of having different times at server and clients. This is the time at the server when this request was received. To avoid losing any messages or get duplicates, this is the time that should be supplied in the startTime parameter in the next request in iso8601 format. + #[serde(rename = "requestServerDateTime")] + pub request_server_date_time: chrono::DateTime::, + +} + +#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] +pub struct VehiclePositionResponseObjectVehiclePositionResponse { + #[serde(rename = "vehiclePositions")] + #[serde(skip_serializing_if="Option::is_none")] + pub vehicle_positions: Option>, + +} + +#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] +pub struct VehicleResponseObject { + #[serde(rename = "vehicleResponse")] + pub vehicle_response: models::VehicleResponseObjectVehicleResponse, + + /// This will be set to true if the result set was too large to be sent back in one reply. A new request must be sent to get the rest of the vehicles, where the lastVin parameter must be supplied. The lastVin should be set to the VIN of the last vehicle in the result set of this message. + #[serde(rename = "moreDataAvailable")] + pub more_data_available: bool, + + /// Populated with the link to the next part of the result when moreDataAvailable is true. The link is relative, i.e. starts with /rfms/vehicles, and preserves any query parameters from the original request. + #[serde(rename = "moreDataAvailableLink")] + #[serde(skip_serializing_if="Option::is_none")] + pub more_data_available_link: Option, + +} + +#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[must_use] +pub enum VehiclesGetResponse { + /// OK + OK + (models::VehicleResponseObject) + , + /// The server cannot or will not process the request due to an apparent client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing) Possible reason: Mandatory field missing, e.g. Authentication Header empty or missing The comments for the 4xx codes are from the Wikipedia article [List of HTTP status codes](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_errors), which is released under the [Creative Commons Attribution-Share-Alike License 3.0](https://creativecommons.org/licenses/by-sa/3.0/). View authors on this [page](https://en.wikipedia.org/w/index.php?title=List_of_HTTP_status_codes&action=history). + TheServerCannotOrWillNotProcessTheRequestDueToAnApparentClientError + (models::ErrorObject) + , + /// Similar to 403 Forbidden, but specifically for use when authentication is required and has failed or has not yet been provided. The response must include a WWW-Authenticate header field containing a challenge applicable to the requested resource. See Basic access authentication and Digest access authentication. Possible reasons: Wrong credentials, Login credentials expired and/or Access token not valid or expired The comments for the 4xx codes are from the Wikipedia article [List of HTTP status codes](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_errors), which is released under the [Creative Commons Attribution-Share-Alike License 3.0](https://creativecommons.org/licenses/by-sa/3.0/). View authors on this [page](https://en.wikipedia.org/w/index.php?title=List_of_HTTP_status_codes&action=history). + SimilarTo + (models::ErrorObject) + , + /// The request was a valid request, but the server is refusing to respond to it. Unlike a 401 Unauthorized response, authenticating will make no difference. On servers where authentication is required, this commonly means that the provided credentials were successfully authenticated but that the credentials still do not grant the client permission to access the resource (e.g. a recognized user attempting to access restricted content) Possible reason: Insufficient rights for the service, no rights on any service of this vehicle and/or Response is too large The comments for the 4xx codes are from the Wikipedia article [List of HTTP status codes](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_errors), which is released under the [Creative Commons Attribution-Share-Alike License 3.0](https://creativecommons.org/licenses/by-sa/3.0/). View authors on this [page](https://en.wikipedia.org/w/index.php?title=List_of_HTTP_status_codes&action=history). + TheRequestWasAValidRequest + (models::ErrorObject) + , + /// The requested resource could not be found but may be available again in the future. Subsequent requests by the client are permissible Possible reason: vehicle unknown and/or rFMS-Version not supported The comments for the 4xx codes are from the Wikipedia article [List of HTTP status codes](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_errors), which is released under the [Creative Commons Attribution-Share-Alike License 3.0](https://creativecommons.org/licenses/by-sa/3.0/). View authors on this [page](https://en.wikipedia.org/w/index.php?title=List_of_HTTP_status_codes&action=history). + TheRequestedResourceCouldNotBeFoundButMayBeAvailableAgainInTheFuture + (models::ErrorObject) + , + /// Possible reason: unsupported Accept parameter sent + PossibleReason + (models::ErrorObject) + , + /// The user has sent too many requests in a given amount of time. Intended for use with rate limiting schemes Possible reason Request sent too often and/or Max concurrent calls + TheUserHasSentTooManyRequestsInAGivenAmountOfTime + (models::ErrorObject) +} + + +#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] +pub struct VehicleResponseObjectVehicleResponse { + #[serde(rename = "vehicles")] + #[serde(skip_serializing_if="Option::is_none")] + pub vehicles: Option>, + +} + +#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] +pub struct VehicleObject { + /// vehicle identification number. See ISO 3779 (17 characters) + #[serde(rename = "vin")] + pub vin: String, + + /// The customer's name for the vehicle. + #[serde(rename = "customerVehicleName")] + #[serde(skip_serializing_if="Option::is_none")] + pub customer_vehicle_name: Option, + + /// The vehicle brand. rFMS standard values VOLVO TRUCKS, SCANIA, DAIMLER, IVECO, DAF, MAN, RENAULT TRUCKS, VDL, VOLVO BUSES, IVECO BUS, IRISBUS + #[serde(rename = "brand")] + #[serde(skip_serializing_if="Option::is_none")] + pub brand: Option, + + #[serde(rename = "productionDate")] + #[serde(skip_serializing_if="Option::is_none")] + pub production_date: Option, + + /// Indicates the type of vehicle. rFMS standard values TRUCK, BUS, VAN + #[serde(rename = "type")] + #[serde(skip_serializing_if="Option::is_none")] + pub r#type: Option, + + /// Indicates the model of the vehicle. OEM specific value. + #[serde(rename = "model")] + #[serde(skip_serializing_if="Option::is_none")] + pub model: Option, + + /// The possible fuel types supported by this vehicle, formatted as the HEX id number according to SPN 5837. This does NOT indicate which fuel type that is presently being used. + #[serde(rename = "possibleFuelType")] + #[serde(skip_serializing_if="Option::is_none")] + pub possible_fuel_type: Option>, + + /// The emission level this vehicle supports. Possible values: European Union, Heavy-Duty Truck and Bus Engines: EURO_III, EURO_III_EEV, EURO_IV, EURO_V, EURO_VI European Union, Nonroad Engines: EURO_STAGE_III, EURO_STAGE_IV, EURO_STAGE_V United_States, Heavy-Duty Truck and Bus Engines: EPA_2004, EPA_2007, EPA_2010, EPA_2015_NOX10, EPA_2015_NOX05, EPA_2015_NOX02 United_States, Nonroad Engines: EPA_TIER_2, EPA_TIER_3, EPA_TIER_4_2008, EPA_TIER_4_2013 Brazil, Heavy-Duty Truck and Bus Engines: PROCONVE_P5, PROCONVE_P6, PROCONVE_P7 Brazil, Nonroad Engines: PROCONVE_MARI + #[serde(rename = "emissionLevel")] + #[serde(skip_serializing_if="Option::is_none")] + pub emission_level: Option, + + /// This parameter indicates how the tell tales shall be interpreted, the code is unique for each OEM. One OEM can have different interpretations depending on vehicle type. + #[serde(rename = "tellTaleCode")] + #[serde(skip_serializing_if="Option::is_none")] + pub tell_tale_code: Option, + + /// The chassis type of the vehicle. OEM specific value. This is used mainly for buses + #[serde(rename = "chassisType")] + #[serde(skip_serializing_if="Option::is_none")] + pub chassis_type: Option, + + /// Number of axles on the vehicle. This is used mainly for buses + #[serde(rename = "noOfAxles")] + #[serde(skip_serializing_if="Option::is_none")] + pub no_of_axles: Option, + + /// Total fuel tank volume for all tanks in milliltres. + #[serde(rename = "totalFuelTankVolume")] + #[serde(skip_serializing_if="Option::is_none")] + pub total_fuel_tank_volume: Option, + + /// Total gas tank capacity for all tanks in kilograms. + #[serde(rename = "totalFuelTankCapacityGaseous")] + #[serde(skip_serializing_if="Option::is_none")] + pub total_fuel_tank_capacity_gaseous: Option, + + /// Total battery pack capacity in watt hours. + #[serde(rename = "totalBatteryPackCapacity")] + #[serde(skip_serializing_if="Option::is_none")] + pub total_battery_pack_capacity: Option, + + /// The type of tachograph in the vehicle. rFMS standard values MTCO, DTCO, TSU, DTCO_G1, DTCO_G2, NONE DTCO - Digital tachograph, unknown generation DTCO_G1 - Digital tachograph generation 1 DTCO_G2 - Digital tachograph generation 2 NONE - No tachograph in the vehicle MTCO - Modular tachograph TSU - Tachograph simulator + #[serde(rename = "tachographType")] + #[serde(skip_serializing_if="Option::is_none")] + pub tachograph_type: Option, + + /// The type of gearbox the vehicle is equipped with. rFMS standard values MANUAL, AUTOMATIC, SEMI_AUTOMATIC, NO_GEAR (e.g electrical) + #[serde(rename = "gearboxType")] + #[serde(skip_serializing_if="Option::is_none")] + pub gearbox_type: Option, + + /// The type of body on the chassis. rFMS standard values CITY_BUS, INTERCITY_BUS, COACH. This is used mainly for buses. + #[serde(rename = "bodyType")] + #[serde(skip_serializing_if="Option::is_none")] + pub body_type: Option, + + /// The door configuration. The door order definition is OEM specific. E.g. [1, 2, 2] means the bus has 3 doors: 1 front door, double doors for door 2 and 3. This is used mainly for buses. + #[serde(rename = "doorConfiguration")] + #[serde(skip_serializing_if="Option::is_none")] + pub door_configuration: Option>, + + /// If the vehicle is equipped with a ramp or not. This is used mainly for buses. + #[serde(rename = "hasRampOrLift")] + #[serde(skip_serializing_if="Option::is_none")] + pub has_ramp_or_lift: Option, + + /// Paths that the client is authorized to call + #[serde(rename = "authorizedPaths")] + #[serde(skip_serializing_if="Option::is_none")] + pub authorized_paths: Option>, + +} + +impl VehicleObject { + pub fn new(vin : String) -> VehicleObject { + VehicleObject { + vin: vin, + customer_vehicle_name: None, + brand: None, + production_date: None, + r#type: None, + model: None, + possible_fuel_type: None, + emission_level: None, + tell_tale_code: None, + chassis_type: None, + no_of_axles: None, + total_fuel_tank_volume: None, + total_fuel_tank_capacity_gaseous: None, + total_battery_pack_capacity: None, + tachograph_type: None, + gearbox_type: None, + body_type: None, + door_configuration: None, + has_ramp_or_lift: None, + authorized_paths: None, + } + } +} + +/// Indicates when the vehicle was produced. +#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] +pub struct VehicleObjectProductionDate { + /// Day of the month where first day of the month is 1 + #[serde(rename = "day")] + #[serde(skip_serializing_if="Option::is_none")] + pub day: Option, + + /// Month of the year, where January is value 1 + #[serde(rename = "month")] + #[serde(skip_serializing_if="Option::is_none")] + pub month: Option, + + #[serde(rename = "year")] + #[serde(skip_serializing_if="Option::is_none")] + pub year: Option, + +} + +/// Optional responses for error codes, detailing the error if needed +#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] +pub struct ErrorObject { + /// An identifier for this error + #[serde(rename = "error")] + #[serde(skip_serializing_if="Option::is_none")] + pub error: Option, + + /// A description of the error + #[serde(rename = "error_description")] + #[serde(skip_serializing_if="Option::is_none")] + pub error_description: Option, + + /// A URI providing more information + #[serde(rename = "error_uri")] + #[serde(skip_serializing_if="Option::is_none")] + pub error_uri: Option, + +} + + diff --git a/components/influx-client/Cargo.toml b/components/influx-client/Cargo.toml new file mode 100644 index 0000000..d458009 --- /dev/null +++ b/components/influx-client/Cargo.toml @@ -0,0 +1,41 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +[package] +name = "influx-client" +version.workspace = true +edition.workspace = true +license.workspace = true +repository.workspace = true +documentation.workspace = true +readme.workspace = true + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +clap = { workspace = true, features = ["std", "env", "color", "help", "usage", "error-context", "suggestions"]} +fms-proto = { workspace = true, optional = true } +protobuf = { workspace = true, optional = true } +influxrs = { workspace = true } +isahc = { version = "1.7", default-features = false, features = ["http2", "static-ssl", "static-curl", "text-decoding"] } +log = { workspace = true } + +[features] +default = ["writer"] +writer = ["dep:fms-proto", "dep:protobuf"] diff --git a/components/influx-client/src/connection.rs b/components/influx-client/src/connection.rs new file mode 100644 index 0000000..f9e1225 --- /dev/null +++ b/components/influx-client/src/connection.rs @@ -0,0 +1,165 @@ +// SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +use clap::{ArgMatches, Arg, ArgGroup, Command}; +use influxrs::InfluxClient; +use log::{error, info}; + +const PARAM_INFLUXDB_BUCKET: &str = "influxdb-bucket"; +const PARAM_INFLUXDB_ORG: &str = "influxdb-org"; +const PARAM_INFLUXDB_URI: &str = "influxdb-uri"; +const PARAM_INFLUXDB_TOKEN: &str = "influxdb-token"; +const PARAM_INFLUXDB_TOKEN_FILE: &str = "influxdb-token-file"; + +/// Adds command line arguments to an existing command line which can be +/// used to configure the connection to an InfluxDB server. +/// +/// The following arguments are being added: +/// +/// | long name | environment variable | default value | +/// |---------------------|----------------------|---------------| +/// | influxdb-bucket | INFLUXDB_BUCKET | `demo` | +/// | influxdb-org | INFLUXDB_ORG | `sdv` | +/// | influxdb-uri | INFLUXDB_URI | - | +/// | influxdb-token | INFLUXDB_TOKEN | - | +/// | influxdb-token-file | INFLUXDB_TOKEN_FILE | - | +/// +pub fn add_command_line_args(command_line: Command) -> Command { + command_line + .arg( + Arg::new(PARAM_INFLUXDB_URI) + .value_parser(clap::builder::NonEmptyStringValueParser::new()) + .long(PARAM_INFLUXDB_URI) + .alias("ia") + .help("The HTTP(S) URI of the InfluxDB server to write data to.") + .value_name("URI") + .required(true) + .env("INFLUXDB_URI"), + ) + .group(ArgGroup::new("influxdb-auth-token").required(true)) + .arg( + Arg::new(PARAM_INFLUXDB_TOKEN) + .value_parser(clap::builder::NonEmptyStringValueParser::new()) + .long(PARAM_INFLUXDB_TOKEN) + .alias("token") + .help("The API token to use for authenticating to the InfluxDB server.") + .group("influxdb-auth-token") + .value_name("TOKEN") + .env("INFLUXDB_API_TOKEN"), + ) + .arg( + Arg::new(PARAM_INFLUXDB_TOKEN_FILE) + .value_parser(clap::builder::NonEmptyStringValueParser::new()) + .long(PARAM_INFLUXDB_TOKEN_FILE) + .alias("token-file") + .help("The path to a file that contains the API token to use for authenticating to the InfluxDB server.") + .group("influxdb-auth-token") + .value_name("FILE") + .conflicts_with("influxdb-token") + .env("INFLUXDB_API_TOKEN_FILE"), + ) + .arg( + Arg::new(PARAM_INFLUXDB_ORG) + .value_parser(clap::builder::NonEmptyStringValueParser::new()) + .long(PARAM_INFLUXDB_ORG) + .alias("org") + .help("The name of the organization to connect to on the InfluxDB server.") + .value_name("NAME") + .required(false) + .default_value("sdv") + .env("INFLUXDB_ORG"), + ) + .arg( + Arg::new(PARAM_INFLUXDB_BUCKET) + .value_parser(clap::builder::NonEmptyStringValueParser::new()) + .long(PARAM_INFLUXDB_BUCKET) + .alias("bucket") + .help("The name of the bucket to write data to on the InfluxDB server.") + .value_name("NAME") + .required(false) + .default_value("demo") + .env("INFLUXDB_BUCKET"), + ) +} + +fn read_token_from_file(filename: &str) -> std::io::Result { + info!("reading token from file {filename}"); + std::fs::read_to_string(filename) + .map(|s| s.trim().to_string()) + .map_err(|e| { + error!("failed to read token from file [{filename}]: {e}"); + e + }) +} + +/// A connection to an InfluxDB server. +pub struct InfluxConnection { + pub client: InfluxClient, + pub bucket: String, +} + +impl InfluxConnection { + /// Creates a new connection to an InfluxDB server. + /// + /// Determines the parameters necessary for creating the connection from values specified on + /// the command line or via environment variables as defined by [`add_command_line_args`]. + /// + /// # Examples + /// + /// ``` + /// use clap::{ArgMatches, Arg, ArgGroup, Command}; + /// use influx_client::connection::InfluxConnection; + /// + /// let mut command = influx_client::add_command_line_args(Command::new("influx_client")); + /// let matches = command.get_matches_from(vec![ + /// "influx_client", + /// "--influxdb-uri", "http://my-influx.io", + /// "--influxdb-token", "some-token", + /// "--influxdb-bucket", "the-bucket", + /// ]); + /// let connection = InfluxConnection::new(&matches)?; + /// assert_eq!(connection.bucket, "the-bucket".to_string()); + /// # Ok::<(), Box>(()) + /// ``` + pub fn new(args: &ArgMatches) -> Result> { + let influx_uri = args.get_one::(PARAM_INFLUXDB_URI).unwrap().to_owned(); + let influx_token = match args.get_one::(PARAM_INFLUXDB_TOKEN) { + Some(token) => token.to_string(), + None => { + let file_name = args.get_one::(PARAM_INFLUXDB_TOKEN_FILE).unwrap(); + match read_token_from_file(file_name) { + Ok(token) => token, + Err(e) => return Err(Box::new(e)), + } + } + }; + let influx_org = args.get_one::(PARAM_INFLUXDB_ORG).unwrap().to_owned(); + let influx_bucket = args + .get_one::(PARAM_INFLUXDB_BUCKET) + .unwrap() + .to_owned(); + let client = InfluxClient::builder(influx_uri, influx_token, influx_org) + .build() + .unwrap(); + Ok(InfluxConnection { + client, + bucket: influx_bucket, + }) + } +} diff --git a/components/influx-client/src/lib.rs b/components/influx-client/src/lib.rs new file mode 100644 index 0000000..96cc14c --- /dev/null +++ b/components/influx-client/src/lib.rs @@ -0,0 +1,64 @@ +// SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +//! A client for accessing an InfluxDB server. +//! +//! Supports connecting to an InfluxDB server based on parameters +//! read from the command line or from environment variables. + +pub const FIELD_ALTITUDE: &str = "altitude"; +pub const FIELD_AMBIENT_AIR_TEMP: &str = "ambientAirTemperature"; +pub const FIELD_CATALYST_FUEL_LEVEL: &str = "catalystFuelLevel"; +pub const FIELD_CREATED_DATE_TIME: &str = "createdDateTime"; +pub const FIELD_DRIVER1_ID: &str = "driver1Id"; +pub const FIELD_DRIVER1_CARD_ISSUER: &str = "driver1IdCardIssuer"; +pub const FIELD_DRIVER1_WORKING_STATE: &str = "driver1WorkingState"; +pub const FIELD_DRIVER2_ID: &str = "driver2Id"; +pub const FIELD_DRIVER2_CARD_ISSUER: &str = "driver2IdCardIssuer"; +pub const FIELD_DRIVER2_WORKING_STATE: &str = "driver2WorkingState"; +pub const FIELD_ENGINE_SPEED: &str = "engineSpeed"; +pub const FIELD_ENGINE_TOTAL_FUEL_USED: &str = "engineTotalFuelUsed"; +pub const FIELD_ESTIMATED_DIST_TO_EMPTY_FUEL: &str = "estimatedDistanceToEmptyFuel"; +pub const FIELD_ESTIMATED_DIST_TO_EMPTY_TOTAL: &str = "estimatedDistanceToEmptyTotal"; +pub const FIELD_FUEL_LEVEL1: &str = "fuelLevel1"; +pub const FIELD_FUEL_LEVEL2: &str = "fuelLevel2"; +pub const FIELD_FUEL_TYPE: &str = "fuelType"; +pub const FIELD_GROSS_COMBINATION_VEHICLE_WEIGHT: &str = "grossCombinationVehicleWeight"; +pub const FIELD_HEADING: &str = "heading"; +pub const FIELD_HR_TOTAL_VEHICLE_DISTANCE: &str = "hrTotalVehicleDistance"; +pub const FIELD_LATITUDE: &str = "latitude"; +pub const FIELD_LONGITUDE: &str = "longitude"; +pub const FIELD_PARKING_BREAK_SWITCH: &str = "parkingBrakeSwitch"; +pub const FIELD_POSITION_DATE_TIME: &str = "positionDateTime"; +pub const FIELD_SPEED: &str = "speed"; +pub const FIELD_TACHOGRAPH_SPEED: &str = "tachographSpeed"; +pub const FIELD_TOTAL_ELECTRIC_MOTOR_HOURS: &str = "totalElectricMotorHours"; +pub const FIELD_TOTAL_ENGINE_HOURS: &str = "totalEngineHours"; +pub const FIELD_WHEEL_BASED_SPEED: &str = "wheelBasedSpeed"; + +pub const MEASUREMENT_HEADER: &str = "header"; +pub const MEASUREMENT_SNAPSHOT: &str = "snapshot"; + +pub const TAG_TRIGGER: &str = "trigger"; +pub const TAG_VIN: &str = "vin"; + +pub mod connection; +#[cfg(feature = "writer")] +pub mod writer; + diff --git a/components/influx-client/src/writer.rs b/components/influx-client/src/writer.rs new file mode 100644 index 0000000..afc1ed6 --- /dev/null +++ b/components/influx-client/src/writer.rs @@ -0,0 +1,307 @@ +// SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +//! Provides means to write a Vehicle's current status properties +//! to an InfluxDB as Influx *measurements*. +use clap::ArgMatches; +use log::{debug, warn}; +use std::time::{SystemTime, UNIX_EPOCH}; +use protobuf::well_known_types::timestamp::Timestamp; +use fms_proto::fms::VehicleStatus; +use influxrs::Measurement; + +use crate::connection::InfluxConnection; + +fn build_header_measurement( + vin: &str, + trigger: &str, + created_date_time: u128, + vehicle_status: &VehicleStatus, +) -> Option { + let mut builder = Measurement::builder(crate::MEASUREMENT_HEADER) + .tag(crate::TAG_TRIGGER, trigger) + .tag(crate::TAG_VIN, vin) + .field(crate::FIELD_CREATED_DATE_TIME, created_date_time); + + if let Some(value) = vehicle_status.hr_total_vehicle_distance { + builder = builder.field(crate::FIELD_HR_TOTAL_VEHICLE_DISTANCE, value); + } + if let Some(value) = vehicle_status.gross_combination_vehicle_weight { + builder = builder.field(crate::FIELD_GROSS_COMBINATION_VEHICLE_WEIGHT, value); + } + if let Some(value) = vehicle_status.total_engine_hours { + builder = builder.field(crate::FIELD_TOTAL_ENGINE_HOURS, value); + } + if let Some(value) = vehicle_status.total_electric_motor_hours { + builder = builder.field(crate::FIELD_TOTAL_ELECTRIC_MOTOR_HOURS, value); + } + if let Some(value) = vehicle_status.engine_total_fuel_used { + builder = builder.field(crate::FIELD_ENGINE_TOTAL_FUEL_USED, value); + } + + if let Some(tacho_driver_id) = vehicle_status.driver1_id.clone().into_option() + .and_then(|driver_id| driver_id.tacho_driver_identification.into_option()) { + + builder = builder.field(crate::FIELD_DRIVER1_ID, tacho_driver_id.driver_identification); + builder = builder.field(crate::FIELD_DRIVER1_CARD_ISSUER, tacho_driver_id.card_issuing_memberState); + } + + match builder.build() { + Ok(measurement) => Some(measurement), + Err(e) => { + debug!("failed to create header Measurement: {e}"); + None + } + } +} + +fn build_snapshot_measurement( + vin: &str, + trigger: &str, + created_date_time: u128, + vehicle_status: &VehicleStatus, +) -> Option { + + let mut builder = Measurement::builder(crate::MEASUREMENT_SNAPSHOT) + .tag(crate::TAG_TRIGGER, trigger) + .tag(crate::TAG_VIN, vin) + .field(crate::FIELD_CREATED_DATE_TIME, created_date_time); + + if let Some(snapshot_data) = vehicle_status.snapshot_data.clone().into_option() { + if let Some(value) = snapshot_data.wheel_based_speed { + builder = builder.field(crate::FIELD_WHEEL_BASED_SPEED, value); + } + if let Some(value) = snapshot_data.tachograph_speed { + builder = builder.field(crate::FIELD_TACHOGRAPH_SPEED, value); + } + if let Some(value) = snapshot_data.fuel_type { + builder = builder.field(crate::FIELD_FUEL_TYPE, value); + } + if let Some(value) = snapshot_data.engine_speed { + builder = builder.field(crate::FIELD_ENGINE_SPEED, value); + } + if let Some(value) = snapshot_data.catalyst_fuel_level { + builder = builder.field(crate::FIELD_CATALYST_FUEL_LEVEL, value); + } + if let Some(value) = snapshot_data.fuel_level1 { + builder = builder.field(crate::FIELD_FUEL_LEVEL1, value); + } + if let Some(value) = snapshot_data.fuel_level2 { + builder = builder.field(crate::FIELD_FUEL_LEVEL2, value); + } + if let Some(value) = snapshot_data.driver1_working_state { + builder = builder.field(crate::FIELD_DRIVER1_WORKING_STATE, value); + } + if let Some(value) = snapshot_data.driver2_working_state { + builder = builder.field(crate::FIELD_DRIVER2_WORKING_STATE, value); + } + if let Some(value) = snapshot_data.ambient_air_temperature { + builder = builder.field(crate::FIELD_AMBIENT_AIR_TEMP, value); + } + if let Some(value) = snapshot_data.parking_brake_engaged { + builder = builder.field(crate::FIELD_PARKING_BREAK_SWITCH, value); + } + + if let Some(current_location) = snapshot_data.gnss_position.into_option() { + builder = builder + .field(crate::FIELD_LATITUDE, current_location.latitude) + .field(crate::FIELD_LONGITUDE, current_location.longitude); + + if let Some(value) = current_location.heading { + builder = builder.field(crate::FIELD_HEADING, value); + } + + if let Some(value) = current_location.altitude { + builder = builder.field(crate::FIELD_ALTITUDE, value); + } + + if let Some(value) = current_location.speed { + builder = builder.field(crate::FIELD_SPEED, value); + } + + if let Some(instant) = current_location.instant.clone().into_option() { + builder = builder.field(crate::FIELD_POSITION_DATE_TIME, instant.seconds); + } + } + + if let Some(distance_to_empty) = snapshot_data + .estimated_distance_to_empty + .into_option() + { + if let Some(value) = distance_to_empty.fuel { + builder = builder.field(crate::FIELD_ESTIMATED_DIST_TO_EMPTY_FUEL, value); + } + if let Some(value) = distance_to_empty.total { + builder = builder.field(crate::FIELD_ESTIMATED_DIST_TO_EMPTY_TOTAL, value); + } + } + + if let Some(tacho_driver_id) = snapshot_data.driver2_id.clone().into_option() + .and_then(|driver_id| driver_id.tacho_driver_identification.into_option()) { + builder = builder + .field(crate::FIELD_DRIVER2_ID, tacho_driver_id.driver_identification) + .field( + crate::FIELD_DRIVER2_CARD_ISSUER, + tacho_driver_id.card_issuing_memberState, + ); + } + } + + match builder.build() { + Ok(measurement) => Some(measurement), + Err(e) => { + debug!("failed to create snapshot Measurement: {e}"); + None + } + } +} + +/// A facade to an InfluxDB server for publishing Vehicle status information. +pub struct InfluxWriter { + influx_con: InfluxConnection, +} + +impl InfluxWriter { + + /// Creates a new writer. + /// + /// Determines the parameters necessary for creating the writer from values specified on + /// the command line or via environment variables as defined by [`super::add_command_line_args`]. + pub fn new(args: &ArgMatches) -> Result> { + InfluxConnection::new(args).map(|con| InfluxWriter { influx_con: con }) + } + + /// Writes Vehicle status information as measurements to the InfluxDB server. + /// + /// The measurements are being written to the *bucket* in the *organization* that have been + /// configured via command line arguments and/or environment variables passed in to [`self::InfluxWriter::new()`]. + /// + /// This function writes the current vehicle status to InfluxDB by means of two measurements: + /// + /// * *header* - contains the following tags/fields: + /// + /// | Type | Name | Description | + /// | ----- | --------------- | -------------------------------- | + /// | tag | trigger | The type of event that triggered the reporting of the vehicle status. | + /// | tag | vin | The vehicle's identification number. | + /// | field | createdDateTime | The instant of time (milliseconds since UNIX epoch) at which the vehicle status information had been created. | + /// | field | hrTotalVehicleDistance | The accumulated distance travelled by the vehicle during its operation in meter. | + /// | field | grossCombinationVehicleWeight | The full vehicle weight in kg. | + /// | field | totalEngineHours | The total hours of operation for the vehicle combustion engine. | + /// | field | totalElectricMotorHours | The total hours the electric motor is ready for propulsion (i.e. crank mode). | + /// | field | engineTotalFuelUsed | The total fuel the vehicle has used during its lifetime in MilliLitres. | + /// | field | driver1Id | The unique identification of driver one in a Member State. | + /// | field | driver1IdCardIssuer | The country alpha code of the Member State having issued driver one's card. | + /// + /// * *snapshot* - contains the following tags/fields: + /// + /// | Type | Name | Description | + /// | ----- | --------------- | -------------------------------- | + /// | tag | trigger | The type of event that triggered the reporting of the vehicle status. | + /// | tag | vin | The vehicle's identification number. | + /// | field | createdDateTime | The instant of time (milliseconds since UNIX epoch) at which the vehicle status information had been created. | + /// | field | latitude | Latitude (WGS84 based). | + /// | field | longitude | Longitude (WGS84 based). | + /// | field | heading | The direction of the vehicle (0-359). | + /// | field | altitude | The altitude of the vehicle. Where 0 is sea level, negative values below sealevel and positive above sealevel. Unit in meters. | + /// | field | speed | The GNSS(e.g. GPS)-speed in km/h. | + /// | field | positionDateTime | The time of the position data in ISO 8601 format. | + /// | field | wheelBasedSpeed | The vehicle's wheel based speed. | + /// | field | tachographSpeed | The Tacho speed. | + /// | field | engineSpeed | The engine (Diesel/gaseous) speed in rev/min. | + /// | field | fuelType | Type of fuel currently being utilized by the vehicle acc. SPN 5837. | + /// | field | catalystFuelLevel | The AdBlue level percentage. | + /// | field | fuelLevel1 | Ratio of volume of fuel to the total volume of fuel storage container, in percent. | + /// | field | fuelLevel2 | Ratio of volume of fuel to the total volume of fuel storage container, in percent. When Fuel Level 2 is not used, Fuel Level 1 represents the total fuel in all fuel storage containers. When Fuel Level 2 is used, Fuel Level 1 represents the fuel level in the primary or left-side fuel storage container. | + /// | field | estimatedDistanceToEmptyFuel | Estimated distance to empty, fuel tank, in meters. | + /// | field | estimatedDistanceToEmptyTotal | Estimated distance to empty, summarizing fuel, gas and battery in meters. | + /// | field | driver1WorkingState | Tachograph Working state of the driver one. | + /// | field | driver2Id | The unique identification of driver two in a Member State. | + /// | field | driver2IdCardIssuer | The country alpha code of the Member State having issued driver two's card. | + /// | field | driver2WorkingState | Tachograph Working state of the driver two. | + /// | field | ambientAirTemperature | The Ambient air temperature in Celsius. | + /// | field | parkingBrakeSwitch | Switch signal which indicates when the parking brake is set. | + /// + pub async fn write_vehicle_status(&self, vehicle_status: &VehicleStatus) { + if vehicle_status.vin.len() == 0 { + debug!("ignoring vehicle status without VIN ..."); + return; + } + let created_timestamp: u128 = match vehicle_status.created.clone().into_option() { + Some(ts) => match >::try_into(ts) { + Ok(sys_time) => sys_time.duration_since(UNIX_EPOCH).unwrap().as_millis(), + Err(e) => { + debug!("ignoring vehicle status with improper created timestamp: {e}"); + return; + }, + }, + None => { + debug!("ignoring vehicle status without created timestamp"); + return; + } + }; + let trigger = match vehicle_status.trigger.clone().into_option() { + Some(t) => match t.context.as_str() { + "RFMS" => t.type_.clone(), + _ => { + debug!("ignoring vehicle status with unsupported trigger context [{}]", t.context); + return; + }, + }, + None => { + debug!("ignoring vehicle status without trigger"); + return; + }, + }; + + let mut measurements: Vec = Vec::new(); + if let Some(measurement) = build_header_measurement( + vehicle_status.vin.as_str(), + &trigger, + created_timestamp, + &vehicle_status, + ) { + debug!("writing header measurement to influxdb"); + measurements.push(measurement); + } + if let Some(measurement) = build_snapshot_measurement( + vehicle_status.vin.as_str(), + &trigger, + created_timestamp, + &vehicle_status, + ) { + debug!("writing snapshot measurement to influxdb"); + measurements.push(measurement); + } + + if !measurements.is_empty() { + if let Err(e) = self + .influx_con + .client + .write( + self.influx_con.bucket.as_str(), + measurements[..].try_into().unwrap(), + ) + .await + { + warn!("failed to write data to influx: {e}"); + } + } + } +} diff --git a/csv-provider/README.md b/csv-provider/README.md new file mode 100644 index 0000000..118e43b --- /dev/null +++ b/csv-provider/README.md @@ -0,0 +1,32 @@ + +# Using the CSV-Provider + +With the CSV-provider one can replay signals from a CSV-file to an instance of the Kuksa.val data broker. More details are available in the [upstream repository](https://github.com/eclipse/kuksa.val.feeders/tree/main/csv_provider). To execute the CSV-provider with the Docker Compose setup, add the argument '--profile csv': + +``` +docker compose -f ./fms-demo-compose.yaml --profile direct --profile csv up --detach +``` + +## Recording +The file in `csv-provider/signalsFmsRecording.csv` is a CSV representation of the beginning of the CAN-trace in `dbc-feeder/220421_MAN_Si_RIO_CAN_converted.log`. The CSV-representation of the full VSS-recording of the CAN-trace is available in the archive `csv-providers/signalsFmsRecording.zip`. + +You can perform your own recording for other traces by using the [CSV recorder from the Kuksa.val.feeders repository](https://github.com/eclipse/kuksa.val.feeders/tree/main/csv_provider). The script in [run_recorderFMS.sh](run_recorderFMS.sh) contains the signals to record for this use case. \ No newline at end of file diff --git a/csv-provider/run_recorderFMS.sh b/csv-provider/run_recorderFMS.sh new file mode 100644 index 0000000..f3674de --- /dev/null +++ b/csv-provider/run_recorderFMS.sh @@ -0,0 +1,948 @@ +#!/bin/bash + +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +python3 recorder.py -a $1 -p $2 -s \ +Vehicle.ADAS.ABS.IsEnabled \ +Vehicle.ADAS.ABS.IsEngaged \ +Vehicle.ADAS.ABS.IsError \ +Vehicle.ADAS.ActiveAutonomyLevel \ +Vehicle.ADAS.CruiseControl.IsActive \ +Vehicle.ADAS.CruiseControl.IsClutchSwitchPressed \ +Vehicle.ADAS.CruiseControl.IsEnabled \ +Vehicle.ADAS.CruiseControl.IsError \ +Vehicle.ADAS.CruiseControl.IsPowerTakeOffOn \ +Vehicle.ADAS.CruiseControl.SpeedSet \ +Vehicle.ADAS.EBA.IsEnabled \ +Vehicle.ADAS.EBA.IsEngaged \ +Vehicle.ADAS.EBA.IsError \ +Vehicle.ADAS.EBD.IsEnabled \ +Vehicle.ADAS.EBD.IsEngaged \ +Vehicle.ADAS.EBD.IsError \ +Vehicle.ADAS.ESC.IsEnabled \ +Vehicle.ADAS.ESC.IsEngaged \ +Vehicle.ADAS.ESC.IsError \ +Vehicle.ADAS.ESC.IsStrongCrossWindDetected \ +Vehicle.ADAS.ESC.RoadFriction.LowerBound \ +Vehicle.ADAS.ESC.RoadFriction.MostProbable \ +Vehicle.ADAS.ESC.RoadFriction.UpperBound \ +Vehicle.ADAS.LaneDepartureDetection.IsEnabled \ +Vehicle.ADAS.LaneDepartureDetection.IsError \ +Vehicle.ADAS.LaneDepartureDetection.IsWarning \ +Vehicle.ADAS.ObstacleDetection.IsEnabled \ +Vehicle.ADAS.ObstacleDetection.IsError \ +Vehicle.ADAS.ObstacleDetection.IsWarning \ +Vehicle.ADAS.PowerOptimizeLevel \ +Vehicle.ADAS.SupportedAutonomyLevel \ +Vehicle.ADAS.TCS.IsEnabled \ +Vehicle.ADAS.TCS.IsEngaged \ +Vehicle.ADAS.TCS.IsError \ +Vehicle.Acceleration.Lateral \ +Vehicle.Acceleration.Longitudinal \ +Vehicle.Acceleration.Vertical \ +Vehicle.AngularVelocity.Pitch \ +Vehicle.AngularVelocity.Roll \ +Vehicle.AngularVelocity.Yaw \ +Vehicle.AverageSpeed \ +Vehicle.Body.BodyType \ +Vehicle.Body.Hood.IsOpen \ +Vehicle.Body.Horn.IsActive \ +Vehicle.Body.Lights.Backup.IsDefect \ +Vehicle.Body.Lights.Backup.IsOn \ +Vehicle.Body.Lights.Beam.High.IsDefect \ +Vehicle.Body.Lights.Beam.High.IsOn \ +Vehicle.Body.Lights.Beam.Low.IsDefect \ +Vehicle.Body.Lights.Beam.Low.IsOn \ +Vehicle.Body.Lights.Brake.IsActive \ +Vehicle.Body.Lights.Brake.IsDefect \ +Vehicle.Body.Lights.DirectionIndicator.Left.IsDefect \ +Vehicle.Body.Lights.DirectionIndicator.Left.IsSignaling \ +Vehicle.Body.Lights.DirectionIndicator.Right.IsDefect \ +Vehicle.Body.Lights.DirectionIndicator.Right.IsSignaling \ +Vehicle.Body.Lights.Fog.Front.IsDefect \ +Vehicle.Body.Lights.Fog.Front.IsOn \ +Vehicle.Body.Lights.Fog.Rear.IsDefect \ +Vehicle.Body.Lights.Fog.Rear.IsOn \ +Vehicle.Body.Lights.Hazard.IsDefect \ +Vehicle.Body.Lights.Hazard.IsSignaling \ +Vehicle.Body.Lights.IsHighBeamSwitchOn \ +Vehicle.Body.Lights.LicensePlate.IsDefect \ +Vehicle.Body.Lights.LicensePlate.IsOn \ +Vehicle.Body.Lights.LightSwitch \ +Vehicle.Body.Lights.Parking.IsDefect \ +Vehicle.Body.Lights.Parking.IsOn \ +Vehicle.Body.Lights.Running.IsDefect \ +Vehicle.Body.Lights.Running.IsOn \ +Vehicle.Body.Mirrors.Left.IsHeatingOn \ +Vehicle.Body.Mirrors.Left.Pan \ +Vehicle.Body.Mirrors.Left.Tilt \ +Vehicle.Body.Mirrors.Right.IsHeatingOn \ +Vehicle.Body.Mirrors.Right.Pan \ +Vehicle.Body.Mirrors.Right.Tilt \ +Vehicle.Body.PowerOptimizeLevel \ +Vehicle.Body.Raindetection.Intensity \ +Vehicle.Body.RearMainSpoilerPosition \ +Vehicle.Body.RefuelPosition \ +Vehicle.Body.Trunk.Front.IsLocked \ +Vehicle.Body.Trunk.Front.IsOpen \ +Vehicle.Body.Trunk.Rear.IsLocked \ +Vehicle.Body.Trunk.Rear.IsOpen \ +Vehicle.Body.Windshield.Front.IsHeatingOn \ +Vehicle.Body.Windshield.Front.WasherFluid.IsLevelLow \ +Vehicle.Body.Windshield.Front.WasherFluid.Level \ +Vehicle.Body.Windshield.Front.Wiping.Intensity \ +Vehicle.Body.Windshield.Front.Wiping.IsWipersWorn \ +Vehicle.Body.Windshield.Front.Wiping.Mode \ +Vehicle.Body.Windshield.Front.Wiping.System.ActualPosition \ +Vehicle.Body.Windshield.Front.Wiping.System.DriveCurrent \ +Vehicle.Body.Windshield.Front.Wiping.System.Frequency \ +Vehicle.Body.Windshield.Front.Wiping.System.IsBlocked \ +Vehicle.Body.Windshield.Front.Wiping.System.IsEndingWipeCycle \ +Vehicle.Body.Windshield.Front.Wiping.System.IsOverheated \ +Vehicle.Body.Windshield.Front.Wiping.System.IsPositionReached \ +Vehicle.Body.Windshield.Front.Wiping.System.IsWiperError \ +Vehicle.Body.Windshield.Front.Wiping.System.IsWiping \ +Vehicle.Body.Windshield.Front.Wiping.System.Mode \ +Vehicle.Body.Windshield.Front.Wiping.System.TargetPosition \ +Vehicle.Body.Windshield.Front.Wiping.WiperWear \ +Vehicle.Body.Windshield.Rear.IsHeatingOn \ +Vehicle.Body.Windshield.Rear.WasherFluid.IsLevelLow \ +Vehicle.Body.Windshield.Rear.WasherFluid.Level \ +Vehicle.Body.Windshield.Rear.Wiping.Intensity \ +Vehicle.Body.Windshield.Rear.Wiping.IsWipersWorn \ +Vehicle.Body.Windshield.Rear.Wiping.Mode \ +Vehicle.Body.Windshield.Rear.Wiping.System.ActualPosition \ +Vehicle.Body.Windshield.Rear.Wiping.System.DriveCurrent \ +Vehicle.Body.Windshield.Rear.Wiping.System.Frequency \ +Vehicle.Body.Windshield.Rear.Wiping.System.IsBlocked \ +Vehicle.Body.Windshield.Rear.Wiping.System.IsEndingWipeCycle \ +Vehicle.Body.Windshield.Rear.Wiping.System.IsOverheated \ +Vehicle.Body.Windshield.Rear.Wiping.System.IsPositionReached \ +Vehicle.Body.Windshield.Rear.Wiping.System.IsWiperError \ +Vehicle.Body.Windshield.Rear.Wiping.System.IsWiping \ +Vehicle.Body.Windshield.Rear.Wiping.System.Mode \ +Vehicle.Body.Windshield.Rear.Wiping.System.TargetPosition \ +Vehicle.Body.Windshield.Rear.Wiping.WiperWear \ +Vehicle.Cabin.Convertible.Status \ +Vehicle.Cabin.Door.Row1.Left.IsChildLockActive \ +Vehicle.Cabin.Door.Row1.Left.IsLocked \ +Vehicle.Cabin.Door.Row1.Left.IsOpen \ +Vehicle.Cabin.Door.Row1.Left.Shade.Position \ +Vehicle.Cabin.Door.Row1.Left.Shade.Switch \ +Vehicle.Cabin.Door.Row1.Left.Window.IsChildLockEngaged \ +Vehicle.Cabin.Door.Row1.Left.Window.IsOpen \ +Vehicle.Cabin.Door.Row1.Left.Window.Position \ +Vehicle.Cabin.Door.Row1.Left.Window.Switch \ +Vehicle.Cabin.Door.Row1.Right.IsChildLockActive \ +Vehicle.Cabin.Door.Row1.Right.IsLocked \ +Vehicle.Cabin.Door.Row1.Right.IsOpen \ +Vehicle.Cabin.Door.Row1.Right.Shade.Position \ +Vehicle.Cabin.Door.Row1.Right.Shade.Switch \ +Vehicle.Cabin.Door.Row1.Right.Window.IsChildLockEngaged \ +Vehicle.Cabin.Door.Row1.Right.Window.IsOpen \ +Vehicle.Cabin.Door.Row1.Right.Window.Position \ +Vehicle.Cabin.Door.Row1.Right.Window.Switch \ +Vehicle.Cabin.Door.Row2.Left.IsChildLockActive \ +Vehicle.Cabin.Door.Row2.Left.IsLocked \ +Vehicle.Cabin.Door.Row2.Left.IsOpen \ +Vehicle.Cabin.Door.Row2.Left.Shade.Position \ +Vehicle.Cabin.Door.Row2.Left.Shade.Switch \ +Vehicle.Cabin.Door.Row2.Left.Window.IsChildLockEngaged \ +Vehicle.Cabin.Door.Row2.Left.Window.IsOpen \ +Vehicle.Cabin.Door.Row2.Left.Window.Position \ +Vehicle.Cabin.Door.Row2.Left.Window.Switch \ +Vehicle.Cabin.Door.Row2.Right.IsChildLockActive \ +Vehicle.Cabin.Door.Row2.Right.IsLocked \ +Vehicle.Cabin.Door.Row2.Right.IsOpen \ +Vehicle.Cabin.Door.Row2.Right.Shade.Position \ +Vehicle.Cabin.Door.Row2.Right.Shade.Switch \ +Vehicle.Cabin.Door.Row2.Right.Window.IsChildLockEngaged \ +Vehicle.Cabin.Door.Row2.Right.Window.IsOpen \ +Vehicle.Cabin.Door.Row2.Right.Window.Position \ +Vehicle.Cabin.Door.Row2.Right.Window.Switch \ +Vehicle.Cabin.DoorCount \ +Vehicle.Cabin.DriverPosition \ +Vehicle.Cabin.HVAC.AmbientAirTemperature \ +Vehicle.Cabin.HVAC.IsAirConditioningActive \ +Vehicle.Cabin.HVAC.IsFrontDefrosterActive \ +Vehicle.Cabin.HVAC.IsRearDefrosterActive \ +Vehicle.Cabin.HVAC.IsRecirculationActive \ +Vehicle.Cabin.HVAC.PowerOptimizeLevel \ +Vehicle.Cabin.HVAC.Station.Row1.Left.AirDistribution \ +Vehicle.Cabin.HVAC.Station.Row1.Left.FanSpeed \ +Vehicle.Cabin.HVAC.Station.Row1.Left.Temperature \ +Vehicle.Cabin.HVAC.Station.Row1.Right.AirDistribution \ +Vehicle.Cabin.HVAC.Station.Row1.Right.FanSpeed \ +Vehicle.Cabin.HVAC.Station.Row1.Right.Temperature \ +Vehicle.Cabin.HVAC.Station.Row2.Left.AirDistribution \ +Vehicle.Cabin.HVAC.Station.Row2.Left.FanSpeed \ +Vehicle.Cabin.HVAC.Station.Row2.Left.Temperature \ +Vehicle.Cabin.HVAC.Station.Row2.Right.AirDistribution \ +Vehicle.Cabin.HVAC.Station.Row2.Right.FanSpeed \ +Vehicle.Cabin.HVAC.Station.Row2.Right.Temperature \ +Vehicle.Cabin.HVAC.Station.Row3.Left.AirDistribution \ +Vehicle.Cabin.HVAC.Station.Row3.Left.FanSpeed \ +Vehicle.Cabin.HVAC.Station.Row3.Left.Temperature \ +Vehicle.Cabin.HVAC.Station.Row3.Right.AirDistribution \ +Vehicle.Cabin.HVAC.Station.Row3.Right.FanSpeed \ +Vehicle.Cabin.HVAC.Station.Row3.Right.Temperature \ +Vehicle.Cabin.HVAC.Station.Row4.Left.AirDistribution \ +Vehicle.Cabin.HVAC.Station.Row4.Left.FanSpeed \ +Vehicle.Cabin.HVAC.Station.Row4.Left.Temperature \ +Vehicle.Cabin.HVAC.Station.Row4.Right.AirDistribution \ +Vehicle.Cabin.HVAC.Station.Row4.Right.FanSpeed \ +Vehicle.Cabin.HVAC.Station.Row4.Right.Temperature \ +Vehicle.Cabin.Infotainment.HMI.Brightness \ +Vehicle.Cabin.Infotainment.HMI.CurrentLanguage \ +Vehicle.Cabin.Infotainment.HMI.DateFormat \ +Vehicle.Cabin.Infotainment.HMI.DayNightMode \ +Vehicle.Cabin.Infotainment.HMI.DistanceUnit \ +Vehicle.Cabin.Infotainment.HMI.EVEconomyUnits \ +Vehicle.Cabin.Infotainment.HMI.FuelEconomyUnits \ +Vehicle.Cabin.Infotainment.HMI.FuelVolumeUnit \ +Vehicle.Cabin.Infotainment.HMI.TemperatureUnit \ +Vehicle.Cabin.Infotainment.HMI.TimeFormat \ +Vehicle.Cabin.Infotainment.HMI.TirePressureUnit \ +Vehicle.Cabin.Infotainment.Media.Action \ +Vehicle.Cabin.Infotainment.Media.DeclinedURI \ +Vehicle.Cabin.Infotainment.Media.Played.Album \ +Vehicle.Cabin.Infotainment.Media.Played.Artist \ +Vehicle.Cabin.Infotainment.Media.Played.PlaybackRate \ +Vehicle.Cabin.Infotainment.Media.Played.Source \ +Vehicle.Cabin.Infotainment.Media.Played.Track \ +Vehicle.Cabin.Infotainment.Media.Played.URI \ +Vehicle.Cabin.Infotainment.Media.SelectedURI \ +Vehicle.Cabin.Infotainment.Media.Volume \ +Vehicle.Cabin.Infotainment.Navigation.DestinationSet.Latitude \ +Vehicle.Cabin.Infotainment.Navigation.DestinationSet.Longitude \ +Vehicle.Cabin.Infotainment.Navigation.Mute \ +Vehicle.Cabin.Infotainment.Navigation.Volume \ +Vehicle.Cabin.Infotainment.PowerOptimizeLevel \ +Vehicle.Cabin.Infotainment.SmartphoneProjection.Active \ +Vehicle.Cabin.Infotainment.SmartphoneProjection.Source \ +Vehicle.Cabin.Infotainment.SmartphoneProjection.SupportedMode \ +Vehicle.Cabin.Lights.AmbientLight \ +Vehicle.Cabin.Lights.IsDomeOn \ +Vehicle.Cabin.Lights.IsGloveBoxOn \ +Vehicle.Cabin.Lights.IsTrunkOn \ +Vehicle.Cabin.Lights.LightIntensity \ +Vehicle.Cabin.Lights.Spotlight.Row1.IsLeftOn \ +Vehicle.Cabin.Lights.Spotlight.Row1.IsRightOn \ +Vehicle.Cabin.Lights.Spotlight.Row1.IsSharedOn \ +Vehicle.Cabin.Lights.Spotlight.Row2.IsLeftOn \ +Vehicle.Cabin.Lights.Spotlight.Row2.IsRightOn \ +Vehicle.Cabin.Lights.Spotlight.Row2.IsSharedOn \ +Vehicle.Cabin.Lights.Spotlight.Row3.IsLeftOn \ +Vehicle.Cabin.Lights.Spotlight.Row3.IsRightOn \ +Vehicle.Cabin.Lights.Spotlight.Row3.IsSharedOn \ +Vehicle.Cabin.Lights.Spotlight.Row4.IsLeftOn \ +Vehicle.Cabin.Lights.Spotlight.Row4.IsRightOn \ +Vehicle.Cabin.Lights.Spotlight.Row4.IsSharedOn \ +Vehicle.Cabin.PowerOptimizeLevel \ +Vehicle.Cabin.RearShade.Position \ +Vehicle.Cabin.RearShade.Switch \ +Vehicle.Cabin.RearviewMirror.DimmingLevel \ +Vehicle.Cabin.Seat.Row1.Pos1.Airbag.IsDeployed \ +Vehicle.Cabin.Seat.Row1.Pos1.Backrest.Lumbar.Height \ +Vehicle.Cabin.Seat.Row1.Pos1.Backrest.Lumbar.Support \ +Vehicle.Cabin.Seat.Row1.Pos1.Backrest.Recline \ +Vehicle.Cabin.Seat.Row1.Pos1.Backrest.SideBolster.Support \ +Vehicle.Cabin.Seat.Row1.Pos1.Headrest.Angle \ +Vehicle.Cabin.Seat.Row1.Pos1.Headrest.Height \ +Vehicle.Cabin.Seat.Row1.Pos1.Heating \ +Vehicle.Cabin.Seat.Row1.Pos1.Height \ +Vehicle.Cabin.Seat.Row1.Pos1.IsBelted \ +Vehicle.Cabin.Seat.Row1.Pos1.IsOccupied \ +Vehicle.Cabin.Seat.Row1.Pos1.Massage \ +Vehicle.Cabin.Seat.Row1.Pos1.Occupant.Identifier.Issuer \ +Vehicle.Cabin.Seat.Row1.Pos1.Occupant.Identifier.Subject \ +Vehicle.Cabin.Seat.Row1.Pos1.Position \ +Vehicle.Cabin.Seat.Row1.Pos1.Seating.Length \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.Backrest.IsReclineBackwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.Backrest.IsReclineForwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.Backrest.Lumbar.IsDownEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.Backrest.Lumbar.IsLessSupportEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.Backrest.Lumbar.IsMoreSupportEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.Backrest.Lumbar.IsUpEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.Backrest.SideBolster.IsLessSupportEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.Backrest.SideBolster.IsMoreSupportEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.Headrest.IsBackwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.Headrest.IsDownEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.Headrest.IsForwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.Headrest.IsUpEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.IsBackwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.IsCoolerEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.IsDownEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.IsForwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.IsTiltBackwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.IsTiltForwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.IsUpEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.IsWarmerEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.Massage.IsDecreaseEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.Massage.IsIncreaseEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.Seating.IsBackwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Switch.Seating.IsForwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos1.Tilt \ +Vehicle.Cabin.Seat.Row1.Pos2.Airbag.IsDeployed \ +Vehicle.Cabin.Seat.Row1.Pos2.Backrest.Lumbar.Height \ +Vehicle.Cabin.Seat.Row1.Pos2.Backrest.Lumbar.Support \ +Vehicle.Cabin.Seat.Row1.Pos2.Backrest.Recline \ +Vehicle.Cabin.Seat.Row1.Pos2.Backrest.SideBolster.Support \ +Vehicle.Cabin.Seat.Row1.Pos2.Headrest.Angle \ +Vehicle.Cabin.Seat.Row1.Pos2.Headrest.Height \ +Vehicle.Cabin.Seat.Row1.Pos2.Heating \ +Vehicle.Cabin.Seat.Row1.Pos2.Height \ +Vehicle.Cabin.Seat.Row1.Pos2.IsBelted \ +Vehicle.Cabin.Seat.Row1.Pos2.IsOccupied \ +Vehicle.Cabin.Seat.Row1.Pos2.Massage \ +Vehicle.Cabin.Seat.Row1.Pos2.Occupant.Identifier.Issuer \ +Vehicle.Cabin.Seat.Row1.Pos2.Occupant.Identifier.Subject \ +Vehicle.Cabin.Seat.Row1.Pos2.Position \ +Vehicle.Cabin.Seat.Row1.Pos2.Seating.Length \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.Backrest.IsReclineBackwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.Backrest.IsReclineForwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.Backrest.Lumbar.IsDownEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.Backrest.Lumbar.IsLessSupportEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.Backrest.Lumbar.IsMoreSupportEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.Backrest.Lumbar.IsUpEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.Backrest.SideBolster.IsLessSupportEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.Backrest.SideBolster.IsMoreSupportEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.Headrest.IsBackwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.Headrest.IsDownEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.Headrest.IsForwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.Headrest.IsUpEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.IsBackwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.IsCoolerEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.IsDownEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.IsForwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.IsTiltBackwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.IsTiltForwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.IsUpEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.IsWarmerEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.Massage.IsDecreaseEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.Massage.IsIncreaseEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.Seating.IsBackwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Switch.Seating.IsForwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos2.Tilt \ +Vehicle.Cabin.Seat.Row1.Pos3.Airbag.IsDeployed \ +Vehicle.Cabin.Seat.Row1.Pos3.Backrest.Lumbar.Height \ +Vehicle.Cabin.Seat.Row1.Pos3.Backrest.Lumbar.Support \ +Vehicle.Cabin.Seat.Row1.Pos3.Backrest.Recline \ +Vehicle.Cabin.Seat.Row1.Pos3.Backrest.SideBolster.Support \ +Vehicle.Cabin.Seat.Row1.Pos3.Headrest.Angle \ +Vehicle.Cabin.Seat.Row1.Pos3.Headrest.Height \ +Vehicle.Cabin.Seat.Row1.Pos3.Heating \ +Vehicle.Cabin.Seat.Row1.Pos3.Height \ +Vehicle.Cabin.Seat.Row1.Pos3.IsBelted \ +Vehicle.Cabin.Seat.Row1.Pos3.IsOccupied \ +Vehicle.Cabin.Seat.Row1.Pos3.Massage \ +Vehicle.Cabin.Seat.Row1.Pos3.Occupant.Identifier.Issuer \ +Vehicle.Cabin.Seat.Row1.Pos3.Occupant.Identifier.Subject \ +Vehicle.Cabin.Seat.Row1.Pos3.Position \ +Vehicle.Cabin.Seat.Row1.Pos3.Seating.Length \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.Backrest.IsReclineBackwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.Backrest.IsReclineForwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.Backrest.Lumbar.IsDownEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.Backrest.Lumbar.IsLessSupportEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.Backrest.Lumbar.IsMoreSupportEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.Backrest.Lumbar.IsUpEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.Backrest.SideBolster.IsLessSupportEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.Backrest.SideBolster.IsMoreSupportEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.Headrest.IsBackwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.Headrest.IsDownEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.Headrest.IsForwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.Headrest.IsUpEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.IsBackwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.IsCoolerEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.IsDownEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.IsForwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.IsTiltBackwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.IsTiltForwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.IsUpEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.IsWarmerEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.Massage.IsDecreaseEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.Massage.IsIncreaseEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.Seating.IsBackwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Switch.Seating.IsForwardEngaged \ +Vehicle.Cabin.Seat.Row1.Pos3.Tilt \ +Vehicle.Cabin.Seat.Row2.Pos1.Airbag.IsDeployed \ +Vehicle.Cabin.Seat.Row2.Pos1.Backrest.Lumbar.Height \ +Vehicle.Cabin.Seat.Row2.Pos1.Backrest.Lumbar.Support \ +Vehicle.Cabin.Seat.Row2.Pos1.Backrest.Recline \ +Vehicle.Cabin.Seat.Row2.Pos1.Backrest.SideBolster.Support \ +Vehicle.Cabin.Seat.Row2.Pos1.Headrest.Angle \ +Vehicle.Cabin.Seat.Row2.Pos1.Headrest.Height \ +Vehicle.Cabin.Seat.Row2.Pos1.Heating \ +Vehicle.Cabin.Seat.Row2.Pos1.Height \ +Vehicle.Cabin.Seat.Row2.Pos1.IsBelted \ +Vehicle.Cabin.Seat.Row2.Pos1.IsOccupied \ +Vehicle.Cabin.Seat.Row2.Pos1.Massage \ +Vehicle.Cabin.Seat.Row2.Pos1.Occupant.Identifier.Issuer \ +Vehicle.Cabin.Seat.Row2.Pos1.Occupant.Identifier.Subject \ +Vehicle.Cabin.Seat.Row2.Pos1.Position \ +Vehicle.Cabin.Seat.Row2.Pos1.Seating.Length \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.Backrest.IsReclineBackwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.Backrest.IsReclineForwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.Backrest.Lumbar.IsDownEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.Backrest.Lumbar.IsLessSupportEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.Backrest.Lumbar.IsMoreSupportEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.Backrest.Lumbar.IsUpEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.Backrest.SideBolster.IsLessSupportEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.Backrest.SideBolster.IsMoreSupportEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.Headrest.IsBackwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.Headrest.IsDownEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.Headrest.IsForwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.Headrest.IsUpEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.IsBackwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.IsCoolerEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.IsDownEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.IsForwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.IsTiltBackwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.IsTiltForwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.IsUpEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.IsWarmerEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.Massage.IsDecreaseEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.Massage.IsIncreaseEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.Seating.IsBackwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Switch.Seating.IsForwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos1.Tilt \ +Vehicle.Cabin.Seat.Row2.Pos2.Airbag.IsDeployed \ +Vehicle.Cabin.Seat.Row2.Pos2.Backrest.Lumbar.Height \ +Vehicle.Cabin.Seat.Row2.Pos2.Backrest.Lumbar.Support \ +Vehicle.Cabin.Seat.Row2.Pos2.Backrest.Recline \ +Vehicle.Cabin.Seat.Row2.Pos2.Backrest.SideBolster.Support \ +Vehicle.Cabin.Seat.Row2.Pos2.Headrest.Angle \ +Vehicle.Cabin.Seat.Row2.Pos2.Headrest.Height \ +Vehicle.Cabin.Seat.Row2.Pos2.Heating \ +Vehicle.Cabin.Seat.Row2.Pos2.Height \ +Vehicle.Cabin.Seat.Row2.Pos2.IsBelted \ +Vehicle.Cabin.Seat.Row2.Pos2.IsOccupied \ +Vehicle.Cabin.Seat.Row2.Pos2.Massage \ +Vehicle.Cabin.Seat.Row2.Pos2.Occupant.Identifier.Issuer \ +Vehicle.Cabin.Seat.Row2.Pos2.Occupant.Identifier.Subject \ +Vehicle.Cabin.Seat.Row2.Pos2.Position \ +Vehicle.Cabin.Seat.Row2.Pos2.Seating.Length \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.Backrest.IsReclineBackwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.Backrest.IsReclineForwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.Backrest.Lumbar.IsDownEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.Backrest.Lumbar.IsLessSupportEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.Backrest.Lumbar.IsMoreSupportEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.Backrest.Lumbar.IsUpEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.Backrest.SideBolster.IsLessSupportEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.Backrest.SideBolster.IsMoreSupportEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.Headrest.IsBackwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.Headrest.IsDownEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.Headrest.IsForwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.Headrest.IsUpEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.IsBackwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.IsCoolerEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.IsDownEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.IsForwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.IsTiltBackwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.IsTiltForwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.IsUpEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.IsWarmerEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.Massage.IsDecreaseEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.Massage.IsIncreaseEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.Seating.IsBackwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Switch.Seating.IsForwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos2.Tilt \ +Vehicle.Cabin.Seat.Row2.Pos3.Airbag.IsDeployed \ +Vehicle.Cabin.Seat.Row2.Pos3.Backrest.Lumbar.Height \ +Vehicle.Cabin.Seat.Row2.Pos3.Backrest.Lumbar.Support \ +Vehicle.Cabin.Seat.Row2.Pos3.Backrest.Recline \ +Vehicle.Cabin.Seat.Row2.Pos3.Backrest.SideBolster.Support \ +Vehicle.Cabin.Seat.Row2.Pos3.Headrest.Angle \ +Vehicle.Cabin.Seat.Row2.Pos3.Headrest.Height \ +Vehicle.Cabin.Seat.Row2.Pos3.Heating \ +Vehicle.Cabin.Seat.Row2.Pos3.Height \ +Vehicle.Cabin.Seat.Row2.Pos3.IsBelted \ +Vehicle.Cabin.Seat.Row2.Pos3.IsOccupied \ +Vehicle.Cabin.Seat.Row2.Pos3.Massage \ +Vehicle.Cabin.Seat.Row2.Pos3.Occupant.Identifier.Issuer \ +Vehicle.Cabin.Seat.Row2.Pos3.Occupant.Identifier.Subject \ +Vehicle.Cabin.Seat.Row2.Pos3.Position \ +Vehicle.Cabin.Seat.Row2.Pos3.Seating.Length \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.Backrest.IsReclineBackwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.Backrest.IsReclineForwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.Backrest.Lumbar.IsDownEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.Backrest.Lumbar.IsLessSupportEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.Backrest.Lumbar.IsMoreSupportEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.Backrest.Lumbar.IsUpEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.Backrest.SideBolster.IsLessSupportEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.Backrest.SideBolster.IsMoreSupportEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.Headrest.IsBackwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.Headrest.IsDownEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.Headrest.IsForwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.Headrest.IsUpEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.IsBackwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.IsCoolerEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.IsDownEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.IsForwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.IsTiltBackwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.IsTiltForwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.IsUpEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.IsWarmerEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.Massage.IsDecreaseEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.Massage.IsIncreaseEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.Seating.IsBackwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Switch.Seating.IsForwardEngaged \ +Vehicle.Cabin.Seat.Row2.Pos3.Tilt \ +Vehicle.Cabin.SeatPosCount \ +Vehicle.Cabin.SeatRowCount \ +Vehicle.Cabin.Sunroof.Position \ +Vehicle.Cabin.Sunroof.Shade.Position \ +Vehicle.Cabin.Sunroof.Shade.Switch \ +Vehicle.Cabin.Sunroof.Switch \ +Vehicle.CargoVolume \ +Vehicle.Chassis.Accelerator.PedalPosition \ +Vehicle.Chassis.Axle.Row1.SteeringAngle \ +Vehicle.Chassis.Axle.Row1.TireAspectRatio \ +Vehicle.Chassis.Axle.Row1.TireDiameter \ +Vehicle.Chassis.Axle.Row1.TireWidth \ +Vehicle.Chassis.Axle.Row1.TyreLocation \ +Vehicle.Chassis.Axle.Row1.VerticalLoad \ +Vehicle.Chassis.Axle.Row1.Wheel.Left.Brake.FluidLevel \ +Vehicle.Chassis.Axle.Row1.Wheel.Left.Brake.IsBrakesWorn \ +Vehicle.Chassis.Axle.Row1.Wheel.Left.Brake.IsFluidLevelLow \ +Vehicle.Chassis.Axle.Row1.Wheel.Left.Brake.PadWear \ +Vehicle.Chassis.Axle.Row1.Wheel.Left.Speed \ +Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.IsPressureLow \ +Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.Pressure \ +Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.Temperature \ +Vehicle.Chassis.Axle.Row1.Wheel.Right.Brake.FluidLevel \ +Vehicle.Chassis.Axle.Row1.Wheel.Right.Brake.IsBrakesWorn \ +Vehicle.Chassis.Axle.Row1.Wheel.Right.Brake.IsFluidLevelLow \ +Vehicle.Chassis.Axle.Row1.Wheel.Right.Brake.PadWear \ +Vehicle.Chassis.Axle.Row1.Wheel.Right.Speed \ +Vehicle.Chassis.Axle.Row1.Wheel.Right.Tire.IsPressureLow \ +Vehicle.Chassis.Axle.Row1.Wheel.Right.Tire.Pressure \ +Vehicle.Chassis.Axle.Row1.Wheel.Right.Tire.Temperature \ +Vehicle.Chassis.Axle.Row1.WheelCount \ +Vehicle.Chassis.Axle.Row1.WheelDiameter \ +Vehicle.Chassis.Axle.Row1.WheelWidth \ +Vehicle.Chassis.Axle.Row2.SteeringAngle \ +Vehicle.Chassis.Axle.Row2.TireAspectRatio \ +Vehicle.Chassis.Axle.Row2.TireDiameter \ +Vehicle.Chassis.Axle.Row2.TireWidth \ +Vehicle.Chassis.Axle.Row2.TyreLocation \ +Vehicle.Chassis.Axle.Row2.VerticalLoad \ +Vehicle.Chassis.Axle.Row2.Wheel.Left.Brake.FluidLevel \ +Vehicle.Chassis.Axle.Row2.Wheel.Left.Brake.IsBrakesWorn \ +Vehicle.Chassis.Axle.Row2.Wheel.Left.Brake.IsFluidLevelLow \ +Vehicle.Chassis.Axle.Row2.Wheel.Left.Brake.PadWear \ +Vehicle.Chassis.Axle.Row2.Wheel.Left.Speed \ +Vehicle.Chassis.Axle.Row2.Wheel.Left.Tire.IsPressureLow \ +Vehicle.Chassis.Axle.Row2.Wheel.Left.Tire.Pressure \ +Vehicle.Chassis.Axle.Row2.Wheel.Left.Tire.Temperature \ +Vehicle.Chassis.Axle.Row2.Wheel.Right.Brake.FluidLevel \ +Vehicle.Chassis.Axle.Row2.Wheel.Right.Brake.IsBrakesWorn \ +Vehicle.Chassis.Axle.Row2.Wheel.Right.Brake.IsFluidLevelLow \ +Vehicle.Chassis.Axle.Row2.Wheel.Right.Brake.PadWear \ +Vehicle.Chassis.Axle.Row2.Wheel.Right.Speed \ +Vehicle.Chassis.Axle.Row2.Wheel.Right.Tire.IsPressureLow \ +Vehicle.Chassis.Axle.Row2.Wheel.Right.Tire.Pressure \ +Vehicle.Chassis.Axle.Row2.Wheel.Right.Tire.Temperature \ +Vehicle.Chassis.Axle.Row2.WheelCount \ +Vehicle.Chassis.Axle.Row2.WheelDiameter \ +Vehicle.Chassis.Axle.Row2.WheelWidth \ +Vehicle.Chassis.Axle.Row3.TyreLocation \ +Vehicle.Chassis.Axle.Row3.VerticalLoad \ +Vehicle.Chassis.Axle.Row4.TyreLocation \ +Vehicle.Chassis.Axle.Row4.VerticalLoad \ +Vehicle.Chassis.Axle.Row5.TyreLocation \ +Vehicle.Chassis.Axle.Row5.VerticalLoad \ +Vehicle.Chassis.Axle.Row6.TyreLocation \ +Vehicle.Chassis.Axle.Row6.VerticalLoad \ +Vehicle.Chassis.AxleCount \ +Vehicle.Chassis.Brake.IsDriverEmergencyBrakingDetected \ +Vehicle.Chassis.Brake.PedalPosition \ +Vehicle.Chassis.ParkingBrake.IsEngaged \ +Vehicle.Chassis.SteeringWheel.Angle \ +Vehicle.Chassis.SteeringWheel.Extension \ +Vehicle.Chassis.SteeringWheel.Position \ +Vehicle.Chassis.SteeringWheel.Tilt \ +Vehicle.Chassis.Track \ +Vehicle.Chassis.Wheelbase \ +Vehicle.CombinedVehicleWeight \ +Vehicle.Connectivity.IsConnectivityAvailable \ +Vehicle.CurbWeight \ +Vehicle.CurrentLocation.Altitude \ +Vehicle.CurrentLocation.GNSSReceiver.FixType \ +Vehicle.CurrentLocation.GNSSReceiver.MountingPosition.X \ +Vehicle.CurrentLocation.GNSSReceiver.MountingPosition.Y \ +Vehicle.CurrentLocation.GNSSReceiver.MountingPosition.Z \ +Vehicle.CurrentLocation.Heading \ +Vehicle.CurrentLocation.HorizontalAccuracy \ +Vehicle.CurrentLocation.Latitude \ +Vehicle.CurrentLocation.Longitude \ +Vehicle.CurrentLocation.Speed \ +Vehicle.CurrentLocation.Timestamp \ +Vehicle.CurrentLocation.VerticalAccuracy \ +Vehicle.CurrentOverallWeight \ +Vehicle.DirectionIndicator \ +Vehicle.Driver.AttentiveProbability \ +Vehicle.Driver.DistractionLevel \ +Vehicle.Driver.FatigueLevel \ +Vehicle.Driver.HeartRate \ +Vehicle.Driver.Identifier.Issuer \ +Vehicle.Driver.Identifier.Subject \ +Vehicle.Driver.IsEyesOnRoad \ +Vehicle.EmissionsCO2 \ +Vehicle.Exterior.AirTemperature \ +Vehicle.Exterior.Humidity \ +Vehicle.Exterior.LightIntensity \ +Vehicle.GrossWeight \ +Vehicle.Height \ +Vehicle.IsBrokenDown \ +Vehicle.IsMoving \ +Vehicle.IsOverspeed \ +Vehicle.Length \ +Vehicle.LowVoltageBattery.CurrentCurrent \ +Vehicle.LowVoltageBattery.CurrentVoltage \ +Vehicle.LowVoltageBattery.NominalCapacity \ +Vehicle.LowVoltageBattery.NominalVoltage \ +Vehicle.LowVoltageSystemState \ +Vehicle.MaxTowBallWeight \ +Vehicle.MaxTowWeight \ +Vehicle.OBD.AbsoluteLoad \ +Vehicle.OBD.AcceleratorPositionD \ +Vehicle.OBD.AcceleratorPositionE \ +Vehicle.OBD.AcceleratorPositionF \ +Vehicle.OBD.AirStatus \ +Vehicle.OBD.AmbientAirTemperature \ +Vehicle.OBD.BarometricPressure \ +Vehicle.OBD.Catalyst.Bank1.Temperature1 \ +Vehicle.OBD.Catalyst.Bank1.Temperature2 \ +Vehicle.OBD.Catalyst.Bank2.Temperature1 \ +Vehicle.OBD.Catalyst.Bank2.Temperature2 \ +Vehicle.OBD.CommandedEGR \ +Vehicle.OBD.CommandedEVAP \ +Vehicle.OBD.CommandedEquivalenceRatio \ +Vehicle.OBD.ControlModuleVoltage \ +Vehicle.OBD.CoolantTemperature \ +Vehicle.OBD.DTCList \ +Vehicle.OBD.DistanceSinceDTCClear \ +Vehicle.OBD.DistanceWithMIL \ +Vehicle.OBD.DriveCycleStatus.DTCCount \ +Vehicle.OBD.DriveCycleStatus.IgnitionType \ +Vehicle.OBD.DriveCycleStatus.IsMILOn \ +Vehicle.OBD.EGRError \ +Vehicle.OBD.EVAPVaporPressure \ +Vehicle.OBD.EVAPVaporPressureAbsolute \ +Vehicle.OBD.EVAPVaporPressureAlternate \ +Vehicle.OBD.EngineLoad \ +Vehicle.OBD.EngineSpeed \ +Vehicle.OBD.EthanolPercent \ +Vehicle.OBD.FreezeDTC \ +Vehicle.OBD.FuelInjectionTiming \ +Vehicle.OBD.FuelLevel \ +Vehicle.OBD.FuelPressure \ +Vehicle.OBD.FuelRailPressureAbsolute \ +Vehicle.OBD.FuelRailPressureDirect \ +Vehicle.OBD.FuelRailPressureVac \ +Vehicle.OBD.FuelRate \ +Vehicle.OBD.FuelStatus \ +Vehicle.OBD.FuelType \ +Vehicle.OBD.HybridBatteryRemaining \ +Vehicle.OBD.IntakeTemp \ +Vehicle.OBD.IsPTOActive \ +Vehicle.OBD.LongTermFuelTrim1 \ +Vehicle.OBD.LongTermFuelTrim2 \ +Vehicle.OBD.LongTermO2Trim1 \ +Vehicle.OBD.LongTermO2Trim2 \ +Vehicle.OBD.LongTermO2Trim3 \ +Vehicle.OBD.LongTermO2Trim4 \ +Vehicle.OBD.MAF \ +Vehicle.OBD.MAP \ +Vehicle.OBD.MaxMAF \ +Vehicle.OBD.O2.Sensor1.ShortTermFuelTrim \ +Vehicle.OBD.O2.Sensor1.Voltage \ +Vehicle.OBD.O2.Sensor2.ShortTermFuelTrim \ +Vehicle.OBD.O2.Sensor2.Voltage \ +Vehicle.OBD.O2.Sensor3.ShortTermFuelTrim \ +Vehicle.OBD.O2.Sensor3.Voltage \ +Vehicle.OBD.O2.Sensor4.ShortTermFuelTrim \ +Vehicle.OBD.O2.Sensor4.Voltage \ +Vehicle.OBD.O2.Sensor5.ShortTermFuelTrim \ +Vehicle.OBD.O2.Sensor5.Voltage \ +Vehicle.OBD.O2.Sensor6.ShortTermFuelTrim \ +Vehicle.OBD.O2.Sensor6.Voltage \ +Vehicle.OBD.O2.Sensor7.ShortTermFuelTrim \ +Vehicle.OBD.O2.Sensor7.Voltage \ +Vehicle.OBD.O2.Sensor8.ShortTermFuelTrim \ +Vehicle.OBD.O2.Sensor8.Voltage \ +Vehicle.OBD.O2WR.Sensor1.Current \ +Vehicle.OBD.O2WR.Sensor1.Lambda \ +Vehicle.OBD.O2WR.Sensor1.Voltage \ +Vehicle.OBD.O2WR.Sensor2.Current \ +Vehicle.OBD.O2WR.Sensor2.Lambda \ +Vehicle.OBD.O2WR.Sensor2.Voltage \ +Vehicle.OBD.O2WR.Sensor3.Current \ +Vehicle.OBD.O2WR.Sensor3.Lambda \ +Vehicle.OBD.O2WR.Sensor3.Voltage \ +Vehicle.OBD.O2WR.Sensor4.Current \ +Vehicle.OBD.O2WR.Sensor4.Lambda \ +Vehicle.OBD.O2WR.Sensor4.Voltage \ +Vehicle.OBD.O2WR.Sensor5.Current \ +Vehicle.OBD.O2WR.Sensor5.Lambda \ +Vehicle.OBD.O2WR.Sensor5.Voltage \ +Vehicle.OBD.O2WR.Sensor6.Current \ +Vehicle.OBD.O2WR.Sensor6.Lambda \ +Vehicle.OBD.O2WR.Sensor6.Voltage \ +Vehicle.OBD.O2WR.Sensor7.Current \ +Vehicle.OBD.O2WR.Sensor7.Lambda \ +Vehicle.OBD.O2WR.Sensor7.Voltage \ +Vehicle.OBD.O2WR.Sensor8.Current \ +Vehicle.OBD.O2WR.Sensor8.Lambda \ +Vehicle.OBD.O2WR.Sensor8.Voltage \ +Vehicle.OBD.OBDStandards \ +Vehicle.OBD.OilTemperature \ +Vehicle.OBD.OxygenSensorsIn2Banks \ +Vehicle.OBD.OxygenSensorsIn4Banks \ +Vehicle.OBD.PidsA \ +Vehicle.OBD.PidsB \ +Vehicle.OBD.PidsC \ +Vehicle.OBD.RelativeAcceleratorPosition \ +Vehicle.OBD.RelativeThrottlePosition \ +Vehicle.OBD.RunTime \ +Vehicle.OBD.RunTimeMIL \ +Vehicle.OBD.ShortTermFuelTrim1 \ +Vehicle.OBD.ShortTermFuelTrim2 \ +Vehicle.OBD.ShortTermO2Trim1 \ +Vehicle.OBD.ShortTermO2Trim2 \ +Vehicle.OBD.ShortTermO2Trim3 \ +Vehicle.OBD.ShortTermO2Trim4 \ +Vehicle.OBD.Speed \ +Vehicle.OBD.Status.DTCCount \ +Vehicle.OBD.Status.IgnitionType \ +Vehicle.OBD.Status.IsMILOn \ +Vehicle.OBD.ThrottleActuator \ +Vehicle.OBD.ThrottlePosition \ +Vehicle.OBD.ThrottlePositionB \ +Vehicle.OBD.ThrottlePositionC \ +Vehicle.OBD.TimeSinceDTCCleared \ +Vehicle.OBD.TimingAdvance \ +Vehicle.OBD.WarmupsSinceDTCClear \ +Vehicle.PowerOptimizeLevel \ +Vehicle.Powertrain.AccumulatedBrakingEnergy \ +Vehicle.Powertrain.Brake.ActualRetarderPercentage \ +Vehicle.Powertrain.CombustionEngine.ActualEnginePercentTorque \ +Vehicle.Powertrain.CombustionEngine.AspirationType \ +Vehicle.Powertrain.CombustionEngine.Bore \ +Vehicle.Powertrain.CombustionEngine.CompressionRatio \ +Vehicle.Powertrain.CombustionEngine.Configuration \ +Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid.Capacity \ +Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid.IsLevelLow \ +Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid.Level \ +Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid.Range \ +Vehicle.Powertrain.CombustionEngine.DieselParticulateFilter.DeltaPressure \ +Vehicle.Powertrain.CombustionEngine.DieselParticulateFilter.InletTemperature \ +Vehicle.Powertrain.CombustionEngine.DieselParticulateFilter.OutletTemperature \ +Vehicle.Powertrain.CombustionEngine.Displacement \ +Vehicle.Powertrain.CombustionEngine.ECT \ +Vehicle.Powertrain.CombustionEngine.EOP \ +Vehicle.Powertrain.CombustionEngine.EOT \ +Vehicle.Powertrain.CombustionEngine.EngineCode \ +Vehicle.Powertrain.CombustionEngine.EngineCoolantCapacity \ +Vehicle.Powertrain.CombustionEngine.EngineHours \ +Vehicle.Powertrain.CombustionEngine.EngineOilCapacity \ +Vehicle.Powertrain.CombustionEngine.EngineOilLevel \ +Vehicle.Powertrain.CombustionEngine.IdleHours \ +Vehicle.Powertrain.CombustionEngine.IsRunning \ +Vehicle.Powertrain.CombustionEngine.MAF \ +Vehicle.Powertrain.CombustionEngine.MAP \ +Vehicle.Powertrain.CombustionEngine.MaxPower \ +Vehicle.Powertrain.CombustionEngine.MaxTorque \ +Vehicle.Powertrain.CombustionEngine.NumberOfCylinders \ +Vehicle.Powertrain.CombustionEngine.NumberOfValvesPerCylinder \ +Vehicle.Powertrain.CombustionEngine.OilLifeRemaining \ +Vehicle.Powertrain.CombustionEngine.Power \ +Vehicle.Powertrain.CombustionEngine.Speed \ +Vehicle.Powertrain.CombustionEngine.StrokeLength \ +Vehicle.Powertrain.CombustionEngine.TPS \ +Vehicle.Powertrain.CombustionEngine.Torque \ +Vehicle.Powertrain.CurrentFuelType \ +Vehicle.Powertrain.Eec2AcceleratorPedalPosition \ +Vehicle.Powertrain.Eec2EnginePercentLoad \ +Vehicle.Powertrain.ElectricMotor.CoolantTemperature \ +Vehicle.Powertrain.ElectricMotor.EngineCode \ +Vehicle.Powertrain.ElectricMotor.MaxPower \ +Vehicle.Powertrain.ElectricMotor.MaxRegenPower \ +Vehicle.Powertrain.ElectricMotor.MaxRegenTorque \ +Vehicle.Powertrain.ElectricMotor.MaxTorque \ +Vehicle.Powertrain.ElectricMotor.MotorHours \ +Vehicle.Powertrain.ElectricMotor.Power \ +Vehicle.Powertrain.ElectricMotor.Speed \ +Vehicle.Powertrain.ElectricMotor.Temperature \ +Vehicle.Powertrain.ElectricMotor.Torque \ +Vehicle.Powertrain.FuelSystem.AccumulatedConsumption \ +Vehicle.Powertrain.FuelSystem.AverageConsumption \ +Vehicle.Powertrain.FuelSystem.ConsumptionSinceStart \ +Vehicle.Powertrain.FuelSystem.HybridType \ +Vehicle.Powertrain.FuelSystem.InstantConsumption \ +Vehicle.Powertrain.FuelSystem.IsEngineStopStartEnabled \ +Vehicle.Powertrain.FuelSystem.IsFuelLevelLow \ +Vehicle.Powertrain.FuelSystem.Level \ +Vehicle.Powertrain.FuelSystem.Range \ +Vehicle.Powertrain.FuelSystem.SupportedFuel \ +Vehicle.Powertrain.FuelSystem.SupportedFuelTypes \ +Vehicle.Powertrain.FuelSystem.Tank.First.Fuel \ +Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel \ +Vehicle.Powertrain.FuelSystem.Tank.Second.Fuel \ +Vehicle.Powertrain.FuelSystem.Tank.Second.RelativeLevel \ +Vehicle.Powertrain.FuelSystem.TankCapacity \ +Vehicle.Powertrain.FuelSystem.TimeSinceStart \ +Vehicle.Powertrain.PTODriveEngagement \ +Vehicle.Powertrain.PowerOptimizeLevel \ +Vehicle.Powertrain.Range \ +Vehicle.Powertrain.TractionBattery.AccumulatedChargedEnergy \ +Vehicle.Powertrain.TractionBattery.AccumulatedChargedThroughput \ +Vehicle.Powertrain.TractionBattery.AccumulatedConsumedEnergy \ +Vehicle.Powertrain.TractionBattery.AccumulatedConsumedThroughput \ +Vehicle.Powertrain.TractionBattery.Charging.ChargeCurrent.DC \ +Vehicle.Powertrain.TractionBattery.Charging.ChargeCurrent.Phase1 \ +Vehicle.Powertrain.TractionBattery.Charging.ChargeCurrent.Phase2 \ +Vehicle.Powertrain.TractionBattery.Charging.ChargeCurrent.Phase3 \ +Vehicle.Powertrain.TractionBattery.Charging.ChargeLimit \ +Vehicle.Powertrain.TractionBattery.Charging.ChargePlugType \ +Vehicle.Powertrain.TractionBattery.Charging.ChargePortFlap \ +Vehicle.Powertrain.TractionBattery.Charging.ChargeRate \ +Vehicle.Powertrain.TractionBattery.Charging.ChargeVoltage.DC \ +Vehicle.Powertrain.TractionBattery.Charging.ChargeVoltage.Phase1 \ +Vehicle.Powertrain.TractionBattery.Charging.ChargeVoltage.Phase2 \ +Vehicle.Powertrain.TractionBattery.Charging.ChargeVoltage.Phase3 \ +Vehicle.Powertrain.TractionBattery.Charging.IsCharging \ +Vehicle.Powertrain.TractionBattery.Charging.IsChargingCableConnected \ +Vehicle.Powertrain.TractionBattery.Charging.IsChargingCableLocked \ +Vehicle.Powertrain.TractionBattery.Charging.IsDischarging \ +Vehicle.Powertrain.TractionBattery.Charging.MaximumChargingCurrent.DC \ +Vehicle.Powertrain.TractionBattery.Charging.MaximumChargingCurrent.Phase1 \ +Vehicle.Powertrain.TractionBattery.Charging.MaximumChargingCurrent.Phase2 \ +Vehicle.Powertrain.TractionBattery.Charging.MaximumChargingCurrent.Phase3 \ +Vehicle.Powertrain.TractionBattery.Charging.Mode \ +Vehicle.Powertrain.TractionBattery.Charging.PowerLoss \ +Vehicle.Powertrain.TractionBattery.Charging.StartStopCharging \ +Vehicle.Powertrain.TractionBattery.Charging.Temperature \ +Vehicle.Powertrain.TractionBattery.Charging.TimeToComplete \ +Vehicle.Powertrain.TractionBattery.Charging.Timer.Mode \ +Vehicle.Powertrain.TractionBattery.Charging.Timer.Time \ +Vehicle.Powertrain.TractionBattery.CoolantTemperature \ +Vehicle.Powertrain.TractionBattery.CurrentCurrent \ +Vehicle.Powertrain.TractionBattery.CurrentPower \ +Vehicle.Powertrain.TractionBattery.CurrentVoltage \ +Vehicle.Powertrain.TractionBattery.DCDC.PowerLoss \ +Vehicle.Powertrain.TractionBattery.DCDC.Temperature \ +Vehicle.Powertrain.TractionBattery.GrossCapacity \ +Vehicle.Powertrain.TractionBattery.Id \ +Vehicle.Powertrain.TractionBattery.IsGroundConnected \ +Vehicle.Powertrain.TractionBattery.IsPowerConnected \ +Vehicle.Powertrain.TractionBattery.MaxVoltage \ +Vehicle.Powertrain.TractionBattery.NetCapacity \ +Vehicle.Powertrain.TractionBattery.NominalVoltage \ +Vehicle.Powertrain.TractionBattery.PowerLoss \ +Vehicle.Powertrain.TractionBattery.ProductionDate \ +Vehicle.Powertrain.TractionBattery.Range \ +Vehicle.Powertrain.TractionBattery.StateOfCharge.Current \ +Vehicle.Powertrain.TractionBattery.StateOfCharge.Displayed \ +Vehicle.Powertrain.TractionBattery.StateOfHealth \ +Vehicle.Powertrain.TractionBattery.Temperature.Average \ +Vehicle.Powertrain.TractionBattery.Temperature.Max \ +Vehicle.Powertrain.TractionBattery.Temperature.Min \ +Vehicle.Powertrain.Transmission.ClutchEngagement \ +Vehicle.Powertrain.Transmission.ClutchWear \ +Vehicle.Powertrain.Transmission.CurrentGear \ +Vehicle.Powertrain.Transmission.DiffLockFrontEngagement \ +Vehicle.Powertrain.Transmission.DiffLockRearEngagement \ +Vehicle.Powertrain.Transmission.DriveType \ +Vehicle.Powertrain.Transmission.GearChangeMode \ +Vehicle.Powertrain.Transmission.GearCount \ +Vehicle.Powertrain.Transmission.IsElectricalPowertrainEngaged \ +Vehicle.Powertrain.Transmission.IsLowRangeEngaged \ +Vehicle.Powertrain.Transmission.IsParkLockEngaged \ +Vehicle.Powertrain.Transmission.PerformanceMode \ +Vehicle.Powertrain.Transmission.SelectedGear \ +Vehicle.Powertrain.Transmission.Temperature \ +Vehicle.Powertrain.Transmission.TorqueDistribution \ +Vehicle.Powertrain.Transmission.TravelledDistance \ +Vehicle.Powertrain.Transmission.Type \ +Vehicle.Powertrain.Type \ +Vehicle.RoofLoad \ +Vehicle.Service.DistanceToService \ +Vehicle.Service.IsServiceDue \ +Vehicle.Service.TimeToService \ +Vehicle.Speed \ +Vehicle.StartTime \ +Vehicle.Tachograph.Driver.Driver1.AuthenticationEquipment \ +Vehicle.Tachograph.Driver.Driver1.CardIssuingMemberState \ +Vehicle.Tachograph.Driver.Driver1.CardRenewalIndex \ +Vehicle.Tachograph.Driver.Driver1.CardReplacementIndex \ +Vehicle.Tachograph.Driver.Driver1.Identification \ +Vehicle.Tachograph.Driver.Driver1.IsCardPresent \ +Vehicle.Tachograph.Driver.Driver1.IsLoggedIn \ +Vehicle.Tachograph.Driver.Driver1.OemIdentification \ +Vehicle.Tachograph.Driver.Driver1.OemIdentificationType \ +Vehicle.Tachograph.Driver.Driver1.TimeRelatedStatus \ +Vehicle.Tachograph.Driver.Driver1.WorkingState \ +Vehicle.Tachograph.Driver.Driver2.AuthenticationEquipment \ +Vehicle.Tachograph.Driver.Driver2.CardIssuingMemberState \ +Vehicle.Tachograph.Driver.Driver2.CardRenewalIndex \ +Vehicle.Tachograph.Driver.Driver2.CardReplacementIndex \ +Vehicle.Tachograph.Driver.Driver2.Identification \ +Vehicle.Tachograph.Driver.Driver2.IsCardPresent \ +Vehicle.Tachograph.Driver.Driver2.IsLoggedIn \ +Vehicle.Tachograph.Driver.Driver2.OemIdentification \ +Vehicle.Tachograph.Driver.Driver2.OemIdentificationType \ +Vehicle.Tachograph.Driver.Driver2.TimeRelatedStatus \ +Vehicle.Tachograph.Driver.Driver2.WorkingState \ +Vehicle.Tachograph.HandlingInformation \ +Vehicle.Tachograph.Performance \ +Vehicle.Tachograph.SystemEvent \ +Vehicle.Tachograph.VehicleSpeed \ +Vehicle.Trailer.IsConnected \ +Vehicle.TraveledDistance \ +Vehicle.TraveledDistanceHighRes \ +Vehicle.TraveledDistanceSinceStart \ +Vehicle.TripDuration \ +Vehicle.TripMeterReading \ +Vehicle.VehicleIdentification.AcrissCode \ +Vehicle.VehicleIdentification.BodyType \ +Vehicle.VehicleIdentification.Brand \ +Vehicle.VehicleIdentification.DateVehicleFirstRegistered \ +Vehicle.VehicleIdentification.KnownVehicleDamages \ +Vehicle.VehicleIdentification.MeetsEmissionStandard \ +Vehicle.VehicleIdentification.Model \ +Vehicle.VehicleIdentification.OptionalExtras \ +Vehicle.VehicleIdentification.ProductionDate \ +Vehicle.VehicleIdentification.PurchaseDate \ +Vehicle.VehicleIdentification.VIN \ +Vehicle.VehicleIdentification.VehicleConfiguration \ +Vehicle.VehicleIdentification.VehicleInteriorColor \ +Vehicle.VehicleIdentification.VehicleInteriorType \ +Vehicle.VehicleIdentification.VehicleModelDate \ +Vehicle.VehicleIdentification.VehicleSeatingCapacity \ +Vehicle.VehicleIdentification.VehicleSpecialUsage \ +Vehicle.VehicleIdentification.WMI \ +Vehicle.VehicleIdentification.Year \ +Vehicle.VersionVSS.Label \ +Vehicle.VersionVSS.Major \ +Vehicle.VersionVSS.Minor \ +Vehicle.VersionVSS.Patch \ +Vehicle.Width diff --git a/csv-provider/signalsFmsRecording.csv b/csv-provider/signalsFmsRecording.csv new file mode 100644 index 0000000..1d6c646 --- /dev/null +++ b/csv-provider/signalsFmsRecording.csv @@ -0,0 +1,705 @@ +field,signal,value,delay +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,67.19999694824219,0.0 +current,Vehicle.Powertrain.CombustionEngine.EngineHours,943.5,0.0 +current,Vehicle.Powertrain.Transmission.Type,UNKNOWN,0.0 +current,Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid.Level,62,0.0 +current,Vehicle.Cabin.SeatRowCount,2,0.0 +current,Vehicle.Powertrain.CombustionEngine.MaxTorque,0,0.0 +current,Vehicle.Powertrain.CombustionEngine.ECT,8,0.0 +current,Vehicle.Chassis.Wheelbase,0,0.0 +current,Vehicle.DirectionIndicator,Not available,0.0 +current,Vehicle.VersionVSS.Major,3,0.0 +current,Vehicle.Tachograph.Driver.Driver1.WorkingState,REST,0.0 +current,Vehicle.Chassis.Track,0,0.0 +current,Vehicle.IsMoving,False,0.0 +current,Vehicle.Cabin.DriverPosition,1,0.0 +current,Vehicle.Powertrain.ElectricMotor.MaxPower,0,0.0 +current,Vehicle.Powertrain.ElectricMotor.MaxTorque,0,0.0 +current,Vehicle.CurrentOverallWeight,655350,0.0 +current,Vehicle.Speed,0.0,0.0 +current,Vehicle.Chassis.AxleCount,2,0.0 +current,Vehicle.Width,0,0.0 +current,Vehicle.StartTime,0000-01-01T00:00Z,0.0 +current,Vehicle.IsOverspeed,False,0.0 +current,Vehicle.TraveledDistanceHighRes,54054555,0.0 +current,Vehicle.Powertrain.Transmission.DriveType,UNKNOWN,0.0 +current,Vehicle.Tachograph.Driver.Driver2.WorkingState,REST,0.0 +current,Vehicle.Tachograph.VehicleSpeed,0.0,0.0 +current,Vehicle.Powertrain.FuelSystem.HybridType,UNKNOWN,0.0 +current,Vehicle.Powertrain.CombustionEngine.AspirationType,UNKNOWN,0.0 +current,Vehicle.VersionVSS.Patch,1,0.0 +current,Vehicle.Powertrain.CombustionEngine.Speed,0,0.0 +current,Vehicle.GrossWeight,0,0.0 +current,Vehicle.Powertrain.ElectricMotor.MaxRegenPower,0,0.0 +current,Vehicle.Powertrain.ElectricMotor.MaxRegenTorque,0,0.0 +current,Vehicle.ADAS.CruiseControl.IsActive,False,0.0 +current,Vehicle.Chassis.SteeringWheel.Position,FRONT_LEFT,0.0 +current,Vehicle.VersionVSS.Minor,1,0.0 +current,Vehicle.Exterior.AirTemperature,10.5625,0.0 +current,Vehicle.Length,0,0.0 +current,Vehicle.Chassis.ParkingBrake.IsEngaged,True,0.0 +current,Vehicle.Cabin.DoorCount,4,0.0 +current,Vehicle.ADAS.CruiseControl.SpeedSet,255.0,0.0 +current,Vehicle.Powertrain.Transmission.GearCount,0,0.0 +current,Vehicle.Powertrain.CombustionEngine.MaxPower,0,0.0 +current,Vehicle.CurbWeight,0,0.0 +current,Vehicle.ADAS.CruiseControl.IsEnabled,True,0.0 +current,Vehicle.VehicleIdentification.VIN,87,0.0 +current,Vehicle.MaxTowBallWeight,0,0.0 +current,Vehicle.MaxTowWeight,0,0.0 +current,Vehicle.Height,0,0.0 +current,Vehicle.Powertrain.CombustionEngine.Configuration,UNKNOWN,0.0 +current,Vehicle.Powertrain.FuelSystem.Tank.Second.RelativeLevel,102.0,0.0 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,76.80000305175781,0.7383580207824707 +current,Vehicle.Exterior.AirTemperature,10.59375,0.6819970607757568 +current,Vehicle.Exterior.AirTemperature,10.625,0.9999392032623291 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,87.5999984741211,0.3188798427581787 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,90.4000015258789,1.0096988677978516 +current,Vehicle.Exterior.AirTemperature,10.65625,1.6732792854309082 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,94.0,0.3170478343963623 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,94.80000305175781,1.0011439323425293 +current,Vehicle.Exterior.AirTemperature,10.6875,0.685589075088501 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,95.19999694824219,0.3143138885498047 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,96.0,1.0020551681518555 +current,Vehicle.Exterior.AirTemperature,10.71875,0.6795239448547363 +current,Vehicle.CurrentOverallWeight,3820,0.04990696907043457 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,96.4000015258789,1.2683041095733643 +current,Vehicle.CurrentOverallWeight,655350,0.5214488506317139 +current,Vehicle.Exterior.AirTemperature,10.75,1.160055160522461 +current,Vehicle.Exterior.AirTemperature,10.78125,1.0025668144226074 +current,Vehicle.CurrentOverallWeight,3820,2.0483450889587402 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,96.80000305175781,0.26833581924438477 +current,Vehicle.Exterior.AirTemperature,10.8125,0.681826114654541 +current,Vehicle.CurrentOverallWeight,655350,0.8358230590820312 +current,Vehicle.CurrentOverallWeight,3820,1.2093899250030518 +current,Vehicle.CurrentOverallWeight,655350,1.7876629829406738 +current,Vehicle.Exterior.AirTemperature,10.84375,1.1660990715026855 +current,Vehicle.Powertrain.CombustionEngine.Speed,621,10.141195058822632 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,96.4000015258789,0.18018603324890137 +current,Vehicle.Powertrain.CombustionEngine.Speed,742,0.825098991394043 +current,Vehicle.CurrentOverallWeight,3820,0.9014279842376709 +current,Vehicle.Powertrain.CombustionEngine.Speed,706,0.11053800582885742 +current,Vehicle.Powertrain.CombustionEngine.Speed,699,1.0108668804168701 +current,Vehicle.CurrentOverallWeight,655350,0.6638660430908203 +current,Vehicle.Powertrain.CombustionEngine.Speed,681,0.3370089530944824 +current,Vehicle.Exterior.AirTemperature,10.875,0.8306879997253418 +current,Vehicle.CurrentOverallWeight,3820,0.047445058822631836 +current,Vehicle.Powertrain.CombustionEngine.Speed,698,0.13267207145690918 +current,Vehicle.Powertrain.CombustionEngine.Speed,702,1.0063278675079346 +current,Vehicle.Chassis.ParkingBrake.IsEngaged,False,0.2925839424133301 +current,Vehicle.CurrentOverallWeight,655350,0.35256409645080566 +current,Vehicle.Powertrain.CombustionEngine.Speed,701,0.3554260730743408 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,96.80000305175781,0.13505291938781738 +current,Vehicle.Exterior.AirTemperature,10.90625,0.6823821067810059 +current,Vehicle.CurrentOverallWeight,3820,0.04518580436706543 +current,Vehicle.Powertrain.CombustionEngine.Speed,700,0.13956809043884277 +current,Vehicle.CurrentOverallWeight,655350,1.6374988555908203 +current,Vehicle.Powertrain.CombustionEngine.Speed,719,1.378352165222168 +current,Vehicle.Powertrain.CombustionEngine.Speed,884,1.0000629425048828 +current,Vehicle.Speed,0.69921875,0.0014767646789550781 +current,Vehicle.Powertrain.CombustionEngine.Speed,893,0.3280520439147949 +current,Vehicle.Tachograph.VehicleSpeed,2.09765625,0.10811018943786621 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,96.0,0.0021729469299316406 +current,Vehicle.Speed,2.69921875,0.0008549690246582031 +current,Vehicle.Powertrain.CombustionEngine.Speed,911,0.3271799087524414 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,95.5999984741211,0.11259007453918457 +current,Vehicle.Tachograph.VehicleSpeed,2.8984375,0.05028796195983887 +current,Vehicle.Speed,3.19921875,0.0012102127075195312 +current,Vehicle.Powertrain.CombustionEngine.Speed,905,0.23359179496765137 +current,Vehicle.Tachograph.VehicleSpeed,3.19921875,0.19839787483215332 +current,Vehicle.Speed,3.09765625,0.001603841781616211 +current,Vehicle.Exterior.AirTemperature,10.9375,0.015481948852539062 +current,Vehicle.Powertrain.CombustionEngine.Speed,890,0.2282402515411377 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,94.80000305175781,0.09221076965332031 +current,Vehicle.Tachograph.VehicleSpeed,2.8984375,0.14809894561767578 +current,Vehicle.Speed,2.796875,0.0008661746978759766 +current,Vehicle.Powertrain.CombustionEngine.Speed,889,0.16022181510925293 +current,Vehicle.Tachograph.Driver.Driver1.WorkingState,DRIVE,0.2729310989379883 +current,Vehicle.Tachograph.Driver.Driver2.WorkingState,DRIVER_AVAILABLE,0.0018877983093261719 +current,Vehicle.IsMoving,True,0.002504110336303711 +current,Vehicle.Tachograph.VehicleSpeed,2.69921875,0.0054819583892822266 +current,Vehicle.Speed,2.5,0.0017871856689453125 +current,Vehicle.Powertrain.CombustionEngine.Speed,886,0.16577887535095215 +current,Vehicle.TraveledDistanceHighRes,54054560,0.08013796806335449 +current,Vehicle.Tachograph.VehicleSpeed,2.5,0.23806214332580566 +current,Vehicle.Speed,2.3984375,0.002362966537475586 +current,Vehicle.Powertrain.CombustionEngine.Speed,887,0.06408810615539551 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,95.19999694824219,0.07245302200317383 +current,Vehicle.Tachograph.VehicleSpeed,2.3984375,0.2978498935699463 +current,Vehicle.CurrentOverallWeight,3820,0.43006420135498047 +current,Vehicle.Speed,2.296875,0.0023958683013916016 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,95.5999984741211,0.13822197914123535 +current,Vehicle.Tachograph.VehicleSpeed,2.19921875,0.34323620796203613 +current,Vehicle.Speed,2.09765625,0.0011930465698242188 +current,Vehicle.Powertrain.CombustionEngine.Speed,881,0.07229900360107422 +current,Vehicle.Tachograph.VehicleSpeed,1.796875,0.4138479232788086 +current,Vehicle.CurrentOverallWeight,655350,0.15337395668029785 +current,Vehicle.Speed,1.59765625,0.0012309551239013672 +current,Vehicle.Powertrain.CombustionEngine.Speed,888,0.0866999626159668 +current,Vehicle.Tachograph.VehicleSpeed,1.5,0.3939502239227295 +current,Vehicle.Powertrain.CombustionEngine.ECT,9,0.3796117305755615 +current,Vehicle.CurrentOverallWeight,3820,0.004132270812988281 +current,Vehicle.Powertrain.CombustionEngine.Speed,887,0.22783160209655762 +current,Vehicle.Tachograph.VehicleSpeed,1.59765625,0.4390714168548584 +current,Vehicle.Powertrain.CombustionEngine.Speed,878,0.561302661895752 +current,Vehicle.Speed,1.796875,0.0016169548034667969 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,94.80000305175781,0.03970789909362793 +current,Vehicle.Tachograph.VehicleSpeed,1.796875,0.44544410705566406 +current,Vehicle.CurrentOverallWeight,655350,0.054894208908081055 +current,Vehicle.Exterior.AirTemperature,10.96875,0.1764688491821289 +current,Vehicle.Powertrain.CombustionEngine.Speed,884,0.288585901260376 +current,Vehicle.Speed,1.69921875,0.0011591911315917969 +current,Vehicle.Tachograph.VehicleSpeed,1.296875,0.43255615234375 +current,Vehicle.CurrentOverallWeight,3820,0.23528504371643066 +current,Vehicle.Powertrain.CombustionEngine.Speed,707,0.23934173583984375 +current,Vehicle.Speed,1.09765625,0.0017728805541992188 +current,Vehicle.Tachograph.VehicleSpeed,0.796875,0.33138513565063477 +current,Vehicle.Powertrain.CombustionEngine.Speed,700,0.47505879402160645 +current,Vehicle.Speed,0.5,0.0016248226165771484 +current,Vehicle.CurrentOverallWeight,655350,0.24329113960266113 +current,Vehicle.Tachograph.VehicleSpeed,0.3984375,0.04243898391723633 +current,Vehicle.Exterior.AirTemperature,11.0,0.1356220245361328 +current,Vehicle.Powertrain.CombustionEngine.Speed,699,0.29403090476989746 +current,Vehicle.Speed,0.19921875,0.000985860824584961 +current,Vehicle.Tachograph.Driver.Driver1.WorkingState,WORK,0.32655811309814453 +current,Vehicle.IsMoving,False,0.0025429725646972656 +current,Vehicle.Tachograph.VehicleSpeed,0.19921875,0.006002902984619141 +current,Vehicle.CurrentOverallWeight,3820,0.13102507591247559 +current,Vehicle.Powertrain.CombustionEngine.Speed,716,0.2521958351135254 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,94.4000015258789,0.023476362228393555 +current,Vehicle.Speed,0.59765625,0.00203704833984375 +current,Vehicle.Tachograph.VehicleSpeed,0.59765625,0.23144769668579102 +current,Vehicle.Powertrain.CombustionEngine.Speed,885,0.38185811042785645 +current,Vehicle.Speed,0.296875,0.0008902549743652344 +current,Vehicle.CurrentOverallWeight,655350,0.035843849182128906 +current,Vehicle.Tachograph.VehicleSpeed,1.09765625,0.1481761932373047 +current,Vehicle.Powertrain.CombustionEngine.Speed,898,0.342911958694458 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,94.0,0.011858940124511719 +current,Vehicle.TraveledDistanceHighRes,54054565,0.007472991943359375 +current,Vehicle.Speed,3.19921875,0.001024007797241211 +current,Vehicle.Tachograph.VehicleSpeed,3.09765625,0.08425092697143555 +current,Vehicle.Powertrain.CombustionEngine.Speed,904,0.3567378520965576 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,94.4000015258789,0.0015749931335449219 +current,Vehicle.Speed,3.69921875,0.0012359619140625 +current,Vehicle.Tachograph.VehicleSpeed,3.69921875,0.08728218078613281 +current,Vehicle.Powertrain.CombustionEngine.Speed,918,0.36405491828918457 +current,Vehicle.Tachograph.VehicleSpeed,3.8984375,0.6423459053039551 +current,Vehicle.Speed,3.8984375,0.0014989376068115234 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,95.19999694824219,0.33820581436157227 +current,Vehicle.Speed,3.59765625,0.0012390613555908203 +current,Vehicle.Tachograph.Driver.Driver1.WorkingState,DRIVE,0.026269912719726562 +current,Vehicle.IsMoving,True,0.002785205841064453 +current,Vehicle.Tachograph.VehicleSpeed,3.59765625,0.004136085510253906 +current,Vehicle.Powertrain.CombustionEngine.ECT,10,0.023540019989013672 +current,Vehicle.CurrentOverallWeight,3820,0.00569605827331543 +current,Vehicle.Powertrain.CombustionEngine.Speed,894,0.3009829521179199 +current,Vehicle.Speed,3.09765625,0.0019330978393554688 +current,Vehicle.Exterior.AirTemperature,11.03125,0.008881807327270508 +current,Vehicle.Tachograph.VehicleSpeed,3.0,0.06569290161132812 +current,Vehicle.TraveledDistanceHighRes,54054570,0.2682969570159912 +current,Vehicle.Powertrain.CombustionEngine.Speed,879,0.01494598388671875 +current,Vehicle.CurrentOverallWeight,655350,0.4639289379119873 +current,Vehicle.Tachograph.VehicleSpeed,2.59765625,0.2502739429473877 +current,Vehicle.Speed,2.59765625,0.0007650852203369141 +current,Vehicle.Powertrain.CombustionEngine.Speed,876,0.27129387855529785 +current,Vehicle.CurrentOverallWeight,3820,0.6989810466766357 +current,Vehicle.Speed,3.0,0.0028808116912841797 +current,Vehicle.Tachograph.VehicleSpeed,3.19921875,0.03001689910888672 +current,Vehicle.Powertrain.CombustionEngine.Speed,885,0.23520517349243164 +current,Vehicle.Speed,4.69921875,0.0010919570922851562 +current,Vehicle.Tachograph.VehicleSpeed,5.19921875,0.03149008750915527 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,94.80000305175781,0.2088639736175537 +current,Vehicle.Powertrain.CombustionEngine.Speed,894,0.03818702697753906 +current,Vehicle.CurrentOverallWeight,655350,0.45630884170532227 +current,Vehicle.Tachograph.VehicleSpeed,6.3984375,0.30019307136535645 +current,Vehicle.Speed,6.3984375,0.0013930797576904297 +current,Vehicle.Powertrain.CombustionEngine.Speed,976,0.18883705139160156 +current,Vehicle.Tachograph.VehicleSpeed,5.296875,0.7904889583587646 +current,Vehicle.Speed,5.296875,0.0015540122985839844 +current,Vehicle.TraveledDistanceHighRes,54054575,0.04601693153381348 +current,Vehicle.Powertrain.CombustionEngine.Speed,787,0.04596829414367676 +current,Vehicle.Tachograph.VehicleSpeed,4.8984375,0.7895348072052002 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,94.4000015258789,0.15499401092529297 +current,Vehicle.Powertrain.CombustionEngine.Speed,776,0.05765819549560547 +current,Vehicle.Speed,4.8984375,0.0009930133819580078 +current,Vehicle.Tachograph.VehicleSpeed,5.09765625,0.8321762084960938 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,94.0,0.10718178749084473 +current,Vehicle.Powertrain.CombustionEngine.Speed,832,0.05721306800842285 +current,Vehicle.Speed,5.19921875,0.0010890960693359375 +current,Vehicle.Exterior.AirTemperature,11.0,0.617372989654541 +current,Vehicle.Tachograph.VehicleSpeed,5.8984375,0.2638702392578125 +current,Vehicle.Powertrain.CombustionEngine.Speed,935,0.11565780639648438 +current,Vehicle.Speed,5.8984375,0.0018138885498046875 +current,Vehicle.Exterior.AirTemperature,11.03125,0.6164901256561279 +current,Vehicle.Tachograph.VehicleSpeed,6.296875,0.2642538547515869 +current,Vehicle.TraveledDistanceHighRes,54054580,0.06010627746582031 +current,Vehicle.Powertrain.CombustionEngine.Speed,973,0.05923199653625488 +current,Vehicle.Speed,6.19921875,0.0022859573364257812 +current,Vehicle.Tachograph.VehicleSpeed,6.69921875,0.8325879573822021 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,93.5999984741211,0.003412008285522461 +current,Vehicle.Powertrain.CombustionEngine.Speed,1047,0.07848119735717773 +current,Vehicle.Speed,6.69921875,0.0021772384643554688 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,93.19999694824219,0.7398109436035156 +current,Vehicle.TraveledDistanceHighRes,54054585,0.008111000061035156 +current,Vehicle.Tachograph.VehicleSpeed,7.0,0.0309600830078125 +current,Vehicle.Powertrain.CombustionEngine.Speed,1099,0.03488802909851074 +current,Vehicle.Speed,7.09765625,0.002151966094970703 +current,Vehicle.Powertrain.CombustionEngine.ECT,11,0.45639705657958984 +current,Vehicle.Tachograph.VehicleSpeed,7.5,0.3303689956665039 +current,Vehicle.Powertrain.CombustionEngine.Speed,1190,0.03701496124267578 +current,Vehicle.Speed,7.69921875,0.0015943050384521484 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,93.5999984741211,0.7393028736114502 +current,Vehicle.TraveledDistanceHighRes,54054590,0.007004976272583008 +current,Vehicle.Tachograph.VehicleSpeed,8.69921875,0.0833730697631836 +current,Vehicle.Powertrain.CombustionEngine.Speed,1364,0.0012631416320800781 +current,Vehicle.Speed,8.796875,0.0015192031860351562 +current,Vehicle.Tachograph.VehicleSpeed,9.796875,0.7368869781494141 +current,Vehicle.Powertrain.CombustionEngine.Speed,1539,0.0016169548034667969 +current,Vehicle.Speed,10.0,0.0008578300476074219 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,94.0,0.5417680740356445 +current,Vehicle.Tachograph.VehicleSpeed,10.796875,0.09314918518066406 +current,Vehicle.Powertrain.CombustionEngine.Speed,1689,0.010814905166625977 +current,Vehicle.Speed,10.8984375,0.0012280941009521484 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,94.4000015258789,0.5419900417327881 +current,Vehicle.TraveledDistanceHighRes,54054595,0.006731748580932617 +current,Vehicle.Tachograph.VehicleSpeed,11.296875,0.08631086349487305 +current,Vehicle.Powertrain.CombustionEngine.Speed,1300,0.02112603187561035 +current,Vehicle.Speed,10.59765625,0.001024007797241211 +current,Vehicle.TraveledDistanceHighRes,54054600,0.44983792304992676 +current,Vehicle.Tachograph.VehicleSpeed,13.0,0.08813214302062988 +current,Vehicle.Powertrain.CombustionEngine.Speed,1128,0.017880916595458984 +current,Vehicle.Speed,14.09765625,0.0015521049499511719 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,94.80000305175781,0.34066104888916016 +current,Vehicle.TraveledDistanceHighRes,54054605,0.004690885543823242 +current,Vehicle.Powertrain.CombustionEngine.Speed,1295,0.12004590034484863 +current,Vehicle.Tachograph.VehicleSpeed,15.09765625,0.014774084091186523 +current,Vehicle.Speed,15.69921875,0.002371072769165039 +current,Vehicle.Powertrain.CombustionEngine.Speed,1386,0.37176990509033203 +current,Vehicle.Tachograph.VehicleSpeed,16.19921875,0.006940126419067383 +current,Vehicle.CurrentOverallWeight,3820,0.5853369235992432 +current,Vehicle.Speed,16.59765625,0.004261970520019531 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,94.4000015258789,0.1323070526123047 +current,Vehicle.TraveledDistanceHighRes,54054610,0.006410121917724609 +current,Vehicle.Powertrain.CombustionEngine.Speed,1453,0.1285710334777832 +current,Vehicle.Tachograph.VehicleSpeed,17.0,0.06127214431762695 +current,Vehicle.Speed,17.5,0.00019502639770507812 +current,Vehicle.TraveledDistanceHighRes,54054615,0.049861907958984375 +current,Vehicle.Powertrain.CombustionEngine.Speed,1502,0.1385350227355957 +current,Vehicle.Tachograph.VehicleSpeed,17.59765625,0.10028314590454102 +current,Vehicle.CurrentOverallWeight,655350,0.23720383644104004 +current,Vehicle.Exterior.AirTemperature,11.0,0.1946570873260498 +current,Vehicle.Powertrain.CombustionEngine.ECT,12,0.04427814483642578 +current,Vehicle.Speed,17.796875,0.0014548301696777344 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,94.0,0.04323101043701172 +current,Vehicle.TraveledDistanceHighRes,54054620,0.005012989044189453 +current,Vehicle.Powertrain.CombustionEngine.Speed,1428,0.13879704475402832 +current,Vehicle.Tachograph.VehicleSpeed,16.796875,0.14538288116455078 +current,Vehicle.Speed,15.3984375,0.0015232563018798828 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,93.5999984741211,0.041240692138671875 +current,Vehicle.Powertrain.CombustionEngine.Speed,1223,0.15019536018371582 +current,Vehicle.Tachograph.VehicleSpeed,14.09765625,0.1414027214050293 +current,Vehicle.TraveledDistanceHighRes,54054630,0.7146050930023193 +current,Vehicle.Speed,12.5,0.0017039775848388672 +current,Vehicle.Powertrain.CombustionEngine.Speed,1016,0.08925294876098633 +current,Vehicle.Tachograph.VehicleSpeed,11.69921875,0.19854426383972168 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,91.19999694824219,0.6506989002227783 +current,Vehicle.Powertrain.CombustionEngine.Speed,890,0.15473389625549316 +current,Vehicle.Speed,10.59765625,0.0012547969818115234 +current,Vehicle.Tachograph.VehicleSpeed,10.296875,0.18987131118774414 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,90.80000305175781,0.6540536880493164 +current,Vehicle.TraveledDistanceHighRes,54054635,0.003789186477661133 +current,Vehicle.Powertrain.CombustionEngine.Speed,1495,0.15656805038452148 +current,Vehicle.Speed,9.19921875,0.001585245132446289 +current,Vehicle.Tachograph.VehicleSpeed,9.09765625,0.09042572975158691 +current,Vehicle.TraveledDistanceHighRes,54054640,0.657642126083374 +current,Vehicle.Powertrain.CombustionEngine.Speed,1243,0.16656017303466797 +current,Vehicle.Speed,8.0,0.0016791820526123047 +current,Vehicle.Tachograph.VehicleSpeed,7.8984375,0.08705282211303711 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,90.4000015258789,0.6557328701019287 +current,Vehicle.Powertrain.CombustionEngine.Speed,1340,0.1829981803894043 +current,Vehicle.Speed,8.3984375,0.0012900829315185547 +current,Vehicle.Tachograph.VehicleSpeed,8.796875,0.13250303268432617 +current,Vehicle.CurrentOverallWeight,5580,0.33353710174560547 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,90.80000305175781,0.27937889099121094 +current,Vehicle.Powertrain.CombustionEngine.Speed,1528,0.1942429542541504 +current,Vehicle.Speed,9.69921875,0.0007071495056152344 +current,Vehicle.Tachograph.VehicleSpeed,9.8984375,0.13566279411315918 +current,Vehicle.TraveledDistanceHighRes,54054645,0.6122009754180908 +current,Vehicle.Powertrain.CombustionEngine.Speed,1769,0.19068217277526855 +current,Vehicle.Speed,11.296875,0.0015330314636230469 +current,Vehicle.Tachograph.VehicleSpeed,11.5,0.0827329158782959 +current,Vehicle.CurrentOverallWeight,17200,0.039895057678222656 +current,Vehicle.Powertrain.CombustionEngine.ECT,13,0.23709702491760254 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,92.4000015258789,0.2798590660095215 +current,Vehicle.Powertrain.CombustionEngine.Speed,1363,0.20308589935302734 +current,Vehicle.Speed,11.3984375,0.0026009082794189453 +current,Vehicle.Tachograph.VehicleSpeed,11.8984375,0.030658245086669922 +current,Vehicle.CurrentOverallWeight,5580,0.23506879806518555 +current,Vehicle.TraveledDistanceHighRes,54054655,0.2813100814819336 +current,Vehicle.Powertrain.CombustionEngine.Speed,1242,0.19930100440979004 +current,Vehicle.Speed,14.796875,0.0019080638885498047 +current,Vehicle.Tachograph.VehicleSpeed,15.09765625,0.08203911781311035 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,93.5999984741211,0.45812368392944336 +current,Vehicle.Powertrain.CombustionEngine.Speed,1437,0.21481537818908691 +current,Vehicle.CurrentOverallWeight,17200,0.2674696445465088 +current,Vehicle.Tachograph.VehicleSpeed,17.296875,0.06383323669433594 +current,Vehicle.Speed,17.19921875,0.0014789104461669922 +current,Vehicle.TraveledDistanceHighRes,54054660,0.44665098190307617 +current,Vehicle.Powertrain.CombustionEngine.Speed,1551,0.21040892601013184 +current,Vehicle.Tachograph.VehicleSpeed,18.296875,0.37323784828186035 +current,Vehicle.Speed,18.19921875,0.002849102020263672 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,94.80000305175781,0.33446288108825684 +current,Vehicle.Powertrain.CombustionEngine.Speed,1563,0.22094011306762695 +current,Vehicle.Speed,18.3984375,0.0015728473663330078 +current,Vehicle.TraveledDistanceHighRes,54054670,0.34105706214904785 +current,Vehicle.Powertrain.CombustionEngine.Speed,1551,0.2173318862915039 +current,Vehicle.Tachograph.VehicleSpeed,18.09765625,0.36820197105407715 +current,Vehicle.Exterior.AirTemperature,11.03125,0.09152102470397949 +current,Vehicle.Speed,18.09765625,0.0015921592712402344 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,93.5999984741211,0.23827099800109863 +current,Vehicle.TraveledDistanceHighRes,54054675,0.0060427188873291016 +current,Vehicle.Powertrain.CombustionEngine.Speed,1447,0.21979117393493652 +current,Vehicle.Tachograph.VehicleSpeed,16.5,0.41382598876953125 +current,Vehicle.Powertrain.CombustionEngine.ECT,14,0.0777730941772461 +current,Vehicle.CurrentOverallWeight,5580,0.006914854049682617 +current,Vehicle.Speed,16.296875,0.002271890640258789 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,92.4000015258789,0.13785696029663086 +current,Vehicle.TraveledDistanceHighRes,54054680,0.003938913345336914 +current,Vehicle.Powertrain.CombustionEngine.Speed,1328,0.22702622413635254 +current,Vehicle.Tachograph.VehicleSpeed,15.09765625,0.41236305236816406 +current,Vehicle.Exterior.AirTemperature,11.0625,0.030163049697875977 +current,Vehicle.Speed,14.796875,0.0011959075927734375 +current,Vehicle.Powertrain.CombustionEngine.Speed,1211,0.28710412979125977 +current,Vehicle.CurrentOverallWeight,17200,0.23264265060424805 +current,Vehicle.Tachograph.VehicleSpeed,13.8984375,0.20988225936889648 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,90.80000305175781,0.31217002868652344 +current,Vehicle.TraveledDistanceHighRes,54054690,0.004051923751831055 +current,Vehicle.Speed,13.69921875,0.0012149810791015625 +current,Vehicle.Powertrain.CombustionEngine.Speed,1150,0.18679213523864746 +current,Vehicle.Exterior.AirTemperature,11.09375,0.4325718879699707 +current,Vehicle.Tachograph.VehicleSpeed,13.296875,0.009256839752197266 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,90.4000015258789,0.3497002124786377 +current,Vehicle.TraveledDistanceHighRes,54054695,0.028751850128173828 +current,Vehicle.Speed,13.09765625,0.017546892166137695 +current,Vehicle.Powertrain.CombustionEngine.Speed,1100,0.11982893943786621 +current,Vehicle.Tachograph.VehicleSpeed,12.796875,0.4978311061859131 +current,Vehicle.Speed,12.8984375,0.0018911361694335938 +current,Vehicle.Powertrain.CombustionEngine.Speed,1086,0.10384702682495117 +current,Vehicle.Tachograph.VehicleSpeed,12.69921875,0.5296599864959717 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,89.5999984741211,0.20343804359436035 +current,Vehicle.TraveledDistanceHighRes,54054700,0.008065938949584961 +current,Vehicle.Speed,12.69921875,0.0007729530334472656 +current,Vehicle.Powertrain.CombustionEngine.Speed,1081,0.1031179428100586 +current,Vehicle.Exterior.AirTemperature,11.125,0.41303086280822754 +current,Vehicle.Tachograph.VehicleSpeed,12.8984375,0.11822223663330078 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,89.19999694824219,0.20177292823791504 +current,Vehicle.TraveledDistanceHighRes,54054705,0.006921052932739258 +current,Vehicle.Speed,12.8984375,0.0004818439483642578 +current,Vehicle.Powertrain.CombustionEngine.Speed,1115,0.004555225372314453 +current,Vehicle.Powertrain.CombustionEngine.ECT,15,0.452150821685791 +current,Vehicle.Tachograph.VehicleSpeed,13.3984375,0.0785529613494873 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,88.80000305175781,0.20416927337646484 +current,Vehicle.Powertrain.CombustionEngine.Speed,1199,0.27753186225891113 +current,Vehicle.Speed,13.796875,0.0015132427215576172 +current,Vehicle.Exterior.AirTemperature,11.15625,0.31995582580566406 +current,Vehicle.Tachograph.VehicleSpeed,14.59765625,0.16267704963684082 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,88.4000015258789,0.15767502784729004 +current,Vehicle.TraveledDistanceHighRes,54054710,0.006272077560424805 +current,Vehicle.Powertrain.CombustionEngine.Speed,1289,0.27903199195861816 +current,Vehicle.Speed,14.8984375,0.0013871192932128906 +current,Vehicle.Tachograph.VehicleSpeed,15.5,0.5315561294555664 +current,Vehicle.TraveledDistanceHighRes,54054715,0.11374974250793457 +current,Vehicle.Powertrain.CombustionEngine.Speed,1375,0.28232908248901367 +current,Vehicle.Speed,16.09765625,0.0010318756103515625 +current,Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid.Level,63,0.12099695205688477 +current,Vehicle.Tachograph.VehicleSpeed,16.796875,0.31835508346557617 +current,Vehicle.Powertrain.CombustionEngine.Speed,1485,0.3976719379425049 +current,Vehicle.Speed,17.5,0.0012729167938232422 +current,Vehicle.Exterior.AirTemperature,11.1875,0.11626410484313965 +current,Vehicle.Tachograph.VehicleSpeed,18.09765625,0.2652249336242676 +current,Vehicle.TraveledDistanceHighRes,54054725,0.06413006782531738 +current,Vehicle.Powertrain.CombustionEngine.Speed,1588,0.28818821907043457 +current,Vehicle.Speed,18.69921875,0.0017590522766113281 +current,Vehicle.Tachograph.VehicleSpeed,19.09765625,0.27953505516052246 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,89.19999694824219,0.06116771697998047 +current,Vehicle.TraveledDistanceHighRes,54054730,0.0044023990631103516 +current,Vehicle.Powertrain.CombustionEngine.Speed,1626,0.2983410358428955 +current,Vehicle.Speed,19.0,0.0007238388061523438 +current,Vehicle.Tachograph.VehicleSpeed,18.8984375,0.23466825485229492 +current,Vehicle.Powertrain.CombustionEngine.Speed,1610,0.32489585876464844 +current,Vehicle.Tachograph.VehicleSpeed,18.796875,0.6739799976348877 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,89.5999984741211,0.00911712646484375 +current,Vehicle.TraveledDistanceHighRes,54054740,0.0056340694427490234 +current,Vehicle.Powertrain.CombustionEngine.Speed,1615,0.318803071975708 +current,Vehicle.Exterior.AirTemperature,11.21875,0.35190606117248535 +current,Vehicle.Tachograph.VehicleSpeed,19.09765625,0.31675291061401367 +current,Vehicle.Powertrain.CombustionEngine.Speed,1627,0.33976316452026367 +current,Vehicle.Powertrain.CombustionEngine.ECT,16,0.3847050666809082 +current,Vehicle.Speed,19.09765625,0.0014340877532958984 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,90.0,0.14169812202453613 +current,Vehicle.TraveledDistanceHighRes,54054750,0.0050487518310546875 +current,Vehicle.Tachograph.VehicleSpeed,19.5,0.03534579277038574 +current,Vehicle.Exterior.AirTemperature,11.25,0.634796142578125 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,90.4000015258789,0.325131893157959 +current,Vehicle.Tachograph.VehicleSpeed,19.0,0.04378390312194824 +current,Vehicle.Powertrain.CombustionEngine.Speed,1622,0.30494117736816406 +current,Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid.Level,62,0.22219491004943848 +current,Vehicle.CurrentOverallWeight,5400,0.15093088150024414 +current,Vehicle.TraveledDistanceHighRes,54054760,0.2799971103668213 +current,Vehicle.Speed,18.8984375,0.0017330646514892578 +current,Vehicle.Tachograph.VehicleSpeed,18.8984375,0.03194284439086914 +current,Vehicle.Powertrain.CombustionEngine.Speed,1606,0.266071081161499 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,90.0,0.6436500549316406 +current,Vehicle.Speed,18.69921875,0.0011408329010009766 +current,Vehicle.Tachograph.VehicleSpeed,18.59765625,0.03494405746459961 +current,Vehicle.Powertrain.CombustionEngine.Speed,1578,0.27277612686157227 +current,Vehicle.CurrentOverallWeight,17200,0.10440897941589355 +current,Vehicle.Exterior.AirTemperature,11.28125,0.20726704597473145 +current,Vehicle.TraveledDistanceHighRes,54054775,0.33029603958129883 +current,Vehicle.Tachograph.VehicleSpeed,18.19921875,0.08649706840515137 +current,Vehicle.Speed,18.19921875,0.001329183578491211 +current,Vehicle.Powertrain.CombustionEngine.Speed,1563,0.21193766593933105 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,90.4000015258789,0.6275832653045654 +current,Vehicle.Speed,18.3984375,0.0015909671783447266 +current,Vehicle.Powertrain.CombustionEngine.Speed,1575,0.2151651382446289 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,90.80000305175781,0.6247859001159668 +current,Vehicle.TraveledDistanceHighRes,54054785,0.0040509700775146484 +current,Vehicle.Tachograph.VehicleSpeed,18.5,0.1413421630859375 +current,Vehicle.Speed,18.5,0.0014297962188720703 +current,Vehicle.Powertrain.CombustionEngine.Speed,1582,0.11719107627868652 +current,Vehicle.TraveledDistanceHighRes,54054790,0.6284329891204834 +current,Vehicle.Tachograph.VehicleSpeed,18.69921875,0.18454194068908691 +current,Vehicle.Speed,18.59765625,0.0015659332275390625 +current,Vehicle.Powertrain.CombustionEngine.Speed,1572,0.022942066192626953 +current,Vehicle.Exterior.AirTemperature,11.3125,0.29258108139038086 +current,Vehicle.TraveledDistanceHighRes,54054795,0.32978272438049316 +current,Vehicle.Tachograph.VehicleSpeed,18.0,0.2297992706298828 +current,Vehicle.Powertrain.CombustionEngine.Speed,1537,0.14668798446655273 +current,Vehicle.Speed,18.09765625,0.0018239021301269531 +current,Vehicle.Powertrain.CombustionEngine.ECT,17,0.2604360580444336 +current,Vehicle.Tachograph.VehicleSpeed,17.69921875,0.5694351196289062 +current,Vehicle.Powertrain.CombustionEngine.Speed,1512,0.09535384178161621 +current,Vehicle.Speed,17.69921875,0.0016758441925048828 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,90.4000015258789,0.4410061836242676 +current,Vehicle.TraveledDistanceHighRes,54054805,0.004380941390991211 +current,Vehicle.Tachograph.VehicleSpeed,17.59765625,0.3323960304260254 +current,Vehicle.Powertrain.CombustionEngine.Speed,1506,0.05555462837219238 +current,Vehicle.Speed,17.59765625,0.0014579296112060547 +current,Vehicle.CurrentOverallWeight,5400,0.06596183776855469 +current,Vehicle.TraveledDistanceHighRes,54054810,0.28214406967163086 +current,Vehicle.Tachograph.VehicleSpeed,17.796875,0.33318090438842773 +current,Vehicle.Powertrain.CombustionEngine.Speed,1511,0.05199003219604492 +current,Vehicle.Speed,17.796875,0.0026972293853759766 +current,Vehicle.Exterior.AirTemperature,11.34375,0.01057887077331543 +current,Vehicle.TraveledDistanceHighRes,54054815,0.3317687511444092 +current,Vehicle.Tachograph.VehicleSpeed,18.09765625,0.33681392669677734 +current,Vehicle.Powertrain.CombustionEngine.Speed,1540,0.05259394645690918 +current,Vehicle.CurrentOverallWeight,17200,0.07027196884155273 +current,Vehicle.Exterior.AirTemperature,11.3125,0.20757603645324707 +current,Vehicle.Speed,18.0,0.0023789405822753906 +current,Vehicle.Tachograph.VehicleSpeed,18.5,0.6321201324462891 +current,Vehicle.Powertrain.CombustionEngine.Speed,1583,0.01173090934753418 +current,Vehicle.CurrentOverallWeight,5400,0.32132387161254883 +current,Vehicle.Speed,18.796875,0.0015759468078613281 +current,Vehicle.TraveledDistanceHighRes,54054825,0.14621520042419434 +current,Vehicle.Tachograph.VehicleSpeed,19.5,0.38872289657592773 +current,Vehicle.Powertrain.CombustionEngine.Speed,1674,0.020132064819335938 +current,Vehicle.Powertrain.CombustionEngine.ECT,18,0.2996091842651367 +current,Vehicle.Speed,19.796875,0.0013387203216552734 +current,Vehicle.TraveledDistanceHighRes,54054830,0.1469581127166748 +current,Vehicle.Powertrain.CombustionEngine.Speed,1705,0.40775609016418457 +current,Vehicle.Tachograph.VehicleSpeed,20.0,0.02786707878112793 +current,Vehicle.CurrentOverallWeight,17200,0.022166013717651367 +current,Vehicle.Speed,19.8984375,0.0021669864654541016 +current,Vehicle.TraveledDistanceHighRes,54054835,0.14214396476745605 +current,Vehicle.Powertrain.CombustionEngine.Speed,1700,0.4153718948364258 +current,Vehicle.Tachograph.VehicleSpeed,19.796875,0.025304079055786133 +current,Vehicle.Exterior.AirTemperature,11.34375,0.22556090354919434 +current,Vehicle.CurrentOverallWeight,5400,0.05125308036804199 +current,Vehicle.Speed,20.09765625,0.0011458396911621094 +current,Vehicle.Powertrain.CombustionEngine.Speed,1710,0.4706580638885498 +current,Vehicle.Tachograph.VehicleSpeed,20.0,0.06233716011047363 +current,Vehicle.Speed,20.296875,0.0013871192932128906 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,90.0,0.0416259765625 +current,Vehicle.TraveledDistanceHighRes,54054845,0.005116939544677734 +current,Vehicle.Powertrain.CombustionEngine.Speed,1734,0.43102598190307617 +current,Vehicle.CurrentOverallWeight,17200,0.022881031036376953 +current,Vehicle.Tachograph.VehicleSpeed,20.3984375,0.08124303817749023 +current,Vehicle.Exterior.AirTemperature,11.375,0.13380098342895508 +current,Vehicle.Speed,20.796875,0.002431154251098633 +current,Vehicle.Powertrain.CombustionEngine.Speed,1283,0.38282012939453125 +current,Vehicle.Tachograph.VehicleSpeed,20.09765625,0.1061408519744873 +current,Vehicle.Exterior.AirTemperature,11.40625,0.12988591194152832 +current,Vehicle.CurrentOverallWeight,5400,0.0444490909576416 +current,Vehicle.TraveledDistanceHighRes,54054855,0.28026795387268066 +current,Vehicle.Powertrain.CombustionEngine.Speed,1094,0.4401540756225586 +current,Vehicle.Tachograph.VehicleSpeed,21.8984375,0.1453251838684082 +current,Vehicle.Speed,22.19921875,0.0018219947814941406 +current,Vehicle.Powertrain.CombustionEngine.Speed,1133,0.19396281242370605 +current,Vehicle.CurrentOverallWeight,17200,0.008945941925048828 +current,Vehicle.Tachograph.VehicleSpeed,22.69921875,0.18278193473815918 +current,Vehicle.Exterior.AirTemperature,11.4375,0.033463239669799805 +current,Vehicle.Powertrain.CombustionEngine.ECT,19,0.03913593292236328 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,90.4000015258789,0.2846078872680664 +current,Vehicle.TraveledDistanceHighRes,54054870,0.007129192352294922 +current,Vehicle.Speed,23.0,0.0020661354064941406 +current,Vehicle.Powertrain.CombustionEngine.Speed,1184,0.19898414611816406 +current,Vehicle.CurrentOverallWeight,7600,0.0049097537994384766 +current,Vehicle.Tachograph.VehicleSpeed,23.5,0.17754793167114258 +current,Vehicle.Exterior.AirTemperature,11.46875,0.041350364685058594 +current,Vehicle.Speed,24.19921875,0.0018298625946044922 +current,Vehicle.Powertrain.CombustionEngine.Speed,1234,0.10636591911315918 +current,Vehicle.Tachograph.VehicleSpeed,24.5,0.1783311367034912 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,91.19999694824219,0.3604738712310791 +current,Vehicle.TraveledDistanceHighRes,54054880,0.004269123077392578 +current,Vehicle.Speed,24.69921875,0.001795053482055664 +current,Vehicle.Powertrain.CombustionEngine.Speed,1249,0.10614991188049316 +current,Vehicle.Tachograph.VehicleSpeed,24.8984375,0.22753000259399414 +current,Vehicle.Speed,25.296875,0.0011610984802246094 +current,Vehicle.Powertrain.CombustionEngine.Speed,1281,0.016552209854125977 +current,Vehicle.Exterior.AirTemperature,11.5,0.2030317783355713 +current,Vehicle.Tachograph.VehicleSpeed,25.69921875,0.010630130767822266 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,91.5999984741211,0.3105769157409668 +current,Vehicle.TraveledDistanceHighRes,54054895,0.003717184066772461 +current,Vehicle.Speed,25.796875,0.0018661022186279297 +current,Vehicle.Powertrain.CombustionEngine.Speed,1292,0.021852970123291016 +current,Vehicle.Tachograph.VehicleSpeed,25.8984375,0.21177315711975098 +current,Vehicle.TraveledDistanceHighRes,54054905,0.3097507953643799 +current,Vehicle.Powertrain.CombustionEngine.Speed,1302,0.4890151023864746 +current,Vehicle.Speed,26.8984375,0.0012989044189453125 +current,Vehicle.Tachograph.VehicleSpeed,26.09765625,0.17886590957641602 +current,Vehicle.Powertrain.CombustionEngine.Speed,1357,0.7572920322418213 +current,Vehicle.Speed,26.796875,0.001363992691040039 +current,Vehicle.Tachograph.VehicleSpeed,26.8984375,0.18561387062072754 +current,Vehicle.TraveledDistanceHighRes,54054920,0.25988006591796875 +current,Vehicle.Powertrain.CombustionEngine.Speed,1405,0.490797758102417 +current,Vehicle.Speed,27.5,0.0009899139404296875 +current,Vehicle.Tachograph.VehicleSpeed,27.8984375,0.22554612159729004 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,92.0,0.21317195892333984 +current,Vehicle.Powertrain.CombustionEngine.Speed,1417,0.5016050338745117 +current,Vehicle.Speed,28.09765625,0.0020411014556884766 +current,Vehicle.Powertrain.CombustionEngine.ECT,20,0.15406203269958496 +current,Vehicle.Tachograph.VehicleSpeed,28.296875,0.07318782806396484 +current,Vehicle.TraveledDistanceHighRes,54054935,0.21302485466003418 +current,Vehicle.Powertrain.CombustionEngine.Speed,1454,0.49937009811401367 +current,Vehicle.Speed,28.796875,0.0018279552459716797 +current,Vehicle.CurrentOverallWeight,5690,0.16250300407409668 +current,Vehicle.Tachograph.VehicleSpeed,28.8984375,0.07174992561340332 +current,Vehicle.TraveledDistanceHighRes,54054940,0.20839810371398926 +current,Vehicle.Powertrain.CombustionEngine.Speed,1449,0.4958817958831787 +current,Vehicle.Tachograph.VehicleSpeed,28.69921875,0.2905902862548828 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,91.5999984741211,0.20492792129516602 +current,Vehicle.TraveledDistanceHighRes,54054950,0.0049190521240234375 +current,Vehicle.CurrentOverallWeight,7600,0.45127296447753906 +current,Vehicle.Powertrain.CombustionEngine.Speed,1436,0.048928022384643555 +current,Vehicle.Speed,28.59765625,0.0004830360412597656 +current,Vehicle.Tachograph.VehicleSpeed,28.3984375,0.1810619831085205 +current,Vehicle.TraveledDistanceHighRes,54054960,0.15956401824951172 +current,Vehicle.Powertrain.CombustionEngine.Speed,1427,0.5009820461273193 +current,Vehicle.Speed,28.296875,0.001361846923828125 +current,Vehicle.Tachograph.VehicleSpeed,28.19921875,0.12749123573303223 +current,Vehicle.Powertrain.CombustionEngine.Speed,1423,0.6276328563690186 +current,Vehicle.Speed,28.19921875,0.0012159347534179688 +current,Vehicle.TraveledDistanceHighRes,54054975,0.14470124244689941 +current,Vehicle.Powertrain.CombustionEngine.Speed,1428,0.5241789817810059 +current,Vehicle.Exterior.AirTemperature,11.53125,0.15312719345092773 +current,Vehicle.Speed,28.3984375,0.0007040500640869141 +current,Vehicle.Tachograph.VehicleSpeed,28.3984375,0.13428878784179688 +current,Vehicle.TraveledDistanceHighRes,54054980,0.009139060974121094 +current,Vehicle.Powertrain.CombustionEngine.Speed,1432,0.5275452136993408 +current,Vehicle.Speed,28.5,0.0014247894287109375 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,92.0,0.043189048767089844 +current,Vehicle.TraveledDistanceHighRes,54054990,0.005118846893310547 +current,Vehicle.Powertrain.CombustionEngine.Speed,1431,0.5253639221191406 +current,Vehicle.Powertrain.CombustionEngine.ECT,21,0.1816389560699463 +current,Vehicle.Tachograph.VehicleSpeed,28.5,0.32999396324157715 +current,Vehicle.Powertrain.CombustionEngine.Speed,1421,0.5040948390960693 +current,Vehicle.Exterior.AirTemperature,11.5625,0.13002419471740723 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,92.4000015258789,0.32050490379333496 +current,Vehicle.TraveledDistanceHighRes,54055005,0.0039501190185546875 +current,Vehicle.Speed,28.09765625,0.0010938644409179688 +current,Vehicle.Tachograph.VehicleSpeed,27.796875,0.03246784210205078 +current,Vehicle.Powertrain.CombustionEngine.Speed,1407,0.46009325981140137 +current,Vehicle.Tachograph.VehicleSpeed,27.3984375,0.5879747867584229 +current,Vehicle.Speed,27.59765625,0.0015189647674560547 +current,Vehicle.Powertrain.CombustionEngine.Speed,1364,0.39410400390625 +current,Vehicle.TraveledDistanceHighRes,54055020,0.4499678611755371 +current,Vehicle.Tachograph.VehicleSpeed,27.0,0.1362917423248291 +current,Vehicle.Speed,27.0,0.001544952392578125 +current,Vehicle.Powertrain.CombustionEngine.Speed,1353,0.4096829891204834 +current,Vehicle.TraveledDistanceHighRes,54055025,0.437453031539917 +current,Vehicle.Tachograph.VehicleSpeed,27.09765625,0.1861860752105713 +current,Vehicle.Speed,27.09765625,0.0017671585083007812 +current,Vehicle.Powertrain.CombustionEngine.Speed,1387,0.30760884284973145 +current,Vehicle.Exterior.AirTemperature,11.59375,0.11127018928527832 +current,Vehicle.CurrentOverallWeight,5690,0.050072669982910156 +current,Vehicle.TraveledDistanceHighRes,54055035,0.28192925453186035 +current,Vehicle.Tachograph.VehicleSpeed,28.0,0.23008060455322266 +current,Vehicle.Speed,28.09765625,0.0014369487762451172 +current,Vehicle.Powertrain.CombustionEngine.Speed,1425,0.30686306953430176 +current,Vehicle.Tachograph.VehicleSpeed,28.5,0.6787488460540771 +current,Vehicle.Speed,28.5,0.0017480850219726562 +current,Vehicle.CurrentOverallWeight,7600,0.1914370059967041 +current,Vehicle.Powertrain.CombustionEngine.Speed,1447,0.11565423011779785 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,92.0,0.4335618019104004 +current,Vehicle.TraveledDistanceHighRes,54055050,0.0043141841888427734 +current,Vehicle.Speed,28.8984375,0.0017211437225341797 +current,Vehicle.Tachograph.VehicleSpeed,28.796875,0.031206846237182617 +current,Vehicle.Powertrain.CombustionEngine.Speed,1453,0.2873861789703369 +current,Vehicle.Exterior.AirTemperature,11.625,0.10310888290405273 +current,Vehicle.Powertrain.CombustionEngine.ECT,22,0.037053823471069336 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,91.5999984741211,0.28302526473999023 +current,Vehicle.TraveledDistanceHighRes,54055060,0.00426173210144043 +current,Vehicle.Tachograph.VehicleSpeed,29.19921875,0.29061007499694824 +current,Vehicle.Speed,29.09765625,0.0017559528350830078 +current,Vehicle.Powertrain.CombustionEngine.Speed,1448,0.22528886795043945 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,91.19999694824219,0.4195990562438965 +current,Vehicle.TraveledDistanceHighRes,54055065,0.003905057907104492 +current,Vehicle.Tachograph.VehicleSpeed,28.796875,0.3355388641357422 +current,Vehicle.Speed,28.69921875,0.0017771720886230469 +current,Vehicle.Powertrain.CombustionEngine.Speed,1449,0.2250828742980957 +current,Vehicle.Exterior.AirTemperature,11.65625,0.09331703186035156 +current,Vehicle.Tachograph.VehicleSpeed,28.5,0.7126748561859131 +current,Vehicle.Speed,28.5,0.0010731220245361328 +current,Vehicle.Powertrain.CombustionEngine.Speed,1415,0.13893604278564453 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,90.4000015258789,0.4039738178253174 +current,Vehicle.TraveledDistanceHighRes,54055085,0.0044100284576416016 +current,Vehicle.Tachograph.VehicleSpeed,27.8984375,0.38801002502441406 +current,Vehicle.Speed,27.69921875,0.0013229846954345703 +current,Vehicle.Powertrain.CombustionEngine.Speed,1390,0.04322099685668945 +current,Vehicle.TraveledDistanceHighRes,54055090,0.4055500030517578 +current,Vehicle.Tachograph.VehicleSpeed,26.5,0.43664002418518066 +current,Vehicle.Speed,26.5,0.0018470287322998047 +current,Vehicle.Powertrain.CombustionEngine.Speed,1309,0.042001962661743164 +current,Vehicle.Exterior.AirTemperature,11.6875,0.08145594596862793 +current,Vehicle.Tachograph.VehicleSpeed,24.69921875,0.8044440746307373 +current,Vehicle.Speed,24.59765625,0.0013477802276611328 +current,Vehicle.Powertrain.CombustionEngine.Speed,1209,0.0440061092376709 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,89.5999984741211,0.39768099784851074 +current,Vehicle.TraveledDistanceHighRes,54055105,0.004931926727294922 +current,Vehicle.Tachograph.VehicleSpeed,23.0,0.5373342037200928 +current,Vehicle.Powertrain.CombustionEngine.Speed,1150,0.07277679443359375 +current,Vehicle.Speed,23.0,0.0024251937866210938 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,90.0,0.33979177474975586 +current,Vehicle.TraveledDistanceHighRes,54055110,0.0034589767456054688 +current,Vehicle.Tachograph.VehicleSpeed,22.19921875,0.5848500728607178 +current,Vehicle.Powertrain.CombustionEngine.Speed,1122,0.03656196594238281 +current,Vehicle.Speed,22.296875,0.001237630844116211 +current,Vehicle.TraveledDistanceHighRes,54055115,0.24651527404785156 +current,Vehicle.Tachograph.VehicleSpeed,22.09765625,0.5840761661529541 +current,Vehicle.Powertrain.CombustionEngine.Speed,1112,0.04208493232727051 +current,Vehicle.Exterior.AirTemperature,11.65625,0.045736074447631836 +current,Vehicle.Powertrain.CombustionEngine.ECT,23,0.03651881217956543 +current,Vehicle.Speed,22.09765625,0.001322031021118164 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,90.80000305175781,0.14227700233459473 +current,Vehicle.TraveledDistanceHighRes,54055125,0.006412982940673828 +current,Vehicle.Tachograph.VehicleSpeed,22.296875,0.5814151763916016 +current,Vehicle.Powertrain.CombustionEngine.Speed,1130,0.04546689987182617 +current,Vehicle.Speed,22.3984375,0.0012311935424804688 +current,Vehicle.Tachograph.VehicleSpeed,22.5,0.7851369380950928 +current,Vehicle.Powertrain.CombustionEngine.Speed,1144,0.0022780895233154297 +current,Vehicle.Speed,22.69921875,0.0011720657348632812 +current,Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel,90.0,0.14379310607910156 +current,Vehicle.TraveledDistanceHighRes,54055135,0.005148887634277344 +current,Vehicle.Tachograph.VehicleSpeed,23.3984375,0.6308407783508301 +current,Vehicle.Powertrain.CombustionEngine.Speed,1177,0.006275177001953125 \ No newline at end of file diff --git a/csv-provider/signalsFmsRecording.csv.license b/csv-provider/signalsFmsRecording.csv.license new file mode 100644 index 0000000..59baed3 --- /dev/null +++ b/csv-provider/signalsFmsRecording.csv.license @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 diff --git a/csv-provider/signalsFmsRecording.csv.zip b/csv-provider/signalsFmsRecording.csv.zip new file mode 100644 index 0000000000000000000000000000000000000000..fe1ddfc573f1df3fd87bc0c82ad38f85b606cf88 GIT binary patch literal 110064 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%0A&AHnNa2;@G5h{-fwQt*EHws7Hng(Imo{Gz_ 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 U000010097L0001StpNZ40HR^?yZ`_I literal 0 HcmV?d00001 diff --git a/csv-provider/signalsFmsRecording.csv.zip.license b/csv-provider/signalsFmsRecording.csv.zip.license new file mode 100644 index 0000000..59baed3 --- /dev/null +++ b/csv-provider/signalsFmsRecording.csv.zip.license @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 diff --git a/docs/img/architecture.png b/docs/img/architecture.png deleted file mode 100644 index 703994ea978898add14831d2c7d0c9b6cd4c65ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1382929 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�D_m`|zYsDFNc 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ŧ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 z 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Μ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

^T-MrczXLH9=Me* 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�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%0A)fBB9ybyCw6|8> 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 r9sepFpP|GWfzx@J`CHW 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%0D6tIqC8xN2gX~HtQHnGMbh9i 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

N(&4SAaw?|)iUF;pdC$_o69YNCWDgV4@3*X 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

BySJL;9G!sjM*UYi^+_tpWZUH`0S$yi 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

3Y=_mi#w1vMg^~Pwe!#e)h`j3O_(=u&6 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

)-w_2aw0|lQx`Qhz@ioT8cSIp#}aMl~^9n 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 range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"snapshot\")\n |> filter(fn: (r) => r[\"_field\"] == \"latitude\" or r[\"_field\"] == \"longitude\")\n |> filter(fn: (r) => contains(set: ${selected_vin:json}, value: r[\"vin\"]))\n |> keep(columns: [\"_time\", \"_field\", \"_value\"])\n |> last()", + "refId": "A" + } + ], + "title": "Location", + "transformations": [ + { + "id": "labelsToFields", + "options": { + "keepLabels": [ + "vin" + ], + "mode": "columns" + } + }, + { + "id": "merge", + "options": {} + } + ], + "type": "geomap" + }, + { + "datasource": { + "type": "influxdb", + "uid": "PDC312342D5DCA611" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#808080", + "mode": "palette-classic", + "seriesBy": "last" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "velocitykmh" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 9 + }, + "id": 8, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "PDC312342D5DCA611" + }, + "query": "from(bucket: \"demo\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"snapshot\")\n |> filter(fn: (r) => r[\"_field\"] == \"tachographSpeed\")\n |> filter(fn: (r) => contains(set: ${selected_vin:json}, value: r[\"vin\"]))\n |> keep(columns: [\"_time\", \"_value\", \"vin\"])\n |> group(columns: [\"vin\"])\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\n |> yield(name: \"mean\")", + "refId": "A" + } + ], + "title": "Tachograph Speed", + "transformations": [ + { + "id": "labelsToFields", + "options": { + "keepLabels": [ + "vin" + ], + "valueLabel": "vin" + } + } + ], + "type": "timeseries" + }, + { + "datasource": { + "type": "influxdb", + "uid": "PDC312342D5DCA611" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "max": 100, + "min": 0, + "noValue": "N/A", + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "yellow", + "value": 5 + }, + { + "color": "green", + "value": 30 + } + ] + }, + "unit": "percent" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "fuelLevel1" + }, + "properties": [ + { + "id": "displayName", + "value": "First Tank (${__field.labels.vin})" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "fuelLevel2" + }, + "properties": [ + { + "id": "displayName", + "value": "Second Tank (${__field.labels.vin})" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "catalystFuelLevel" + }, + "properties": [ + { + "id": "displayName", + "value": "AdBlue (${__field.labels.vin})" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 9 + }, + "id": 4, + "options": { + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "text": {} + }, + "pluginVersion": "9.5.2", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "PDC312342D5DCA611" + }, + "query": "from(bucket: \"demo\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"snapshot\")\n |> filter(fn: (r) => r[\"_field\"] == \"fuelLevel1\" or r._field == \"fuelLevel2\" or r[\"_field\"] == \"catalystFuelLevel\")\n |> filter(fn: (r) => contains(set: ${selected_vin:json}, value: r[\"vin\"]))\n |> keep(columns: [\"_time\", \"_value\", \"_field\", \"vin\"])\n |> group(columns: [\"vin\", \"_field\"])\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\n |> yield(name: \"mean\")", + "refId": "A" + } + ], + "title": "Fuel Levels", + "transformations": [], + "transparent": true, + "type": "gauge" + }, + { + "datasource": { + "type": "influxdb", + "uid": "PDC312342D5DCA611" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "rotrpm" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 17 + }, + "id": 15, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "PDC312342D5DCA611" + }, + "query": "from(bucket: \"demo\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"snapshot\")\n |> filter(fn: (r) => r[\"_field\"] == \"engineSpeed\")\n |> filter(fn: (r) => contains(set: ${selected_vin:json}, value: r[\"vin\"]))\n |> keep(columns: [\"_time\", \"_value\", \"vin\"])\n |> group(columns: [\"vin\"])\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\n |> yield(name: \"mean\")", + "refId": "A" + } + ], + "title": "Engine Speed", + "transformations": [ + { + "id": "labelsToFields", + "options": { + "keepLabels": [ + "vin" + ], + "valueLabel": "vin" + } + } + ], + "type": "timeseries" + }, + { + "datasource": { + "type": "influxdb", + "uid": "PDC312342D5DCA611" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "noValue": "N/A", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "yellow", + "value": 50 + }, + { + "color": "green", + "value": 100 + } + ] + }, + "unit": "suffix:m" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 12, + "y": 17 + }, + "id": 14, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.5.2", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "PDC312342D5DCA611" + }, + "query": "from(bucket: \"demo\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"snapshot\")\n |> filter(fn: (r) => r[\"_field\"] == \"estimatedDistanceToEmptyFuel\")\n |> filter(fn: (r) => contains(set: ${selected_vin:json}, value: r[\"vin\"]))\n |> keep(columns: [\"_time\", \"_value\"])\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\n |> yield(name: \"mean\")", + "refId": "A" + } + ], + "title": "Est. Distance to empty (Fuel)", + "type": "stat" + }, + { + "datasource": { + "type": "influxdb", + "uid": "PDC312342D5DCA611" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "noValue": "N/A", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#000000", + "value": null + }, + { + "color": "#303030", + "value": -15 + }, + { + "color": "#302e9b", + "value": -10 + }, + { + "color": "#000082", + "value": -5 + }, + { + "color": "#0001fc", + "value": 0 + }, + { + "color": "#2e65fd", + "value": 5 + }, + { + "color": "#99cdfc", + "value": 10 + }, + { + "color": "#2dd1ca", + "value": 15 + }, + { + "color": "#008001", + "value": 20 + }, + { + "color": "#9ad000", + "value": 25 + }, + { + "color": "#fed000", + "value": 30 + }, + { + "color": "#fe6700", + "value": 35 + }, + { + "color": "#c6140c", + "value": 40 + } + ] + }, + "unit": "celsius" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 3, + "x": 18, + "y": 17 + }, + "id": 6, + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.5.2", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "PDC312342D5DCA611" + }, + "query": "from(bucket: \"demo\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"snapshot\")\n |> filter(fn: (r) => r[\"_field\"] == \"ambientAirTemperature\")\n |> filter(fn: (r) => contains(set: ${selected_vin:json}, value: r[\"vin\"]))\n |> keep(columns: [\"_time\", \"_value\"])\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\n |> yield(name: \"mean\")", + "refId": "A" + } + ], + "title": "Ambient Air Temperature", + "transformations": [ + { + "id": "labelsToFields", + "options": { + "keepLabels": [ + "vin" + ], + "valueLabel": "vin" + } + } + ], + "type": "stat" + }, + { + "datasource": { + "type": "influxdb", + "uid": "PDC312342D5DCA611" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "semi-dark-red", + "mode": "fixed" + }, + "mappings": [ + { + "options": { + "false": { + "color": "green", + "index": 0, + "text": "released" + }, + "true": { + "color": "red", + "index": 1, + "text": "engaged" + } + }, + "type": "value" + } + ], + "noValue": "N/A", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bool_on_off" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 3, + "x": 21, + "y": 17 + }, + "id": 7, + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^Value$/", + "values": false + }, + "textMode": "value" + }, + "pluginVersion": "9.5.2", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "PDC312342D5DCA611" + }, + "hide": false, + "query": "from(bucket: \"demo\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"snapshot\")\n |> filter(fn: (r) => r[\"_field\"] == \"parkingBrakeSwitch\")\n |> filter(fn: (r) => contains(set: ${selected_vin:json}, value: r[\"vin\"]))\n |> keep(columns: [\"_time\", \"_value\"])\n |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)\n |> yield(name: \"last\")", + "refId": "A" + } + ], + "title": "Parking Brake", + "transformations": [ + { + "id": "labelsToFields", + "options": { + "keepLabels": [ + "vin" + ], + "mode": "columns", + "valueLabel": "vin" + } + } + ], + "type": "stat" + }, + { + "datasource": { + "type": "influxdb", + "uid": "PDC312342D5DCA611" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "fillOpacity": 70, + "lineWidth": 0, + "spanNulls": false + }, + "mappings": [ + { + "options": { + "DRIVE": { + "color": "red", + "index": 1 + }, + "DRIVER_AVAILABLE": { + "color": "orange", + "index": 2 + }, + "REST": { + "color": "green", + "index": 0 + }, + "WORK": { + "color": "blue", + "index": 3 + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/driver1WorkingState.*/" + }, + "properties": [ + { + "id": "displayName", + "value": "Driver 1 (${__field.labels.vin})" + } + ] + }, + { + "matcher": { + "id": "byRegexp", + "options": "/driver2WorkingState.*/" + }, + "properties": [ + { + "id": "displayName", + "value": "Driver 2 (${__field.labels.vin})" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 25 + }, + "id": 12, + "options": { + "alignValue": "left", + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "mergeValues": true, + "rowHeight": 0.9, + "showValue": "never", + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "PDC312342D5DCA611" + }, + "query": "from(bucket: \"demo\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"snapshot\")\n |> filter(fn: (r) => r[\"_field\"] == \"driver1WorkingState\" or r[\"_field\"] == \"driver2WorkingState\")\n |> filter(fn: (r) => contains(set: ${selected_vin:json}, value: r[\"vin\"]))\n |> keep(columns: [\"vin\", \"_value\", \"_time\", \"_field\"])\n |> group(columns: [\"vin\", \"_field\"])\n |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)\n |> yield(name: \"last\")", + "refId": "A" + } + ], + "title": "Driver Working State", + "transformations": [], + "type": "state-timeline" + }, + { + "datasource": { + "type": "influxdb", + "uid": "PDC312342D5DCA611" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#ce6b43", + "mode": "fixed" + }, + "mappings": [], + "noValue": "N/A", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "suffix:m" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 12, + "y": 25 + }, + "id": 13, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "value" + }, + "pluginVersion": "9.5.2", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "PDC312342D5DCA611" + }, + "query": "from(bucket: \"demo\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"header\")\n |> filter(fn: (r) => r[\"_field\"] == \"hrTotalVehicleDistance\")\n |> filter(fn: (r) => contains(set: ${selected_vin:json}, value: r[\"vin\"]))\n |> keep(columns: [\"_time\", \"_value\"])\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\n |> yield(name: \"mean\")", + "refId": "A" + } + ], + "title": "Total Distance Traveled", + "type": "stat" + }, + { + "datasource": { + "type": "influxdb", + "uid": "PDC312342D5DCA611" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#ce6b43", + "mode": "fixed" + }, + "mappings": [], + "noValue": "N/A", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "light-blue", + "value": null + } + ] + }, + "unit": "suffix:kg" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 18, + "y": 25 + }, + "id": 10, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.5.2", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "PDC312342D5DCA611" + }, + "query": "from(bucket: \"demo\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"header\")\n |> filter(fn: (r) => r[\"_field\"] == \"grossCombinationVehicleWeight\")\n |> filter(fn: (r) => contains(set: ${selected_vin:json}, value: r[\"vin\"]))\n |> keep(columns: [\"_time\", \"_value\"])\n |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)\n |> yield(name: \"mean\")", + "refId": "A" + } + ], + "title": "Gross combination Vehicle Weight", + "transformations": [ + { + "id": "labelsToFields", + "options": { + "keepLabels": [ + "vin" + ], + "valueLabel": "vin" + } + } + ], + "type": "stat" + } + ], + "refresh": "5s", + "revision": 1, + "schemaVersion": 38, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": true, + "text": [ + "87" + ], + "value": [ + "87" + ] + }, + "datasource": { + "type": "influxdb", + "uid": "PDC312342D5DCA611" + }, + "definition": "import \"influxdata/influxdb/schema\"\n\nschema.tagValues(bucket: \"demo\", tag: \"vin\")\n", + "description": "The VIN of selected vehicle", + "hide": 0, + "includeAll": false, + "label": "VIN", + "multi": true, + "name": "selected_vin", + "options": [], + "query": "import \"influxdata/influxdb/schema\"\n\nschema.tagValues(bucket: \"demo\", tag: \"vin\")\n", + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + } + ] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "FMS Fleet", + "uid": "OwEBnb1Vd", + "version": 1, + "weekStart": "" +} diff --git a/grafana/dashboards/FMS-Fleet.json.license b/grafana/dashboards/FMS-Fleet.json.license new file mode 100644 index 0000000..59baed3 --- /dev/null +++ b/grafana/dashboards/FMS-Fleet.json.license @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 diff --git a/grafana/provisioning/dashboards/dashboards_from_filesystem.yaml b/grafana/provisioning/dashboards/dashboards_from_filesystem.yaml new file mode 100644 index 0000000..349408e --- /dev/null +++ b/grafana/provisioning/dashboards/dashboards_from_filesystem.yaml @@ -0,0 +1,28 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +apiVersion: 1 + +providers: + - name: dashboards + type: file + updateIntervalSeconds: 30 + options: + path: /etc/dashboards + foldersFromFilesStructure: true diff --git a/img/.gitignore b/img/.gitignore new file mode 100644 index 0000000..8d71bf9 --- /dev/null +++ b/img/.gitignore @@ -0,0 +1 @@ +*.bkp diff --git a/img/architecture.drawio.svg b/img/architecture.drawio.svg new file mode 100644 index 0000000..1fec610 --- /dev/null +++ b/img/architecture.drawio.svg @@ -0,0 +1,4 @@ + + + +



Databroker
Databroker...
FMS
Forwarder
FMS...


<<get dashboard>>
<<get dashboard>>
Browser
Browser
FMS
Server
FMS...
Fleet
Management
Fleet...
Influx API 2.0
I...
rFMS
rFMS
Influx API 2.0
I...
kuksa.val.v1
kuksa.val.v1
VSS overlay
VSS overlay
In-Vehicle
In-Vehicle
Off-Vehicle
Off-Vehicle




CSV Provider
CSV Provider...
Hono MQTT (hono)  
Ho...
CSV recording from truck
CSV recording...
kuksa.val.v1  
kuksa.val.v1  
FMS
Consumer
FMS...
Influx API 2.0
In...
Kafka
Ka...
Influx
API 2.0
In...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/influxdb/fms-demo.env b/influxdb/fms-demo.env new file mode 100644 index 0000000..3751655 --- /dev/null +++ b/influxdb/fms-demo.env @@ -0,0 +1,6 @@ +DOCKER_INFLUXDB_INIT_ORG="sdv" +DOCKER_INFLUXDB_INIT_BUCKET="demo" + +INFLUXDB_URI="http://influxdb:8086" +INFLUXDB_ORG="sdv" +INFLUXDB_BUCKET="demo" diff --git a/influxdb/init-scripts/create-fms-token.sh b/influxdb/init-scripts/create-fms-token.sh new file mode 100755 index 0000000..b0f240d --- /dev/null +++ b/influxdb/init-scripts/create-fms-token.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +set -e + +token=$(influx auth create \ + --hide-headers \ + --description "Token for writing to the FMS demo bucket" \ + --user ${DOCKER_INFLUXDB_INIT_USERNAME} \ + --read-bucket ${DOCKER_INFLUXDB_INIT_BUCKET_ID} \ + --write-bucket ${DOCKER_INFLUXDB_INIT_BUCKET_ID} | awk -F '\t' '{print $3}') + +echo ${token} > /tmp/out/fms-demo.token + +cat < /tmp/influxdb-datasources/influxdb.yaml +apiVersion: 1 +datasources: +- name: "InfluxDB-SDV-Flux" + uid: "PDC312342D5DCA611" + type: influxdb + access: proxy + url: http://influxdb:8086 + jsonData: + version: Flux + organization: ${DOCKER_INFLUXDB_INIT_ORG} + defaultBucket: ${DOCKER_INFLUXDB_INIT_BUCKET} + tlsSkipVerify: true + secureJsonData: + token: ${token} +EOF + diff --git a/leda/Setup.md b/leda/Setup.md new file mode 100644 index 0000000..93716b9 --- /dev/null +++ b/leda/Setup.md @@ -0,0 +1,86 @@ + +# Setting Up a Leda Image + +The setup for this FMS scenario assumes a split into components running in the vehicles and components running in a (cloud) backend. +The following page describes how to configure a Leda instance to become part of this FMS setup. More precisely, we deploy the containers for the feedercan, the fms-forwarder, and the Kuksa.val databroker with an FMS-specific vehicle model. + +## Run Leda +The following steps assume a running instance of Eclipse Leda. For more details see the [Eclipse Leda Getting Started](https://eclipse-leda.github.io/leda/docs/general-usage/) +This guide was tested with release v0.1.0-M1 of Eclipse Leda. + +## Create GitHub Token to Read containers +The container image for the FMS-Forwarder is currently only available in a private GitHub container registry within the repository https://github.com/SoftwareDefinedVehicle/oss-tech-scouting-demo . +To enable Leda to access the container, you can create a GitHub token with the scope `read:packages`. This requires that your GitHub user has the respective access rights for that repository. +In the GitHub user settings you can generate the token under Settings -> Developer Settings -> Personal Access Tokens -> Tokens (classic). + +Afterwards, select `Configure SSO` and authorize the SoftwareDefinedVehicle organization. + +## Configure Leda to use GitHub Token +We now need to configure Leda with the newly created GitHub token, to enable the download from a private container registry. Execute in Leda: + +``` +sdv-kanto-ctl add-registry -h ghcr.io -u github -p +``` + +For more details see the [Leda documentation](https://eclipse-leda.github.io/leda/docs/device-provisioning/container-management/container-registries/) + +## Backup existing manifestes +In Leda, there are manifests to manage the execution of containers by Eclipse Kanto. During the next steps we will overwrite some of the default manifests (`databroker.json`, `feedercan.json`). Because of that, we recommend to backup the existing manifests from `/data/var/containers/mainfests`. + +## Copy manifests to Leda +To trigger the execution of the required containers for the FMS setup, copy the manifest files from `leda/data/var/containers/manifests` in the host to `/data/var/containers/manifests` in Leda: + +``` +manifests % scp -P 2222 *.json root@127.0.0.1:/data/var/containers/manifests +``` + +## create folders in Leda mounted in mainfests +The containers described within the manifests require files that are not present in Leda like the FMS-specific vehicle model. +Therefore, we need to create the paths (e.g,. `mkdir`) in Leda from which the containers try to mount these files which are: + +- `mkdir -p /data/usr/fms/dbc` +- `mkdir -p /data/usr/databroker` + +## copy required files to leda folders: +Now you can copy the files required by the containers to Leda. Execute in the root of this repository on the host: +``` +scp -P 2222 dbc-feeder/220421_MAN_Si_RIO_CAN_converted.log root@127.0.0.1:/data/usr/fms/dbc +scp -P 2222 dbc-feeder/j1939_REMODUL_v5.dbc root@127.0.0.1:/data/usr/fms/dbc +scp -P 2222 spec/overlay/vss.json root@127.0.0.1:/data/usr/fms/databroker +``` + +## start backend on host +Besides the in-vehicle containers in Leda, we still need the backend for the full FMS setup. You can start the remaining containers on the host with: + +``` +docker compose -f fms-demo-compose.yaml up influxdb grafana fms-server --detach +``` + +## configure InfluxDB token +The fms-forwarder needs a token to write data into the InfluxDB which has been started on the host. +There are multiple ways to retrieve this token, e.g., through the web-interface of InfluxDB (localhost:8086). One approach through the command line is the following: + +``` +docker exec -it influxDB cat /tmp/out/fms-demo.token +``` + +You can then insert the token in the `/data/var/containers/manifestsfms-forwarder.json` manifest in Leda at the bottom of the file as value for `config.env.INFLUXAPI_TOKEN`. \ No newline at end of file diff --git a/leda/data/var/containers/manifests/databroker.json b/leda/data/var/containers/manifests/databroker.json new file mode 100644 index 0000000..827ed12 --- /dev/null +++ b/leda/data/var/containers/manifests/databroker.json @@ -0,0 +1,60 @@ +{ + "container_id": "databroker", + "container_name": "databroker", + "image": { + "name": "ghcr.io/eclipse/kuksa.val/databroker:0.3" + }, + "mount_points": [ + { + "source": "/data/usr/fms/databroker", + "destination": "/etc/databroker", + "propagation_mode": "rprivate" + } + ], + "host_config": { + "devices": [], + "network_mode": "bridge", + "privileged": false, + "restart_policy": { + "maximum_retry_count": 0, + "retry_timeout": 0, + "type": "unless-stopped" + }, + "runtime": "io.containerd.runc.v2", + "extra_hosts": [], + "port_mappings": [ + { + "protocol": "tcp", + "container_port": 55555, + "host_ip": "localhost", + "host_port": 30555, + "host_port_end": 30555 + } + ], + "log_config": { + "driver_config": { + "type": "json-file", + "max_files": 2, + "max_size": "1M", + "root_dir": "" + }, + "mode_config": { + "mode": "blocking", + "max_buffer_size": "" + } + }, + "resources": null + }, + "io_config": { + "open_stdin": false, + "tty": false + }, + "config": { + "env": [ + "RUST_LOG=info", + "KUKSA_DATA_BROKER_METADATA_FILE=/etc/databroker/vss.json", + "vehicle_data_broker=debug" + ], + "cmd": [] + } +} diff --git a/leda/data/var/containers/manifests/databroker.json.license b/leda/data/var/containers/manifests/databroker.json.license new file mode 100644 index 0000000..59baed3 --- /dev/null +++ b/leda/data/var/containers/manifests/databroker.json.license @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 diff --git a/leda/data/var/containers/manifests/feedercan.json b/leda/data/var/containers/manifests/feedercan.json new file mode 100644 index 0000000..61c088e --- /dev/null +++ b/leda/data/var/containers/manifests/feedercan.json @@ -0,0 +1,56 @@ +{ + "container_id": "feedercan", + "container_name": "feedercan", + "image": { + "name": "docker.io/sophokles73/dbc-feeder:0.9" + }, + "mount_points": [ + { + "source": "/data/usr/fms", + "destination": "/tmp/fms", + "propagation_mode": "rprivate" + } + ], + "host_config": { + "devices": [], + "network_mode": "bridge", + "privileged": false, + "restart_policy": { + "maximum_retry_count": 0, + "retry_timeout": 0, + "type": "unless-stopped" + }, + "runtime": "io.containerd.runc.v2", + "extra_hosts": [ + "databroker:container_databroker-host" + ], + "log_config": { + "driver_config": { + "type": "json-file", + "max_files": 2, + "max_size": "1M", + "root_dir": "" + }, + "mode_config": { + "mode": "blocking", + "max_buffer_size": "" + } + }, + "resources": null + }, + "io_config": { + "open_stdin": false, + "tty": false + }, + "config": { + "env": [ + "DBC_FILE=/tmp/fms/dbc/j1939_REMODUL_v5.dbc", + "CANDUMP_FILE=/tmp/fms/dbc/220421_MAN_Si_RIO_CAN_converted.log", + "USE_J1939=1", + "MAPPING_FILE=/tmp/fms/databroker/vss.json", + "KUKSA_ADDRESS=databroker", + "LOG_LEVEL=INFO,dbcfeederlib.databrokerclientwrapper=INFO" + ], + "cmd": [] + } +} diff --git a/leda/data/var/containers/manifests/feedercan.json.license b/leda/data/var/containers/manifests/feedercan.json.license new file mode 100644 index 0000000..59baed3 --- /dev/null +++ b/leda/data/var/containers/manifests/feedercan.json.license @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 diff --git a/leda/data/var/containers/manifests/fms-forwarder.json b/leda/data/var/containers/manifests/fms-forwarder.json new file mode 100644 index 0000000..62ca995 --- /dev/null +++ b/leda/data/var/containers/manifests/fms-forwarder.json @@ -0,0 +1,49 @@ +{ + "container_id": "fms-forwarder", + "container_name": "fms-forwarder", + "image": { + "name": "ghcr.io/softwaredefinedvehicle/oss-tech-scouting-demo/fms-forwarder:main" + }, + "host_config": { + "devices": [], + "network_mode": "bridge", + "privileged": false, + "restart_policy": { + "maximum_retry_count": 0, + "retry_timeout": 0, + "type": "unless-stopped" + }, + "runtime": "io.containerd.runc.v2", + "extra_hosts": [ + "databroker:container_databroker-host" + ], + "port_mappings": [ + ], + "log_config": { + "driver_config": { + "type": "json-file", + "max_files": 2, + "max_size": "1M", + "root_dir": "" + }, + "mode_config": { + "mode": "blocking", + "max_buffer_size": "" + } + }, + "resources": null + }, + "io_config": { + "open_stdin": false, + "tty": false + }, + "config": { + "env": [ + "RUST_LOG=info,fms_forwarder=debug", + "KUKSA_DATA_BROKER_URI=http://databroker:55555", + "INFLUXDB_URI=http://10.0.2.2:8086", + "INFLUXDB_API_TOKEN=" + ], + "cmd": [] + } +} diff --git a/leda/data/var/containers/manifests/fms-forwarder.json.license b/leda/data/var/containers/manifests/fms-forwarder.json.license new file mode 100644 index 0000000..59baed3 --- /dev/null +++ b/leda/data/var/containers/manifests/fms-forwarder.json.license @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 diff --git a/provision-vehicle-to-hono.sh b/provision-vehicle-to-hono.sh new file mode 100755 index 0000000..da7280e --- /dev/null +++ b/provision-vehicle-to-hono.sh @@ -0,0 +1,159 @@ +#!/bin/bash + +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +# +# This script can be used to provision a tenant and a device to an existing +# Hono instance. +# +# By default, the device will be provisioned to the Hono sandbox. +# +set -e + +HONO_HOST="hono.eclipseprojects.io" +HONO_REGISTRY_PORT="28443" +HONO_TENANT_ID="" +HONO_DEVICE_ID="" +HONO_DEVICE_PASSWORD="" +HONO_KAFKA_BROKERS="" +HONO_KAFKA_SECURE_PORT=9094 +HONO_KAFKA_USER="hono" +HONO_KAFKA_PASSWORD="hono-secret" + +print_usage() { + echo "Usage: provision-vehicle-to-hono --tenant=TENANT --device-id=DEVICE --device-pwd=PASSWORD [--host=HOST] [--port=PORT] [--kafka-brokers=BROKERS] [--kafka-user=USER] [--kafka-pwd=PASSWORD]" + echo + echo "--tenant The identifier of the tenant to create the device for." + echo "--device-id The identifier of the device to create." + echo "--device-pwd The password that the device needs to use for authenticating to Hono's protocol adapters." + echo "--host The host name or IP address of Hono's device registry. [${HONO_HOST}]" + echo "--port The TLS port of the Hono device registry. [${HONO_REGISTRY_PORT}]" + echo "--kafka-brokers A comma separated list of host name/IP address:port tuples of the Kafka broker(s) used by Hono. [${HONO_HOST}:${HONO_KAFKA_SECURE_PORT}]" + echo "--kafka-user The username to use for authenticating to the Kafka broker(s) used by Hono. [${HONO_KAFKA_USER}]" + echo "--kafka-pwd The password to use for authenticating to the Kafka broker(s) used by Hono. [${HONO_KAFKA_PASSWORD}]" + echo +} + +for i in "$@" +do + case $i in + --tenant=*) + HONO_TENANT_ID="${i#*=}" + ;; + --device-id=*) + HONO_DEVICE_ID="${i#*=}" + ;; + --device-pwd=*) + HONO_DEVICE_PASSWORD="${i#*=}" + ;; + --host=*) + HONO_HOST="${i#*=}" + ;; + --port=*) + HONO_REGISTRY_PORT="${i#*=}" + ;; + --kafka-brokers=*) + HONO_KAFKA_BROKERS="${i#*=}" + ;; + --kafka-user=*) + HONO_KAFKA_USER="${i#*=}" + ;; + --kafka-pwd=*) + HONO_KAFKA_PASSWORD="${i#*=}" + ;; + --help) + print_usage + exit 1 + ;; + -h) + print_usage + exit 1 + ;; + *) + echo "Ignoring unknown option: $i" + echo "Run with flag -? for usage" + ;; + esac +done + +if [[ -z "${HONO_TENANT_ID}" ]]; then + echo "Missing required parameter: tenant" + print_usage + exit 1 +fi +if [[ -z "${HONO_DEVICE_ID}" ]]; then + echo "Missing required parameter: device-id" + print_usage + exit 1 +fi +if [[ -z "${HONO_DEVICE_PASSWORD}" ]]; then + echo "Missing required parameter: device-pwd" + print_usage + exit 1 +fi +if [[ -z "${HONO_KAFKA_BROKERS}" ]]; then + HONO_KAFKA_BROKERS=${HONO_HOST}:${HONO_KAFKA_SECURE_PORT} +fi + +HONO_REGISTRY_URI="https://${HONO_HOST}:${HONO_REGISTRY_PORT}/v1" + +curl --silent --show-error --fail -X POST -H "content-type: application/json" --data-binary '{ + "ext": { + "messaging-type": "kafka" + } +}' ${HONO_REGISTRY_URI}/tenants/${HONO_TENANT_ID} + +curl --silent --show-error --fail -X POST ${HONO_REGISTRY_URI}/devices/${HONO_TENANT_ID}/${HONO_DEVICE_ID} + +curl --silent --show-error --fail -X PUT -H "content-type: application/json" --data-binary '[{ + "type": "hashed-password", + "auth-id": "'${HONO_DEVICE_ID}'", + "secrets": [{ + "pwd-plain": "'${HONO_DEVICE_PASSWORD}'" + }] +}]' ${HONO_REGISTRY_URI}/credentials/${HONO_TENANT_ID}/${HONO_DEVICE_ID} + +# create file with environment variables for use with the FMS Forwarder running in the vehicle +cat < hono-mqtt.env +MQTT_URI=mqtts://${HONO_HOST}:8883 +MQTT_USERNAME=${HONO_DEVICE_ID}@${HONO_TENANT_ID} +MQTT_PASSWORD=${HONO_DEVICE_PASSWORD} +TRUST_STORE_PATH=/etc/ssl/certs/ca-certificates.crt +EOF + +cat < hono-kafka.env +KAFKA_TOPIC_NAME=hono.telemetry.${HONO_TENANT_ID} +EOF + +# create properties file for use with the FMS Consumer running in the back end +cat < hono-kafka.properties +bootstrap.servers=${HONO_KAFKA_BROKERS} +group.id=fms-demo-consumer +enable.partition.eof=false +session.timeout.ms=6000 +enable.auto.commit=true +security.protocol=SASL_SSL +sasl.mechanism=SCRAM-SHA-512 +sasl.username=${HONO_KAFKA_USER} +sasl.password=${HONO_KAFKA_PASSWORD} +ssl.ca.location=/etc/ssl/certs/ca-certificates.crt +EOF + +echo "successfully provisioned vehicle device [${HONO_DEVICE_ID}] in tenant [${HONO_TENANT_ID}] for Hono instance [${HONO_HOST}]" diff --git a/spec/.gitignore b/spec/.gitignore new file mode 100644 index 0000000..5de185a --- /dev/null +++ b/spec/.gitignore @@ -0,0 +1,20 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +vss-*/ diff --git a/spec/README.md b/spec/README.md new file mode 100644 index 0000000..1145c23 --- /dev/null +++ b/spec/README.md @@ -0,0 +1,51 @@ + +The Fleet Management Service (FMS) specification defines an HTTP based API for retrieving data gathered during operation of +fleets of trucks and/or buses. The syntax and semantics of data exchanged is defined in the rFMS 4.0 OpenAPI definition +file that can be downloaded from the [FMS website](https://www.fms-standard.com). + +The [mapping-fms4-to-vss.md file](mapping-fms4-to-vss.md) defines a mapping of the data required by FMS to VSS Data Entries. +The [overlay folder](overlay) contains a VSS overlay that defines additional VSS Data Entries for those FMS data points for +which no standard VSS Data Entry exist (yet). The folder also contains a [pre-compiled JSON model file](spec/overlay/vss.json) that +contains all of the definitions from both the standard VSS as well as the overlay vspec files. +This model file can then be read in by the kuksa.val Databroker during startup using the `--metadata` switch. + +Please refer to the [VSS documentation](https://covesa.github.io/vehicle_signal_specification/rule_set/overlay/) for details regarding VSS overlays. + +## Creating the JSON Model File + +The `vspec2json.py` program from the [COVESA VSS tools project](https://github.com/COVESA/vss-tools) can be used to (re-)create the JSON model file that +contains all of the standard VSS Data Entries plus the ones from the FMS overlay file. + +1. Clone the COVESA VSS Signal Specification repository as described in its + [Getting Started guide](https://github.com/COVESA/vehicle_signal_specification#contribute-to-vss). It is important to include the + `--recurse-submodules` in order to initialize the submodule that contains the VSS Tools. +2. Check out the `v4.0` tag: + ```sh + git checkout --recurse-submodules v4.0 + ``` +3. Follow the instructions given in the *Basic Setup* section of the `vss-tools/README.md` file. +4. Run the following command to create the JSON file: + + ```sh + # in folder spec + ${PATH_TO_CLONED_VSS_REPO}/vss-tools/vspec2json.py --strict --json-pretty -e dbc -o overlay/fms.vspec ${PATH_TO_CLONED_VSS_REPO}/spec/VehicleSignalSpecification.vspec overlay/vss.json + ``` diff --git a/spec/mapping-fms4-to-vss.md b/spec/mapping-fms4-to-vss.md new file mode 100644 index 0000000..15c00a8 --- /dev/null +++ b/spec/mapping-fms4-to-vss.md @@ -0,0 +1,144 @@ + +This document provides a mapping of data/object types used in the rFMS 4.0 OpenAPI specification +to VSS paths that either already exist in the VSS 4.0 spec or paths that are defined in the +[FMS overlay file](fms.vspec). + +In the tables below, if the *Impl* column contains `yes` for a property, then +* a mapping from the underlying j1939 signal to VSS has been defined in the [FMS overlay file](fms.vspec), +* the corresponding VSS Data Entries are getting retrieved from the Kuksa.val Databroker as part of the TIMER trigger, +* the values retrieved from the Databroker are included in the data sent by the vehicle to the back end. + +# VehiclePositionObject + +| rFMS property | M/O | rFMS type | rFMS unit | VSS/FMS Overlay path | VSS unit | Impl | +| :------------------------------ | --- | :---------- | :-------- | :---------------------------------------------- | :------- | ---- | +| vin | M | string | | VSS: Vehicle.VehicleIdentification.VIN | | yes | +| gnssPosition.latitude | M | double | WGS84 | VSS: Vehicle.CurrentLocation.Latitude | WGS84 | yes | +| gnssPosition.longitude | M | double | WGS84 | VSS: Vehicle.CurrentLocation.Longitude | WGS84 | yes | +| gnssPosition.heading | O | integer | degrees | VSS: Vehicle.CurrentLocation.Heading | degrees | yes | +| gnssPosition.altitude | O | integer | m | VSS: Vehicle.CurrentLocation.Altitude | m | yes | +| gnssPosition.speed | O | double | km/h | FMS: Vehicle.CurrentLocation.Speed | km/h | yes | +| gnssPosition.positionDateTime | M | date-time | | VSS: Vehicle.CurrentLocation.Timestamp | | yes | +| wheelBasedSpeed | M | double | km/h | VSS: Vehicle.Speed | km/h | yes | +| tachographSpeed | O | double | km/h | FMS: Vehicle.Tachograph.VehicleSpeed | km/h | yes | + +# VehicleStatusObject + +| rFMS property | M/O | rFMS type | rFMS unit | VSS/FMS Overlay path | VSS unit | Impl | +| :------------------------------ | --- | :---------- | :-------- | :---------------------------------------------------------------- | :------- | ---- | +| vin | M | string | | VSS: Vehicle.VehicleIdentification.VIN | | yes | +| hrTotalVehicleDistance | M | int64 | m | FMS: Vehicle.TraveledDistanceHighRes | m | yes | +| totalEngineHours | M/O | double | h | VSS: Vehicle.Powertrain.CombustionEngine.EngineHours | h | yes | +| totalElectricMotorHours | M/O | double | h | FMS: Vehicle.Powertrain.ElectricMotor.MotorHours | h | no | +| engineTotalFuelUsed | M/O | int64 | ml | FMS: Vehicle.Powertrain.FuelSystem.AccumulatedConsumption | ml | yes | +| totalFuelUsedGaseous | M/O | int64 | kg | | | no | +| totalElectricEnergyUsed | M/O | int64 | Wh | VSS: Vehicle.Powertrain.TractionBattery.AccumulatedConsumedEnergy | kWh | no | +| grossCombinationVehicleWeight | O | integer | kg | VSS: Vehicle.CurrentOverallWeight | kg | yes | +| driver1Id | M | [DriverIdObject](#driveridobject) | | FMS: Vehicle.Tachograph.Driver.Driver1 | | yes | +| accumulatedData | O | [AccumulatedDataObject](#accumulateddataobject) | | | | no | +| snapshotData | O | [SnapshotDataObject](#snapshotdataobject) | | | | yes | +| uptimeData | O | [UptimeDataObject](#uptimedataobject) | | | | no | +| status2OfDoors | M(B)| string | | | | no | +| doorStatus | O | array | | | | no | + +# AccumulatedDataObject + +| rFMS property | M/O | rFMS format | rFMS unit | VSS/FMS Overlay path | VSS unit | Impl | +| :------------------------------ | --- | :---------- | :-------- | :------------------------------------- | :------- | ---- | +| durationWheelbasedSpeedOverZero | M | | | | | no | + +TBD + +# SnapshotDataObject + +| rFMS property | M/O | rFMS format | rFMS unit | VSS/FMS Overlay path | VSS unit | Impl | +| :---------------------------------------- | --- | :---------- | :-------- | :--------------------------------------- | :------- | ---- | +| gnssPosition.latitude | M | double | WGS84 | VSS: Vehicle.CurrentLocation.Latitude | WGS84 | yes | +| gnssPosition.longitude | M | double | WGS84 | VSS: Vehicle.CurrentLocation.Longitude | WGS84 | yes | +| gnssPosition.heading | O | integer | degrees | VSS: Vehicle.CurrentLocation.Heading | degrees | yes | +| gnssPosition.altitude | O | integer | m | VSS: Vehicle.CurrentLocation.Altitude | m | yes | +| gnssPosition.speed | O | double | km/h | FMS: Vehicle.CurrentLocation.Speed | km/h | yes | +| gnssPosition.positionDateTime | M | date-time | | VSS: Vehicle.CurrentLocation.Timestamp | | yes | +| wheelBasedSpeed | M | double | km/h | VSS: Vehicle.Speed | km/h | yes | +| tachographSpeed | O | double | km/h | FMS: Vehicle.Tachograph.VehicleSpeed | km/h | yes | +| engineSpeed | O | double | rpm | VSS: Vehicle.Powertrain.CombustionEngine.Speed | rpm | yes | +| electricMotorSpeed | O | double | rpm | VSS: Vehicle.Powertrain.ElectricMotor.Speed | rpm | no | +| fuelType | O | string | | FMS: Vehicle.Powertrain.CurrentFuelType | enum | no | +| fuelLevel1 | M | double | % | FMS: Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel | % | yes | +| fuelLevel2 | O | double | % | FMS: Vehicle.Powertrain.FuelSystem.Tank.Second.RelativeLevel | % | yes | +| catalystFuelLevel | O | double | % | VSS: Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid.Level | % | yes | +| driver1WorkingState | O | string | | FMS: Vehicle.Tachograph.Driver.Driver1.WorkingState | | yes | +| driver2Id | O | [DriverIdObject](#driveridobject) | | FMS: Vehicle.Tachograph.Driver.Driver2 | | no | +| driver2WorkingState | O | string | | FMS: Vehicle.Tachograph.Driver.Driver2.WorkingState | | yes | +| ambientAirTemperature | O | double | celsius | VSS: Vehicle.Exterior.AirTemperature | celsius | yes | +| parkingBrakeSwitch | O | boolean | | VSS: Vehicle.Chassis.ParkingBrake.IsEngaged | | yes | +| hybridBatteryPackRemainingCharge | O | double | % | VSS: Vehicle.Powertrain.TractionBattery.StateOfCharge.Current | % | no | +| batteryPackChargingStatus | O | string | enum | VSS: Vehicle.Powertrain.TractionBattery.Charging.IsCharging | | no | +| batteryPackChargingConnectionStatus | O | string | enum | VSS: Vehicle.Powertrain.TractionBattery.Charging.IsChargingCableConnected | | no | +| batteryPackChargingDevice | O | string | enum | | | no | +| batteryPackChargingPower | O | double | W | VSS: Vehicle.Powertrain.TractionBattery.Charging.ChargeCurrent.DC | A | no | +| | | | | VSS: Vehicle.Powertrain.TractionBattery.Charging.ChargeVoltage.DC | V | no | +| estimatedTimeBatteryPackChargingCompleted | O | date-time | | VSS: Vehicle.Powertrain.TractionBattery.Charging.TimeToComplete | s | no | +| estimatedDistanceToEmpty.total | M | int64 | m | VSS: Vehicle.Powertrain.Range | m | yes | +| estimatedDistanceToEmpty.fuel | O | int64 | m | VSS: Vehicle.Powertrain.FuelSystem.Range | m | yes | +| estimatedDistanceToEmpty.gas | O | | | | | no | +| estimatedDistanceToEmpty.batteryPack | O | int64 | m | VSS: Vehicle.Powertrain.TractionBattery.Range | m | no | +| vehicleAxles | O | array | | | | no | +| trailers | O | array | | | | no | + +# UptimeDataObject + +| rFMS property | M/O | rFMS format | rFMS unit | VSS/FMS Overlay path | VSS unit | Impl | +| :------------------------------ | --- | :---------- | :-------- | :---------------------------------------------------------- | :------- | ---- | +| tellTaleInfo | M | array | | FMS: Vehicle.Cabin.Telltale.* | enum | no | +| serviceDistance | O | int64 | m | VSS: Vehicle.Service.DistanceToService | km | no | +| engineCoolantTemperature | O | double | celsius | VSS: Vehicle.Powertrain.CombustionEngine.ECT | celsius | no | +| hvessOutletCoolantTemperature | O | double | celsius | FMS: Vehicle.Powertrain.TractionBattery.CoolantTemperature | celsius | no | +| hvessTemperature | O | double | celsius | VSS: Vehicle.Powertrain.TractionBattery.Temperature.Average | celsius | no | +| serviceBrakeAirPressureCircuit1 | O | int64 | pascal | FMS: Vehicle.Chassis.Brake.Circuit1.AirPressure | pascal | no | +| serviceBrakeAirPressureCircuit2 | O | int64 | pascal | FMS: Vehicle.Chassis.Brake.Circuit2.AirPressure | pascal | no | +| durationAtLeastOneDoorOpen | O | | | | | no | +| alternatorInfo.alternatorStatus | M(B)| | | | | no | +| alternatorInfo.alternatorNumber | M(B)| | | | | no | +| bellowPressureFrontAxleLeft | O | | | | | no | +| bellowPressureFrontAxleRight | O | | | | | no | +| bellowPressureRearAxleLeft | O | | | | | no | +| bellowPressureRearAxleRight | O | | | | | no | + +# DriverIdObject + +## DriverIdObject.tachoDriverIdentification + +| rFMS property | M/O | VSS/FMS Overlay path | Impl | +| :------------------------------ | --- | :----------------------------------------------------- | ---- | +| driverIdentification | M | FMS: Vehicle.Tachograph.Driver.Identification | yes | +| cardIssuingMemberState | M | FMS: Vehicle.Tachograph.Driver.CardIssuingMemberState | no | +| driverAuthenticationEquipment | O | FMS: Vehicle.Tachograph.Driver.AuthenticationEquipment | no | +| cardReplacementIndex | O | FMS: Vehicle.Tachograph.Driver.CardReplacementIndex | no | +| cardRenewalIndex | O | FMS: Vehicle.Tachograph.Driver.CardRenewalIndex | no | + +## DriverIdObject.oemDriverIdentification + +| rFMS property | M/O | VSS/FMS Overlay path | Impl | +| :------------------------------ | --- | :--------------------------------------------------- | ---- | +| oemDriverIdentification | O | FMS: Vehicle.Tachograph.Driver.OemIdentification | no | +| idType | O | FMS: Vehicle.Tachograph.Driver.OemIdentificationType | no | diff --git a/spec/overlay/fms.vspec b/spec/overlay/fms.vspec new file mode 100644 index 0000000..977a951 --- /dev/null +++ b/spec/overlay/fms.vspec @@ -0,0 +1,540 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +# Overlay to provide [FMS Standard labels](http://www.fms-standard.com/Truck/index.htm) in VSS 3.0 +# Dependencies to other overlays: None +# Known conflicts with other overlays: None +# +# The Data Entries are sorted lexicographically +# + +Vehicle.ADAS.CruiseControl.IsActive: + datatype: boolean + type: sensor + description: | + Indicates if cruise control is switched on. It is not ensured that the engine is controlled by cruise control, + as in the case of a large driver's demand the engine is controlled by the driver while cruise control is active + (maximum selection of cruise control and driver's demand). The cruise control is set to false if a switch-off + condition occurs. + +Vehicle.ADAS.CruiseControl.IsBrakePressed: + datatype: boolean + type: sensor + description: | + Switch signal which indicates that the driver operated brake foot pedal is being pressed. + This brake foot pedal is controlling the vehicles' service brake (total vehicle braking application, + not park brakes). It is necessary for safe drivetrain behavior that the switch activates before the + physical braking components are activated (i.e. Disengage the cruise control function prior to the + activation of friction brakes) + +Vehicle.ADAS.CruiseControl.IsClutchPressed: + datatype: boolean + type: sensor + description: | + Switch signal which indicates that the clutch pedal is being pressed + +Vehicle.ADAS.CruiseControl.IsPowerTakeOffOn: + datatype: boolean + type: sensor + description: | + This parameter is used to indicate the current state or mode of operation by the power takeoff (PTO) device + +Vehicle.ADAS.CruiseControl.Status: + datatype: string + type: sensor + description: | + This parameter is used to indicate the current state, or mode, of operation by the cruise control device. + allowed: + - "OFF" + - "HOLD" + - "ACCELERATE" + - "DECELERATE" + - "RESUME" + - "SET" + - "ACCEL_OVERRIDE" + - "NOT_AVAILABLE" + +Vehicle.Cabin.Telltale: + type: branch + instances: ["ECT", "Engine", "EngineOil", "FuelLevel", "ParkingBrake"] + description: A set of telltale status values. + +Vehicle.Cabin.Telltale.Status: + type: sensor + datatype: string + description: The current status of a telltale. + allowed: + - "OFF" + - "RED" + - "YELLOW" + - "INFO" + - "NOT_AVAILABLE" + +Vehicle.Cabin.Telltale.ECT.Status: + datatype: string + type: sensor + description: | + The telltale indicating the status of the engine coolant temperature. + +Vehicle.Cabin.Telltale.Engine.Status: + datatype: string + type: sensor + description: | + The telltale indicating the status of the engine. + +Vehicle.Cabin.Telltale.EngineOil.Status: + datatype: string + type: sensor + description: | + The telltale indicating the status of the engine oil level. + +Vehicle.Cabin.Telltale.FuelLevel.Status: + datatype: string + type: sensor + description: | + The telltale indicating the status of the fuel level. + +Vehicle.Cabin.Telltale.ParkingBrake.Status: + datatype: string + type: sensor + description: | + The telltale indicating the status of the parking brake. + +# +# Attempt to override core Axle definition, to allow for more Axles +# +Vehicle.Chassis.Axle: + instances: + - Row[1,6] + type: branch + description: Axle signals + +Vehicle.Chassis.Brake: + type: branch + instances: Circuit[1, 2] + +Vehicle.Chassis.Brake.AirPressure: + type: sensor + datatype: uint32 + unit: kPa + description: The current air pressure in the brake circuit. + +Vehicle.Chassis.Brake.Circuit1.AirPressure: + type: sensor + datatype: uint32 + description: | + The pneumatic pressure in the primary service brake circuit or reservoir, supplying the rear axle. + +Vehicle.Chassis.Brake.Circuit2.AirPressure: + type: sensor + datatype: uint32 + description: | + The pneumatic pressure in the secondary service brake circuit or reservoir, supplying the front axle. + +Vehicle.Chassis.ParkingBrake.IsEngaged: + datatype: boolean + type: sensor + + +Vehicle.CurrentLocation.Latitude: + datatype: double + type: sensor + +Vehicle.CurrentLocation.Longitude: + datatype: double + type: sensor + +Vehicle.CurrentLocation.Speed: + datatype: double + type: sensor + unit: km/h + description: | + The vehicle's current speed as as measured by the GNSS receiver antenna. + +Vehicle.CurrentOverallWeight: + type: sensor + # expand to uint32 in order to support typical (large) weight of commercial verhicles + datatype: uint32 + +Vehicle.Exterior.AirTemperature: + datatype: float + type: sensor + +Vehicle.IsMoving: + datatype: boolean + type: sensor + +Vehicle.Powertrain.Brake: + type: branch + description: Recuperation data. + +Vehicle.Powertrain.Brake.ActualRetarderPercentage: + datatype: uint8 + type: sensor + unit: percent + min: 0 + max: 100 + description: Actual braking torque of the retarder + +Vehicle.Powertrain.CombustionEngine.ActualEnginePercentTorque: + datatype: uint8 + type: sensor + unit: percent + min: 0 + max: 100 + description: The calculated output torque of the engine; the data is transmitted in indicated torque as a percent of reference engine + +Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid.Level: + datatype: uint8 + type: sensor + +Vehicle.Powertrain.CombustionEngine.ECT: + datatype: int16 + type: sensor + +Vehicle.Powertrain.CombustionEngine.EngineHours: + datatype: float + type: sensor + +Vehicle.Powertrain.CombustionEngine.Speed: + datatype: uint16 + type: sensor + +Vehicle.Powertrain.CurrentFuelType: + datatype: string + type: sensor + description: Type of fuel currently being utilized by the vehicle. + allowed: + - "NONE" + - "GAS" + - "METH" + - "ETH" + - "DSL" + - "LPG" + - "CNG" + - "PROP" + - "ELEC" + - "BI_GAS" + - "BI_METH" + - "BI_ETH" + - "BI_LPG" + - "BI_CNG" + - "BI_PROP" + - "BI_ELEC" + - "BI_MIX" + - "HYB_GAS" + - "HYB_ETH" + - "HYB_DSL" + - "HYB_ELEC" + - "HYB_MIX" + - "HYB_REG" + - "NG" + - "BI_NG" + - "BI_DSL" + - "ERROR" + - "NOT_AVAILABLE" + +Vehicle.Powertrain.Eec2AcceleratorPedalPosition: + datatype: double + type: sensor + unit: percent + min: 0 + description: | + The ratio of actual position of the analogue engine speed/torque request input device + (such as an accelerator pedal or throttle lever) to the maximum position of the input device + +Vehicle.Powertrain.Eec2EnginePercentLoad: + datatype: uint8 + type: sensor + unit: percent + min: 0 + max: 125 + description: | + The ratio of actual engine percent torque (indicated) to maximum indicated torque available at + the current engine speed, clipped to zero torque during engine braking + +Vehicle.Powertrain.ElectricMotor.MotorHours: + datatype: float + type: sensor + unit: h + min: 0.0 + description: Accumulated time during motor lifetime with 'motor speed (rpm) > 0'. + +Vehicle.Powertrain.FuelSystem.AccumulatedConsumption: + datatype: uint64 + type: sensor + unit: ml + description: Accumulated amount of fuel used during vehicle operation. + +Vehicle.Powertrain.FuelSystem.Range: + datatype: uint32 + type: sensor + +Vehicle.Powertrain.FuelSystem.Tank: + type: branch + instances: ["First","Second"] + description: Information about the first and (optional) second fuel tank. + +Vehicle.Powertrain.FuelSystem.Tank.RelativeLevel: + datatype: float + type: sensor + unit: percent + min: 0.0 + max: 100.0 + description: Level in fuel tank as percent of capacity. 0 = empty. 100 = full. + +Vehicle.Powertrain.FuelSystem.Tank.First.RelativeLevel: + datatype: float + type: sensor + +Vehicle.Powertrain.FuelSystem.Tank.Second.RelativeLevel: + datatype: float + type: sensor + +Vehicle.Powertrain.FuelSystem.Tank.Fuel: + datatype: string + type: sensor + allowed: ['GASOLINE', 'DIESEL', 'E85', 'LPG', 'CNG', 'LNG', 'H2', 'OTHER'] + description: | + Detailed information on fuel in tank. Identifiers originating from DIN EN 16942:2021-08, + appendix B, with additional suffix for octane (RON) where relevant. + +# Vehicle.Powertrain.Range: +# datatype: uint32 +# type: sensor + +Vehicle.Powertrain.TractionBattery.CoolantTemperature: + datatype: uint8 + type: sensor + unit: celsius + description: | + The temperature of the battery pack coolant. + +# We do not have a DBC mapping entry for this PGN (yet) +#Vehicle.Powertrain.TractionBattery.Range: +# datatype: uint32 +# type: sensor + +Vehicle.Powertrain.TractionBattery.StateOfCharge.Current: + datatype: float + type: sensor + + +Vehicle.Service.DistanceToService: + datatype: float + type: sensor + + +Vehicle.Speed: + type: sensor + datatype: float + + +Vehicle.Tachograph: + type: branch + description: Tachograph related data. + +Vehicle.Tachograph.DirectionIndicator: + datatype: string + type: sensor + description: | + Indicates the direction of the vehicle + +Vehicle.Tachograph.Driver: + type: branch + instances: + - Driver[1,2] + description: Information about the driver(s) of a (commercial) vehicle. + +Vehicle.Tachograph.Driver.Identification: + datatype: string + type: attribute + description: The unique identification of a driver in a Member State. + comment: | + This field is formatted according the definition for driverIdentification + in COMMISSION REGULATION (EC) No 1360/2002 Annex 1b. + +Vehicle.Tachograph.Driver.CardIssuingMemberState: + datatype: string + type: attribute + description: The country alpha code of the Member State having issued the card. + comment: | + This field is formatted according the definition for NationAlpha + in COMMISSION REGULATION (EC) No 1360/2002 Annex 1b. + +Vehicle.Tachograph.Driver.AuthenticationEquipment: + datatype: string + type: attribute + description: Code to distinguish different types of equipment for the tachograph application. + comment: | + See description of the field 'DriverAuthenticationEquipment' + in COMMISSION REGULATION (EC) No 1360/2002 Annex 1b. + allowed: + - RESERVED + - DRIVER_CARD + - CONTROL_CARD + - COMPANY_CARD + - MANUFACTURING_CARD + - VEHICLE_UNIT + - MOTION_SENSOR + +Vehicle.Tachograph.Driver.CardReplacementIndex: + datatype: string + type: attribute + description: A card replacement index. + comment: | + This field is formatted according the definition for CardReplacementIndex + (chap 2.26) in: COMMISSION REGULATION (EC) No 1360/2002 Annex 1b. + +Vehicle.Tachograph.Driver.CardRenewalIndex: + datatype: string + type: attribute + description: A card renewal index. + comment: | + This field is formatted according the definition for CardRenewalIndex + (chap 2.25) in: COMMISSION REGULATION (EC) No 1360/2002 Annex 1b. + +Vehicle.Tachograph.Driver.IsCardPresent: + datatype: boolean + type: sensor + description: Indicates the presence of a driver card + +Vehicle.Tachograph.Driver.Driver1.IsCardPresent: + datatype: boolean + type: sensor + +Vehicle.Tachograph.Driver.Driver2.IsCardPresent: + datatype: boolean + type: sensor + +# TODO maybe we do not need this flag but can instead simply rely on the fact +# that the Identification attribute has a (non-empty) value or not. +Vehicle.Tachograph.Driver.IsLoggedIn: + datatype: boolean + type: attribute + description: Indicates if the driver is currently logged in. + +Vehicle.Tachograph.Driver.OemIdentification: + datatype: string + type: attribute + description: An OEM specific driver id. + +Vehicle.Tachograph.Driver.OemIdentificationType: + datatype: string + type: attribute + description: Contains an optional id type (e.g. pin, USB, encrypted EU id). + +Vehicle.Tachograph.Driver.TimeRelatedStatus: + datatype: string + type: sensor + description: | + Indicates if the driver approaches or exceeds working time limits (or other limits). + allowed: + - "NORMAL" + - "LIMIT_1" + - "LIMIT_2" + - "LIMIT_3" + - "LIMIT_4" + - "LIMIT_5" + - "LIMIT_6" + - "OTHER" + - "ERROR" + - "NOT_AVAILABLE" + +Vehicle.Tachograph.Driver.Driver1.TimeRelatedStatus: + datatype: string + type: sensor + +Vehicle.Tachograph.Driver.Driver2.TimeRelatedStatus: + datatype: string + type: sensor + +Vehicle.Tachograph.Driver.WorkingState: + datatype: string + type: attribute + description: | + The current working state of the driver. + 0 - rest + 1 - driver available + 2 - work + 3 - drive + 6 - error + 7 - not available + allowed: + - "DRIVE" + - "WORK" + - "DRIVER_AVAILABLE" + - "REST" + - "ERROR" + - "NOT_AVAILABLE" + +Vehicle.Tachograph.Driver.Driver1.WorkingState: + datatype: string + type: attribute + +Vehicle.Tachograph.Driver.Driver2.WorkingState: + datatype: string + type: attribute + +Vehicle.Tachograph.IsAnalyzingPerformance: + datatype: boolean + type: sensor + description: | + Indicates whether the tachograph is currently analyzing its performance; + including electronic or mechanical analysis, instrument analysis, speed sensor analysis, + mass storage analysis, and printer analysis + +Vehicle.Tachograph.IsHandlingInformationPresent: + datatype: boolean + type: sensor + description: | + Indicates that handling information is present. Information could include 'no printer paper', 'no driver card', etc + +Vehicle.Tachograph.IsOverspeed: + datatype: boolean + type: sensor + description: | + Indicates whether the vehicle is exceeding the legal speed limit set in the tachograph. + +Vehicle.Tachograph.IsSystemEventAvailable: + datatype: boolean + type: sensor + description: | + Indicates that a tachograph event has occurred. This may include power supply interruption, + interruption of the speed sensor, incorrect data on the driver card, driving without a driver + card, illegal removal of a driver card, insertion of a driver card during driving, and time adjustment + +Vehicle.Tachograph.VehicleSpeed: + datatype: double + type: sensor + unit: km/h + min: 0.0 + description: Speed of the vehicle registered by the tachograph. + + +Vehicle.TraveledDistanceHighRes: + datatype: uint64 + type: sensor + unit: "m" + description: Accumulated distance travelled by the vehicle during its operation. + + +Vehicle.VehicleIdentification.VIN: + datatype: string + type: attribute diff --git a/spec/overlay/vss.json b/spec/overlay/vss.json new file mode 100644 index 0000000..a83f3c7 --- /dev/null +++ b/spec/overlay/vss.json @@ -0,0 +1,9032 @@ +{ + "Vehicle": { + "children": { + "ADAS": { + "children": { + "ABS": { + "children": { + "IsEnabled": { + "datatype": "boolean", + "description": "Indicates if ABS is enabled. True = Enabled. False = Disabled.", + "type": "actuator" + }, + "IsEngaged": { + "datatype": "boolean", + "description": "Indicates if ABS is currently regulating brake pressure. True = Engaged. False = Not Engaged.", + "type": "sensor" + }, + "IsError": { + "datatype": "boolean", + "description": "Indicates if ABS incurred an error condition. True = Error. False = No Error.", + "type": "sensor" + } + }, + "description": "Antilock Braking System signals.", + "type": "branch" + }, + "ActiveAutonomyLevel": { + "allowed": [ + "SAE_0", + "SAE_1", + "SAE_2_DISENGAGING", + "SAE_2", + "SAE_3_DISENGAGING", + "SAE_3", + "SAE_4_DISENGAGING", + "SAE_4", + "SAE_5" + ], + "comment": "Follows https://www.sae.org/news/2019/01/sae-updates-j3016-automated-driving-graphic taxonomy. For SAE levels 3 and 4 the system is required to alert the driver before it will disengage. Level 4 systems are required to reach a safe state even if a driver does not take over. Only level 5 systems are required to not rely on a driver at all. While level 2 systems require the driver to be monitoring the system at all times, many level 2 systems, often termed \"level 2.5\" systems, do warn the driver shortly before reaching their operational limits, therefore we also support the DISENGAGING state for SAE_2.", + "datatype": "string", + "description": "Indicates the currently active level of autonomy according to SAE J3016 taxonomy.", + "type": "sensor" + }, + "CruiseControl": { + "children": { + "IsActive": { + "datatype": "boolean", + "description": "Indicates if cruise control is switched on. It is not ensured that the engine is controlled by cruise control,\nas in the case of a large driver's demand the engine is controlled by the driver while cruise control is active\n(maximum selection of cruise control and driver's demand). The cruise control is set to false if a switch-off\ncondition occurs.\n", + "type": "sensor" + }, + "IsBrakePressed": { + "datatype": "boolean", + "description": "Switch signal which indicates that the driver operated brake foot pedal is being pressed.\nThis brake foot pedal is controlling the vehicles' service brake (total vehicle braking application,\nnot park brakes). It is necessary for safe drivetrain behavior that the switch activates before the\nphysical braking components are activated (i.e. Disengage the cruise control function prior to the\nactivation of friction brakes)\n", + "type": "sensor" + }, + "IsClutchPressed": { + "datatype": "boolean", + "description": "Switch signal which indicates that the clutch pedal is being pressed\n", + "type": "sensor" + }, + "IsEnabled": { + "datatype": "boolean", + "description": "Indicates if cruise control system is enabled (e.g. ready to receive configurations and settings) True = Enabled. False = Disabled.", + "type": "actuator" + }, + "IsError": { + "datatype": "boolean", + "description": "Indicates if cruise control system incurred an error condition. True = Error. False = No Error.", + "type": "sensor" + }, + "IsPowerTakeOffOn": { + "datatype": "boolean", + "description": "This parameter is used to indicate the current state or mode of operation by the power takeoff (PTO) device\n", + "type": "sensor" + }, + "SpeedSet": { + "datatype": "float", + "description": "Set cruise control speed in kilometers per hour.", + "type": "actuator", + "unit": "km/h" + }, + "Status": { + "allowed": [ + "OFF", + "HOLD", + "ACCELERATE", + "DECELERATE", + "RESUME", + "SET", + "ACCEL_OVERRIDE", + "NOT_AVAILABLE" + ], + "datatype": "string", + "description": "This parameter is used to indicate the current state, or mode, of operation by the cruise control device.\n", + "type": "sensor" + } + }, + "description": "Signals from Cruise Control system.", + "type": "branch" + }, + "DMS": { + "children": { + "IsEnabled": { + "datatype": "boolean", + "description": "Indicates if DMS is enabled. True = Enabled. False = Disabled.", + "type": "actuator" + }, + "IsError": { + "datatype": "boolean", + "description": "Indicates if DMS incurred an error condition. True = Error. False = No Error.", + "type": "sensor" + }, + "IsWarning": { + "datatype": "boolean", + "description": "Indicates if DMS has registered a driver alert condition.", + "type": "sensor" + } + }, + "description": "Driver Monitoring System signals.", + "type": "branch" + }, + "EBA": { + "children": { + "IsEnabled": { + "datatype": "boolean", + "description": "Indicates if EBA is enabled. True = Enabled. False = Disabled.", + "type": "actuator" + }, + "IsEngaged": { + "datatype": "boolean", + "description": "Indicates if EBA is currently regulating brake pressure. True = Engaged. False = Not Engaged.", + "type": "sensor" + }, + "IsError": { + "datatype": "boolean", + "description": "Indicates if EBA incurred an error condition. True = Error. False = No Error.", + "type": "sensor" + } + }, + "description": "Emergency Brake Assist (EBA) System signals.", + "type": "branch" + }, + "EBD": { + "children": { + "IsEnabled": { + "datatype": "boolean", + "description": "Indicates if EBD is enabled. True = Enabled. False = Disabled.", + "type": "actuator" + }, + "IsEngaged": { + "datatype": "boolean", + "description": "Indicates if EBD is currently regulating vehicle brakeforce distribution. True = Engaged. False = Not Engaged.", + "type": "sensor" + }, + "IsError": { + "datatype": "boolean", + "description": "Indicates if EBD incurred an error condition. True = Error. False = No Error.", + "type": "sensor" + } + }, + "description": "Electronic Brakeforce Distribution (EBD) System signals.", + "type": "branch" + }, + "ESC": { + "children": { + "IsEnabled": { + "datatype": "boolean", + "description": "Indicates if ESC is enabled. True = Enabled. False = Disabled.", + "type": "actuator" + }, + "IsEngaged": { + "datatype": "boolean", + "description": "Indicates if ESC is currently regulating vehicle stability. True = Engaged. False = Not Engaged.", + "type": "sensor" + }, + "IsError": { + "datatype": "boolean", + "description": "Indicates if ESC incurred an error condition. True = Error. False = No Error.", + "type": "sensor" + }, + "IsStrongCrossWindDetected": { + "datatype": "boolean", + "description": "Indicates if the ESC system is detecting strong cross winds. True = Strong cross winds detected. False = No strong cross winds detected.", + "type": "sensor" + }, + "RoadFriction": { + "children": { + "LowerBound": { + "datatype": "float", + "description": "Lower bound road friction, as calculated by the ESC system. 5% possibility that road friction is below this value. 0 = no friction, 100 = maximum friction.", + "max": 100, + "min": 0, + "type": "sensor", + "unit": "percent" + }, + "MostProbable": { + "datatype": "float", + "description": "Most probable road friction, as calculated by the ESC system. Exact meaning of most probable is implementation specific. 0 = no friction, 100 = maximum friction.", + "max": 100, + "min": 0, + "type": "sensor", + "unit": "percent" + }, + "UpperBound": { + "datatype": "float", + "description": "Upper bound road friction, as calculated by the ESC system. 95% possibility that road friction is below this value. 0 = no friction, 100 = maximum friction.", + "max": 100, + "min": 0, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Road friction values reported by the ESC system.", + "type": "branch" + } + }, + "description": "Electronic Stability Control System signals.", + "type": "branch" + }, + "LaneDepartureDetection": { + "children": { + "IsEnabled": { + "datatype": "boolean", + "description": "Indicates if lane departure detection system is enabled. True = Enabled. False = Disabled.", + "type": "actuator" + }, + "IsError": { + "datatype": "boolean", + "description": "Indicates if lane departure system incurred an error condition. True = Error. False = No Error.", + "type": "sensor" + }, + "IsWarning": { + "datatype": "boolean", + "description": "Indicates if lane departure detection registered a lane departure.", + "type": "sensor" + } + }, + "description": "Signals from Lane Departure Detection System.", + "type": "branch" + }, + "ObstacleDetection": { + "children": { + "IsEnabled": { + "datatype": "boolean", + "description": "Indicates if obstacle sensor system is enabled (i.e. monitoring for obstacles). True = Enabled. False = Disabled.", + "type": "actuator" + }, + "IsError": { + "datatype": "boolean", + "description": "Indicates if obstacle sensor system incurred an error condition. True = Error. False = No Error.", + "type": "sensor" + }, + "IsWarning": { + "datatype": "boolean", + "description": "Indicates if obstacle sensor system registered an obstacle.", + "type": "sensor" + } + }, + "description": "Signals form Obstacle Sensor System.", + "type": "branch" + }, + "PowerOptimizeLevel": { + "datatype": "uint8", + "description": "Power optimization level for this branch/subsystem. A higher number indicates more aggressive power optimization. Level 0 indicates that all functionality is enabled, no power optimization enabled. Level 10 indicates most aggressive power optimization mode, only essential functionality enabled.", + "max": 10, + "min": 0, + "type": "actuator" + }, + "SupportedAutonomyLevel": { + "allowed": [ + "SAE_0", + "SAE_1", + "SAE_2", + "SAE_3", + "SAE_4", + "SAE_5" + ], + "datatype": "string", + "description": "Indicates the highest level of autonomy according to SAE J3016 taxonomy the vehicle is capable of.", + "type": "attribute" + }, + "TCS": { + "children": { + "IsEnabled": { + "datatype": "boolean", + "description": "Indicates if TCS is enabled. True = Enabled. False = Disabled.", + "type": "actuator" + }, + "IsEngaged": { + "datatype": "boolean", + "description": "Indicates if TCS is currently regulating traction. True = Engaged. False = Not Engaged.", + "type": "sensor" + }, + "IsError": { + "datatype": "boolean", + "description": "Indicates if TCS incurred an error condition. True = Error. False = No Error.", + "type": "sensor" + } + }, + "description": "Traction Control System signals.", + "type": "branch" + } + }, + "description": "All Advanced Driver Assist Systems data.", + "type": "branch" + }, + "Acceleration": { + "children": { + "Lateral": { + "datatype": "float", + "description": "Vehicle acceleration in Y (lateral acceleration).", + "type": "sensor", + "unit": "m/s^2" + }, + "Longitudinal": { + "datatype": "float", + "description": "Vehicle acceleration in X (longitudinal acceleration).", + "type": "sensor", + "unit": "m/s^2" + }, + "Vertical": { + "datatype": "float", + "description": "Vehicle acceleration in Z (vertical acceleration).", + "type": "sensor", + "unit": "m/s^2" + } + }, + "description": "Spatial acceleration. Axis definitions according to ISO 8855.", + "type": "branch" + }, + "AngularVelocity": { + "children": { + "Pitch": { + "datatype": "float", + "description": "Vehicle rotation rate along Y (lateral).", + "type": "sensor", + "unit": "degrees/s" + }, + "Roll": { + "datatype": "float", + "description": "Vehicle rotation rate along X (longitudinal).", + "type": "sensor", + "unit": "degrees/s" + }, + "Yaw": { + "datatype": "float", + "description": "Vehicle rotation rate along Z (vertical).", + "type": "sensor", + "unit": "degrees/s" + } + }, + "description": "Spatial rotation. Axis definitions according to ISO 8855.", + "type": "branch" + }, + "AverageSpeed": { + "comment": "A new trip is considered to start when engine gets enabled (e.g. LowVoltageSystemState in ON or START mode). A trip is considered to end when engine is no longer enabled. The signal may however keep the value of the last trip until a new trip is started. Calculation of average speed may exclude periods when the vehicle for example is not moving or transmission is in neutral.", + "datatype": "float", + "description": "Average speed for the current trip.", + "type": "sensor", + "unit": "km/h" + }, + "Body": { + "children": { + "BodyType": { + "datatype": "string", + "description": "Body type code as defined by ISO 3779.", + "type": "attribute" + }, + "Hood": { + "children": { + "IsOpen": { + "datatype": "boolean", + "description": "Hood open or closed. True = Open. False = Closed.", + "type": "actuator" + } + }, + "comment": "The hood is the hinged cover over the engine compartment of a motor vehicles. Depending on vehicle, it can be either in the front or back of the vehicle. Luggage compartments are in VSS called trunks, even if they are located at the front of the vehicle.", + "description": "Hood status.", + "type": "branch" + }, + "Horn": { + "children": { + "IsActive": { + "datatype": "boolean", + "description": "Horn active or inactive. True = Active. False = Inactive.", + "type": "actuator" + } + }, + "description": "Horn signals.", + "type": "branch" + }, + "Lights": { + "children": { + "Backup": { + "children": { + "IsDefect": { + "datatype": "boolean", + "description": "Indicates if light is defect. True = Light is defect. False = Light has no defect.", + "type": "sensor" + }, + "IsOn": { + "datatype": "boolean", + "description": "Indicates if light is on or off. True = On. False = Off.", + "type": "actuator" + } + }, + "description": "Backup lights.", + "type": "branch" + }, + "Beam": { + "children": { + "High": { + "children": { + "IsDefect": { + "datatype": "boolean", + "description": "Indicates if light is defect. True = Light is defect. False = Light has no defect.", + "type": "sensor" + }, + "IsOn": { + "datatype": "boolean", + "description": "Indicates if light is on or off. True = On. False = Off.", + "type": "actuator" + } + }, + "description": "Beam lights.", + "type": "branch" + }, + "Low": { + "children": { + "IsDefect": { + "datatype": "boolean", + "description": "Indicates if light is defect. True = Light is defect. False = Light has no defect.", + "type": "sensor" + }, + "IsOn": { + "datatype": "boolean", + "description": "Indicates if light is on or off. True = On. False = Off.", + "type": "actuator" + } + }, + "description": "Beam lights.", + "type": "branch" + } + }, + "description": "Beam lights.", + "type": "branch" + }, + "Brake": { + "children": { + "IsActive": { + "allowed": [ + "INACTIVE", + "ACTIVE", + "ADAPTIVE" + ], + "datatype": "string", + "description": "Indicates if break-light is active. INACTIVE means lights are off. ACTIVE means lights are on. ADAPTIVE means that break-light is indicating emergency-breaking.", + "type": "actuator" + }, + "IsDefect": { + "datatype": "boolean", + "description": "Indicates if light is defect. True = Light is defect. False = Light has no defect.", + "type": "sensor" + } + }, + "description": "Brake lights.", + "type": "branch" + }, + "DirectionIndicator": { + "children": { + "Left": { + "children": { + "IsDefect": { + "datatype": "boolean", + "description": "Indicates if light is defect. True = Light is defect. False = Light has no defect.", + "type": "sensor" + }, + "IsSignaling": { + "datatype": "boolean", + "description": "Indicates if light is signaling or off. True = signaling. False = Off.", + "type": "actuator" + } + }, + "description": "Indicator lights.", + "type": "branch" + }, + "Right": { + "children": { + "IsDefect": { + "datatype": "boolean", + "description": "Indicates if light is defect. True = Light is defect. False = Light has no defect.", + "type": "sensor" + }, + "IsSignaling": { + "datatype": "boolean", + "description": "Indicates if light is signaling or off. True = signaling. False = Off.", + "type": "actuator" + } + }, + "description": "Indicator lights.", + "type": "branch" + } + }, + "description": "Indicator lights.", + "type": "branch" + }, + "Fog": { + "children": { + "Front": { + "children": { + "IsDefect": { + "datatype": "boolean", + "description": "Indicates if light is defect. True = Light is defect. False = Light has no defect.", + "type": "sensor" + }, + "IsOn": { + "datatype": "boolean", + "description": "Indicates if light is on or off. True = On. False = Off.", + "type": "actuator" + } + }, + "description": "Fog lights.", + "type": "branch" + }, + "Rear": { + "children": { + "IsDefect": { + "datatype": "boolean", + "description": "Indicates if light is defect. True = Light is defect. False = Light has no defect.", + "type": "sensor" + }, + "IsOn": { + "datatype": "boolean", + "description": "Indicates if light is on or off. True = On. False = Off.", + "type": "actuator" + } + }, + "description": "Fog lights.", + "type": "branch" + } + }, + "description": "Fog lights.", + "type": "branch" + }, + "Hazard": { + "children": { + "IsDefect": { + "datatype": "boolean", + "description": "Indicates if light is defect. True = Light is defect. False = Light has no defect.", + "type": "sensor" + }, + "IsSignaling": { + "datatype": "boolean", + "description": "Indicates if light is signaling or off. True = signaling. False = Off.", + "type": "actuator" + } + }, + "description": "Hazard lights.", + "type": "branch" + }, + "IsHighBeamSwitchOn": { + "comment": "This signal indicates the status of the switch and does not indicate if low or high beam actually are on. That typically depends on vehicle logic and other signals like Lights.LightSwitch and Vehicle.LowVoltageSystemState.", + "datatype": "boolean", + "description": "Status of the high beam switch. True = high beam enabled. False = high beam not enabled.", + "type": "actuator" + }, + "LicensePlate": { + "children": { + "IsDefect": { + "datatype": "boolean", + "description": "Indicates if light is defect. True = Light is defect. False = Light has no defect.", + "type": "sensor" + }, + "IsOn": { + "datatype": "boolean", + "description": "Indicates if light is on or off. True = On. False = Off.", + "type": "actuator" + } + }, + "description": "License plate lights.", + "type": "branch" + }, + "LightSwitch": { + "allowed": [ + "OFF", + "POSITION", + "DAYTIME_RUNNING_LIGHTS", + "AUTO", + "BEAM" + ], + "comment": "A vehicle typically does not support all alternatives. Which lights that actually are lit may vary according to vehicle configuration and local legislation. OFF is typically indicated by 0. POSITION is typically indicated by ISO 7000 symbol 0456. DAYTIME_RUNNING_LIGHTS (DRL) can be indicated by ISO 7000 symbol 2611. AUTO indicates that vehicle automatically selects suitable lights. BEAM is typically indicated by ISO 7000 symbol 0083.", + "datatype": "string", + "description": "Status of the vehicle main light switch.", + "type": "actuator" + }, + "Parking": { + "children": { + "IsDefect": { + "datatype": "boolean", + "description": "Indicates if light is defect. True = Light is defect. False = Light has no defect.", + "type": "sensor" + }, + "IsOn": { + "datatype": "boolean", + "description": "Indicates if light is on or off. True = On. False = Off.", + "type": "actuator" + } + }, + "description": "Parking lights.", + "type": "branch" + }, + "Running": { + "children": { + "IsDefect": { + "datatype": "boolean", + "description": "Indicates if light is defect. True = Light is defect. False = Light has no defect.", + "type": "sensor" + }, + "IsOn": { + "datatype": "boolean", + "description": "Indicates if light is on or off. True = On. False = Off.", + "type": "actuator" + } + }, + "description": "Running lights.", + "type": "branch" + } + }, + "description": "Exterior lights.", + "type": "branch" + }, + "Mirrors": { + "children": { + "DriverSide": { + "children": { + "IsHeatingOn": { + "datatype": "boolean", + "description": "Mirror Heater on or off. True = Heater On. False = Heater Off.", + "type": "actuator" + }, + "Pan": { + "datatype": "int8", + "description": "Mirror pan as a percent. 0 = Center Position. 100 = Fully Left Position. -100 = Fully Right Position.", + "max": 100, + "min": -100, + "type": "actuator", + "unit": "percent" + }, + "Tilt": { + "datatype": "int8", + "description": "Mirror tilt as a percent. 0 = Center Position. 100 = Fully Upward Position. -100 = Fully Downward Position.", + "max": 100, + "min": -100, + "type": "actuator", + "unit": "percent" + } + }, + "description": "All mirrors.", + "type": "branch" + }, + "PassengerSide": { + "children": { + "IsHeatingOn": { + "datatype": "boolean", + "description": "Mirror Heater on or off. True = Heater On. False = Heater Off.", + "type": "actuator" + }, + "Pan": { + "datatype": "int8", + "description": "Mirror pan as a percent. 0 = Center Position. 100 = Fully Left Position. -100 = Fully Right Position.", + "max": 100, + "min": -100, + "type": "actuator", + "unit": "percent" + }, + "Tilt": { + "datatype": "int8", + "description": "Mirror tilt as a percent. 0 = Center Position. 100 = Fully Upward Position. -100 = Fully Downward Position.", + "max": 100, + "min": -100, + "type": "actuator", + "unit": "percent" + } + }, + "description": "All mirrors.", + "type": "branch" + } + }, + "description": "All mirrors.", + "type": "branch" + }, + "PowerOptimizeLevel": { + "datatype": "uint8", + "description": "Power optimization level for this branch/subsystem. A higher number indicates more aggressive power optimization. Level 0 indicates that all functionality is enabled, no power optimization enabled. Level 10 indicates most aggressive power optimization mode, only essential functionality enabled.", + "max": 10, + "min": 0, + "type": "actuator" + }, + "Raindetection": { + "children": { + "Intensity": { + "datatype": "uint8", + "description": "Rain intensity. 0 = Dry, No Rain. 100 = Covered.", + "max": 100, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Rain sensor signals.", + "type": "branch" + }, + "RearMainSpoilerPosition": { + "datatype": "float", + "description": "Rear spoiler position, 0% = Spoiler fully stowed. 100% = Spoiler fully exposed.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "RefuelPosition": { + "allowed": [ + "FRONT_LEFT", + "FRONT_RIGHT", + "MIDDLE_LEFT", + "MIDDLE_RIGHT", + "REAR_LEFT", + "REAR_RIGHT" + ], + "datatype": "string", + "description": "Location of the fuel cap or charge port.", + "type": "attribute" + }, + "Trunk": { + "children": { + "Front": { + "children": { + "IsLightOn": { + "comment": "V4.0 Moved from Vehicle.Cabin.Lights.IsTrunkOn because Trunk is not defined as part of the Cabin.", + "datatype": "boolean", + "description": "Is trunk light on", + "type": "actuator" + }, + "IsLocked": { + "datatype": "boolean", + "description": "Is trunk locked or unlocked. True = Locked. False = Unlocked.", + "type": "actuator" + }, + "IsOpen": { + "datatype": "boolean", + "description": "Trunk open or closed. True = Open. False = Closed.", + "type": "actuator" + } + }, + "comment": "A trunk is a luggage compartment in a vehicle. Depending on vehicle, it can be either in the front or back of the vehicle. Some vehicles may have trunks both at the front and at the rear of the vehicle.", + "description": "Trunk status.", + "type": "branch" + }, + "Rear": { + "children": { + "IsLightOn": { + "comment": "V4.0 Moved from Vehicle.Cabin.Lights.IsTrunkOn because Trunk is not defined as part of the Cabin.", + "datatype": "boolean", + "description": "Is trunk light on", + "type": "actuator" + }, + "IsLocked": { + "datatype": "boolean", + "description": "Is trunk locked or unlocked. True = Locked. False = Unlocked.", + "type": "actuator" + }, + "IsOpen": { + "datatype": "boolean", + "description": "Trunk open or closed. True = Open. False = Closed.", + "type": "actuator" + } + }, + "comment": "A trunk is a luggage compartment in a vehicle. Depending on vehicle, it can be either in the front or back of the vehicle. Some vehicles may have trunks both at the front and at the rear of the vehicle.", + "description": "Trunk status.", + "type": "branch" + } + }, + "comment": "A trunk is a luggage compartment in a vehicle. Depending on vehicle, it can be either in the front or back of the vehicle. Some vehicles may have trunks both at the front and at the rear of the vehicle.", + "description": "Trunk status.", + "type": "branch" + }, + "Windshield": { + "children": { + "Front": { + "children": { + "IsHeatingOn": { + "datatype": "boolean", + "description": "Windshield heater status. False - off, True - on.", + "type": "actuator" + }, + "WasherFluid": { + "children": { + "IsLevelLow": { + "datatype": "boolean", + "description": "Low level indication for washer fluid. True = Level Low. False = Level OK.", + "type": "sensor" + }, + "Level": { + "datatype": "uint8", + "description": "Washer fluid level as a percent. 0 = Empty. 100 = Full.", + "max": 100, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Windshield washer fluid signals", + "type": "branch" + }, + "Wiping": { + "children": { + "Intensity": { + "datatype": "uint8", + "description": "Relative intensity/sensitivity for interval and rain sensor mode as requested by user/driver. Has no significance if Windshield.Wiping.Mode is OFF/SLOW/MEDIUM/FAST 0 - wipers inactive. 1 - minimum intensity (lowest frequency/sensitivity, longest interval). 2/3/4/... - higher intensity (higher frequency/sensitivity, shorter interval). Maximum value supported is vehicle specific.", + "type": "actuator" + }, + "IsWipersWorn": { + "datatype": "boolean", + "description": "Wiper wear status. True = Worn, Replacement recommended or required. False = Not Worn.", + "type": "sensor" + }, + "Mode": { + "allowed": [ + "OFF", + "SLOW", + "MEDIUM", + "FAST", + "INTERVAL", + "RAIN_SENSOR" + ], + "datatype": "string", + "description": "Wiper mode requested by user/driver. INTERVAL indicates intermittent wiping, with fixed time interval between each wipe. RAIN_SENSOR indicates intermittent wiping based on rain intensity.", + "type": "actuator" + }, + "System": { + "children": { + "ActualPosition": { + "comment": "Default parking position might be used as reference position.", + "datatype": "float", + "description": "Actual position of main wiper blade for the wiper system relative to reference position. Location of reference position (0 degrees) and direction of positive/negative degrees is vehicle specific.", + "type": "actuator", + "unit": "degrees" + }, + "DriveCurrent": { + "comment": "May be negative in special situations.", + "datatype": "float", + "description": "Actual current used by wiper drive.", + "type": "sensor", + "unit": "A" + }, + "Frequency": { + "comment": "Examples - 0 = Wipers stopped, 80 = Wipers doing 80 cycles per minute (in WIPE mode).", + "datatype": "uint8", + "description": "Wiping frequency/speed, measured in cycles per minute. The signal concerns the actual speed of the wiper blades when moving. Intervals/pauses are excluded, i.e. the value corresponds to the number of cycles that would be completed in 1 minute if wiping permanently over default range.", + "type": "actuator", + "unit": "cpm" + }, + "IsBlocked": { + "datatype": "boolean", + "description": "Indicates if wiper movement is blocked. True = Movement blocked. False = Movement not blocked.", + "type": "sensor" + }, + "IsEndingWipeCycle": { + "comment": "In continuous wiping between A and B this sensor can be used a trigger to update TargetPosition.", + "datatype": "boolean", + "description": "Indicates if current wipe movement is completed or near completion. True = Movement is completed or near completion. Changes to RequestedPosition will be executed first after reaching previous RequestedPosition, if it has not already been reached. False = Movement is not near completion. Any change to RequestedPosition will be executed immediately. Change of direction may not be allowed.", + "type": "sensor" + }, + "IsOverheated": { + "datatype": "boolean", + "description": "Indicates if wiper system is overheated. True = Wiper system overheated. False = Wiper system not overheated.", + "type": "sensor" + }, + "IsPositionReached": { + "datatype": "boolean", + "description": "Indicates if a requested position has been reached. IsPositionReached refers to the previous position in case the TargetPosition is updated while IsEndingWipeCycle=True. True = Current or Previous TargetPosition reached. False = Position not (yet) reached, or wipers have moved away from the reached position.", + "type": "sensor" + }, + "IsWiperError": { + "datatype": "boolean", + "description": "Indicates system failure. True if wiping is disabled due to system failure.", + "type": "sensor" + }, + "IsWiping": { + "datatype": "boolean", + "description": "Indicates wiper movement. True if wiper blades are moving. Change of direction shall be considered as IsWiping if wipers will continue to move directly after the change of direction.", + "type": "sensor" + }, + "Mode": { + "allowed": [ + "STOP_HOLD", + "WIPE", + "PLANT_MODE", + "EMERGENCY_STOP" + ], + "datatype": "string", + "description": "Requested mode of wiper system. STOP_HOLD means that the wipers shall move to position given by TargetPosition and then hold the position. WIPE means that wipers shall move to the position given by TargetPosition and then hold the position if no new TargetPosition is requested. PLANT_MODE means that wiping is disabled. Exact behavior is vehicle specific. EMERGENCY_STOP means that wiping shall be immediately stopped without holding the position.", + "type": "actuator" + }, + "TargetPosition": { + "comment": "Default parking position might be used as reference position.", + "datatype": "float", + "description": "Requested position of main wiper blade for the wiper system relative to reference position. Location of reference position (0 degrees) and direction of positive/negative degrees is vehicle specific. System behavior when receiving TargetPosition depends on Mode and IsEndingWipeCycle. Supported values are vehicle specific and might be dynamically corrected. If IsEndingWipeCycle=True then wipers will complete current movement before actuating new TargetPosition. If IsEndingWipeCycle=False then wipers will directly change destination if the TargetPosition is changed.", + "type": "actuator", + "unit": "degrees" + } + }, + "comment": "These signals are typically not directly available to the user/driver of the vehicle. The overlay in overlays/extensions/dual_wiper_systems.vspec can be used to modify this branch to support two instances; Primary and Secondary.", + "description": "Signals to control behavior of wipers in detail. By default VSS expects only one instance.", + "type": "branch" + }, + "WiperWear": { + "datatype": "uint8", + "description": "Wiper wear as percent. 0 = No Wear. 100 = Worn. Replacement required. Method for calculating or estimating wiper wear is vehicle specific. For windshields with multiple wipers the wear reported shall correspond to the most worn wiper.", + "max": 100, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Windshield wiper signals.", + "type": "branch" + } + }, + "description": "Windshield signals.", + "type": "branch" + }, + "Rear": { + "children": { + "IsHeatingOn": { + "datatype": "boolean", + "description": "Windshield heater status. False - off, True - on.", + "type": "actuator" + }, + "WasherFluid": { + "children": { + "IsLevelLow": { + "datatype": "boolean", + "description": "Low level indication for washer fluid. True = Level Low. False = Level OK.", + "type": "sensor" + }, + "Level": { + "datatype": "uint8", + "description": "Washer fluid level as a percent. 0 = Empty. 100 = Full.", + "max": 100, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Windshield washer fluid signals", + "type": "branch" + }, + "Wiping": { + "children": { + "Intensity": { + "datatype": "uint8", + "description": "Relative intensity/sensitivity for interval and rain sensor mode as requested by user/driver. Has no significance if Windshield.Wiping.Mode is OFF/SLOW/MEDIUM/FAST 0 - wipers inactive. 1 - minimum intensity (lowest frequency/sensitivity, longest interval). 2/3/4/... - higher intensity (higher frequency/sensitivity, shorter interval). Maximum value supported is vehicle specific.", + "type": "actuator" + }, + "IsWipersWorn": { + "datatype": "boolean", + "description": "Wiper wear status. True = Worn, Replacement recommended or required. False = Not Worn.", + "type": "sensor" + }, + "Mode": { + "allowed": [ + "OFF", + "SLOW", + "MEDIUM", + "FAST", + "INTERVAL", + "RAIN_SENSOR" + ], + "datatype": "string", + "description": "Wiper mode requested by user/driver. INTERVAL indicates intermittent wiping, with fixed time interval between each wipe. RAIN_SENSOR indicates intermittent wiping based on rain intensity.", + "type": "actuator" + }, + "System": { + "children": { + "ActualPosition": { + "comment": "Default parking position might be used as reference position.", + "datatype": "float", + "description": "Actual position of main wiper blade for the wiper system relative to reference position. Location of reference position (0 degrees) and direction of positive/negative degrees is vehicle specific.", + "type": "actuator", + "unit": "degrees" + }, + "DriveCurrent": { + "comment": "May be negative in special situations.", + "datatype": "float", + "description": "Actual current used by wiper drive.", + "type": "sensor", + "unit": "A" + }, + "Frequency": { + "comment": "Examples - 0 = Wipers stopped, 80 = Wipers doing 80 cycles per minute (in WIPE mode).", + "datatype": "uint8", + "description": "Wiping frequency/speed, measured in cycles per minute. The signal concerns the actual speed of the wiper blades when moving. Intervals/pauses are excluded, i.e. the value corresponds to the number of cycles that would be completed in 1 minute if wiping permanently over default range.", + "type": "actuator", + "unit": "cpm" + }, + "IsBlocked": { + "datatype": "boolean", + "description": "Indicates if wiper movement is blocked. True = Movement blocked. False = Movement not blocked.", + "type": "sensor" + }, + "IsEndingWipeCycle": { + "comment": "In continuous wiping between A and B this sensor can be used a trigger to update TargetPosition.", + "datatype": "boolean", + "description": "Indicates if current wipe movement is completed or near completion. True = Movement is completed or near completion. Changes to RequestedPosition will be executed first after reaching previous RequestedPosition, if it has not already been reached. False = Movement is not near completion. Any change to RequestedPosition will be executed immediately. Change of direction may not be allowed.", + "type": "sensor" + }, + "IsOverheated": { + "datatype": "boolean", + "description": "Indicates if wiper system is overheated. True = Wiper system overheated. False = Wiper system not overheated.", + "type": "sensor" + }, + "IsPositionReached": { + "datatype": "boolean", + "description": "Indicates if a requested position has been reached. IsPositionReached refers to the previous position in case the TargetPosition is updated while IsEndingWipeCycle=True. True = Current or Previous TargetPosition reached. False = Position not (yet) reached, or wipers have moved away from the reached position.", + "type": "sensor" + }, + "IsWiperError": { + "datatype": "boolean", + "description": "Indicates system failure. True if wiping is disabled due to system failure.", + "type": "sensor" + }, + "IsWiping": { + "datatype": "boolean", + "description": "Indicates wiper movement. True if wiper blades are moving. Change of direction shall be considered as IsWiping if wipers will continue to move directly after the change of direction.", + "type": "sensor" + }, + "Mode": { + "allowed": [ + "STOP_HOLD", + "WIPE", + "PLANT_MODE", + "EMERGENCY_STOP" + ], + "datatype": "string", + "description": "Requested mode of wiper system. STOP_HOLD means that the wipers shall move to position given by TargetPosition and then hold the position. WIPE means that wipers shall move to the position given by TargetPosition and then hold the position if no new TargetPosition is requested. PLANT_MODE means that wiping is disabled. Exact behavior is vehicle specific. EMERGENCY_STOP means that wiping shall be immediately stopped without holding the position.", + "type": "actuator" + }, + "TargetPosition": { + "comment": "Default parking position might be used as reference position.", + "datatype": "float", + "description": "Requested position of main wiper blade for the wiper system relative to reference position. Location of reference position (0 degrees) and direction of positive/negative degrees is vehicle specific. System behavior when receiving TargetPosition depends on Mode and IsEndingWipeCycle. Supported values are vehicle specific and might be dynamically corrected. If IsEndingWipeCycle=True then wipers will complete current movement before actuating new TargetPosition. If IsEndingWipeCycle=False then wipers will directly change destination if the TargetPosition is changed.", + "type": "actuator", + "unit": "degrees" + } + }, + "comment": "These signals are typically not directly available to the user/driver of the vehicle. The overlay in overlays/extensions/dual_wiper_systems.vspec can be used to modify this branch to support two instances; Primary and Secondary.", + "description": "Signals to control behavior of wipers in detail. By default VSS expects only one instance.", + "type": "branch" + }, + "WiperWear": { + "datatype": "uint8", + "description": "Wiper wear as percent. 0 = No Wear. 100 = Worn. Replacement required. Method for calculating or estimating wiper wear is vehicle specific. For windshields with multiple wipers the wear reported shall correspond to the most worn wiper.", + "max": 100, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Windshield wiper signals.", + "type": "branch" + } + }, + "description": "Windshield signals.", + "type": "branch" + } + }, + "description": "Windshield signals.", + "type": "branch" + } + }, + "description": "All body components.", + "type": "branch" + }, + "Cabin": { + "children": { + "Convertible": { + "children": { + "Status": { + "allowed": [ + "UNDEFINED", + "CLOSED", + "OPEN", + "CLOSING", + "OPENING", + "STALLED" + ], + "datatype": "string", + "description": "Roof status on convertible vehicles.", + "type": "sensor" + } + }, + "description": "Convertible roof.", + "type": "branch" + }, + "Door": { + "children": { + "Row1": { + "children": { + "DriverSide": { + "children": { + "IsChildLockActive": { + "datatype": "boolean", + "description": "Is door child lock active. True = Door cannot be opened from inside. False = Door can be opened from inside.", + "type": "sensor" + }, + "IsLocked": { + "datatype": "boolean", + "description": "Is door locked or unlocked. True = Locked. False = Unlocked.", + "type": "actuator" + }, + "IsOpen": { + "datatype": "boolean", + "description": "Is door open or closed", + "type": "actuator" + }, + "Shade": { + "children": { + "Position": { + "datatype": "uint8", + "description": "Position of window blind. 0 = Fully retracted. 100 = Fully deployed.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Switch": { + "allowed": [ + "INACTIVE", + "CLOSE", + "OPEN", + "ONE_SHOT_CLOSE", + "ONE_SHOT_OPEN" + ], + "datatype": "string", + "description": "Switch controlling sliding action such as window, sunroof, or blind.", + "type": "actuator" + } + }, + "description": "Side window shade", + "type": "branch" + }, + "Window": { + "children": { + "IsOpen": { + "datatype": "boolean", + "description": "Is window open or closed?", + "type": "sensor" + }, + "Position": { + "datatype": "uint8", + "description": "Window position. 0 = Fully closed 100 = Fully opened.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Switch": { + "allowed": [ + "INACTIVE", + "CLOSE", + "OPEN", + "ONE_SHOT_CLOSE", + "ONE_SHOT_OPEN" + ], + "datatype": "string", + "description": "Switch controlling sliding action such as window, sunroof, or blind.", + "type": "actuator" + } + }, + "description": "Door window status", + "type": "branch" + } + }, + "description": "All doors, including windows and switches.", + "type": "branch" + }, + "PassengerSide": { + "children": { + "IsChildLockActive": { + "datatype": "boolean", + "description": "Is door child lock active. True = Door cannot be opened from inside. False = Door can be opened from inside.", + "type": "sensor" + }, + "IsLocked": { + "datatype": "boolean", + "description": "Is door locked or unlocked. True = Locked. False = Unlocked.", + "type": "actuator" + }, + "IsOpen": { + "datatype": "boolean", + "description": "Is door open or closed", + "type": "actuator" + }, + "Shade": { + "children": { + "Position": { + "datatype": "uint8", + "description": "Position of window blind. 0 = Fully retracted. 100 = Fully deployed.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Switch": { + "allowed": [ + "INACTIVE", + "CLOSE", + "OPEN", + "ONE_SHOT_CLOSE", + "ONE_SHOT_OPEN" + ], + "datatype": "string", + "description": "Switch controlling sliding action such as window, sunroof, or blind.", + "type": "actuator" + } + }, + "description": "Side window shade", + "type": "branch" + }, + "Window": { + "children": { + "IsOpen": { + "datatype": "boolean", + "description": "Is window open or closed?", + "type": "sensor" + }, + "Position": { + "datatype": "uint8", + "description": "Window position. 0 = Fully closed 100 = Fully opened.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Switch": { + "allowed": [ + "INACTIVE", + "CLOSE", + "OPEN", + "ONE_SHOT_CLOSE", + "ONE_SHOT_OPEN" + ], + "datatype": "string", + "description": "Switch controlling sliding action such as window, sunroof, or blind.", + "type": "actuator" + } + }, + "description": "Door window status", + "type": "branch" + } + }, + "description": "All doors, including windows and switches.", + "type": "branch" + } + }, + "description": "All doors, including windows and switches.", + "type": "branch" + }, + "Row2": { + "children": { + "DriverSide": { + "children": { + "IsChildLockActive": { + "datatype": "boolean", + "description": "Is door child lock active. True = Door cannot be opened from inside. False = Door can be opened from inside.", + "type": "sensor" + }, + "IsLocked": { + "datatype": "boolean", + "description": "Is door locked or unlocked. True = Locked. False = Unlocked.", + "type": "actuator" + }, + "IsOpen": { + "datatype": "boolean", + "description": "Is door open or closed", + "type": "actuator" + }, + "Shade": { + "children": { + "Position": { + "datatype": "uint8", + "description": "Position of window blind. 0 = Fully retracted. 100 = Fully deployed.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Switch": { + "allowed": [ + "INACTIVE", + "CLOSE", + "OPEN", + "ONE_SHOT_CLOSE", + "ONE_SHOT_OPEN" + ], + "datatype": "string", + "description": "Switch controlling sliding action such as window, sunroof, or blind.", + "type": "actuator" + } + }, + "description": "Side window shade", + "type": "branch" + }, + "Window": { + "children": { + "IsOpen": { + "datatype": "boolean", + "description": "Is window open or closed?", + "type": "sensor" + }, + "Position": { + "datatype": "uint8", + "description": "Window position. 0 = Fully closed 100 = Fully opened.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Switch": { + "allowed": [ + "INACTIVE", + "CLOSE", + "OPEN", + "ONE_SHOT_CLOSE", + "ONE_SHOT_OPEN" + ], + "datatype": "string", + "description": "Switch controlling sliding action such as window, sunroof, or blind.", + "type": "actuator" + } + }, + "description": "Door window status", + "type": "branch" + } + }, + "description": "All doors, including windows and switches.", + "type": "branch" + }, + "PassengerSide": { + "children": { + "IsChildLockActive": { + "datatype": "boolean", + "description": "Is door child lock active. True = Door cannot be opened from inside. False = Door can be opened from inside.", + "type": "sensor" + }, + "IsLocked": { + "datatype": "boolean", + "description": "Is door locked or unlocked. True = Locked. False = Unlocked.", + "type": "actuator" + }, + "IsOpen": { + "datatype": "boolean", + "description": "Is door open or closed", + "type": "actuator" + }, + "Shade": { + "children": { + "Position": { + "datatype": "uint8", + "description": "Position of window blind. 0 = Fully retracted. 100 = Fully deployed.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Switch": { + "allowed": [ + "INACTIVE", + "CLOSE", + "OPEN", + "ONE_SHOT_CLOSE", + "ONE_SHOT_OPEN" + ], + "datatype": "string", + "description": "Switch controlling sliding action such as window, sunroof, or blind.", + "type": "actuator" + } + }, + "description": "Side window shade", + "type": "branch" + }, + "Window": { + "children": { + "IsOpen": { + "datatype": "boolean", + "description": "Is window open or closed?", + "type": "sensor" + }, + "Position": { + "datatype": "uint8", + "description": "Window position. 0 = Fully closed 100 = Fully opened.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Switch": { + "allowed": [ + "INACTIVE", + "CLOSE", + "OPEN", + "ONE_SHOT_CLOSE", + "ONE_SHOT_OPEN" + ], + "datatype": "string", + "description": "Switch controlling sliding action such as window, sunroof, or blind.", + "type": "actuator" + } + }, + "description": "Door window status", + "type": "branch" + } + }, + "description": "All doors, including windows and switches.", + "type": "branch" + } + }, + "description": "All doors, including windows and switches.", + "type": "branch" + } + }, + "description": "All doors, including windows and switches.", + "type": "branch" + }, + "DoorCount": { + "datatype": "uint8", + "default": 4, + "description": "Number of doors in vehicle.", + "type": "attribute" + }, + "DriverPosition": { + "allowed": [ + "LEFT", + "MIDDLE", + "RIGHT" + ], + "comment": "Some signals use DriverSide and PassengerSide as instances. If this signal specifies that DriverPosition is LEFT or MIDDLE, then DriverSide refers to left side and PassengerSide to right side. If this signal specifies that DriverPosition is RIGHT, then DriverSide refers to right side and PassengerSide to left side.", + "datatype": "string", + "description": "The position of the driver seat in row 1.", + "type": "attribute" + }, + "HVAC": { + "children": { + "AmbientAirTemperature": { + "datatype": "float", + "description": "Ambient air temperature inside the vehicle.", + "type": "sensor", + "unit": "celsius" + }, + "IsAirConditioningActive": { + "datatype": "boolean", + "description": "Is Air conditioning active.", + "type": "actuator" + }, + "IsFrontDefrosterActive": { + "datatype": "boolean", + "description": "Is front defroster active.", + "type": "actuator" + }, + "IsRearDefrosterActive": { + "datatype": "boolean", + "description": "Is rear defroster active.", + "type": "actuator" + }, + "IsRecirculationActive": { + "datatype": "boolean", + "description": "Is recirculation active.", + "type": "actuator" + }, + "PowerOptimizeLevel": { + "datatype": "uint8", + "description": "Power optimization level for this branch/subsystem. A higher number indicates more aggressive power optimization. Level 0 indicates that all functionality is enabled, no power optimization enabled. Level 10 indicates most aggressive power optimization mode, only essential functionality enabled.", + "max": 10, + "min": 0, + "type": "actuator" + }, + "Station": { + "children": { + "Row1": { + "children": { + "Driver": { + "children": { + "AirDistribution": { + "allowed": [ + "UP", + "MIDDLE", + "DOWN" + ], + "datatype": "string", + "description": "Direction of airstream", + "type": "actuator" + }, + "FanSpeed": { + "datatype": "uint8", + "description": "Fan Speed, 0 = off. 100 = max", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Temperature": { + "datatype": "int8", + "description": "Temperature", + "type": "actuator", + "unit": "celsius" + } + }, + "description": "HVAC for single station in the vehicle", + "type": "branch" + }, + "Passenger": { + "children": { + "AirDistribution": { + "allowed": [ + "UP", + "MIDDLE", + "DOWN" + ], + "datatype": "string", + "description": "Direction of airstream", + "type": "actuator" + }, + "FanSpeed": { + "datatype": "uint8", + "description": "Fan Speed, 0 = off. 100 = max", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Temperature": { + "datatype": "int8", + "description": "Temperature", + "type": "actuator", + "unit": "celsius" + } + }, + "description": "HVAC for single station in the vehicle", + "type": "branch" + } + }, + "description": "HVAC for single station in the vehicle", + "type": "branch" + }, + "Row2": { + "children": { + "Driver": { + "children": { + "AirDistribution": { + "allowed": [ + "UP", + "MIDDLE", + "DOWN" + ], + "datatype": "string", + "description": "Direction of airstream", + "type": "actuator" + }, + "FanSpeed": { + "datatype": "uint8", + "description": "Fan Speed, 0 = off. 100 = max", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Temperature": { + "datatype": "int8", + "description": "Temperature", + "type": "actuator", + "unit": "celsius" + } + }, + "description": "HVAC for single station in the vehicle", + "type": "branch" + }, + "Passenger": { + "children": { + "AirDistribution": { + "allowed": [ + "UP", + "MIDDLE", + "DOWN" + ], + "datatype": "string", + "description": "Direction of airstream", + "type": "actuator" + }, + "FanSpeed": { + "datatype": "uint8", + "description": "Fan Speed, 0 = off. 100 = max", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Temperature": { + "datatype": "int8", + "description": "Temperature", + "type": "actuator", + "unit": "celsius" + } + }, + "description": "HVAC for single station in the vehicle", + "type": "branch" + } + }, + "description": "HVAC for single station in the vehicle", + "type": "branch" + }, + "Row3": { + "children": { + "Driver": { + "children": { + "AirDistribution": { + "allowed": [ + "UP", + "MIDDLE", + "DOWN" + ], + "datatype": "string", + "description": "Direction of airstream", + "type": "actuator" + }, + "FanSpeed": { + "datatype": "uint8", + "description": "Fan Speed, 0 = off. 100 = max", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Temperature": { + "datatype": "int8", + "description": "Temperature", + "type": "actuator", + "unit": "celsius" + } + }, + "description": "HVAC for single station in the vehicle", + "type": "branch" + }, + "Passenger": { + "children": { + "AirDistribution": { + "allowed": [ + "UP", + "MIDDLE", + "DOWN" + ], + "datatype": "string", + "description": "Direction of airstream", + "type": "actuator" + }, + "FanSpeed": { + "datatype": "uint8", + "description": "Fan Speed, 0 = off. 100 = max", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Temperature": { + "datatype": "int8", + "description": "Temperature", + "type": "actuator", + "unit": "celsius" + } + }, + "description": "HVAC for single station in the vehicle", + "type": "branch" + } + }, + "description": "HVAC for single station in the vehicle", + "type": "branch" + }, + "Row4": { + "children": { + "Driver": { + "children": { + "AirDistribution": { + "allowed": [ + "UP", + "MIDDLE", + "DOWN" + ], + "datatype": "string", + "description": "Direction of airstream", + "type": "actuator" + }, + "FanSpeed": { + "datatype": "uint8", + "description": "Fan Speed, 0 = off. 100 = max", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Temperature": { + "datatype": "int8", + "description": "Temperature", + "type": "actuator", + "unit": "celsius" + } + }, + "description": "HVAC for single station in the vehicle", + "type": "branch" + }, + "Passenger": { + "children": { + "AirDistribution": { + "allowed": [ + "UP", + "MIDDLE", + "DOWN" + ], + "datatype": "string", + "description": "Direction of airstream", + "type": "actuator" + }, + "FanSpeed": { + "datatype": "uint8", + "description": "Fan Speed, 0 = off. 100 = max", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Temperature": { + "datatype": "int8", + "description": "Temperature", + "type": "actuator", + "unit": "celsius" + } + }, + "description": "HVAC for single station in the vehicle", + "type": "branch" + } + }, + "description": "HVAC for single station in the vehicle", + "type": "branch" + } + }, + "description": "HVAC for single station in the vehicle", + "type": "branch" + } + }, + "description": "Climate control", + "type": "branch" + }, + "Infotainment": { + "children": { + "HMI": { + "children": { + "Brightness": { + "comment": "The value 0 does not necessarily correspond to a turned off HMI, as it may not be allowed/supported to turn off the HMI completely.", + "datatype": "float", + "description": "Brightness of the HMI, relative to supported range. 0 = Lowest brightness possible. 100 = Maximum Brightness possible.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "CurrentLanguage": { + "datatype": "string", + "description": "ISO 639-1 standard language code for the current HMI", + "type": "sensor" + }, + "DateFormat": { + "allowed": [ + "YYYY_MM_DD", + "DD_MM_YYYY", + "MM_DD_YYYY", + "YY_MM_DD", + "DD_MM_YY", + "MM_DD_YY" + ], + "datatype": "string", + "description": "Date format used in the current HMI", + "type": "actuator" + }, + "DayNightMode": { + "allowed": [ + "DAY", + "NIGHT" + ], + "datatype": "string", + "description": "Current display theme", + "type": "actuator" + }, + "DisplayOffDuration": { + "comment": "Display shall be turned off at HMI.LastActionTime + HMI.DisplayOffDuration, unless HMI.IsScreenAlwaysOn==True.", + "datatype": "uint16", + "description": "Duration in seconds before the display is turned off. Value shall be 0 if screen never shall turn off.", + "type": "actuator", + "unit": "s" + }, + "DistanceUnit": { + "allowed": [ + "MILES", + "KILOMETERS" + ], + "datatype": "string", + "description": "Distance unit used in the current HMI", + "type": "actuator" + }, + "EVEconomyUnits": { + "allowed": [ + "MILES_PER_KILOWATT_HOUR", + "KILOMETERS_PER_KILOWATT_HOUR", + "KILOWATT_HOURS_PER_100_MILES", + "KILOWATT_HOURS_PER_100_KILOMETERS", + "WATT_HOURS_PER_MILE", + "WATT_HOURS_PER_KILOMETER" + ], + "datatype": "string", + "description": "EV fuel economy unit used in the current HMI", + "type": "actuator" + }, + "FontSize": { + "allowed": [ + "STANDARD", + "LARGE", + "EXTRA_LARGE" + ], + "datatype": "string", + "description": "Font size used in the current HMI", + "type": "actuator" + }, + "FuelEconomyUnits": { + "allowed": [ + "MPG_UK", + "MPG_US", + "MILES_PER_LITER", + "KILOMETERS_PER_LITER", + "LITERS_PER_100_KILOMETERS" + ], + "datatype": "string", + "description": "Fuel economy unit used in the current HMI", + "type": "actuator" + }, + "FuelVolumeUnit": { + "allowed": [ + "LITER", + "GALLON_US", + "GALLON_UK" + ], + "datatype": "string", + "description": "Fuel volume unit used in the current HMI", + "type": "actuator" + }, + "IsScreenAlwaysOn": { + "datatype": "boolean", + "description": "Used to prevent the screen going black if no action placed.", + "type": "actuator" + }, + "LastActionTime": { + "datatype": "string", + "description": "Time for last hmi action, formatted according to ISO 8601 with UTC time zone.", + "type": "sensor" + }, + "TemperatureUnit": { + "allowed": [ + "C", + "F" + ], + "datatype": "string", + "description": "Temperature unit used in the current HMI", + "type": "actuator" + }, + "TimeFormat": { + "allowed": [ + "HR_12", + "HR_24" + ], + "datatype": "string", + "description": "Time format used in the current HMI", + "type": "actuator" + }, + "TirePressureUnit": { + "allowed": [ + "PSI", + "KPA", + "BAR" + ], + "datatype": "string", + "description": "Tire pressure unit used in the current HMI", + "type": "actuator" + } + }, + "description": "HMI related signals", + "type": "branch" + }, + "Media": { + "children": { + "Action": { + "allowed": [ + "UNKNOWN", + "STOP", + "PLAY", + "FAST_FORWARD", + "FAST_BACKWARD", + "SKIP_FORWARD", + "SKIP_BACKWARD" + ], + "datatype": "string", + "description": "Tells if the media was", + "type": "actuator" + }, + "DeclinedURI": { + "datatype": "string", + "description": "URI of suggested media that was declined", + "type": "sensor" + }, + "Played": { + "children": { + "Album": { + "datatype": "string", + "description": "Name of album being played", + "type": "sensor" + }, + "Artist": { + "datatype": "string", + "description": "Name of artist being played", + "type": "sensor" + }, + "PlaybackRate": { + "comment": "The normal playback rate is multiplied by this value to obtain the current rate, so a value of 1.0 indicates normal speed. Values of lower than 1.0 make the media play slower than normal. Values of higher than 1.0 make the media play faster than normal.", + "datatype": "float", + "description": "Current playback rate of media being played.", + "type": "actuator" + }, + "Source": { + "allowed": [ + "UNKNOWN", + "SIRIUS_XM", + "AM", + "FM", + "DAB", + "TV", + "CD", + "DVD", + "AUX", + "USB", + "DISK", + "BLUETOOTH", + "INTERNET", + "VOICE", + "BEEP" + ], + "datatype": "string", + "description": "Media selected for playback", + "type": "actuator" + }, + "Track": { + "datatype": "string", + "description": "Name of track being played", + "type": "sensor" + }, + "URI": { + "datatype": "string", + "description": "User Resource associated with the media", + "type": "sensor" + } + }, + "description": "Collection of signals updated in concert when a new media is played", + "type": "branch" + }, + "SelectedURI": { + "datatype": "string", + "description": "URI of suggested media that was selected", + "type": "actuator" + }, + "Volume": { + "datatype": "uint8", + "description": "Current Media Volume", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + } + }, + "description": "All Media actions", + "type": "branch" + }, + "Navigation": { + "children": { + "DestinationSet": { + "children": { + "Latitude": { + "datatype": "double", + "description": "Latitude of destination in WGS 84 geodetic coordinates.", + "max": 90, + "min": -90, + "type": "actuator", + "unit": "degrees" + }, + "Longitude": { + "datatype": "double", + "description": "Longitude of destination in WGS 84 geodetic coordinates.", + "max": 180, + "min": -180, + "type": "actuator", + "unit": "degrees" + } + }, + "description": "A navigation has been selected.", + "type": "branch" + }, + "GuidanceVoice": { + "allowed": [ + "STANDARD_MALE", + "STANDARD_FEMALE", + "ETC" + ], + "comment": "ETC indicates a voice alternative not covered by the explicitly listed alternatives.", + "datatype": "string", + "description": "Navigation guidance state that was selected.", + "type": "actuator" + }, + "Mute": { + "allowed": [ + "MUTED", + "ALERT_ONLY", + "UNMUTED" + ], + "datatype": "string", + "description": "Navigation mute state that was selected.", + "type": "actuator" + }, + "Volume": { + "datatype": "uint8", + "description": "Current navigation volume", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + } + }, + "description": "All navigation actions", + "type": "branch" + }, + "PowerOptimizeLevel": { + "datatype": "uint8", + "description": "Power optimization level for this branch/subsystem. A higher number indicates more aggressive power optimization. Level 0 indicates that all functionality is enabled, no power optimization enabled. Level 10 indicates most aggressive power optimization mode, only essential functionality enabled.", + "max": 10, + "min": 0, + "type": "actuator" + }, + "SmartphoneProjection": { + "children": { + "Active": { + "allowed": [ + "NONE", + "ACTIVE", + "INACTIVE" + ], + "comment": "NONE indicates that projection is not supported.", + "datatype": "string", + "description": "Projection activation info.", + "type": "actuator" + }, + "Source": { + "allowed": [ + "USB", + "BLUETOOTH", + "WIFI" + ], + "datatype": "string", + "description": "Connectivity source selected for projection.", + "type": "actuator" + }, + "SupportedMode": { + "allowed": [ + "ANDROID_AUTO", + "APPLE_CARPLAY", + "MIRROR_LINK", + "OTHER" + ], + "datatype": "string[]", + "description": "Supportable list for projection.", + "type": "attribute" + } + }, + "description": "All smartphone projection actions.", + "type": "branch" + } + }, + "description": "Infotainment system.", + "type": "branch" + }, + "IsWindowChildLockEngaged": { + "comment": "Window child lock refers to the functionality to disable the move window button next to most windows, so that they only can be operated by the driver.", + "datatype": "boolean", + "description": "Is window child lock engaged. True = Engaged. False = Disengaged.", + "type": "actuator" + }, + "Light": { + "children": { + "AmbientLight": { + "children": { + "Row1": { + "children": { + "DriverSide": { + "children": { + "Color": { + "comment": "For example; \"#C0C0C0\" = Silver, \"#FFD700\" = Gold, \"#000000\" = Black, \"#FFFFFF\" = White, etc.", + "datatype": "string", + "description": "Hexadecimal color code represented as a 3-byte RGB (i.e. Red, Green, and Blue) value preceded by a hash symbol \"#\". Allowed range \"#000000\" to \"#FFFFFF\".", + "type": "actuator" + }, + "Intensity": { + "comment": "Minimum value cannot be zero as on/off is controlled by the actuator IsLightOn. V4.0 moved from Cabin.Lights.AmbientLight.Intensity to enable individual control of lights via the SingleConfigurableLight.vspec.", + "datatype": "uint8", + "description": "How much of the maximum possible brightness of the light is used. 1 = Maximum attenuation, 100 = No attenuation (i.e. full brightness).", + "max": 100, + "min": 1, + "type": "actuator", + "unit": "percent" + }, + "IsLightOn": { + "datatype": "boolean", + "description": "Indicates whether the light is turned on. True = On, False = Off.", + "type": "actuator" + } + }, + "description": "Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc.", + "type": "branch" + }, + "PassengerSide": { + "children": { + "Color": { + "comment": "For example; \"#C0C0C0\" = Silver, \"#FFD700\" = Gold, \"#000000\" = Black, \"#FFFFFF\" = White, etc.", + "datatype": "string", + "description": "Hexadecimal color code represented as a 3-byte RGB (i.e. Red, Green, and Blue) value preceded by a hash symbol \"#\". Allowed range \"#000000\" to \"#FFFFFF\".", + "type": "actuator" + }, + "Intensity": { + "comment": "Minimum value cannot be zero as on/off is controlled by the actuator IsLightOn. V4.0 moved from Cabin.Lights.AmbientLight.Intensity to enable individual control of lights via the SingleConfigurableLight.vspec.", + "datatype": "uint8", + "description": "How much of the maximum possible brightness of the light is used. 1 = Maximum attenuation, 100 = No attenuation (i.e. full brightness).", + "max": 100, + "min": 1, + "type": "actuator", + "unit": "percent" + }, + "IsLightOn": { + "datatype": "boolean", + "description": "Indicates whether the light is turned on. True = On, False = Off.", + "type": "actuator" + } + }, + "description": "Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc.", + "type": "branch" + } + }, + "description": "Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc.", + "type": "branch" + }, + "Row2": { + "children": { + "DriverSide": { + "children": { + "Color": { + "comment": "For example; \"#C0C0C0\" = Silver, \"#FFD700\" = Gold, \"#000000\" = Black, \"#FFFFFF\" = White, etc.", + "datatype": "string", + "description": "Hexadecimal color code represented as a 3-byte RGB (i.e. Red, Green, and Blue) value preceded by a hash symbol \"#\". Allowed range \"#000000\" to \"#FFFFFF\".", + "type": "actuator" + }, + "Intensity": { + "comment": "Minimum value cannot be zero as on/off is controlled by the actuator IsLightOn. V4.0 moved from Cabin.Lights.AmbientLight.Intensity to enable individual control of lights via the SingleConfigurableLight.vspec.", + "datatype": "uint8", + "description": "How much of the maximum possible brightness of the light is used. 1 = Maximum attenuation, 100 = No attenuation (i.e. full brightness).", + "max": 100, + "min": 1, + "type": "actuator", + "unit": "percent" + }, + "IsLightOn": { + "datatype": "boolean", + "description": "Indicates whether the light is turned on. True = On, False = Off.", + "type": "actuator" + } + }, + "description": "Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc.", + "type": "branch" + }, + "PassengerSide": { + "children": { + "Color": { + "comment": "For example; \"#C0C0C0\" = Silver, \"#FFD700\" = Gold, \"#000000\" = Black, \"#FFFFFF\" = White, etc.", + "datatype": "string", + "description": "Hexadecimal color code represented as a 3-byte RGB (i.e. Red, Green, and Blue) value preceded by a hash symbol \"#\". Allowed range \"#000000\" to \"#FFFFFF\".", + "type": "actuator" + }, + "Intensity": { + "comment": "Minimum value cannot be zero as on/off is controlled by the actuator IsLightOn. V4.0 moved from Cabin.Lights.AmbientLight.Intensity to enable individual control of lights via the SingleConfigurableLight.vspec.", + "datatype": "uint8", + "description": "How much of the maximum possible brightness of the light is used. 1 = Maximum attenuation, 100 = No attenuation (i.e. full brightness).", + "max": 100, + "min": 1, + "type": "actuator", + "unit": "percent" + }, + "IsLightOn": { + "datatype": "boolean", + "description": "Indicates whether the light is turned on. True = On, False = Off.", + "type": "actuator" + } + }, + "description": "Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc.", + "type": "branch" + } + }, + "description": "Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc.", + "type": "branch" + } + }, + "description": "Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc.", + "type": "branch" + }, + "InteractiveLightBar": { + "children": { + "Color": { + "comment": "For example; \"#C0C0C0\" = Silver, \"#FFD700\" = Gold, \"#000000\" = Black, \"#FFFFFF\" = White, etc.", + "datatype": "string", + "description": "Hexadecimal color code represented as a 3-byte RGB (i.e. Red, Green, and Blue) value preceded by a hash symbol \"#\". Allowed range \"#000000\" to \"#FFFFFF\".", + "type": "actuator" + }, + "Effect": { + "comment": "Default and allowed values are OEM-specific and should be defined accordingly (e.g. with the use of overlays).", + "datatype": "string", + "description": "Light effect selection from a predefined set of allowed values.", + "type": "actuator" + }, + "Intensity": { + "comment": "Minimum value cannot be zero as on/off is controlled by the actuator IsLightOn. V4.0 moved from Cabin.Lights.AmbientLight.Intensity to enable individual control of lights via the SingleConfigurableLight.vspec.", + "datatype": "uint8", + "description": "How much of the maximum possible brightness of the light is used. 1 = Maximum attenuation, 100 = No attenuation (i.e. full brightness).", + "max": 100, + "min": 1, + "type": "actuator", + "unit": "percent" + }, + "IsLightOn": { + "datatype": "boolean", + "description": "Indicates whether the light is turned on. True = On, False = Off.", + "type": "actuator" + } + }, + "description": "Decorative coloured light bar that supports effects, usually mounted on the dashboard (e.g. BMW i7 Interactive bar).", + "type": "branch" + }, + "IsDomeOn": { + "datatype": "boolean", + "description": "Is central dome light on", + "type": "actuator" + }, + "IsGloveBoxOn": { + "datatype": "boolean", + "description": "Is glove box light on", + "type": "actuator" + }, + "PerceivedAmbientLight": { + "comment": "V4.0 named changed from \"AmbientLight\" to \"PerceivedAmbientLight\". This is a read-only property that refers to the pre-existing light (e.g., natural light). If you are looking for the in-cabin decorative lights that sometimes are also called \"AmbientLights\", please refer to the branch Vehicle.Cabin.Light.AmbientLight.", + "datatype": "uint8", + "description": "The percentage of ambient light that is measured (e.g., by a sensor) inside the cabin. 0 = No ambient light. 100 = Full brightness.", + "max": 100, + "min": 0, + "type": "sensor", + "unit": "percent" + }, + "Spotlight": { + "children": { + "Row1": { + "children": { + "DriverSide": { + "children": { + "Color": { + "comment": "For example; \"#C0C0C0\" = Silver, \"#FFD700\" = Gold, \"#000000\" = Black, \"#FFFFFF\" = White, etc.", + "datatype": "string", + "description": "Hexadecimal color code represented as a 3-byte RGB (i.e. Red, Green, and Blue) value preceded by a hash symbol \"#\". Allowed range \"#000000\" to \"#FFFFFF\".", + "type": "actuator" + }, + "Intensity": { + "comment": "Minimum value cannot be zero as on/off is controlled by the actuator IsLightOn. V4.0 moved from Cabin.Lights.AmbientLight.Intensity to enable individual control of lights via the SingleConfigurableLight.vspec.", + "datatype": "uint8", + "description": "How much of the maximum possible brightness of the light is used. 1 = Maximum attenuation, 100 = No attenuation (i.e. full brightness).", + "max": 100, + "min": 1, + "type": "actuator", + "unit": "percent" + }, + "IsLightOn": { + "datatype": "boolean", + "description": "Indicates whether the light is turned on. True = On, False = Off.", + "type": "actuator" + } + }, + "description": "Spotlight for a specific area in the vehicle.", + "type": "branch" + }, + "PassengerSide": { + "children": { + "Color": { + "comment": "For example; \"#C0C0C0\" = Silver, \"#FFD700\" = Gold, \"#000000\" = Black, \"#FFFFFF\" = White, etc.", + "datatype": "string", + "description": "Hexadecimal color code represented as a 3-byte RGB (i.e. Red, Green, and Blue) value preceded by a hash symbol \"#\". Allowed range \"#000000\" to \"#FFFFFF\".", + "type": "actuator" + }, + "Intensity": { + "comment": "Minimum value cannot be zero as on/off is controlled by the actuator IsLightOn. V4.0 moved from Cabin.Lights.AmbientLight.Intensity to enable individual control of lights via the SingleConfigurableLight.vspec.", + "datatype": "uint8", + "description": "How much of the maximum possible brightness of the light is used. 1 = Maximum attenuation, 100 = No attenuation (i.e. full brightness).", + "max": 100, + "min": 1, + "type": "actuator", + "unit": "percent" + }, + "IsLightOn": { + "datatype": "boolean", + "description": "Indicates whether the light is turned on. True = On, False = Off.", + "type": "actuator" + } + }, + "description": "Spotlight for a specific area in the vehicle.", + "type": "branch" + } + }, + "description": "Spotlight for a specific area in the vehicle.", + "type": "branch" + }, + "Row2": { + "children": { + "DriverSide": { + "children": { + "Color": { + "comment": "For example; \"#C0C0C0\" = Silver, \"#FFD700\" = Gold, \"#000000\" = Black, \"#FFFFFF\" = White, etc.", + "datatype": "string", + "description": "Hexadecimal color code represented as a 3-byte RGB (i.e. Red, Green, and Blue) value preceded by a hash symbol \"#\". Allowed range \"#000000\" to \"#FFFFFF\".", + "type": "actuator" + }, + "Intensity": { + "comment": "Minimum value cannot be zero as on/off is controlled by the actuator IsLightOn. V4.0 moved from Cabin.Lights.AmbientLight.Intensity to enable individual control of lights via the SingleConfigurableLight.vspec.", + "datatype": "uint8", + "description": "How much of the maximum possible brightness of the light is used. 1 = Maximum attenuation, 100 = No attenuation (i.e. full brightness).", + "max": 100, + "min": 1, + "type": "actuator", + "unit": "percent" + }, + "IsLightOn": { + "datatype": "boolean", + "description": "Indicates whether the light is turned on. True = On, False = Off.", + "type": "actuator" + } + }, + "description": "Spotlight for a specific area in the vehicle.", + "type": "branch" + }, + "PassengerSide": { + "children": { + "Color": { + "comment": "For example; \"#C0C0C0\" = Silver, \"#FFD700\" = Gold, \"#000000\" = Black, \"#FFFFFF\" = White, etc.", + "datatype": "string", + "description": "Hexadecimal color code represented as a 3-byte RGB (i.e. Red, Green, and Blue) value preceded by a hash symbol \"#\". Allowed range \"#000000\" to \"#FFFFFF\".", + "type": "actuator" + }, + "Intensity": { + "comment": "Minimum value cannot be zero as on/off is controlled by the actuator IsLightOn. V4.0 moved from Cabin.Lights.AmbientLight.Intensity to enable individual control of lights via the SingleConfigurableLight.vspec.", + "datatype": "uint8", + "description": "How much of the maximum possible brightness of the light is used. 1 = Maximum attenuation, 100 = No attenuation (i.e. full brightness).", + "max": 100, + "min": 1, + "type": "actuator", + "unit": "percent" + }, + "IsLightOn": { + "datatype": "boolean", + "description": "Indicates whether the light is turned on. True = On, False = Off.", + "type": "actuator" + } + }, + "description": "Spotlight for a specific area in the vehicle.", + "type": "branch" + } + }, + "description": "Spotlight for a specific area in the vehicle.", + "type": "branch" + }, + "Row3": { + "children": { + "DriverSide": { + "children": { + "Color": { + "comment": "For example; \"#C0C0C0\" = Silver, \"#FFD700\" = Gold, \"#000000\" = Black, \"#FFFFFF\" = White, etc.", + "datatype": "string", + "description": "Hexadecimal color code represented as a 3-byte RGB (i.e. Red, Green, and Blue) value preceded by a hash symbol \"#\". Allowed range \"#000000\" to \"#FFFFFF\".", + "type": "actuator" + }, + "Intensity": { + "comment": "Minimum value cannot be zero as on/off is controlled by the actuator IsLightOn. V4.0 moved from Cabin.Lights.AmbientLight.Intensity to enable individual control of lights via the SingleConfigurableLight.vspec.", + "datatype": "uint8", + "description": "How much of the maximum possible brightness of the light is used. 1 = Maximum attenuation, 100 = No attenuation (i.e. full brightness).", + "max": 100, + "min": 1, + "type": "actuator", + "unit": "percent" + }, + "IsLightOn": { + "datatype": "boolean", + "description": "Indicates whether the light is turned on. True = On, False = Off.", + "type": "actuator" + } + }, + "description": "Spotlight for a specific area in the vehicle.", + "type": "branch" + }, + "PassengerSide": { + "children": { + "Color": { + "comment": "For example; \"#C0C0C0\" = Silver, \"#FFD700\" = Gold, \"#000000\" = Black, \"#FFFFFF\" = White, etc.", + "datatype": "string", + "description": "Hexadecimal color code represented as a 3-byte RGB (i.e. Red, Green, and Blue) value preceded by a hash symbol \"#\". Allowed range \"#000000\" to \"#FFFFFF\".", + "type": "actuator" + }, + "Intensity": { + "comment": "Minimum value cannot be zero as on/off is controlled by the actuator IsLightOn. V4.0 moved from Cabin.Lights.AmbientLight.Intensity to enable individual control of lights via the SingleConfigurableLight.vspec.", + "datatype": "uint8", + "description": "How much of the maximum possible brightness of the light is used. 1 = Maximum attenuation, 100 = No attenuation (i.e. full brightness).", + "max": 100, + "min": 1, + "type": "actuator", + "unit": "percent" + }, + "IsLightOn": { + "datatype": "boolean", + "description": "Indicates whether the light is turned on. True = On, False = Off.", + "type": "actuator" + } + }, + "description": "Spotlight for a specific area in the vehicle.", + "type": "branch" + } + }, + "description": "Spotlight for a specific area in the vehicle.", + "type": "branch" + }, + "Row4": { + "children": { + "DriverSide": { + "children": { + "Color": { + "comment": "For example; \"#C0C0C0\" = Silver, \"#FFD700\" = Gold, \"#000000\" = Black, \"#FFFFFF\" = White, etc.", + "datatype": "string", + "description": "Hexadecimal color code represented as a 3-byte RGB (i.e. Red, Green, and Blue) value preceded by a hash symbol \"#\". Allowed range \"#000000\" to \"#FFFFFF\".", + "type": "actuator" + }, + "Intensity": { + "comment": "Minimum value cannot be zero as on/off is controlled by the actuator IsLightOn. V4.0 moved from Cabin.Lights.AmbientLight.Intensity to enable individual control of lights via the SingleConfigurableLight.vspec.", + "datatype": "uint8", + "description": "How much of the maximum possible brightness of the light is used. 1 = Maximum attenuation, 100 = No attenuation (i.e. full brightness).", + "max": 100, + "min": 1, + "type": "actuator", + "unit": "percent" + }, + "IsLightOn": { + "datatype": "boolean", + "description": "Indicates whether the light is turned on. True = On, False = Off.", + "type": "actuator" + } + }, + "description": "Spotlight for a specific area in the vehicle.", + "type": "branch" + }, + "PassengerSide": { + "children": { + "Color": { + "comment": "For example; \"#C0C0C0\" = Silver, \"#FFD700\" = Gold, \"#000000\" = Black, \"#FFFFFF\" = White, etc.", + "datatype": "string", + "description": "Hexadecimal color code represented as a 3-byte RGB (i.e. Red, Green, and Blue) value preceded by a hash symbol \"#\". Allowed range \"#000000\" to \"#FFFFFF\".", + "type": "actuator" + }, + "Intensity": { + "comment": "Minimum value cannot be zero as on/off is controlled by the actuator IsLightOn. V4.0 moved from Cabin.Lights.AmbientLight.Intensity to enable individual control of lights via the SingleConfigurableLight.vspec.", + "datatype": "uint8", + "description": "How much of the maximum possible brightness of the light is used. 1 = Maximum attenuation, 100 = No attenuation (i.e. full brightness).", + "max": 100, + "min": 1, + "type": "actuator", + "unit": "percent" + }, + "IsLightOn": { + "datatype": "boolean", + "description": "Indicates whether the light is turned on. True = On, False = Off.", + "type": "actuator" + } + }, + "description": "Spotlight for a specific area in the vehicle.", + "type": "branch" + } + }, + "description": "Spotlight for a specific area in the vehicle.", + "type": "branch" + } + }, + "description": "Spotlight for a specific area in the vehicle.", + "type": "branch" + } + }, + "comment": "V4.0 branch renamed from \"Lights\" to \"Light\" to comply with singular naming of entities. Use SingleConfigurableLight.vspec to describe interior lights that can be configured.", + "description": "Light that is part of the Cabin.", + "type": "branch" + }, + "PowerOptimizeLevel": { + "datatype": "uint8", + "description": "Power optimization level for this branch/subsystem. A higher number indicates more aggressive power optimization. Level 0 indicates that all functionality is enabled, no power optimization enabled. Level 10 indicates most aggressive power optimization mode, only essential functionality enabled.", + "max": 10, + "min": 0, + "type": "actuator" + }, + "RearShade": { + "children": { + "Position": { + "datatype": "uint8", + "description": "Position of window blind. 0 = Fully retracted. 100 = Fully deployed.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Switch": { + "allowed": [ + "INACTIVE", + "CLOSE", + "OPEN", + "ONE_SHOT_CLOSE", + "ONE_SHOT_OPEN" + ], + "datatype": "string", + "description": "Switch controlling sliding action such as window, sunroof, or blind.", + "type": "actuator" + } + }, + "description": "Rear window shade.", + "type": "branch" + }, + "RearviewMirror": { + "children": { + "DimmingLevel": { + "datatype": "uint8", + "description": "Dimming level of rear-view mirror. 0 = Undimmed. 100 = Fully dimmed.", + "max": 100, + "type": "actuator", + "unit": "percent" + } + }, + "description": "Rear-view mirror.", + "type": "branch" + }, + "Seat": { + "children": { + "Row1": { + "children": { + "DriverSide": { + "children": { + "Airbag": { + "children": { + "IsDeployed": { + "datatype": "boolean", + "description": "Airbag deployment status. True = Airbag deployed. False = Airbag not deployed.", + "type": "sensor" + } + }, + "description": "Airbag signals.", + "type": "branch" + }, + "Backrest": { + "children": { + "Lumbar": { + "children": { + "Height": { + "datatype": "uint8", + "description": "Height of lumbar support. Position is relative within available movable range of the lumbar support. 0 = Lowermost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + }, + "Support": { + "datatype": "float", + "description": "Lumbar support (in/out position). 0 = Innermost position. 100 = Outermost position.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + } + }, + "description": "Adjustable lumbar support mechanisms in seats allow the user to change the seat back shape.", + "type": "branch" + }, + "Recline": { + "comment": "Seat z-axis depends on seat tilt. This means that movement of backrest due to seat tilting will not affect Backrest.Recline as long as the angle between Seating and Backrest are constant. Absolute recline relative to vehicle z-axis can be calculated as Tilt + Backrest.Recline.", + "datatype": "float", + "description": "Backrest recline compared to seat z-axis (seat vertical axis). 0 degrees = Upright/Vertical backrest. Negative degrees for forward recline. Positive degrees for backward recline.", + "type": "actuator", + "unit": "degrees" + }, + "SideBolster": { + "children": { + "Support": { + "datatype": "float", + "description": "Side bolster support. 0 = Minimum support (widest side bolster setting). 100 = Maximum support.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + } + }, + "description": "Backrest side bolster (lumbar side support) settings.", + "type": "branch" + } + }, + "description": "Describes signals related to the backrest of the seat.", + "type": "branch" + }, + "Headrest": { + "children": { + "Angle": { + "datatype": "float", + "description": "Headrest angle, relative to backrest, 0 degrees if parallel to backrest, Positive degrees = tilted forward.", + "type": "actuator", + "unit": "degrees" + }, + "Height": { + "datatype": "uint8", + "description": "Position of headrest relative to movable range of the head rest. 0 = Bottommost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + } + }, + "description": "Headrest settings.", + "type": "branch" + }, + "Heating": { + "datatype": "int8", + "description": "Seat cooling / heating. 0 = off. -100 = max cold. +100 = max heat.", + "max": 100, + "min": -100, + "type": "actuator", + "unit": "percent" + }, + "Height": { + "datatype": "uint16", + "description": "Seat position on vehicle z-axis. Position is relative within available movable range of the seating. 0 = Lowermost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + }, + "IsBelted": { + "datatype": "boolean", + "description": "Is the belt engaged.", + "type": "sensor" + }, + "IsOccupied": { + "datatype": "boolean", + "description": "Does the seat have a passenger in it.", + "type": "sensor" + }, + "Massage": { + "datatype": "uint8", + "description": "Seat massage level. 0 = off. 100 = max massage.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Occupant": { + "children": { + "Identifier": { + "children": { + "Issuer": { + "datatype": "string", + "description": "Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com.", + "type": "sensor" + }, + "Subject": { + "datatype": "string", + "description": "Subject for the authentication of the occupant e.g. UserID 7331677.", + "type": "sensor" + } + }, + "description": "Identifier attributes based on OAuth 2.0.", + "type": "branch" + } + }, + "description": "Occupant data.", + "type": "branch" + }, + "Position": { + "datatype": "uint16", + "description": "Seat position on vehicle x-axis. Position is relative to the frontmost position supported by the seat. 0 = Frontmost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + }, + "Seating": { + "children": { + "Length": { + "datatype": "uint16", + "description": "Length adjustment of seating. 0 = Adjustable part of seating in rearmost position (Shortest length of seating).", + "min": 0, + "type": "actuator", + "unit": "mm" + } + }, + "comment": "Seating is here considered as the part of the seat that supports the thighs. Additional cushions (if any) for support of lower legs is not covered by this branch.", + "description": "Describes signals related to the seat bottom of the seat.", + "type": "branch" + }, + "Switch": { + "children": { + "Backrest": { + "children": { + "IsReclineBackwardEngaged": { + "datatype": "boolean", + "description": "Backrest recline backward switch engaged (SingleSeat.Backrest.Recline).", + "type": "actuator" + }, + "IsReclineForwardEngaged": { + "datatype": "boolean", + "description": "Backrest recline forward switch engaged (SingleSeat.Backrest.Recline).", + "type": "actuator" + }, + "Lumbar": { + "children": { + "IsDownEngaged": { + "datatype": "boolean", + "description": "Lumbar down switch engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + }, + "IsLessSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for less lumbar support engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + }, + "IsMoreSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for more lumbar support engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + }, + "IsUpEngaged": { + "datatype": "boolean", + "description": "Lumbar up switch engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Backrest.Lumbar.", + "type": "branch" + }, + "SideBolster": { + "children": { + "IsLessSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for less side bolster support engaged (SingleSeat.Backrest.SideBolster.Support).", + "type": "actuator" + }, + "IsMoreSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for more side bolster support engaged (SingleSeat.Backrest.SideBolster.Support).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Backrest.SideBolster.", + "type": "branch" + } + }, + "description": "Describes switches related to the backrest of the seat.", + "type": "branch" + }, + "Headrest": { + "children": { + "IsBackwardEngaged": { + "datatype": "boolean", + "description": "Head rest backward switch engaged (SingleSeat.Headrest.Angle).", + "type": "actuator" + }, + "IsDownEngaged": { + "datatype": "boolean", + "description": "Head rest down switch engaged (SingleSeat.Headrest.Height).", + "type": "actuator" + }, + "IsForwardEngaged": { + "datatype": "boolean", + "description": "Head rest forward switch engaged (SingleSeat.Headrest.Angle).", + "type": "actuator" + }, + "IsUpEngaged": { + "datatype": "boolean", + "description": "Head rest up switch engaged (SingleSeat.Headrest.Height).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Headrest.", + "type": "branch" + }, + "IsBackwardEngaged": { + "datatype": "boolean", + "description": "Seat backward switch engaged (SingleSeat.Position).", + "type": "actuator" + }, + "IsCoolerEngaged": { + "datatype": "boolean", + "description": "Cooler switch for Seat heater (SingleSeat.Heating).", + "type": "actuator" + }, + "IsDownEngaged": { + "datatype": "boolean", + "description": "Seat down switch engaged (SingleSeat.Height).", + "type": "actuator" + }, + "IsForwardEngaged": { + "datatype": "boolean", + "description": "Seat forward switch engaged (SingleSeat.Position).", + "type": "actuator" + }, + "IsTiltBackwardEngaged": { + "datatype": "boolean", + "description": "Tilt backward switch engaged (SingleSeat.Tilt).", + "type": "actuator" + }, + "IsTiltForwardEngaged": { + "datatype": "boolean", + "description": "Tilt forward switch engaged (SingleSeat.Tilt).", + "type": "actuator" + }, + "IsUpEngaged": { + "datatype": "boolean", + "description": "Seat up switch engaged (SingleSeat.Height).", + "type": "actuator" + }, + "IsWarmerEngaged": { + "datatype": "boolean", + "description": "Warmer switch for Seat heater (SingleSeat.Heating).", + "type": "actuator" + }, + "Massage": { + "children": { + "IsDecreaseEngaged": { + "datatype": "boolean", + "description": "Decrease massage level switch engaged (SingleSeat.Massage).", + "type": "actuator" + }, + "IsIncreaseEngaged": { + "datatype": "boolean", + "description": "Increase massage level switch engaged (SingleSeat.Massage).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Massage.", + "type": "branch" + }, + "Seating": { + "children": { + "IsBackwardEngaged": { + "datatype": "boolean", + "description": "Is switch to decrease seating length engaged (SingleSeat.Seating.Length).", + "type": "actuator" + }, + "IsForwardEngaged": { + "datatype": "boolean", + "description": "Is switch to increase seating length engaged (SingleSeat.Seating.Length).", + "type": "actuator" + } + }, + "description": "Describes switches related to the seating of the seat.", + "type": "branch" + } + }, + "description": "Seat switch signals", + "type": "branch" + }, + "Tilt": { + "comment": "In VSS it is assumed that tilting a seat affects both seating (seat bottom) and backrest, i.e. the angle between seating and backrest will not be affected when changing Tilt.", + "datatype": "float", + "description": "Tilting of seat (seating and backrest) relative to vehicle x-axis. 0 = seat bottom is flat, seat bottom and vehicle x-axis are parallel. Positive degrees = seat tilted backwards, seat x-axis tilted upward, seat z-axis is tilted backward.", + "type": "actuator", + "unit": "degrees" + } + }, + "description": "All seats.", + "type": "branch" + }, + "Middle": { + "children": { + "Airbag": { + "children": { + "IsDeployed": { + "datatype": "boolean", + "description": "Airbag deployment status. True = Airbag deployed. False = Airbag not deployed.", + "type": "sensor" + } + }, + "description": "Airbag signals.", + "type": "branch" + }, + "Backrest": { + "children": { + "Lumbar": { + "children": { + "Height": { + "datatype": "uint8", + "description": "Height of lumbar support. Position is relative within available movable range of the lumbar support. 0 = Lowermost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + }, + "Support": { + "datatype": "float", + "description": "Lumbar support (in/out position). 0 = Innermost position. 100 = Outermost position.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + } + }, + "description": "Adjustable lumbar support mechanisms in seats allow the user to change the seat back shape.", + "type": "branch" + }, + "Recline": { + "comment": "Seat z-axis depends on seat tilt. This means that movement of backrest due to seat tilting will not affect Backrest.Recline as long as the angle between Seating and Backrest are constant. Absolute recline relative to vehicle z-axis can be calculated as Tilt + Backrest.Recline.", + "datatype": "float", + "description": "Backrest recline compared to seat z-axis (seat vertical axis). 0 degrees = Upright/Vertical backrest. Negative degrees for forward recline. Positive degrees for backward recline.", + "type": "actuator", + "unit": "degrees" + }, + "SideBolster": { + "children": { + "Support": { + "datatype": "float", + "description": "Side bolster support. 0 = Minimum support (widest side bolster setting). 100 = Maximum support.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + } + }, + "description": "Backrest side bolster (lumbar side support) settings.", + "type": "branch" + } + }, + "description": "Describes signals related to the backrest of the seat.", + "type": "branch" + }, + "Headrest": { + "children": { + "Angle": { + "datatype": "float", + "description": "Headrest angle, relative to backrest, 0 degrees if parallel to backrest, Positive degrees = tilted forward.", + "type": "actuator", + "unit": "degrees" + }, + "Height": { + "datatype": "uint8", + "description": "Position of headrest relative to movable range of the head rest. 0 = Bottommost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + } + }, + "description": "Headrest settings.", + "type": "branch" + }, + "Heating": { + "datatype": "int8", + "description": "Seat cooling / heating. 0 = off. -100 = max cold. +100 = max heat.", + "max": 100, + "min": -100, + "type": "actuator", + "unit": "percent" + }, + "Height": { + "datatype": "uint16", + "description": "Seat position on vehicle z-axis. Position is relative within available movable range of the seating. 0 = Lowermost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + }, + "IsBelted": { + "datatype": "boolean", + "description": "Is the belt engaged.", + "type": "sensor" + }, + "IsOccupied": { + "datatype": "boolean", + "description": "Does the seat have a passenger in it.", + "type": "sensor" + }, + "Massage": { + "datatype": "uint8", + "description": "Seat massage level. 0 = off. 100 = max massage.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Occupant": { + "children": { + "Identifier": { + "children": { + "Issuer": { + "datatype": "string", + "description": "Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com.", + "type": "sensor" + }, + "Subject": { + "datatype": "string", + "description": "Subject for the authentication of the occupant e.g. UserID 7331677.", + "type": "sensor" + } + }, + "description": "Identifier attributes based on OAuth 2.0.", + "type": "branch" + } + }, + "description": "Occupant data.", + "type": "branch" + }, + "Position": { + "datatype": "uint16", + "description": "Seat position on vehicle x-axis. Position is relative to the frontmost position supported by the seat. 0 = Frontmost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + }, + "Seating": { + "children": { + "Length": { + "datatype": "uint16", + "description": "Length adjustment of seating. 0 = Adjustable part of seating in rearmost position (Shortest length of seating).", + "min": 0, + "type": "actuator", + "unit": "mm" + } + }, + "comment": "Seating is here considered as the part of the seat that supports the thighs. Additional cushions (if any) for support of lower legs is not covered by this branch.", + "description": "Describes signals related to the seat bottom of the seat.", + "type": "branch" + }, + "Switch": { + "children": { + "Backrest": { + "children": { + "IsReclineBackwardEngaged": { + "datatype": "boolean", + "description": "Backrest recline backward switch engaged (SingleSeat.Backrest.Recline).", + "type": "actuator" + }, + "IsReclineForwardEngaged": { + "datatype": "boolean", + "description": "Backrest recline forward switch engaged (SingleSeat.Backrest.Recline).", + "type": "actuator" + }, + "Lumbar": { + "children": { + "IsDownEngaged": { + "datatype": "boolean", + "description": "Lumbar down switch engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + }, + "IsLessSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for less lumbar support engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + }, + "IsMoreSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for more lumbar support engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + }, + "IsUpEngaged": { + "datatype": "boolean", + "description": "Lumbar up switch engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Backrest.Lumbar.", + "type": "branch" + }, + "SideBolster": { + "children": { + "IsLessSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for less side bolster support engaged (SingleSeat.Backrest.SideBolster.Support).", + "type": "actuator" + }, + "IsMoreSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for more side bolster support engaged (SingleSeat.Backrest.SideBolster.Support).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Backrest.SideBolster.", + "type": "branch" + } + }, + "description": "Describes switches related to the backrest of the seat.", + "type": "branch" + }, + "Headrest": { + "children": { + "IsBackwardEngaged": { + "datatype": "boolean", + "description": "Head rest backward switch engaged (SingleSeat.Headrest.Angle).", + "type": "actuator" + }, + "IsDownEngaged": { + "datatype": "boolean", + "description": "Head rest down switch engaged (SingleSeat.Headrest.Height).", + "type": "actuator" + }, + "IsForwardEngaged": { + "datatype": "boolean", + "description": "Head rest forward switch engaged (SingleSeat.Headrest.Angle).", + "type": "actuator" + }, + "IsUpEngaged": { + "datatype": "boolean", + "description": "Head rest up switch engaged (SingleSeat.Headrest.Height).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Headrest.", + "type": "branch" + }, + "IsBackwardEngaged": { + "datatype": "boolean", + "description": "Seat backward switch engaged (SingleSeat.Position).", + "type": "actuator" + }, + "IsCoolerEngaged": { + "datatype": "boolean", + "description": "Cooler switch for Seat heater (SingleSeat.Heating).", + "type": "actuator" + }, + "IsDownEngaged": { + "datatype": "boolean", + "description": "Seat down switch engaged (SingleSeat.Height).", + "type": "actuator" + }, + "IsForwardEngaged": { + "datatype": "boolean", + "description": "Seat forward switch engaged (SingleSeat.Position).", + "type": "actuator" + }, + "IsTiltBackwardEngaged": { + "datatype": "boolean", + "description": "Tilt backward switch engaged (SingleSeat.Tilt).", + "type": "actuator" + }, + "IsTiltForwardEngaged": { + "datatype": "boolean", + "description": "Tilt forward switch engaged (SingleSeat.Tilt).", + "type": "actuator" + }, + "IsUpEngaged": { + "datatype": "boolean", + "description": "Seat up switch engaged (SingleSeat.Height).", + "type": "actuator" + }, + "IsWarmerEngaged": { + "datatype": "boolean", + "description": "Warmer switch for Seat heater (SingleSeat.Heating).", + "type": "actuator" + }, + "Massage": { + "children": { + "IsDecreaseEngaged": { + "datatype": "boolean", + "description": "Decrease massage level switch engaged (SingleSeat.Massage).", + "type": "actuator" + }, + "IsIncreaseEngaged": { + "datatype": "boolean", + "description": "Increase massage level switch engaged (SingleSeat.Massage).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Massage.", + "type": "branch" + }, + "Seating": { + "children": { + "IsBackwardEngaged": { + "datatype": "boolean", + "description": "Is switch to decrease seating length engaged (SingleSeat.Seating.Length).", + "type": "actuator" + }, + "IsForwardEngaged": { + "datatype": "boolean", + "description": "Is switch to increase seating length engaged (SingleSeat.Seating.Length).", + "type": "actuator" + } + }, + "description": "Describes switches related to the seating of the seat.", + "type": "branch" + } + }, + "description": "Seat switch signals", + "type": "branch" + }, + "Tilt": { + "comment": "In VSS it is assumed that tilting a seat affects both seating (seat bottom) and backrest, i.e. the angle between seating and backrest will not be affected when changing Tilt.", + "datatype": "float", + "description": "Tilting of seat (seating and backrest) relative to vehicle x-axis. 0 = seat bottom is flat, seat bottom and vehicle x-axis are parallel. Positive degrees = seat tilted backwards, seat x-axis tilted upward, seat z-axis is tilted backward.", + "type": "actuator", + "unit": "degrees" + } + }, + "description": "All seats.", + "type": "branch" + }, + "PassengerSide": { + "children": { + "Airbag": { + "children": { + "IsDeployed": { + "datatype": "boolean", + "description": "Airbag deployment status. True = Airbag deployed. False = Airbag not deployed.", + "type": "sensor" + } + }, + "description": "Airbag signals.", + "type": "branch" + }, + "Backrest": { + "children": { + "Lumbar": { + "children": { + "Height": { + "datatype": "uint8", + "description": "Height of lumbar support. Position is relative within available movable range of the lumbar support. 0 = Lowermost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + }, + "Support": { + "datatype": "float", + "description": "Lumbar support (in/out position). 0 = Innermost position. 100 = Outermost position.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + } + }, + "description": "Adjustable lumbar support mechanisms in seats allow the user to change the seat back shape.", + "type": "branch" + }, + "Recline": { + "comment": "Seat z-axis depends on seat tilt. This means that movement of backrest due to seat tilting will not affect Backrest.Recline as long as the angle between Seating and Backrest are constant. Absolute recline relative to vehicle z-axis can be calculated as Tilt + Backrest.Recline.", + "datatype": "float", + "description": "Backrest recline compared to seat z-axis (seat vertical axis). 0 degrees = Upright/Vertical backrest. Negative degrees for forward recline. Positive degrees for backward recline.", + "type": "actuator", + "unit": "degrees" + }, + "SideBolster": { + "children": { + "Support": { + "datatype": "float", + "description": "Side bolster support. 0 = Minimum support (widest side bolster setting). 100 = Maximum support.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + } + }, + "description": "Backrest side bolster (lumbar side support) settings.", + "type": "branch" + } + }, + "description": "Describes signals related to the backrest of the seat.", + "type": "branch" + }, + "Headrest": { + "children": { + "Angle": { + "datatype": "float", + "description": "Headrest angle, relative to backrest, 0 degrees if parallel to backrest, Positive degrees = tilted forward.", + "type": "actuator", + "unit": "degrees" + }, + "Height": { + "datatype": "uint8", + "description": "Position of headrest relative to movable range of the head rest. 0 = Bottommost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + } + }, + "description": "Headrest settings.", + "type": "branch" + }, + "Heating": { + "datatype": "int8", + "description": "Seat cooling / heating. 0 = off. -100 = max cold. +100 = max heat.", + "max": 100, + "min": -100, + "type": "actuator", + "unit": "percent" + }, + "Height": { + "datatype": "uint16", + "description": "Seat position on vehicle z-axis. Position is relative within available movable range of the seating. 0 = Lowermost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + }, + "IsBelted": { + "datatype": "boolean", + "description": "Is the belt engaged.", + "type": "sensor" + }, + "IsOccupied": { + "datatype": "boolean", + "description": "Does the seat have a passenger in it.", + "type": "sensor" + }, + "Massage": { + "datatype": "uint8", + "description": "Seat massage level. 0 = off. 100 = max massage.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Occupant": { + "children": { + "Identifier": { + "children": { + "Issuer": { + "datatype": "string", + "description": "Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com.", + "type": "sensor" + }, + "Subject": { + "datatype": "string", + "description": "Subject for the authentication of the occupant e.g. UserID 7331677.", + "type": "sensor" + } + }, + "description": "Identifier attributes based on OAuth 2.0.", + "type": "branch" + } + }, + "description": "Occupant data.", + "type": "branch" + }, + "Position": { + "datatype": "uint16", + "description": "Seat position on vehicle x-axis. Position is relative to the frontmost position supported by the seat. 0 = Frontmost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + }, + "Seating": { + "children": { + "Length": { + "datatype": "uint16", + "description": "Length adjustment of seating. 0 = Adjustable part of seating in rearmost position (Shortest length of seating).", + "min": 0, + "type": "actuator", + "unit": "mm" + } + }, + "comment": "Seating is here considered as the part of the seat that supports the thighs. Additional cushions (if any) for support of lower legs is not covered by this branch.", + "description": "Describes signals related to the seat bottom of the seat.", + "type": "branch" + }, + "Switch": { + "children": { + "Backrest": { + "children": { + "IsReclineBackwardEngaged": { + "datatype": "boolean", + "description": "Backrest recline backward switch engaged (SingleSeat.Backrest.Recline).", + "type": "actuator" + }, + "IsReclineForwardEngaged": { + "datatype": "boolean", + "description": "Backrest recline forward switch engaged (SingleSeat.Backrest.Recline).", + "type": "actuator" + }, + "Lumbar": { + "children": { + "IsDownEngaged": { + "datatype": "boolean", + "description": "Lumbar down switch engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + }, + "IsLessSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for less lumbar support engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + }, + "IsMoreSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for more lumbar support engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + }, + "IsUpEngaged": { + "datatype": "boolean", + "description": "Lumbar up switch engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Backrest.Lumbar.", + "type": "branch" + }, + "SideBolster": { + "children": { + "IsLessSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for less side bolster support engaged (SingleSeat.Backrest.SideBolster.Support).", + "type": "actuator" + }, + "IsMoreSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for more side bolster support engaged (SingleSeat.Backrest.SideBolster.Support).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Backrest.SideBolster.", + "type": "branch" + } + }, + "description": "Describes switches related to the backrest of the seat.", + "type": "branch" + }, + "Headrest": { + "children": { + "IsBackwardEngaged": { + "datatype": "boolean", + "description": "Head rest backward switch engaged (SingleSeat.Headrest.Angle).", + "type": "actuator" + }, + "IsDownEngaged": { + "datatype": "boolean", + "description": "Head rest down switch engaged (SingleSeat.Headrest.Height).", + "type": "actuator" + }, + "IsForwardEngaged": { + "datatype": "boolean", + "description": "Head rest forward switch engaged (SingleSeat.Headrest.Angle).", + "type": "actuator" + }, + "IsUpEngaged": { + "datatype": "boolean", + "description": "Head rest up switch engaged (SingleSeat.Headrest.Height).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Headrest.", + "type": "branch" + }, + "IsBackwardEngaged": { + "datatype": "boolean", + "description": "Seat backward switch engaged (SingleSeat.Position).", + "type": "actuator" + }, + "IsCoolerEngaged": { + "datatype": "boolean", + "description": "Cooler switch for Seat heater (SingleSeat.Heating).", + "type": "actuator" + }, + "IsDownEngaged": { + "datatype": "boolean", + "description": "Seat down switch engaged (SingleSeat.Height).", + "type": "actuator" + }, + "IsForwardEngaged": { + "datatype": "boolean", + "description": "Seat forward switch engaged (SingleSeat.Position).", + "type": "actuator" + }, + "IsTiltBackwardEngaged": { + "datatype": "boolean", + "description": "Tilt backward switch engaged (SingleSeat.Tilt).", + "type": "actuator" + }, + "IsTiltForwardEngaged": { + "datatype": "boolean", + "description": "Tilt forward switch engaged (SingleSeat.Tilt).", + "type": "actuator" + }, + "IsUpEngaged": { + "datatype": "boolean", + "description": "Seat up switch engaged (SingleSeat.Height).", + "type": "actuator" + }, + "IsWarmerEngaged": { + "datatype": "boolean", + "description": "Warmer switch for Seat heater (SingleSeat.Heating).", + "type": "actuator" + }, + "Massage": { + "children": { + "IsDecreaseEngaged": { + "datatype": "boolean", + "description": "Decrease massage level switch engaged (SingleSeat.Massage).", + "type": "actuator" + }, + "IsIncreaseEngaged": { + "datatype": "boolean", + "description": "Increase massage level switch engaged (SingleSeat.Massage).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Massage.", + "type": "branch" + }, + "Seating": { + "children": { + "IsBackwardEngaged": { + "datatype": "boolean", + "description": "Is switch to decrease seating length engaged (SingleSeat.Seating.Length).", + "type": "actuator" + }, + "IsForwardEngaged": { + "datatype": "boolean", + "description": "Is switch to increase seating length engaged (SingleSeat.Seating.Length).", + "type": "actuator" + } + }, + "description": "Describes switches related to the seating of the seat.", + "type": "branch" + } + }, + "description": "Seat switch signals", + "type": "branch" + }, + "Tilt": { + "comment": "In VSS it is assumed that tilting a seat affects both seating (seat bottom) and backrest, i.e. the angle between seating and backrest will not be affected when changing Tilt.", + "datatype": "float", + "description": "Tilting of seat (seating and backrest) relative to vehicle x-axis. 0 = seat bottom is flat, seat bottom and vehicle x-axis are parallel. Positive degrees = seat tilted backwards, seat x-axis tilted upward, seat z-axis is tilted backward.", + "type": "actuator", + "unit": "degrees" + } + }, + "description": "All seats.", + "type": "branch" + } + }, + "description": "All seats.", + "type": "branch" + }, + "Row2": { + "children": { + "DriverSide": { + "children": { + "Airbag": { + "children": { + "IsDeployed": { + "datatype": "boolean", + "description": "Airbag deployment status. True = Airbag deployed. False = Airbag not deployed.", + "type": "sensor" + } + }, + "description": "Airbag signals.", + "type": "branch" + }, + "Backrest": { + "children": { + "Lumbar": { + "children": { + "Height": { + "datatype": "uint8", + "description": "Height of lumbar support. Position is relative within available movable range of the lumbar support. 0 = Lowermost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + }, + "Support": { + "datatype": "float", + "description": "Lumbar support (in/out position). 0 = Innermost position. 100 = Outermost position.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + } + }, + "description": "Adjustable lumbar support mechanisms in seats allow the user to change the seat back shape.", + "type": "branch" + }, + "Recline": { + "comment": "Seat z-axis depends on seat tilt. This means that movement of backrest due to seat tilting will not affect Backrest.Recline as long as the angle between Seating and Backrest are constant. Absolute recline relative to vehicle z-axis can be calculated as Tilt + Backrest.Recline.", + "datatype": "float", + "description": "Backrest recline compared to seat z-axis (seat vertical axis). 0 degrees = Upright/Vertical backrest. Negative degrees for forward recline. Positive degrees for backward recline.", + "type": "actuator", + "unit": "degrees" + }, + "SideBolster": { + "children": { + "Support": { + "datatype": "float", + "description": "Side bolster support. 0 = Minimum support (widest side bolster setting). 100 = Maximum support.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + } + }, + "description": "Backrest side bolster (lumbar side support) settings.", + "type": "branch" + } + }, + "description": "Describes signals related to the backrest of the seat.", + "type": "branch" + }, + "Headrest": { + "children": { + "Angle": { + "datatype": "float", + "description": "Headrest angle, relative to backrest, 0 degrees if parallel to backrest, Positive degrees = tilted forward.", + "type": "actuator", + "unit": "degrees" + }, + "Height": { + "datatype": "uint8", + "description": "Position of headrest relative to movable range of the head rest. 0 = Bottommost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + } + }, + "description": "Headrest settings.", + "type": "branch" + }, + "Heating": { + "datatype": "int8", + "description": "Seat cooling / heating. 0 = off. -100 = max cold. +100 = max heat.", + "max": 100, + "min": -100, + "type": "actuator", + "unit": "percent" + }, + "Height": { + "datatype": "uint16", + "description": "Seat position on vehicle z-axis. Position is relative within available movable range of the seating. 0 = Lowermost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + }, + "IsBelted": { + "datatype": "boolean", + "description": "Is the belt engaged.", + "type": "sensor" + }, + "IsOccupied": { + "datatype": "boolean", + "description": "Does the seat have a passenger in it.", + "type": "sensor" + }, + "Massage": { + "datatype": "uint8", + "description": "Seat massage level. 0 = off. 100 = max massage.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Occupant": { + "children": { + "Identifier": { + "children": { + "Issuer": { + "datatype": "string", + "description": "Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com.", + "type": "sensor" + }, + "Subject": { + "datatype": "string", + "description": "Subject for the authentication of the occupant e.g. UserID 7331677.", + "type": "sensor" + } + }, + "description": "Identifier attributes based on OAuth 2.0.", + "type": "branch" + } + }, + "description": "Occupant data.", + "type": "branch" + }, + "Position": { + "datatype": "uint16", + "description": "Seat position on vehicle x-axis. Position is relative to the frontmost position supported by the seat. 0 = Frontmost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + }, + "Seating": { + "children": { + "Length": { + "datatype": "uint16", + "description": "Length adjustment of seating. 0 = Adjustable part of seating in rearmost position (Shortest length of seating).", + "min": 0, + "type": "actuator", + "unit": "mm" + } + }, + "comment": "Seating is here considered as the part of the seat that supports the thighs. Additional cushions (if any) for support of lower legs is not covered by this branch.", + "description": "Describes signals related to the seat bottom of the seat.", + "type": "branch" + }, + "Switch": { + "children": { + "Backrest": { + "children": { + "IsReclineBackwardEngaged": { + "datatype": "boolean", + "description": "Backrest recline backward switch engaged (SingleSeat.Backrest.Recline).", + "type": "actuator" + }, + "IsReclineForwardEngaged": { + "datatype": "boolean", + "description": "Backrest recline forward switch engaged (SingleSeat.Backrest.Recline).", + "type": "actuator" + }, + "Lumbar": { + "children": { + "IsDownEngaged": { + "datatype": "boolean", + "description": "Lumbar down switch engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + }, + "IsLessSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for less lumbar support engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + }, + "IsMoreSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for more lumbar support engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + }, + "IsUpEngaged": { + "datatype": "boolean", + "description": "Lumbar up switch engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Backrest.Lumbar.", + "type": "branch" + }, + "SideBolster": { + "children": { + "IsLessSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for less side bolster support engaged (SingleSeat.Backrest.SideBolster.Support).", + "type": "actuator" + }, + "IsMoreSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for more side bolster support engaged (SingleSeat.Backrest.SideBolster.Support).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Backrest.SideBolster.", + "type": "branch" + } + }, + "description": "Describes switches related to the backrest of the seat.", + "type": "branch" + }, + "Headrest": { + "children": { + "IsBackwardEngaged": { + "datatype": "boolean", + "description": "Head rest backward switch engaged (SingleSeat.Headrest.Angle).", + "type": "actuator" + }, + "IsDownEngaged": { + "datatype": "boolean", + "description": "Head rest down switch engaged (SingleSeat.Headrest.Height).", + "type": "actuator" + }, + "IsForwardEngaged": { + "datatype": "boolean", + "description": "Head rest forward switch engaged (SingleSeat.Headrest.Angle).", + "type": "actuator" + }, + "IsUpEngaged": { + "datatype": "boolean", + "description": "Head rest up switch engaged (SingleSeat.Headrest.Height).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Headrest.", + "type": "branch" + }, + "IsBackwardEngaged": { + "datatype": "boolean", + "description": "Seat backward switch engaged (SingleSeat.Position).", + "type": "actuator" + }, + "IsCoolerEngaged": { + "datatype": "boolean", + "description": "Cooler switch for Seat heater (SingleSeat.Heating).", + "type": "actuator" + }, + "IsDownEngaged": { + "datatype": "boolean", + "description": "Seat down switch engaged (SingleSeat.Height).", + "type": "actuator" + }, + "IsForwardEngaged": { + "datatype": "boolean", + "description": "Seat forward switch engaged (SingleSeat.Position).", + "type": "actuator" + }, + "IsTiltBackwardEngaged": { + "datatype": "boolean", + "description": "Tilt backward switch engaged (SingleSeat.Tilt).", + "type": "actuator" + }, + "IsTiltForwardEngaged": { + "datatype": "boolean", + "description": "Tilt forward switch engaged (SingleSeat.Tilt).", + "type": "actuator" + }, + "IsUpEngaged": { + "datatype": "boolean", + "description": "Seat up switch engaged (SingleSeat.Height).", + "type": "actuator" + }, + "IsWarmerEngaged": { + "datatype": "boolean", + "description": "Warmer switch for Seat heater (SingleSeat.Heating).", + "type": "actuator" + }, + "Massage": { + "children": { + "IsDecreaseEngaged": { + "datatype": "boolean", + "description": "Decrease massage level switch engaged (SingleSeat.Massage).", + "type": "actuator" + }, + "IsIncreaseEngaged": { + "datatype": "boolean", + "description": "Increase massage level switch engaged (SingleSeat.Massage).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Massage.", + "type": "branch" + }, + "Seating": { + "children": { + "IsBackwardEngaged": { + "datatype": "boolean", + "description": "Is switch to decrease seating length engaged (SingleSeat.Seating.Length).", + "type": "actuator" + }, + "IsForwardEngaged": { + "datatype": "boolean", + "description": "Is switch to increase seating length engaged (SingleSeat.Seating.Length).", + "type": "actuator" + } + }, + "description": "Describes switches related to the seating of the seat.", + "type": "branch" + } + }, + "description": "Seat switch signals", + "type": "branch" + }, + "Tilt": { + "comment": "In VSS it is assumed that tilting a seat affects both seating (seat bottom) and backrest, i.e. the angle between seating and backrest will not be affected when changing Tilt.", + "datatype": "float", + "description": "Tilting of seat (seating and backrest) relative to vehicle x-axis. 0 = seat bottom is flat, seat bottom and vehicle x-axis are parallel. Positive degrees = seat tilted backwards, seat x-axis tilted upward, seat z-axis is tilted backward.", + "type": "actuator", + "unit": "degrees" + } + }, + "description": "All seats.", + "type": "branch" + }, + "Middle": { + "children": { + "Airbag": { + "children": { + "IsDeployed": { + "datatype": "boolean", + "description": "Airbag deployment status. True = Airbag deployed. False = Airbag not deployed.", + "type": "sensor" + } + }, + "description": "Airbag signals.", + "type": "branch" + }, + "Backrest": { + "children": { + "Lumbar": { + "children": { + "Height": { + "datatype": "uint8", + "description": "Height of lumbar support. Position is relative within available movable range of the lumbar support. 0 = Lowermost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + }, + "Support": { + "datatype": "float", + "description": "Lumbar support (in/out position). 0 = Innermost position. 100 = Outermost position.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + } + }, + "description": "Adjustable lumbar support mechanisms in seats allow the user to change the seat back shape.", + "type": "branch" + }, + "Recline": { + "comment": "Seat z-axis depends on seat tilt. This means that movement of backrest due to seat tilting will not affect Backrest.Recline as long as the angle between Seating and Backrest are constant. Absolute recline relative to vehicle z-axis can be calculated as Tilt + Backrest.Recline.", + "datatype": "float", + "description": "Backrest recline compared to seat z-axis (seat vertical axis). 0 degrees = Upright/Vertical backrest. Negative degrees for forward recline. Positive degrees for backward recline.", + "type": "actuator", + "unit": "degrees" + }, + "SideBolster": { + "children": { + "Support": { + "datatype": "float", + "description": "Side bolster support. 0 = Minimum support (widest side bolster setting). 100 = Maximum support.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + } + }, + "description": "Backrest side bolster (lumbar side support) settings.", + "type": "branch" + } + }, + "description": "Describes signals related to the backrest of the seat.", + "type": "branch" + }, + "Headrest": { + "children": { + "Angle": { + "datatype": "float", + "description": "Headrest angle, relative to backrest, 0 degrees if parallel to backrest, Positive degrees = tilted forward.", + "type": "actuator", + "unit": "degrees" + }, + "Height": { + "datatype": "uint8", + "description": "Position of headrest relative to movable range of the head rest. 0 = Bottommost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + } + }, + "description": "Headrest settings.", + "type": "branch" + }, + "Heating": { + "datatype": "int8", + "description": "Seat cooling / heating. 0 = off. -100 = max cold. +100 = max heat.", + "max": 100, + "min": -100, + "type": "actuator", + "unit": "percent" + }, + "Height": { + "datatype": "uint16", + "description": "Seat position on vehicle z-axis. Position is relative within available movable range of the seating. 0 = Lowermost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + }, + "IsBelted": { + "datatype": "boolean", + "description": "Is the belt engaged.", + "type": "sensor" + }, + "IsOccupied": { + "datatype": "boolean", + "description": "Does the seat have a passenger in it.", + "type": "sensor" + }, + "Massage": { + "datatype": "uint8", + "description": "Seat massage level. 0 = off. 100 = max massage.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Occupant": { + "children": { + "Identifier": { + "children": { + "Issuer": { + "datatype": "string", + "description": "Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com.", + "type": "sensor" + }, + "Subject": { + "datatype": "string", + "description": "Subject for the authentication of the occupant e.g. UserID 7331677.", + "type": "sensor" + } + }, + "description": "Identifier attributes based on OAuth 2.0.", + "type": "branch" + } + }, + "description": "Occupant data.", + "type": "branch" + }, + "Position": { + "datatype": "uint16", + "description": "Seat position on vehicle x-axis. Position is relative to the frontmost position supported by the seat. 0 = Frontmost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + }, + "Seating": { + "children": { + "Length": { + "datatype": "uint16", + "description": "Length adjustment of seating. 0 = Adjustable part of seating in rearmost position (Shortest length of seating).", + "min": 0, + "type": "actuator", + "unit": "mm" + } + }, + "comment": "Seating is here considered as the part of the seat that supports the thighs. Additional cushions (if any) for support of lower legs is not covered by this branch.", + "description": "Describes signals related to the seat bottom of the seat.", + "type": "branch" + }, + "Switch": { + "children": { + "Backrest": { + "children": { + "IsReclineBackwardEngaged": { + "datatype": "boolean", + "description": "Backrest recline backward switch engaged (SingleSeat.Backrest.Recline).", + "type": "actuator" + }, + "IsReclineForwardEngaged": { + "datatype": "boolean", + "description": "Backrest recline forward switch engaged (SingleSeat.Backrest.Recline).", + "type": "actuator" + }, + "Lumbar": { + "children": { + "IsDownEngaged": { + "datatype": "boolean", + "description": "Lumbar down switch engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + }, + "IsLessSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for less lumbar support engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + }, + "IsMoreSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for more lumbar support engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + }, + "IsUpEngaged": { + "datatype": "boolean", + "description": "Lumbar up switch engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Backrest.Lumbar.", + "type": "branch" + }, + "SideBolster": { + "children": { + "IsLessSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for less side bolster support engaged (SingleSeat.Backrest.SideBolster.Support).", + "type": "actuator" + }, + "IsMoreSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for more side bolster support engaged (SingleSeat.Backrest.SideBolster.Support).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Backrest.SideBolster.", + "type": "branch" + } + }, + "description": "Describes switches related to the backrest of the seat.", + "type": "branch" + }, + "Headrest": { + "children": { + "IsBackwardEngaged": { + "datatype": "boolean", + "description": "Head rest backward switch engaged (SingleSeat.Headrest.Angle).", + "type": "actuator" + }, + "IsDownEngaged": { + "datatype": "boolean", + "description": "Head rest down switch engaged (SingleSeat.Headrest.Height).", + "type": "actuator" + }, + "IsForwardEngaged": { + "datatype": "boolean", + "description": "Head rest forward switch engaged (SingleSeat.Headrest.Angle).", + "type": "actuator" + }, + "IsUpEngaged": { + "datatype": "boolean", + "description": "Head rest up switch engaged (SingleSeat.Headrest.Height).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Headrest.", + "type": "branch" + }, + "IsBackwardEngaged": { + "datatype": "boolean", + "description": "Seat backward switch engaged (SingleSeat.Position).", + "type": "actuator" + }, + "IsCoolerEngaged": { + "datatype": "boolean", + "description": "Cooler switch for Seat heater (SingleSeat.Heating).", + "type": "actuator" + }, + "IsDownEngaged": { + "datatype": "boolean", + "description": "Seat down switch engaged (SingleSeat.Height).", + "type": "actuator" + }, + "IsForwardEngaged": { + "datatype": "boolean", + "description": "Seat forward switch engaged (SingleSeat.Position).", + "type": "actuator" + }, + "IsTiltBackwardEngaged": { + "datatype": "boolean", + "description": "Tilt backward switch engaged (SingleSeat.Tilt).", + "type": "actuator" + }, + "IsTiltForwardEngaged": { + "datatype": "boolean", + "description": "Tilt forward switch engaged (SingleSeat.Tilt).", + "type": "actuator" + }, + "IsUpEngaged": { + "datatype": "boolean", + "description": "Seat up switch engaged (SingleSeat.Height).", + "type": "actuator" + }, + "IsWarmerEngaged": { + "datatype": "boolean", + "description": "Warmer switch for Seat heater (SingleSeat.Heating).", + "type": "actuator" + }, + "Massage": { + "children": { + "IsDecreaseEngaged": { + "datatype": "boolean", + "description": "Decrease massage level switch engaged (SingleSeat.Massage).", + "type": "actuator" + }, + "IsIncreaseEngaged": { + "datatype": "boolean", + "description": "Increase massage level switch engaged (SingleSeat.Massage).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Massage.", + "type": "branch" + }, + "Seating": { + "children": { + "IsBackwardEngaged": { + "datatype": "boolean", + "description": "Is switch to decrease seating length engaged (SingleSeat.Seating.Length).", + "type": "actuator" + }, + "IsForwardEngaged": { + "datatype": "boolean", + "description": "Is switch to increase seating length engaged (SingleSeat.Seating.Length).", + "type": "actuator" + } + }, + "description": "Describes switches related to the seating of the seat.", + "type": "branch" + } + }, + "description": "Seat switch signals", + "type": "branch" + }, + "Tilt": { + "comment": "In VSS it is assumed that tilting a seat affects both seating (seat bottom) and backrest, i.e. the angle between seating and backrest will not be affected when changing Tilt.", + "datatype": "float", + "description": "Tilting of seat (seating and backrest) relative to vehicle x-axis. 0 = seat bottom is flat, seat bottom and vehicle x-axis are parallel. Positive degrees = seat tilted backwards, seat x-axis tilted upward, seat z-axis is tilted backward.", + "type": "actuator", + "unit": "degrees" + } + }, + "description": "All seats.", + "type": "branch" + }, + "PassengerSide": { + "children": { + "Airbag": { + "children": { + "IsDeployed": { + "datatype": "boolean", + "description": "Airbag deployment status. True = Airbag deployed. False = Airbag not deployed.", + "type": "sensor" + } + }, + "description": "Airbag signals.", + "type": "branch" + }, + "Backrest": { + "children": { + "Lumbar": { + "children": { + "Height": { + "datatype": "uint8", + "description": "Height of lumbar support. Position is relative within available movable range of the lumbar support. 0 = Lowermost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + }, + "Support": { + "datatype": "float", + "description": "Lumbar support (in/out position). 0 = Innermost position. 100 = Outermost position.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + } + }, + "description": "Adjustable lumbar support mechanisms in seats allow the user to change the seat back shape.", + "type": "branch" + }, + "Recline": { + "comment": "Seat z-axis depends on seat tilt. This means that movement of backrest due to seat tilting will not affect Backrest.Recline as long as the angle between Seating and Backrest are constant. Absolute recline relative to vehicle z-axis can be calculated as Tilt + Backrest.Recline.", + "datatype": "float", + "description": "Backrest recline compared to seat z-axis (seat vertical axis). 0 degrees = Upright/Vertical backrest. Negative degrees for forward recline. Positive degrees for backward recline.", + "type": "actuator", + "unit": "degrees" + }, + "SideBolster": { + "children": { + "Support": { + "datatype": "float", + "description": "Side bolster support. 0 = Minimum support (widest side bolster setting). 100 = Maximum support.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + } + }, + "description": "Backrest side bolster (lumbar side support) settings.", + "type": "branch" + } + }, + "description": "Describes signals related to the backrest of the seat.", + "type": "branch" + }, + "Headrest": { + "children": { + "Angle": { + "datatype": "float", + "description": "Headrest angle, relative to backrest, 0 degrees if parallel to backrest, Positive degrees = tilted forward.", + "type": "actuator", + "unit": "degrees" + }, + "Height": { + "datatype": "uint8", + "description": "Position of headrest relative to movable range of the head rest. 0 = Bottommost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + } + }, + "description": "Headrest settings.", + "type": "branch" + }, + "Heating": { + "datatype": "int8", + "description": "Seat cooling / heating. 0 = off. -100 = max cold. +100 = max heat.", + "max": 100, + "min": -100, + "type": "actuator", + "unit": "percent" + }, + "Height": { + "datatype": "uint16", + "description": "Seat position on vehicle z-axis. Position is relative within available movable range of the seating. 0 = Lowermost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + }, + "IsBelted": { + "datatype": "boolean", + "description": "Is the belt engaged.", + "type": "sensor" + }, + "IsOccupied": { + "datatype": "boolean", + "description": "Does the seat have a passenger in it.", + "type": "sensor" + }, + "Massage": { + "datatype": "uint8", + "description": "Seat massage level. 0 = off. 100 = max massage.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Occupant": { + "children": { + "Identifier": { + "children": { + "Issuer": { + "datatype": "string", + "description": "Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com.", + "type": "sensor" + }, + "Subject": { + "datatype": "string", + "description": "Subject for the authentication of the occupant e.g. UserID 7331677.", + "type": "sensor" + } + }, + "description": "Identifier attributes based on OAuth 2.0.", + "type": "branch" + } + }, + "description": "Occupant data.", + "type": "branch" + }, + "Position": { + "datatype": "uint16", + "description": "Seat position on vehicle x-axis. Position is relative to the frontmost position supported by the seat. 0 = Frontmost position supported.", + "min": 0, + "type": "actuator", + "unit": "mm" + }, + "Seating": { + "children": { + "Length": { + "datatype": "uint16", + "description": "Length adjustment of seating. 0 = Adjustable part of seating in rearmost position (Shortest length of seating).", + "min": 0, + "type": "actuator", + "unit": "mm" + } + }, + "comment": "Seating is here considered as the part of the seat that supports the thighs. Additional cushions (if any) for support of lower legs is not covered by this branch.", + "description": "Describes signals related to the seat bottom of the seat.", + "type": "branch" + }, + "Switch": { + "children": { + "Backrest": { + "children": { + "IsReclineBackwardEngaged": { + "datatype": "boolean", + "description": "Backrest recline backward switch engaged (SingleSeat.Backrest.Recline).", + "type": "actuator" + }, + "IsReclineForwardEngaged": { + "datatype": "boolean", + "description": "Backrest recline forward switch engaged (SingleSeat.Backrest.Recline).", + "type": "actuator" + }, + "Lumbar": { + "children": { + "IsDownEngaged": { + "datatype": "boolean", + "description": "Lumbar down switch engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + }, + "IsLessSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for less lumbar support engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + }, + "IsMoreSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for more lumbar support engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + }, + "IsUpEngaged": { + "datatype": "boolean", + "description": "Lumbar up switch engaged (SingleSeat.Backrest.Lumbar.Support).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Backrest.Lumbar.", + "type": "branch" + }, + "SideBolster": { + "children": { + "IsLessSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for less side bolster support engaged (SingleSeat.Backrest.SideBolster.Support).", + "type": "actuator" + }, + "IsMoreSupportEngaged": { + "datatype": "boolean", + "description": "Is switch for more side bolster support engaged (SingleSeat.Backrest.SideBolster.Support).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Backrest.SideBolster.", + "type": "branch" + } + }, + "description": "Describes switches related to the backrest of the seat.", + "type": "branch" + }, + "Headrest": { + "children": { + "IsBackwardEngaged": { + "datatype": "boolean", + "description": "Head rest backward switch engaged (SingleSeat.Headrest.Angle).", + "type": "actuator" + }, + "IsDownEngaged": { + "datatype": "boolean", + "description": "Head rest down switch engaged (SingleSeat.Headrest.Height).", + "type": "actuator" + }, + "IsForwardEngaged": { + "datatype": "boolean", + "description": "Head rest forward switch engaged (SingleSeat.Headrest.Angle).", + "type": "actuator" + }, + "IsUpEngaged": { + "datatype": "boolean", + "description": "Head rest up switch engaged (SingleSeat.Headrest.Height).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Headrest.", + "type": "branch" + }, + "IsBackwardEngaged": { + "datatype": "boolean", + "description": "Seat backward switch engaged (SingleSeat.Position).", + "type": "actuator" + }, + "IsCoolerEngaged": { + "datatype": "boolean", + "description": "Cooler switch for Seat heater (SingleSeat.Heating).", + "type": "actuator" + }, + "IsDownEngaged": { + "datatype": "boolean", + "description": "Seat down switch engaged (SingleSeat.Height).", + "type": "actuator" + }, + "IsForwardEngaged": { + "datatype": "boolean", + "description": "Seat forward switch engaged (SingleSeat.Position).", + "type": "actuator" + }, + "IsTiltBackwardEngaged": { + "datatype": "boolean", + "description": "Tilt backward switch engaged (SingleSeat.Tilt).", + "type": "actuator" + }, + "IsTiltForwardEngaged": { + "datatype": "boolean", + "description": "Tilt forward switch engaged (SingleSeat.Tilt).", + "type": "actuator" + }, + "IsUpEngaged": { + "datatype": "boolean", + "description": "Seat up switch engaged (SingleSeat.Height).", + "type": "actuator" + }, + "IsWarmerEngaged": { + "datatype": "boolean", + "description": "Warmer switch for Seat heater (SingleSeat.Heating).", + "type": "actuator" + }, + "Massage": { + "children": { + "IsDecreaseEngaged": { + "datatype": "boolean", + "description": "Decrease massage level switch engaged (SingleSeat.Massage).", + "type": "actuator" + }, + "IsIncreaseEngaged": { + "datatype": "boolean", + "description": "Increase massage level switch engaged (SingleSeat.Massage).", + "type": "actuator" + } + }, + "description": "Switches for SingleSeat.Massage.", + "type": "branch" + }, + "Seating": { + "children": { + "IsBackwardEngaged": { + "datatype": "boolean", + "description": "Is switch to decrease seating length engaged (SingleSeat.Seating.Length).", + "type": "actuator" + }, + "IsForwardEngaged": { + "datatype": "boolean", + "description": "Is switch to increase seating length engaged (SingleSeat.Seating.Length).", + "type": "actuator" + } + }, + "description": "Describes switches related to the seating of the seat.", + "type": "branch" + } + }, + "description": "Seat switch signals", + "type": "branch" + }, + "Tilt": { + "comment": "In VSS it is assumed that tilting a seat affects both seating (seat bottom) and backrest, i.e. the angle between seating and backrest will not be affected when changing Tilt.", + "datatype": "float", + "description": "Tilting of seat (seating and backrest) relative to vehicle x-axis. 0 = seat bottom is flat, seat bottom and vehicle x-axis are parallel. Positive degrees = seat tilted backwards, seat x-axis tilted upward, seat z-axis is tilted backward.", + "type": "actuator", + "unit": "degrees" + } + }, + "description": "All seats.", + "type": "branch" + } + }, + "description": "All seats.", + "type": "branch" + } + }, + "description": "All seats.", + "type": "branch" + }, + "SeatPosCount": { + "comment": "Default value corresponds to two seats in front row and 3 seats in second row.", + "datatype": "uint8[]", + "default": [ + 2, + 3 + ], + "description": "Number of seats across each row from the front to the rear.", + "type": "attribute" + }, + "SeatRowCount": { + "comment": "Default value corresponds to two rows of seats.", + "datatype": "uint8", + "default": 2, + "description": "Number of seat rows in vehicle.", + "type": "attribute" + }, + "Sunroof": { + "children": { + "Position": { + "datatype": "int8", + "description": "Sunroof position. 0 = Fully closed 100 = Fully opened. -100 = Fully tilted.", + "max": 100, + "min": -100, + "type": "sensor", + "unit": "percent" + }, + "Shade": { + "children": { + "Position": { + "datatype": "uint8", + "description": "Position of window blind. 0 = Fully retracted. 100 = Fully deployed.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Switch": { + "allowed": [ + "INACTIVE", + "CLOSE", + "OPEN", + "ONE_SHOT_CLOSE", + "ONE_SHOT_OPEN" + ], + "datatype": "string", + "description": "Switch controlling sliding action such as window, sunroof, or blind.", + "type": "actuator" + } + }, + "description": "Sun roof shade status.", + "type": "branch" + }, + "Switch": { + "allowed": [ + "INACTIVE", + "CLOSE", + "OPEN", + "ONE_SHOT_CLOSE", + "ONE_SHOT_OPEN", + "TILT_UP", + "TILT_DOWN" + ], + "datatype": "string", + "description": "Switch controlling sliding action such as window, sunroof, or shade.", + "type": "actuator" + } + }, + "description": "Sun roof status.", + "type": "branch" + }, + "Telltale": { + "children": { + "ECT": { + "children": { + "Status": { + "allowed": [ + "OFF", + "RED", + "YELLOW", + "INFO", + "NOT_AVAILABLE" + ], + "datatype": "string", + "description": "The telltale indicating the status of the engine coolant temperature.\n", + "type": "sensor" + } + }, + "description": "A set of telltale status values.", + "type": "branch" + }, + "Engine": { + "children": { + "Status": { + "allowed": [ + "OFF", + "RED", + "YELLOW", + "INFO", + "NOT_AVAILABLE" + ], + "datatype": "string", + "description": "The telltale indicating the status of the engine.\n", + "type": "sensor" + } + }, + "description": "A set of telltale status values.", + "type": "branch" + }, + "EngineOil": { + "children": { + "Status": { + "allowed": [ + "OFF", + "RED", + "YELLOW", + "INFO", + "NOT_AVAILABLE" + ], + "datatype": "string", + "description": "The telltale indicating the status of the engine oil level.\n", + "type": "sensor" + } + }, + "description": "A set of telltale status values.", + "type": "branch" + }, + "FuelLevel": { + "children": { + "Status": { + "allowed": [ + "OFF", + "RED", + "YELLOW", + "INFO", + "NOT_AVAILABLE" + ], + "datatype": "string", + "description": "The telltale indicating the status of the fuel level.\n", + "type": "sensor" + } + }, + "description": "A set of telltale status values.", + "type": "branch" + }, + "ParkingBrake": { + "children": { + "Status": { + "allowed": [ + "OFF", + "RED", + "YELLOW", + "INFO", + "NOT_AVAILABLE" + ], + "datatype": "string", + "description": "The telltale indicating the status of the parking brake.\n", + "type": "sensor" + } + }, + "description": "A set of telltale status values.", + "type": "branch" + } + }, + "description": "A set of telltale status values.", + "type": "branch" + } + }, + "description": "All in-cabin components, including doors.", + "type": "branch" + }, + "CargoVolume": { + "datatype": "float", + "description": "The available volume for cargo or luggage. For automobiles, this is usually the trunk volume.", + "min": 0, + "type": "attribute", + "unit": "l" + }, + "Chassis": { + "children": { + "Accelerator": { + "children": { + "PedalPosition": { + "datatype": "uint8", + "description": "Accelerator pedal position as percent. 0 = Not depressed. 100 = Fully depressed.", + "max": 100, + "min": 0, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Accelerator signals", + "type": "branch" + }, + "Axle": { + "children": { + "Row1": { + "children": { + "AxleWidth": { + "comment": "Corresponds to SAE J1100-2009 W113.", + "datatype": "uint16", + "description": "The lateral distance between the wheel mounting faces, measured along the spindle axis.", + "type": "attribute", + "unit": "mm" + }, + "SteeringAngle": { + "comment": "Single track two-axle model steering angle refers to the angle that a centrally mounted wheel would have.", + "datatype": "float", + "description": "Single track two-axle model steering angle. Angle according to ISO 8855. Positive = degrees to the left. Negative = degrees to the right.", + "type": "sensor", + "unit": "degrees" + }, + "TireAspectRatio": { + "datatype": "uint8", + "description": "Aspect ratio between tire section height and tire section width, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "percent" + }, + "TireDiameter": { + "datatype": "float", + "description": "Outer diameter of tires, in inches, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "inch" + }, + "TireWidth": { + "datatype": "uint16", + "description": "Nominal section width of tires, in mm, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "mm" + }, + "TrackWidth": { + "comment": "Corresponds to SAE J1100-2009 W102.", + "datatype": "uint16", + "description": "The lateral distance between the centers of the wheels, measured along the spindle, or axle axis. If there are dual rear wheels, measure from the midway points between the inner and outer tires.", + "type": "attribute", + "unit": "mm" + }, + "TreadWidth": { + "comment": "Corresponds to SAE J1100-2009 W101.", + "datatype": "uint16", + "description": "The lateral distance between the centerlines of the base tires at ground, including camber angle. If there are dual rear wheels, measure from the midway points between the inner and outer tires.", + "type": "attribute", + "unit": "mm" + }, + "Wheel": { + "children": { + "Left": { + "children": { + "Brake": { + "children": { + "FluidLevel": { + "datatype": "uint8", + "description": "Brake fluid level as percent. 0 = Empty. 100 = Full.", + "max": 100, + "type": "sensor", + "unit": "percent" + }, + "IsBrakesWorn": { + "datatype": "boolean", + "description": "Brake pad wear status. True = Worn. False = Not Worn.", + "type": "sensor" + }, + "IsFluidLevelLow": { + "datatype": "boolean", + "description": "Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK.", + "type": "sensor" + }, + "PadWear": { + "datatype": "uint8", + "description": "Brake pad wear as percent. 0 = No Wear. 100 = Worn.", + "max": 100, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Brake signals for wheel", + "type": "branch" + }, + "Speed": { + "datatype": "float", + "description": "Rotational speed of a vehicle's wheel.", + "type": "sensor", + "unit": "km/h" + }, + "Tire": { + "children": { + "IsPressureLow": { + "datatype": "boolean", + "description": "Tire Pressure Status. True = Low tire pressure. False = Good tire pressure.", + "type": "sensor" + }, + "Pressure": { + "datatype": "uint16", + "description": "Tire pressure in kilo-Pascal.", + "type": "sensor", + "unit": "kPa" + }, + "Temperature": { + "datatype": "float", + "description": "Tire temperature in Celsius.", + "type": "sensor", + "unit": "celsius" + } + }, + "description": "Tire signals for wheel.", + "type": "branch" + } + }, + "description": "Wheel signals for axle", + "type": "branch" + }, + "Right": { + "children": { + "Brake": { + "children": { + "FluidLevel": { + "datatype": "uint8", + "description": "Brake fluid level as percent. 0 = Empty. 100 = Full.", + "max": 100, + "type": "sensor", + "unit": "percent" + }, + "IsBrakesWorn": { + "datatype": "boolean", + "description": "Brake pad wear status. True = Worn. False = Not Worn.", + "type": "sensor" + }, + "IsFluidLevelLow": { + "datatype": "boolean", + "description": "Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK.", + "type": "sensor" + }, + "PadWear": { + "datatype": "uint8", + "description": "Brake pad wear as percent. 0 = No Wear. 100 = Worn.", + "max": 100, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Brake signals for wheel", + "type": "branch" + }, + "Speed": { + "datatype": "float", + "description": "Rotational speed of a vehicle's wheel.", + "type": "sensor", + "unit": "km/h" + }, + "Tire": { + "children": { + "IsPressureLow": { + "datatype": "boolean", + "description": "Tire Pressure Status. True = Low tire pressure. False = Good tire pressure.", + "type": "sensor" + }, + "Pressure": { + "datatype": "uint16", + "description": "Tire pressure in kilo-Pascal.", + "type": "sensor", + "unit": "kPa" + }, + "Temperature": { + "datatype": "float", + "description": "Tire temperature in Celsius.", + "type": "sensor", + "unit": "celsius" + } + }, + "description": "Tire signals for wheel.", + "type": "branch" + } + }, + "description": "Wheel signals for axle", + "type": "branch" + } + }, + "description": "Wheel signals for axle", + "type": "branch" + }, + "WheelCount": { + "datatype": "uint8", + "description": "Number of wheels on the axle", + "type": "attribute" + }, + "WheelDiameter": { + "datatype": "float", + "description": "Diameter of wheels (rims without tires), in inches, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "inch" + }, + "WheelWidth": { + "datatype": "float", + "description": "Width of wheels (rims without tires), in inches, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "inch" + } + }, + "description": "Axle signals", + "type": "branch" + }, + "Row2": { + "children": { + "AxleWidth": { + "comment": "Corresponds to SAE J1100-2009 W113.", + "datatype": "uint16", + "description": "The lateral distance between the wheel mounting faces, measured along the spindle axis.", + "type": "attribute", + "unit": "mm" + }, + "SteeringAngle": { + "comment": "Single track two-axle model steering angle refers to the angle that a centrally mounted wheel would have.", + "datatype": "float", + "description": "Single track two-axle model steering angle. Angle according to ISO 8855. Positive = degrees to the left. Negative = degrees to the right.", + "type": "sensor", + "unit": "degrees" + }, + "TireAspectRatio": { + "datatype": "uint8", + "description": "Aspect ratio between tire section height and tire section width, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "percent" + }, + "TireDiameter": { + "datatype": "float", + "description": "Outer diameter of tires, in inches, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "inch" + }, + "TireWidth": { + "datatype": "uint16", + "description": "Nominal section width of tires, in mm, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "mm" + }, + "TrackWidth": { + "comment": "Corresponds to SAE J1100-2009 W102.", + "datatype": "uint16", + "description": "The lateral distance between the centers of the wheels, measured along the spindle, or axle axis. If there are dual rear wheels, measure from the midway points between the inner and outer tires.", + "type": "attribute", + "unit": "mm" + }, + "TreadWidth": { + "comment": "Corresponds to SAE J1100-2009 W101.", + "datatype": "uint16", + "description": "The lateral distance between the centerlines of the base tires at ground, including camber angle. If there are dual rear wheels, measure from the midway points between the inner and outer tires.", + "type": "attribute", + "unit": "mm" + }, + "Wheel": { + "children": { + "Left": { + "children": { + "Brake": { + "children": { + "FluidLevel": { + "datatype": "uint8", + "description": "Brake fluid level as percent. 0 = Empty. 100 = Full.", + "max": 100, + "type": "sensor", + "unit": "percent" + }, + "IsBrakesWorn": { + "datatype": "boolean", + "description": "Brake pad wear status. True = Worn. False = Not Worn.", + "type": "sensor" + }, + "IsFluidLevelLow": { + "datatype": "boolean", + "description": "Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK.", + "type": "sensor" + }, + "PadWear": { + "datatype": "uint8", + "description": "Brake pad wear as percent. 0 = No Wear. 100 = Worn.", + "max": 100, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Brake signals for wheel", + "type": "branch" + }, + "Speed": { + "datatype": "float", + "description": "Rotational speed of a vehicle's wheel.", + "type": "sensor", + "unit": "km/h" + }, + "Tire": { + "children": { + "IsPressureLow": { + "datatype": "boolean", + "description": "Tire Pressure Status. True = Low tire pressure. False = Good tire pressure.", + "type": "sensor" + }, + "Pressure": { + "datatype": "uint16", + "description": "Tire pressure in kilo-Pascal.", + "type": "sensor", + "unit": "kPa" + }, + "Temperature": { + "datatype": "float", + "description": "Tire temperature in Celsius.", + "type": "sensor", + "unit": "celsius" + } + }, + "description": "Tire signals for wheel.", + "type": "branch" + } + }, + "description": "Wheel signals for axle", + "type": "branch" + }, + "Right": { + "children": { + "Brake": { + "children": { + "FluidLevel": { + "datatype": "uint8", + "description": "Brake fluid level as percent. 0 = Empty. 100 = Full.", + "max": 100, + "type": "sensor", + "unit": "percent" + }, + "IsBrakesWorn": { + "datatype": "boolean", + "description": "Brake pad wear status. True = Worn. False = Not Worn.", + "type": "sensor" + }, + "IsFluidLevelLow": { + "datatype": "boolean", + "description": "Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK.", + "type": "sensor" + }, + "PadWear": { + "datatype": "uint8", + "description": "Brake pad wear as percent. 0 = No Wear. 100 = Worn.", + "max": 100, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Brake signals for wheel", + "type": "branch" + }, + "Speed": { + "datatype": "float", + "description": "Rotational speed of a vehicle's wheel.", + "type": "sensor", + "unit": "km/h" + }, + "Tire": { + "children": { + "IsPressureLow": { + "datatype": "boolean", + "description": "Tire Pressure Status. True = Low tire pressure. False = Good tire pressure.", + "type": "sensor" + }, + "Pressure": { + "datatype": "uint16", + "description": "Tire pressure in kilo-Pascal.", + "type": "sensor", + "unit": "kPa" + }, + "Temperature": { + "datatype": "float", + "description": "Tire temperature in Celsius.", + "type": "sensor", + "unit": "celsius" + } + }, + "description": "Tire signals for wheel.", + "type": "branch" + } + }, + "description": "Wheel signals for axle", + "type": "branch" + } + }, + "description": "Wheel signals for axle", + "type": "branch" + }, + "WheelCount": { + "datatype": "uint8", + "description": "Number of wheels on the axle", + "type": "attribute" + }, + "WheelDiameter": { + "datatype": "float", + "description": "Diameter of wheels (rims without tires), in inches, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "inch" + }, + "WheelWidth": { + "datatype": "float", + "description": "Width of wheels (rims without tires), in inches, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "inch" + } + }, + "description": "Axle signals", + "type": "branch" + }, + "Row3": { + "children": { + "AxleWidth": { + "comment": "Corresponds to SAE J1100-2009 W113.", + "datatype": "uint16", + "description": "The lateral distance between the wheel mounting faces, measured along the spindle axis.", + "type": "attribute", + "unit": "mm" + }, + "SteeringAngle": { + "comment": "Single track two-axle model steering angle refers to the angle that a centrally mounted wheel would have.", + "datatype": "float", + "description": "Single track two-axle model steering angle. Angle according to ISO 8855. Positive = degrees to the left. Negative = degrees to the right.", + "type": "sensor", + "unit": "degrees" + }, + "TireAspectRatio": { + "datatype": "uint8", + "description": "Aspect ratio between tire section height and tire section width, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "percent" + }, + "TireDiameter": { + "datatype": "float", + "description": "Outer diameter of tires, in inches, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "inch" + }, + "TireWidth": { + "datatype": "uint16", + "description": "Nominal section width of tires, in mm, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "mm" + }, + "TrackWidth": { + "comment": "Corresponds to SAE J1100-2009 W102.", + "datatype": "uint16", + "description": "The lateral distance between the centers of the wheels, measured along the spindle, or axle axis. If there are dual rear wheels, measure from the midway points between the inner and outer tires.", + "type": "attribute", + "unit": "mm" + }, + "TreadWidth": { + "comment": "Corresponds to SAE J1100-2009 W101.", + "datatype": "uint16", + "description": "The lateral distance between the centerlines of the base tires at ground, including camber angle. If there are dual rear wheels, measure from the midway points between the inner and outer tires.", + "type": "attribute", + "unit": "mm" + }, + "Wheel": { + "children": { + "Left": { + "children": { + "Brake": { + "children": { + "FluidLevel": { + "datatype": "uint8", + "description": "Brake fluid level as percent. 0 = Empty. 100 = Full.", + "max": 100, + "type": "sensor", + "unit": "percent" + }, + "IsBrakesWorn": { + "datatype": "boolean", + "description": "Brake pad wear status. True = Worn. False = Not Worn.", + "type": "sensor" + }, + "IsFluidLevelLow": { + "datatype": "boolean", + "description": "Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK.", + "type": "sensor" + }, + "PadWear": { + "datatype": "uint8", + "description": "Brake pad wear as percent. 0 = No Wear. 100 = Worn.", + "max": 100, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Brake signals for wheel", + "type": "branch" + }, + "Speed": { + "datatype": "float", + "description": "Rotational speed of a vehicle's wheel.", + "type": "sensor", + "unit": "km/h" + }, + "Tire": { + "children": { + "IsPressureLow": { + "datatype": "boolean", + "description": "Tire Pressure Status. True = Low tire pressure. False = Good tire pressure.", + "type": "sensor" + }, + "Pressure": { + "datatype": "uint16", + "description": "Tire pressure in kilo-Pascal.", + "type": "sensor", + "unit": "kPa" + }, + "Temperature": { + "datatype": "float", + "description": "Tire temperature in Celsius.", + "type": "sensor", + "unit": "celsius" + } + }, + "description": "Tire signals for wheel.", + "type": "branch" + } + }, + "description": "Wheel signals for axle", + "type": "branch" + }, + "Right": { + "children": { + "Brake": { + "children": { + "FluidLevel": { + "datatype": "uint8", + "description": "Brake fluid level as percent. 0 = Empty. 100 = Full.", + "max": 100, + "type": "sensor", + "unit": "percent" + }, + "IsBrakesWorn": { + "datatype": "boolean", + "description": "Brake pad wear status. True = Worn. False = Not Worn.", + "type": "sensor" + }, + "IsFluidLevelLow": { + "datatype": "boolean", + "description": "Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK.", + "type": "sensor" + }, + "PadWear": { + "datatype": "uint8", + "description": "Brake pad wear as percent. 0 = No Wear. 100 = Worn.", + "max": 100, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Brake signals for wheel", + "type": "branch" + }, + "Speed": { + "datatype": "float", + "description": "Rotational speed of a vehicle's wheel.", + "type": "sensor", + "unit": "km/h" + }, + "Tire": { + "children": { + "IsPressureLow": { + "datatype": "boolean", + "description": "Tire Pressure Status. True = Low tire pressure. False = Good tire pressure.", + "type": "sensor" + }, + "Pressure": { + "datatype": "uint16", + "description": "Tire pressure in kilo-Pascal.", + "type": "sensor", + "unit": "kPa" + }, + "Temperature": { + "datatype": "float", + "description": "Tire temperature in Celsius.", + "type": "sensor", + "unit": "celsius" + } + }, + "description": "Tire signals for wheel.", + "type": "branch" + } + }, + "description": "Wheel signals for axle", + "type": "branch" + } + }, + "description": "Wheel signals for axle", + "type": "branch" + }, + "WheelCount": { + "datatype": "uint8", + "description": "Number of wheels on the axle", + "type": "attribute" + }, + "WheelDiameter": { + "datatype": "float", + "description": "Diameter of wheels (rims without tires), in inches, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "inch" + }, + "WheelWidth": { + "datatype": "float", + "description": "Width of wheels (rims without tires), in inches, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "inch" + } + }, + "description": "Axle signals", + "type": "branch" + }, + "Row4": { + "children": { + "AxleWidth": { + "comment": "Corresponds to SAE J1100-2009 W113.", + "datatype": "uint16", + "description": "The lateral distance between the wheel mounting faces, measured along the spindle axis.", + "type": "attribute", + "unit": "mm" + }, + "SteeringAngle": { + "comment": "Single track two-axle model steering angle refers to the angle that a centrally mounted wheel would have.", + "datatype": "float", + "description": "Single track two-axle model steering angle. Angle according to ISO 8855. Positive = degrees to the left. Negative = degrees to the right.", + "type": "sensor", + "unit": "degrees" + }, + "TireAspectRatio": { + "datatype": "uint8", + "description": "Aspect ratio between tire section height and tire section width, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "percent" + }, + "TireDiameter": { + "datatype": "float", + "description": "Outer diameter of tires, in inches, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "inch" + }, + "TireWidth": { + "datatype": "uint16", + "description": "Nominal section width of tires, in mm, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "mm" + }, + "TrackWidth": { + "comment": "Corresponds to SAE J1100-2009 W102.", + "datatype": "uint16", + "description": "The lateral distance between the centers of the wheels, measured along the spindle, or axle axis. If there are dual rear wheels, measure from the midway points between the inner and outer tires.", + "type": "attribute", + "unit": "mm" + }, + "TreadWidth": { + "comment": "Corresponds to SAE J1100-2009 W101.", + "datatype": "uint16", + "description": "The lateral distance between the centerlines of the base tires at ground, including camber angle. If there are dual rear wheels, measure from the midway points between the inner and outer tires.", + "type": "attribute", + "unit": "mm" + }, + "Wheel": { + "children": { + "Left": { + "children": { + "Brake": { + "children": { + "FluidLevel": { + "datatype": "uint8", + "description": "Brake fluid level as percent. 0 = Empty. 100 = Full.", + "max": 100, + "type": "sensor", + "unit": "percent" + }, + "IsBrakesWorn": { + "datatype": "boolean", + "description": "Brake pad wear status. True = Worn. False = Not Worn.", + "type": "sensor" + }, + "IsFluidLevelLow": { + "datatype": "boolean", + "description": "Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK.", + "type": "sensor" + }, + "PadWear": { + "datatype": "uint8", + "description": "Brake pad wear as percent. 0 = No Wear. 100 = Worn.", + "max": 100, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Brake signals for wheel", + "type": "branch" + }, + "Speed": { + "datatype": "float", + "description": "Rotational speed of a vehicle's wheel.", + "type": "sensor", + "unit": "km/h" + }, + "Tire": { + "children": { + "IsPressureLow": { + "datatype": "boolean", + "description": "Tire Pressure Status. True = Low tire pressure. False = Good tire pressure.", + "type": "sensor" + }, + "Pressure": { + "datatype": "uint16", + "description": "Tire pressure in kilo-Pascal.", + "type": "sensor", + "unit": "kPa" + }, + "Temperature": { + "datatype": "float", + "description": "Tire temperature in Celsius.", + "type": "sensor", + "unit": "celsius" + } + }, + "description": "Tire signals for wheel.", + "type": "branch" + } + }, + "description": "Wheel signals for axle", + "type": "branch" + }, + "Right": { + "children": { + "Brake": { + "children": { + "FluidLevel": { + "datatype": "uint8", + "description": "Brake fluid level as percent. 0 = Empty. 100 = Full.", + "max": 100, + "type": "sensor", + "unit": "percent" + }, + "IsBrakesWorn": { + "datatype": "boolean", + "description": "Brake pad wear status. True = Worn. False = Not Worn.", + "type": "sensor" + }, + "IsFluidLevelLow": { + "datatype": "boolean", + "description": "Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK.", + "type": "sensor" + }, + "PadWear": { + "datatype": "uint8", + "description": "Brake pad wear as percent. 0 = No Wear. 100 = Worn.", + "max": 100, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Brake signals for wheel", + "type": "branch" + }, + "Speed": { + "datatype": "float", + "description": "Rotational speed of a vehicle's wheel.", + "type": "sensor", + "unit": "km/h" + }, + "Tire": { + "children": { + "IsPressureLow": { + "datatype": "boolean", + "description": "Tire Pressure Status. True = Low tire pressure. False = Good tire pressure.", + "type": "sensor" + }, + "Pressure": { + "datatype": "uint16", + "description": "Tire pressure in kilo-Pascal.", + "type": "sensor", + "unit": "kPa" + }, + "Temperature": { + "datatype": "float", + "description": "Tire temperature in Celsius.", + "type": "sensor", + "unit": "celsius" + } + }, + "description": "Tire signals for wheel.", + "type": "branch" + } + }, + "description": "Wheel signals for axle", + "type": "branch" + } + }, + "description": "Wheel signals for axle", + "type": "branch" + }, + "WheelCount": { + "datatype": "uint8", + "description": "Number of wheels on the axle", + "type": "attribute" + }, + "WheelDiameter": { + "datatype": "float", + "description": "Diameter of wheels (rims without tires), in inches, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "inch" + }, + "WheelWidth": { + "datatype": "float", + "description": "Width of wheels (rims without tires), in inches, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "inch" + } + }, + "description": "Axle signals", + "type": "branch" + }, + "Row5": { + "children": { + "AxleWidth": { + "comment": "Corresponds to SAE J1100-2009 W113.", + "datatype": "uint16", + "description": "The lateral distance between the wheel mounting faces, measured along the spindle axis.", + "type": "attribute", + "unit": "mm" + }, + "SteeringAngle": { + "comment": "Single track two-axle model steering angle refers to the angle that a centrally mounted wheel would have.", + "datatype": "float", + "description": "Single track two-axle model steering angle. Angle according to ISO 8855. Positive = degrees to the left. Negative = degrees to the right.", + "type": "sensor", + "unit": "degrees" + }, + "TireAspectRatio": { + "datatype": "uint8", + "description": "Aspect ratio between tire section height and tire section width, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "percent" + }, + "TireDiameter": { + "datatype": "float", + "description": "Outer diameter of tires, in inches, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "inch" + }, + "TireWidth": { + "datatype": "uint16", + "description": "Nominal section width of tires, in mm, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "mm" + }, + "TrackWidth": { + "comment": "Corresponds to SAE J1100-2009 W102.", + "datatype": "uint16", + "description": "The lateral distance between the centers of the wheels, measured along the spindle, or axle axis. If there are dual rear wheels, measure from the midway points between the inner and outer tires.", + "type": "attribute", + "unit": "mm" + }, + "TreadWidth": { + "comment": "Corresponds to SAE J1100-2009 W101.", + "datatype": "uint16", + "description": "The lateral distance between the centerlines of the base tires at ground, including camber angle. If there are dual rear wheels, measure from the midway points between the inner and outer tires.", + "type": "attribute", + "unit": "mm" + }, + "Wheel": { + "children": { + "Left": { + "children": { + "Brake": { + "children": { + "FluidLevel": { + "datatype": "uint8", + "description": "Brake fluid level as percent. 0 = Empty. 100 = Full.", + "max": 100, + "type": "sensor", + "unit": "percent" + }, + "IsBrakesWorn": { + "datatype": "boolean", + "description": "Brake pad wear status. True = Worn. False = Not Worn.", + "type": "sensor" + }, + "IsFluidLevelLow": { + "datatype": "boolean", + "description": "Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK.", + "type": "sensor" + }, + "PadWear": { + "datatype": "uint8", + "description": "Brake pad wear as percent. 0 = No Wear. 100 = Worn.", + "max": 100, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Brake signals for wheel", + "type": "branch" + }, + "Speed": { + "datatype": "float", + "description": "Rotational speed of a vehicle's wheel.", + "type": "sensor", + "unit": "km/h" + }, + "Tire": { + "children": { + "IsPressureLow": { + "datatype": "boolean", + "description": "Tire Pressure Status. True = Low tire pressure. False = Good tire pressure.", + "type": "sensor" + }, + "Pressure": { + "datatype": "uint16", + "description": "Tire pressure in kilo-Pascal.", + "type": "sensor", + "unit": "kPa" + }, + "Temperature": { + "datatype": "float", + "description": "Tire temperature in Celsius.", + "type": "sensor", + "unit": "celsius" + } + }, + "description": "Tire signals for wheel.", + "type": "branch" + } + }, + "description": "Wheel signals for axle", + "type": "branch" + }, + "Right": { + "children": { + "Brake": { + "children": { + "FluidLevel": { + "datatype": "uint8", + "description": "Brake fluid level as percent. 0 = Empty. 100 = Full.", + "max": 100, + "type": "sensor", + "unit": "percent" + }, + "IsBrakesWorn": { + "datatype": "boolean", + "description": "Brake pad wear status. True = Worn. False = Not Worn.", + "type": "sensor" + }, + "IsFluidLevelLow": { + "datatype": "boolean", + "description": "Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK.", + "type": "sensor" + }, + "PadWear": { + "datatype": "uint8", + "description": "Brake pad wear as percent. 0 = No Wear. 100 = Worn.", + "max": 100, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Brake signals for wheel", + "type": "branch" + }, + "Speed": { + "datatype": "float", + "description": "Rotational speed of a vehicle's wheel.", + "type": "sensor", + "unit": "km/h" + }, + "Tire": { + "children": { + "IsPressureLow": { + "datatype": "boolean", + "description": "Tire Pressure Status. True = Low tire pressure. False = Good tire pressure.", + "type": "sensor" + }, + "Pressure": { + "datatype": "uint16", + "description": "Tire pressure in kilo-Pascal.", + "type": "sensor", + "unit": "kPa" + }, + "Temperature": { + "datatype": "float", + "description": "Tire temperature in Celsius.", + "type": "sensor", + "unit": "celsius" + } + }, + "description": "Tire signals for wheel.", + "type": "branch" + } + }, + "description": "Wheel signals for axle", + "type": "branch" + } + }, + "description": "Wheel signals for axle", + "type": "branch" + }, + "WheelCount": { + "datatype": "uint8", + "description": "Number of wheels on the axle", + "type": "attribute" + }, + "WheelDiameter": { + "datatype": "float", + "description": "Diameter of wheels (rims without tires), in inches, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "inch" + }, + "WheelWidth": { + "datatype": "float", + "description": "Width of wheels (rims without tires), in inches, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "inch" + } + }, + "description": "Axle signals", + "type": "branch" + }, + "Row6": { + "children": { + "AxleWidth": { + "comment": "Corresponds to SAE J1100-2009 W113.", + "datatype": "uint16", + "description": "The lateral distance between the wheel mounting faces, measured along the spindle axis.", + "type": "attribute", + "unit": "mm" + }, + "SteeringAngle": { + "comment": "Single track two-axle model steering angle refers to the angle that a centrally mounted wheel would have.", + "datatype": "float", + "description": "Single track two-axle model steering angle. Angle according to ISO 8855. Positive = degrees to the left. Negative = degrees to the right.", + "type": "sensor", + "unit": "degrees" + }, + "TireAspectRatio": { + "datatype": "uint8", + "description": "Aspect ratio between tire section height and tire section width, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "percent" + }, + "TireDiameter": { + "datatype": "float", + "description": "Outer diameter of tires, in inches, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "inch" + }, + "TireWidth": { + "datatype": "uint16", + "description": "Nominal section width of tires, in mm, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "mm" + }, + "TrackWidth": { + "comment": "Corresponds to SAE J1100-2009 W102.", + "datatype": "uint16", + "description": "The lateral distance between the centers of the wheels, measured along the spindle, or axle axis. If there are dual rear wheels, measure from the midway points between the inner and outer tires.", + "type": "attribute", + "unit": "mm" + }, + "TreadWidth": { + "comment": "Corresponds to SAE J1100-2009 W101.", + "datatype": "uint16", + "description": "The lateral distance between the centerlines of the base tires at ground, including camber angle. If there are dual rear wheels, measure from the midway points between the inner and outer tires.", + "type": "attribute", + "unit": "mm" + }, + "Wheel": { + "children": { + "Left": { + "children": { + "Brake": { + "children": { + "FluidLevel": { + "datatype": "uint8", + "description": "Brake fluid level as percent. 0 = Empty. 100 = Full.", + "max": 100, + "type": "sensor", + "unit": "percent" + }, + "IsBrakesWorn": { + "datatype": "boolean", + "description": "Brake pad wear status. True = Worn. False = Not Worn.", + "type": "sensor" + }, + "IsFluidLevelLow": { + "datatype": "boolean", + "description": "Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK.", + "type": "sensor" + }, + "PadWear": { + "datatype": "uint8", + "description": "Brake pad wear as percent. 0 = No Wear. 100 = Worn.", + "max": 100, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Brake signals for wheel", + "type": "branch" + }, + "Speed": { + "datatype": "float", + "description": "Rotational speed of a vehicle's wheel.", + "type": "sensor", + "unit": "km/h" + }, + "Tire": { + "children": { + "IsPressureLow": { + "datatype": "boolean", + "description": "Tire Pressure Status. True = Low tire pressure. False = Good tire pressure.", + "type": "sensor" + }, + "Pressure": { + "datatype": "uint16", + "description": "Tire pressure in kilo-Pascal.", + "type": "sensor", + "unit": "kPa" + }, + "Temperature": { + "datatype": "float", + "description": "Tire temperature in Celsius.", + "type": "sensor", + "unit": "celsius" + } + }, + "description": "Tire signals for wheel.", + "type": "branch" + } + }, + "description": "Wheel signals for axle", + "type": "branch" + }, + "Right": { + "children": { + "Brake": { + "children": { + "FluidLevel": { + "datatype": "uint8", + "description": "Brake fluid level as percent. 0 = Empty. 100 = Full.", + "max": 100, + "type": "sensor", + "unit": "percent" + }, + "IsBrakesWorn": { + "datatype": "boolean", + "description": "Brake pad wear status. True = Worn. False = Not Worn.", + "type": "sensor" + }, + "IsFluidLevelLow": { + "datatype": "boolean", + "description": "Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK.", + "type": "sensor" + }, + "PadWear": { + "datatype": "uint8", + "description": "Brake pad wear as percent. 0 = No Wear. 100 = Worn.", + "max": 100, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Brake signals for wheel", + "type": "branch" + }, + "Speed": { + "datatype": "float", + "description": "Rotational speed of a vehicle's wheel.", + "type": "sensor", + "unit": "km/h" + }, + "Tire": { + "children": { + "IsPressureLow": { + "datatype": "boolean", + "description": "Tire Pressure Status. True = Low tire pressure. False = Good tire pressure.", + "type": "sensor" + }, + "Pressure": { + "datatype": "uint16", + "description": "Tire pressure in kilo-Pascal.", + "type": "sensor", + "unit": "kPa" + }, + "Temperature": { + "datatype": "float", + "description": "Tire temperature in Celsius.", + "type": "sensor", + "unit": "celsius" + } + }, + "description": "Tire signals for wheel.", + "type": "branch" + } + }, + "description": "Wheel signals for axle", + "type": "branch" + } + }, + "description": "Wheel signals for axle", + "type": "branch" + }, + "WheelCount": { + "datatype": "uint8", + "description": "Number of wheels on the axle", + "type": "attribute" + }, + "WheelDiameter": { + "datatype": "float", + "description": "Diameter of wheels (rims without tires), in inches, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "inch" + }, + "WheelWidth": { + "datatype": "float", + "description": "Width of wheels (rims without tires), in inches, as per ETRTO / TRA standard.", + "type": "attribute", + "unit": "inch" + } + }, + "description": "Axle signals", + "type": "branch" + } + }, + "description": "Axle signals", + "type": "branch" + }, + "AxleCount": { + "datatype": "uint8", + "default": 2, + "description": "Number of axles on the vehicle", + "type": "attribute" + }, + "Brake": { + "children": { + "Circuit1": { + "children": { + "AirPressure": { + "datatype": "uint32", + "description": "The pneumatic pressure in the primary service brake circuit or reservoir, supplying the rear axle.\n", + "type": "sensor", + "unit": "kPa" + }, + "IsDriverEmergencyBrakingDetected": { + "comment": "Detection of emergency braking can trigger Emergency Brake Assist (EBA) to engage.", + "datatype": "boolean", + "description": "Indicates if emergency braking initiated by driver is detected. True = Emergency braking detected. False = Emergency braking not detected.", + "type": "sensor" + }, + "PedalPosition": { + "datatype": "uint8", + "description": "Brake pedal position as percent. 0 = Not depressed. 100 = Fully depressed.", + "max": 100, + "min": 0, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Brake system signals", + "type": "branch" + }, + "Circuit2": { + "children": { + "AirPressure": { + "datatype": "uint32", + "description": "The pneumatic pressure in the secondary service brake circuit or reservoir, supplying the front axle.\n", + "type": "sensor", + "unit": "kPa" + }, + "IsDriverEmergencyBrakingDetected": { + "comment": "Detection of emergency braking can trigger Emergency Brake Assist (EBA) to engage.", + "datatype": "boolean", + "description": "Indicates if emergency braking initiated by driver is detected. True = Emergency braking detected. False = Emergency braking not detected.", + "type": "sensor" + }, + "PedalPosition": { + "datatype": "uint8", + "description": "Brake pedal position as percent. 0 = Not depressed. 100 = Fully depressed.", + "max": 100, + "min": 0, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Brake system signals", + "type": "branch" + } + }, + "description": "Brake system signals", + "type": "branch" + }, + "ParkingBrake": { + "children": { + "IsAutoApplyEnabled": { + "datatype": "boolean", + "description": "Indicates if parking brake will be automatically engaged when the vehicle engine is turned off.", + "type": "actuator" + }, + "IsEngaged": { + "datatype": "boolean", + "description": "Parking brake status. True = Parking Brake is Engaged. False = Parking Brake is not Engaged.", + "type": "sensor" + } + }, + "description": "Parking brake signals", + "type": "branch" + }, + "SteeringWheel": { + "children": { + "Angle": { + "datatype": "int16", + "description": "Steering wheel angle. Positive = degrees to the left. Negative = degrees to the right.", + "type": "sensor", + "unit": "degrees" + }, + "Extension": { + "datatype": "uint8", + "description": "Steering wheel column extension from dashboard. 0 = Closest to dashboard. 100 = Furthest from dashboard.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "Tilt": { + "datatype": "uint8", + "description": "Steering wheel column tilt. 0 = Lowest position. 100 = Highest position.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + } + }, + "description": "Steering wheel signals", + "type": "branch" + }, + "Wheelbase": { + "datatype": "uint16", + "default": 0, + "description": "Overall wheelbase, in mm.", + "type": "attribute", + "unit": "mm" + } + }, + "description": "All data concerning steering, suspension, wheels, and brakes.", + "type": "branch" + }, + "Connectivity": { + "children": { + "IsConnectivityAvailable": { + "comment": "This signal can be used by onboard vehicle services to decide what features that shall be offered to the driver, for example disable the 'check for update' button if vehicle does not have connectivity.", + "datatype": "boolean", + "description": "Indicates if connectivity between vehicle and cloud is available. True = Connectivity is available. False = Connectivity is not available.", + "type": "sensor" + } + }, + "description": "Connectivity data.", + "type": "branch" + }, + "CurbWeight": { + "datatype": "uint16", + "default": 0, + "description": "Vehicle curb weight, including all liquids and full tank of fuel, but no cargo or passengers.", + "type": "attribute", + "unit": "kg" + }, + "CurrentLocation": { + "children": { + "Altitude": { + "datatype": "double", + "description": "Current altitude relative to WGS 84 reference ellipsoid, as measured at the position of GNSS receiver antenna.", + "type": "sensor", + "unit": "m" + }, + "GNSSReceiver": { + "children": { + "FixType": { + "allowed": [ + "NONE", + "TWO_D", + "TWO_D_SATELLITE_BASED_AUGMENTATION", + "TWO_D_GROUND_BASED_AUGMENTATION", + "TWO_D_SATELLITE_AND_GROUND_BASED_AUGMENTATION", + "THREE_D", + "THREE_D_SATELLITE_BASED_AUGMENTATION", + "THREE_D_GROUND_BASED_AUGMENTATION", + "THREE_D_SATELLITE_AND_GROUND_BASED_AUGMENTATION" + ], + "datatype": "string", + "description": "Fix status of GNSS receiver.", + "type": "sensor" + }, + "MountingPosition": { + "children": { + "X": { + "datatype": "int16", + "description": "Mounting position of GNSS receiver antenna relative to vehicle coordinate system. Axis definitions according to ISO 8855. Origin at center of (first) rear axle. Positive values = forward of rear axle. Negative values = backward of rear axle.", + "type": "attribute", + "unit": "mm" + }, + "Y": { + "datatype": "int16", + "description": "Mounting position of GNSS receiver antenna relative to vehicle coordinate system. Axis definitions according to ISO 8855. Origin at center of (first) rear axle. Positive values = left of origin. Negative values = right of origin. Left/Right is as seen from driver perspective, i.e. by a person looking forward.", + "type": "attribute", + "unit": "mm" + }, + "Z": { + "datatype": "int16", + "description": "Mounting position of GNSS receiver on Z-axis. Axis definitions according to ISO 8855. Origin at center of (first) rear axle. Positive values = above center of rear axle. Negative values = below center of rear axle.", + "type": "attribute", + "unit": "mm" + } + }, + "description": "Mounting position of GNSS receiver antenna relative to vehicle coordinate system. Axis definitions according to ISO 8855. Origin at center of (first) rear axle.", + "type": "branch" + } + }, + "description": "Information on the GNSS receiver used for determining current location.", + "type": "branch" + }, + "Heading": { + "datatype": "double", + "description": "Current heading relative to geographic north. 0 = North, 90 = East, 180 = South, 270 = West.", + "max": 360, + "min": 0, + "type": "sensor", + "unit": "degrees" + }, + "HorizontalAccuracy": { + "datatype": "double", + "description": "Accuracy of the latitude and longitude coordinates.", + "type": "sensor", + "unit": "m" + }, + "Latitude": { + "datatype": "double", + "description": "Current latitude of vehicle in WGS 84 geodetic coordinates, as measured at the position of GNSS receiver antenna.", + "max": 90, + "min": -90, + "type": "sensor", + "unit": "degrees" + }, + "Longitude": { + "datatype": "double", + "description": "Current longitude of vehicle in WGS 84 geodetic coordinates, as measured at the position of GNSS receiver antenna.", + "max": 180, + "min": -180, + "type": "sensor", + "unit": "degrees" + }, + "Speed": { + "datatype": "double", + "description": "The vehicle's current speed as as measured by the GNSS receiver antenna.\n", + "type": "sensor", + "unit": "km/h" + }, + "Timestamp": { + "datatype": "string", + "description": "Timestamp from GNSS system for current location, formatted according to ISO 8601 with UTC time zone.", + "type": "sensor" + }, + "VerticalAccuracy": { + "datatype": "double", + "description": "Accuracy of altitude.", + "type": "sensor", + "unit": "m" + } + }, + "description": "The current latitude and longitude of the vehicle.", + "type": "branch" + }, + "CurrentOverallWeight": { + "datatype": "uint32", + "description": "Current overall Vehicle weight. Including passengers, cargo and other load inside the car.", + "type": "sensor", + "unit": "kg" + }, + "Driver": { + "children": { + "AttentiveProbability": { + "datatype": "float", + "description": "Probability of attentiveness of the driver.", + "max": 100, + "min": 0, + "type": "sensor", + "unit": "percent" + }, + "DistractionLevel": { + "datatype": "float", + "description": "Distraction level of the driver, which can be evaluated by multiple factors e.g. driving situation, acoustical or optical signals inside the cockpit, ongoing phone calls.", + "max": 100, + "min": 0, + "type": "sensor", + "unit": "percent" + }, + "FatigueLevel": { + "datatype": "float", + "description": "Fatigue level of the driver, which can be evaluated by multiple factors e.g. trip time, behaviour of steering, eye status.", + "max": 100, + "min": 0, + "type": "sensor", + "unit": "percent" + }, + "HeartRate": { + "datatype": "uint16", + "description": "Heart rate of the driver.", + "type": "sensor", + "unit": "bpm" + }, + "Identifier": { + "children": { + "Issuer": { + "datatype": "string", + "description": "Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com.", + "type": "sensor" + }, + "Subject": { + "datatype": "string", + "description": "Subject for the authentication of the occupant e.g. UserID 7331677.", + "type": "sensor" + } + }, + "description": "Identifier attributes based on OAuth 2.0.", + "type": "branch" + }, + "IsEyesOnRoad": { + "datatype": "boolean", + "description": "Has driver the eyes on road or not?", + "type": "sensor" + }, + "IsHandsOnWheel": { + "datatype": "boolean", + "description": "Are the driver's hands on the steering wheel or not?", + "type": "sensor" + } + }, + "description": "Driver data.", + "type": "branch" + }, + "EmissionsCO2": { + "datatype": "int16", + "description": "The CO2 emissions.", + "type": "attribute", + "unit": "g/km" + }, + "Exterior": { + "children": { + "AirTemperature": { + "datatype": "float", + "description": "Air temperature outside the vehicle.", + "type": "sensor", + "unit": "celsius" + }, + "Humidity": { + "datatype": "float", + "description": "Relative humidity outside the vehicle. 0 = Dry, 100 = Air fully saturated.", + "max": 100, + "min": 0, + "type": "sensor", + "unit": "percent" + }, + "LightIntensity": { + "comment": "Mapping to physical units and calculation method is sensor specific.", + "datatype": "float", + "description": "Light intensity outside the vehicle. 0 = No light detected, 100 = Fully lit.", + "max": 100, + "min": 0, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Information about exterior measured by vehicle.", + "type": "branch" + }, + "GrossWeight": { + "datatype": "uint16", + "default": 0, + "description": "Curb weight of vehicle, including all liquids and full tank of fuel and full load of cargo and passengers.", + "type": "attribute", + "unit": "kg" + }, + "Height": { + "datatype": "uint16", + "default": 0, + "description": "Overall vehicle height.", + "type": "attribute", + "unit": "mm" + }, + "IsBrokenDown": { + "comment": "Actual criteria and method used to decide if a vehicle is broken down is implementation specific.", + "datatype": "boolean", + "description": "Vehicle breakdown or any similar event causing vehicle to stop on the road, that might pose a risk to other road users. True = Vehicle broken down on the road, due to e.g. engine problems, flat tire, out of gas, brake problems. False = Vehicle not broken down.", + "type": "sensor" + }, + "IsMoving": { + "datatype": "boolean", + "description": "Indicates whether the vehicle is stationary or moving.", + "type": "sensor" + }, + "Length": { + "datatype": "uint16", + "default": 0, + "description": "Overall vehicle length.", + "type": "attribute", + "unit": "mm" + }, + "LowVoltageBattery": { + "children": { + "CurrentCurrent": { + "datatype": "float", + "description": "Current current flowing in/out of the low voltage battery. Positive = Current flowing in to battery, e.g. during charging or driving. Negative = Current flowing out of battery, e.g. when using the battery to start a combustion engine.", + "type": "sensor", + "unit": "A" + }, + "CurrentVoltage": { + "datatype": "float", + "description": "Current Voltage of the low voltage battery.", + "type": "sensor", + "unit": "V" + }, + "NominalCapacity": { + "datatype": "uint16", + "description": "Nominal capacity of the low voltage battery.", + "type": "attribute", + "unit": "Ah" + }, + "NominalVoltage": { + "comment": "Nominal voltage typically refers to voltage of fully charged battery when delivering rated capacity.", + "datatype": "uint16", + "description": "Nominal Voltage of the battery.", + "type": "attribute", + "unit": "V" + } + }, + "description": "Signals related to low voltage battery.", + "type": "branch" + }, + "LowVoltageSystemState": { + "allowed": [ + "UNDEFINED", + "LOCK", + "OFF", + "ACC", + "ON", + "START" + ], + "datatype": "string", + "description": "State of the supply voltage of the control units (usually 12V).", + "type": "sensor" + }, + "MaxTowBallWeight": { + "datatype": "uint16", + "default": 0, + "description": "Maximum vertical weight on the tow ball of a trailer.", + "type": "attribute", + "unit": "kg" + }, + "MaxTowWeight": { + "datatype": "uint16", + "default": 0, + "description": "Maximum weight of trailer.", + "type": "attribute", + "unit": "kg" + }, + "OBD": { + "children": { + "AbsoluteLoad": { + "datatype": "float", + "description": "PID 43 - Absolute load value", + "type": "sensor", + "unit": "percent" + }, + "AcceleratorPositionD": { + "datatype": "float", + "description": "PID 49 - Accelerator pedal position D", + "type": "sensor", + "unit": "percent" + }, + "AcceleratorPositionE": { + "datatype": "float", + "description": "PID 4A - Accelerator pedal position E", + "type": "sensor", + "unit": "percent" + }, + "AcceleratorPositionF": { + "datatype": "float", + "description": "PID 4B - Accelerator pedal position F", + "type": "sensor", + "unit": "percent" + }, + "AirStatus": { + "datatype": "string", + "description": "PID 12 - Secondary air status", + "type": "sensor" + }, + "AmbientAirTemperature": { + "datatype": "float", + "description": "PID 46 - Ambient air temperature", + "type": "sensor", + "unit": "celsius" + }, + "BarometricPressure": { + "datatype": "float", + "description": "PID 33 - Barometric pressure", + "type": "sensor", + "unit": "kPa" + }, + "Catalyst": { + "children": { + "Bank1": { + "children": { + "Temperature1": { + "datatype": "float", + "description": "PID 3C - Catalyst temperature from bank 1, sensor 1", + "type": "sensor", + "unit": "celsius" + }, + "Temperature2": { + "datatype": "float", + "description": "PID 3E - Catalyst temperature from bank 1, sensor 2", + "type": "sensor", + "unit": "celsius" + } + }, + "description": "Catalyst bank 1 signals", + "type": "branch" + }, + "Bank2": { + "children": { + "Temperature1": { + "datatype": "float", + "description": "PID 3D - Catalyst temperature from bank 2, sensor 1", + "type": "sensor", + "unit": "celsius" + }, + "Temperature2": { + "datatype": "float", + "description": "PID 3F - Catalyst temperature from bank 2, sensor 2", + "type": "sensor", + "unit": "celsius" + } + }, + "description": "Catalyst bank 2 signals", + "type": "branch" + } + }, + "description": "Catalyst signals", + "type": "branch" + }, + "CommandedEGR": { + "datatype": "float", + "description": "PID 2C - Commanded exhaust gas recirculation (EGR)", + "type": "sensor", + "unit": "percent" + }, + "CommandedEVAP": { + "datatype": "float", + "description": "PID 2E - Commanded evaporative purge (EVAP) valve", + "type": "sensor", + "unit": "percent" + }, + "CommandedEquivalenceRatio": { + "datatype": "float", + "description": "PID 44 - Commanded equivalence ratio", + "type": "sensor", + "unit": "ratio" + }, + "ControlModuleVoltage": { + "datatype": "float", + "description": "PID 42 - Control module voltage", + "type": "sensor", + "unit": "V" + }, + "CoolantTemperature": { + "datatype": "float", + "description": "PID 05 - Coolant temperature", + "type": "sensor", + "unit": "celsius" + }, + "DTCList": { + "datatype": "string[]", + "description": "List of currently active DTCs formatted according OBD II (SAE-J2012DA_201812) standard ([P|C|B|U]XXXXX )", + "type": "sensor" + }, + "DistanceSinceDTCClear": { + "datatype": "float", + "description": "PID 31 - Distance traveled since codes cleared", + "type": "sensor", + "unit": "km" + }, + "DistanceWithMIL": { + "datatype": "float", + "description": "PID 21 - Distance traveled with MIL on", + "type": "sensor", + "unit": "km" + }, + "DriveCycleStatus": { + "children": { + "DTCCount": { + "datatype": "uint8", + "description": "Number of sensor Trouble Codes (DTC)", + "type": "sensor" + }, + "IgnitionType": { + "allowed": [ + "SPARK", + "COMPRESSION" + ], + "datatype": "string", + "description": "Type of the ignition for ICE - spark = spark plug ignition, compression = self-igniting (Diesel engines)", + "type": "sensor" + }, + "IsMILOn": { + "datatype": "boolean", + "description": "Malfunction Indicator Light (MIL) - False = Off, True = On", + "type": "sensor" + } + }, + "description": "PID 41 - OBD status for the current drive cycle", + "type": "branch" + }, + "EGRError": { + "datatype": "float", + "description": "PID 2D - Exhaust gas recirculation (EGR) error", + "type": "sensor", + "unit": "percent" + }, + "EVAPVaporPressure": { + "datatype": "float", + "description": "PID 32 - Evaporative purge (EVAP) system pressure", + "type": "sensor", + "unit": "Pa" + }, + "EVAPVaporPressureAbsolute": { + "datatype": "float", + "description": "PID 53 - Absolute evaporative purge (EVAP) system pressure", + "type": "sensor", + "unit": "kPa" + }, + "EVAPVaporPressureAlternate": { + "datatype": "float", + "description": "PID 54 - Alternate evaporative purge (EVAP) system pressure", + "type": "sensor", + "unit": "Pa" + }, + "EngineLoad": { + "datatype": "float", + "description": "PID 04 - Engine load in percent - 0 = no load, 100 = full load", + "type": "sensor", + "unit": "percent" + }, + "EngineSpeed": { + "datatype": "float", + "description": "PID 0C - Engine speed measured as rotations per minute", + "type": "sensor", + "unit": "rpm" + }, + "EthanolPercent": { + "datatype": "float", + "description": "PID 52 - Percentage of ethanol in the fuel", + "type": "sensor", + "unit": "percent" + }, + "FreezeDTC": { + "datatype": "string", + "description": "PID 02 - DTC that triggered the freeze frame", + "type": "sensor" + }, + "FuelInjectionTiming": { + "datatype": "float", + "description": "PID 5D - Fuel injection timing", + "type": "sensor", + "unit": "degrees" + }, + "FuelLevel": { + "datatype": "float", + "description": "PID 2F - Fuel level in the fuel tank", + "type": "sensor", + "unit": "percent" + }, + "FuelPressure": { + "datatype": "float", + "description": "PID 0A - Fuel pressure", + "type": "sensor", + "unit": "kPa" + }, + "FuelRailPressureAbsolute": { + "datatype": "float", + "description": "PID 59 - Absolute fuel rail pressure", + "type": "sensor", + "unit": "kPa" + }, + "FuelRailPressureDirect": { + "datatype": "float", + "description": "PID 23 - Fuel rail pressure direct inject", + "type": "sensor", + "unit": "kPa" + }, + "FuelRailPressureVac": { + "datatype": "float", + "description": "PID 22 - Fuel rail pressure relative to vacuum", + "type": "sensor", + "unit": "kPa" + }, + "FuelRate": { + "datatype": "float", + "description": "PID 5E - Engine fuel rate", + "type": "sensor", + "unit": "l/h" + }, + "FuelStatus": { + "datatype": "string", + "description": "PID 03 - Fuel status", + "type": "sensor" + }, + "FuelType": { + "datatype": "uint8", + "description": "PID 51 - Fuel type", + "max": 23, + "min": 0, + "type": "attribute" + }, + "HybridBatteryRemaining": { + "datatype": "float", + "description": "PID 5B - Remaining life of hybrid battery", + "type": "sensor", + "unit": "percent" + }, + "IntakeTemp": { + "datatype": "float", + "description": "PID 0F - Intake temperature", + "type": "sensor", + "unit": "celsius" + }, + "IsPTOActive": { + "datatype": "boolean", + "description": "PID 1E - Auxiliary input status (power take off)", + "type": "sensor" + }, + "LongTermFuelTrim1": { + "datatype": "float", + "description": "PID 07 - Long Term (learned) Fuel Trim - Bank 1 - negative percent leaner, positive percent richer", + "type": "sensor", + "unit": "percent" + }, + "LongTermFuelTrim2": { + "datatype": "float", + "description": "PID 09 - Long Term (learned) Fuel Trim - Bank 2 - negative percent leaner, positive percent richer", + "type": "sensor", + "unit": "percent" + }, + "LongTermO2Trim1": { + "datatype": "float", + "description": "PID 56 (byte A) - Long term secondary O2 trim - Bank 1", + "type": "sensor", + "unit": "percent" + }, + "LongTermO2Trim2": { + "datatype": "float", + "description": "PID 58 (byte A) - Long term secondary O2 trim - Bank 2", + "type": "sensor", + "unit": "percent" + }, + "LongTermO2Trim3": { + "datatype": "float", + "description": "PID 56 (byte B) - Long term secondary O2 trim - Bank 3", + "type": "sensor", + "unit": "percent" + }, + "LongTermO2Trim4": { + "datatype": "float", + "description": "PID 58 (byte B) - Long term secondary O2 trim - Bank 4", + "type": "sensor", + "unit": "percent" + }, + "MAF": { + "datatype": "float", + "description": "PID 10 - Grams of air drawn into engine per second", + "type": "sensor", + "unit": "g/s" + }, + "MAP": { + "datatype": "float", + "description": "PID 0B - Intake manifold pressure", + "type": "sensor", + "unit": "kPa" + }, + "MaxMAF": { + "datatype": "float", + "description": "PID 50 - Maximum flow for mass air flow sensor", + "type": "sensor", + "unit": "g/s" + }, + "O2": { + "children": { + "Sensor1": { + "children": { + "ShortTermFuelTrim": { + "datatype": "float", + "description": "PID 1x (byte B) - Short term fuel trim", + "type": "sensor", + "unit": "percent" + }, + "Voltage": { + "datatype": "float", + "description": "PID 1x (byte A) - Sensor voltage", + "type": "sensor", + "unit": "V" + } + }, + "description": "Oxygen sensors (PID 14 - PID 1B)", + "type": "branch" + }, + "Sensor2": { + "children": { + "ShortTermFuelTrim": { + "datatype": "float", + "description": "PID 1x (byte B) - Short term fuel trim", + "type": "sensor", + "unit": "percent" + }, + "Voltage": { + "datatype": "float", + "description": "PID 1x (byte A) - Sensor voltage", + "type": "sensor", + "unit": "V" + } + }, + "description": "Oxygen sensors (PID 14 - PID 1B)", + "type": "branch" + }, + "Sensor3": { + "children": { + "ShortTermFuelTrim": { + "datatype": "float", + "description": "PID 1x (byte B) - Short term fuel trim", + "type": "sensor", + "unit": "percent" + }, + "Voltage": { + "datatype": "float", + "description": "PID 1x (byte A) - Sensor voltage", + "type": "sensor", + "unit": "V" + } + }, + "description": "Oxygen sensors (PID 14 - PID 1B)", + "type": "branch" + }, + "Sensor4": { + "children": { + "ShortTermFuelTrim": { + "datatype": "float", + "description": "PID 1x (byte B) - Short term fuel trim", + "type": "sensor", + "unit": "percent" + }, + "Voltage": { + "datatype": "float", + "description": "PID 1x (byte A) - Sensor voltage", + "type": "sensor", + "unit": "V" + } + }, + "description": "Oxygen sensors (PID 14 - PID 1B)", + "type": "branch" + }, + "Sensor5": { + "children": { + "ShortTermFuelTrim": { + "datatype": "float", + "description": "PID 1x (byte B) - Short term fuel trim", + "type": "sensor", + "unit": "percent" + }, + "Voltage": { + "datatype": "float", + "description": "PID 1x (byte A) - Sensor voltage", + "type": "sensor", + "unit": "V" + } + }, + "description": "Oxygen sensors (PID 14 - PID 1B)", + "type": "branch" + }, + "Sensor6": { + "children": { + "ShortTermFuelTrim": { + "datatype": "float", + "description": "PID 1x (byte B) - Short term fuel trim", + "type": "sensor", + "unit": "percent" + }, + "Voltage": { + "datatype": "float", + "description": "PID 1x (byte A) - Sensor voltage", + "type": "sensor", + "unit": "V" + } + }, + "description": "Oxygen sensors (PID 14 - PID 1B)", + "type": "branch" + }, + "Sensor7": { + "children": { + "ShortTermFuelTrim": { + "datatype": "float", + "description": "PID 1x (byte B) - Short term fuel trim", + "type": "sensor", + "unit": "percent" + }, + "Voltage": { + "datatype": "float", + "description": "PID 1x (byte A) - Sensor voltage", + "type": "sensor", + "unit": "V" + } + }, + "description": "Oxygen sensors (PID 14 - PID 1B)", + "type": "branch" + }, + "Sensor8": { + "children": { + "ShortTermFuelTrim": { + "datatype": "float", + "description": "PID 1x (byte B) - Short term fuel trim", + "type": "sensor", + "unit": "percent" + }, + "Voltage": { + "datatype": "float", + "description": "PID 1x (byte A) - Sensor voltage", + "type": "sensor", + "unit": "V" + } + }, + "description": "Oxygen sensors (PID 14 - PID 1B)", + "type": "branch" + } + }, + "description": "Oxygen sensors (PID 14 - PID 1B)", + "type": "branch" + }, + "O2WR": { + "children": { + "Sensor1": { + "children": { + "Current": { + "datatype": "float", + "description": "PID 3x (byte CD) - Current for wide range/band oxygen sensor", + "type": "sensor", + "unit": "A" + }, + "Lambda": { + "datatype": "float", + "description": "PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor", + "type": "sensor" + }, + "Voltage": { + "datatype": "float", + "description": "PID 2x (byte CD) - Voltage for wide range/band oxygen sensor", + "type": "sensor", + "unit": "V" + } + }, + "description": "Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B)", + "type": "branch" + }, + "Sensor2": { + "children": { + "Current": { + "datatype": "float", + "description": "PID 3x (byte CD) - Current for wide range/band oxygen sensor", + "type": "sensor", + "unit": "A" + }, + "Lambda": { + "datatype": "float", + "description": "PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor", + "type": "sensor" + }, + "Voltage": { + "datatype": "float", + "description": "PID 2x (byte CD) - Voltage for wide range/band oxygen sensor", + "type": "sensor", + "unit": "V" + } + }, + "description": "Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B)", + "type": "branch" + }, + "Sensor3": { + "children": { + "Current": { + "datatype": "float", + "description": "PID 3x (byte CD) - Current for wide range/band oxygen sensor", + "type": "sensor", + "unit": "A" + }, + "Lambda": { + "datatype": "float", + "description": "PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor", + "type": "sensor" + }, + "Voltage": { + "datatype": "float", + "description": "PID 2x (byte CD) - Voltage for wide range/band oxygen sensor", + "type": "sensor", + "unit": "V" + } + }, + "description": "Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B)", + "type": "branch" + }, + "Sensor4": { + "children": { + "Current": { + "datatype": "float", + "description": "PID 3x (byte CD) - Current for wide range/band oxygen sensor", + "type": "sensor", + "unit": "A" + }, + "Lambda": { + "datatype": "float", + "description": "PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor", + "type": "sensor" + }, + "Voltage": { + "datatype": "float", + "description": "PID 2x (byte CD) - Voltage for wide range/band oxygen sensor", + "type": "sensor", + "unit": "V" + } + }, + "description": "Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B)", + "type": "branch" + }, + "Sensor5": { + "children": { + "Current": { + "datatype": "float", + "description": "PID 3x (byte CD) - Current for wide range/band oxygen sensor", + "type": "sensor", + "unit": "A" + }, + "Lambda": { + "datatype": "float", + "description": "PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor", + "type": "sensor" + }, + "Voltage": { + "datatype": "float", + "description": "PID 2x (byte CD) - Voltage for wide range/band oxygen sensor", + "type": "sensor", + "unit": "V" + } + }, + "description": "Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B)", + "type": "branch" + }, + "Sensor6": { + "children": { + "Current": { + "datatype": "float", + "description": "PID 3x (byte CD) - Current for wide range/band oxygen sensor", + "type": "sensor", + "unit": "A" + }, + "Lambda": { + "datatype": "float", + "description": "PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor", + "type": "sensor" + }, + "Voltage": { + "datatype": "float", + "description": "PID 2x (byte CD) - Voltage for wide range/band oxygen sensor", + "type": "sensor", + "unit": "V" + } + }, + "description": "Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B)", + "type": "branch" + }, + "Sensor7": { + "children": { + "Current": { + "datatype": "float", + "description": "PID 3x (byte CD) - Current for wide range/band oxygen sensor", + "type": "sensor", + "unit": "A" + }, + "Lambda": { + "datatype": "float", + "description": "PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor", + "type": "sensor" + }, + "Voltage": { + "datatype": "float", + "description": "PID 2x (byte CD) - Voltage for wide range/band oxygen sensor", + "type": "sensor", + "unit": "V" + } + }, + "description": "Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B)", + "type": "branch" + }, + "Sensor8": { + "children": { + "Current": { + "datatype": "float", + "description": "PID 3x (byte CD) - Current for wide range/band oxygen sensor", + "type": "sensor", + "unit": "A" + }, + "Lambda": { + "datatype": "float", + "description": "PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor", + "type": "sensor" + }, + "Voltage": { + "datatype": "float", + "description": "PID 2x (byte CD) - Voltage for wide range/band oxygen sensor", + "type": "sensor", + "unit": "V" + } + }, + "description": "Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B)", + "type": "branch" + } + }, + "description": "Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B)", + "type": "branch" + }, + "OBDStandards": { + "datatype": "uint8", + "description": "PID 1C - OBD standards this vehicle conforms to", + "type": "attribute" + }, + "OilTemperature": { + "datatype": "float", + "description": "PID 5C - Engine oil temperature", + "type": "sensor", + "unit": "celsius" + }, + "OxygenSensorsIn2Banks": { + "datatype": "uint8", + "description": "PID 13 - Presence of oxygen sensors in 2 banks. [A0..A3] == Bank 1, Sensors 1-4. [A4..A7] == Bank 2, Sensors 1-4", + "type": "sensor" + }, + "OxygenSensorsIn4Banks": { + "datatype": "uint8", + "description": "PID 1D - Presence of oxygen sensors in 4 banks. Similar to PID 13, but [A0..A7] == [B1S1, B1S2, B2S1, B2S2, B3S1, B3S2, B4S1, B4S2]", + "type": "sensor" + }, + "PidsA": { + "allowed": [ + "01", + "02", + "03", + "04", + "05", + "06", + "07", + "08", + "09", + "0A", + "0B", + "0C", + "0D", + "0E", + "0F", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "1A", + "1B", + "1C", + "1D", + "1E", + "1F", + "20" + ], + "datatype": "string[]", + "description": "PID 00 - Array of the supported PIDs 01 to 20 in Hexadecimal.", + "type": "attribute" + }, + "PidsB": { + "allowed": [ + "21", + "22", + "23", + "24", + "25", + "26", + "27", + "28", + "29", + "2A", + "2B", + "2C", + "2D", + "2E", + "2F", + "30", + "31", + "32", + "33", + "34", + "35", + "36", + "37", + "38", + "39", + "3A", + "3B", + "3C", + "3D", + "3E", + "3F", + "40" + ], + "datatype": "string[]", + "description": "PID 20 - Array of the supported PIDs 21 to 40 in Hexadecimal.", + "type": "attribute" + }, + "PidsC": { + "allowed": [ + "41", + "42", + "43", + "44", + "45", + "46", + "47", + "48", + "49", + "4A", + "4B", + "4C", + "4D", + "4E", + "4F", + "50", + "51", + "52", + "53", + "54", + "55", + "56", + "57", + "58", + "59", + "5A", + "5B", + "5C", + "5D", + "5E", + "5F", + "60" + ], + "datatype": "string[]", + "description": "PID 40 - Array of the supported PIDs 41 to 60 in Hexadecimal.", + "type": "attribute" + }, + "RelativeAcceleratorPosition": { + "datatype": "float", + "description": "PID 5A - Relative accelerator pedal position", + "type": "sensor", + "unit": "percent" + }, + "RelativeThrottlePosition": { + "datatype": "float", + "description": "PID 45 - Relative throttle position", + "type": "sensor", + "unit": "percent" + }, + "RunTime": { + "datatype": "float", + "description": "PID 1F - Engine run time", + "type": "sensor", + "unit": "s" + }, + "RunTimeMIL": { + "datatype": "float", + "description": "PID 4D - Run time with MIL on", + "type": "sensor", + "unit": "min" + }, + "ShortTermFuelTrim1": { + "datatype": "float", + "description": "PID 06 - Short Term (immediate) Fuel Trim - Bank 1 - negative percent leaner, positive percent richer", + "type": "sensor", + "unit": "percent" + }, + "ShortTermFuelTrim2": { + "datatype": "float", + "description": "PID 08 - Short Term (immediate) Fuel Trim - Bank 2 - negative percent leaner, positive percent richer", + "type": "sensor", + "unit": "percent" + }, + "ShortTermO2Trim1": { + "datatype": "float", + "description": "PID 55 (byte A) - Short term secondary O2 trim - Bank 1", + "type": "sensor", + "unit": "percent" + }, + "ShortTermO2Trim2": { + "datatype": "float", + "description": "PID 57 (byte A) - Short term secondary O2 trim - Bank 2", + "type": "sensor", + "unit": "percent" + }, + "ShortTermO2Trim3": { + "datatype": "float", + "description": "PID 55 (byte B) - Short term secondary O2 trim - Bank 3", + "type": "sensor", + "unit": "percent" + }, + "ShortTermO2Trim4": { + "datatype": "float", + "description": "PID 57 (byte B) - Short term secondary O2 trim - Bank 4", + "type": "sensor", + "unit": "percent" + }, + "Speed": { + "datatype": "float", + "description": "PID 0D - Vehicle speed", + "type": "sensor", + "unit": "km/h" + }, + "Status": { + "children": { + "DTCCount": { + "datatype": "uint8", + "description": "Number of Diagnostic Trouble Codes (DTC)", + "type": "sensor" + }, + "IgnitionType": { + "allowed": [ + "SPARK", + "COMPRESSION" + ], + "datatype": "string", + "description": "Type of the ignition for ICE - spark = spark plug ignition, compression = self-igniting (Diesel engines)", + "type": "attribute" + }, + "IsMILOn": { + "datatype": "boolean", + "description": "Malfunction Indicator Light (MIL) False = Off, True = On", + "type": "sensor" + } + }, + "description": "PID 01 - OBD status", + "type": "branch" + }, + "ThrottleActuator": { + "datatype": "float", + "description": "PID 4C - Commanded throttle actuator", + "type": "sensor", + "unit": "percent" + }, + "ThrottlePosition": { + "datatype": "float", + "description": "PID 11 - Throttle position - 0 = closed throttle, 100 = open throttle", + "type": "sensor", + "unit": "percent" + }, + "ThrottlePositionB": { + "datatype": "float", + "description": "PID 47 - Absolute throttle position B", + "type": "sensor", + "unit": "percent" + }, + "ThrottlePositionC": { + "datatype": "float", + "description": "PID 48 - Absolute throttle position C", + "type": "sensor", + "unit": "percent" + }, + "TimeSinceDTCCleared": { + "datatype": "float", + "description": "PID 4E - Time since trouble codes cleared", + "type": "sensor", + "unit": "min" + }, + "TimingAdvance": { + "datatype": "float", + "description": "PID 0E - Time advance", + "type": "sensor", + "unit": "degrees" + }, + "WarmupsSinceDTCClear": { + "datatype": "uint8", + "description": "PID 30 - Number of warm-ups since codes cleared", + "type": "sensor" + } + }, + "description": "OBD data.", + "type": "branch" + }, + "PowerOptimizeLevel": { + "datatype": "uint8", + "description": "Power optimization level for this branch/subsystem. A higher number indicates more aggressive power optimization. Level 0 indicates that all functionality is enabled, no power optimization enabled. Level 10 indicates most aggressive power optimization mode, only essential functionality enabled.", + "max": 10, + "min": 0, + "type": "actuator" + }, + "Powertrain": { + "children": { + "AccumulatedBrakingEnergy": { + "datatype": "float", + "description": "The accumulated energy from regenerative braking over lifetime.", + "type": "sensor", + "unit": "kWh" + }, + "Brake": { + "children": { + "ActualRetarderPercentage": { + "datatype": "uint8", + "description": "Actual braking torque of the retarder", + "max": 100, + "min": 0, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Recuperation data.", + "type": "branch" + }, + "CombustionEngine": { + "children": { + "ActualEnginePercentTorque": { + "datatype": "uint8", + "description": "The calculated output torque of the engine; the data is transmitted in indicated torque as a percent of reference engine", + "max": 100, + "min": 0, + "type": "sensor", + "unit": "percent" + }, + "AspirationType": { + "allowed": [ + "UNKNOWN", + "NATURAL", + "SUPERCHARGER", + "TURBOCHARGER" + ], + "datatype": "string", + "default": "UNKNOWN", + "description": "Type of aspiration (natural, turbocharger, supercharger etc).", + "type": "attribute" + }, + "Bore": { + "datatype": "float", + "description": "Bore in millimetres.", + "type": "attribute", + "unit": "mm" + }, + "CompressionRatio": { + "datatype": "string", + "description": "Engine compression ratio, specified in the format 'X:1', e.g. '9.2:1'.", + "type": "attribute" + }, + "Configuration": { + "allowed": [ + "UNKNOWN", + "STRAIGHT", + "V", + "BOXER", + "W", + "ROTARY", + "RADIAL", + "SQUARE", + "H", + "U", + "OPPOSED", + "X" + ], + "datatype": "string", + "default": "UNKNOWN", + "description": "Engine configuration.", + "type": "attribute" + }, + "DieselExhaustFluid": { + "children": { + "Capacity": { + "datatype": "float", + "description": "Capacity in liters of the Diesel Exhaust Fluid Tank.", + "type": "attribute", + "unit": "l" + }, + "IsLevelLow": { + "datatype": "boolean", + "description": "Indicates if the Diesel Exhaust Fluid level is low. True if level is low. Definition of low is vehicle dependent.", + "type": "sensor" + }, + "Level": { + "datatype": "uint8", + "description": "Level of the Diesel Exhaust Fluid tank as percent of capacity. 0 = empty. 100 = full.", + "max": 100, + "min": 0, + "type": "sensor", + "unit": "percent" + }, + "Range": { + "datatype": "uint32", + "description": "Remaining range in meters of the Diesel Exhaust Fluid present in the vehicle.", + "type": "sensor", + "unit": "m" + } + }, + "comment": "In retail and marketing other names are typically used for the fluid.", + "description": "Signals related to Diesel Exhaust Fluid (DEF). DEF is called AUS32 in ISO 22241.", + "type": "branch" + }, + "DieselParticulateFilter": { + "children": { + "DeltaPressure": { + "datatype": "float", + "description": "Delta Pressure of Diesel Particulate Filter.", + "type": "sensor", + "unit": "Pa" + }, + "InletTemperature": { + "datatype": "float", + "description": "Inlet temperature of Diesel Particulate Filter.", + "type": "sensor", + "unit": "celsius" + }, + "OutletTemperature": { + "datatype": "float", + "description": "Outlet temperature of Diesel Particulate Filter.", + "type": "sensor", + "unit": "celsius" + } + }, + "description": "Diesel Particulate Filter signals.", + "type": "branch" + }, + "Displacement": { + "datatype": "uint16", + "description": "Displacement in cubic centimetres.", + "type": "attribute", + "unit": "cm^3" + }, + "ECT": { + "datatype": "int16", + "description": "Engine coolant temperature.", + "type": "sensor", + "unit": "celsius" + }, + "EOP": { + "datatype": "uint16", + "description": "Engine oil pressure.", + "type": "sensor", + "unit": "kPa" + }, + "EOT": { + "datatype": "int16", + "description": "Engine oil temperature.", + "type": "sensor", + "unit": "celsius" + }, + "EngineCode": { + "comment": "For hybrid vehicles the engine code may refer to the combination of combustion and electric engine.", + "datatype": "string", + "description": "Engine code designation, as specified by vehicle manufacturer.", + "type": "attribute" + }, + "EngineCoolantCapacity": { + "datatype": "float", + "description": "Engine coolant capacity in liters.", + "type": "attribute", + "unit": "l" + }, + "EngineHours": { + "datatype": "float", + "description": "Accumulated time during engine lifetime with 'engine speed (rpm) > 0'.", + "type": "sensor", + "unit": "h" + }, + "EngineOilCapacity": { + "datatype": "float", + "description": "Engine oil capacity in liters.", + "type": "attribute", + "unit": "l" + }, + "EngineOilLevel": { + "allowed": [ + "CRITICALLY_LOW", + "LOW", + "NORMAL", + "HIGH", + "CRITICALLY_HIGH" + ], + "datatype": "string", + "description": "Engine oil level.", + "type": "sensor" + }, + "IdleHours": { + "comment": "Vehicles may calculate accumulated idle time for an engine. It might be based on engine speed (rpm) below a certain limit or any other mechanism.", + "datatype": "float", + "description": "Accumulated idling time during engine lifetime. Definition of idling is not standardized.", + "type": "sensor", + "unit": "h" + }, + "IsRunning": { + "datatype": "boolean", + "description": "Engine Running. True if engine is rotating (Speed > 0).", + "type": "sensor" + }, + "MAF": { + "datatype": "uint16", + "description": "Grams of air drawn into engine per second.", + "type": "sensor", + "unit": "g/s" + }, + "MAP": { + "datatype": "uint16", + "description": "Manifold absolute pressure possibly boosted using forced induction.", + "type": "sensor", + "unit": "kPa" + }, + "MaxPower": { + "datatype": "uint16", + "default": 0, + "description": "Peak power, in kilowatts, that engine can generate.", + "type": "attribute", + "unit": "kW" + }, + "MaxTorque": { + "datatype": "uint16", + "default": 0, + "description": "Peak torque, in newton meter, that the engine can generate.", + "type": "attribute", + "unit": "Nm" + }, + "NumberOfCylinders": { + "datatype": "uint16", + "description": "Number of cylinders.", + "type": "attribute" + }, + "NumberOfValvesPerCylinder": { + "datatype": "uint16", + "description": "Number of valves per cylinder.", + "type": "attribute" + }, + "OilLifeRemaining": { + "comment": "In addition to this a signal a vehicle can report remaining time to service (including e.g. oil change) by Vehicle.Service.TimeToService.", + "datatype": "int32", + "description": "Remaining engine oil life in seconds. Negative values can be used to indicate that lifetime has been exceeded.", + "type": "sensor", + "unit": "s" + }, + "Power": { + "datatype": "uint16", + "description": "Current engine power output. Shall be reported as 0 during engine breaking.", + "type": "sensor", + "unit": "kW" + }, + "Speed": { + "datatype": "uint16", + "description": "Engine speed measured as rotations per minute.", + "type": "sensor", + "unit": "rpm" + }, + "StrokeLength": { + "datatype": "float", + "description": "Stroke length in millimetres.", + "type": "attribute", + "unit": "mm" + }, + "TPS": { + "datatype": "uint8", + "description": "Current throttle position.", + "max": 100, + "type": "sensor", + "unit": "percent" + }, + "Torque": { + "comment": "During engine breaking the engine delivers a negative torque to the transmission. This negative torque shall be ignored, instead 0 shall be reported.", + "datatype": "uint16", + "description": "Current engine torque. Shall be reported as 0 during engine breaking.", + "type": "sensor", + "unit": "Nm" + } + }, + "description": "Engine-specific data, stopping at the bell housing.", + "type": "branch" + }, + "CurrentFuelType": { + "allowed": [ + "NONE", + "GAS", + "METH", + "ETH", + "DSL", + "LPG", + "CNG", + "PROP", + "ELEC", + "BI_GAS", + "BI_METH", + "BI_ETH", + "BI_LPG", + "BI_CNG", + "BI_PROP", + "BI_ELEC", + "BI_MIX", + "HYB_GAS", + "HYB_ETH", + "HYB_DSL", + "HYB_ELEC", + "HYB_MIX", + "HYB_REG", + "NG", + "BI_NG", + "BI_DSL", + "ERROR", + "NOT_AVAILABLE" + ], + "datatype": "string", + "description": "Type of fuel currently being utilized by the vehicle.", + "type": "sensor" + }, + "Eec2AcceleratorPedalPosition": { + "datatype": "double", + "description": "The ratio of actual position of the analogue engine speed/torque request input device\n(such as an accelerator pedal or throttle lever) to the maximum position of the input device\n", + "min": 0, + "type": "sensor", + "unit": "percent" + }, + "Eec2EnginePercentLoad": { + "datatype": "uint8", + "description": "The ratio of actual engine percent torque (indicated) to maximum indicated torque available at\nthe current engine speed, clipped to zero torque during engine braking\n", + "max": 125, + "min": 0, + "type": "sensor", + "unit": "percent" + }, + "ElectricMotor": { + "children": { + "CoolantTemperature": { + "datatype": "int16", + "description": "Motor coolant temperature (if applicable).", + "type": "sensor", + "unit": "celsius" + }, + "EngineCode": { + "datatype": "string", + "description": "Engine code designation, as specified by vehicle manufacturer.", + "type": "attribute" + }, + "MaxPower": { + "datatype": "uint16", + "default": 0, + "description": "Peak power, in kilowatts, that motor(s) can generate.", + "type": "attribute", + "unit": "kW" + }, + "MaxRegenPower": { + "datatype": "uint16", + "default": 0, + "description": "Peak regen/brake power, in kilowatts, that motor(s) can generate.", + "type": "attribute", + "unit": "kW" + }, + "MaxRegenTorque": { + "datatype": "uint16", + "default": 0, + "description": "Peak regen/brake torque, in newton meter, that the motor(s) can generate.", + "type": "attribute", + "unit": "Nm" + }, + "MaxTorque": { + "datatype": "uint16", + "default": 0, + "description": "Peak power, in newton meter, that the motor(s) can generate.", + "type": "attribute", + "unit": "Nm" + }, + "MotorHours": { + "datatype": "float", + "description": "Accumulated time during motor lifetime with 'motor speed (rpm) > 0'.", + "min": 0.0, + "type": "sensor", + "unit": "h" + }, + "Power": { + "datatype": "int16", + "description": "Current motor power output. Negative values indicate regen mode.", + "type": "sensor", + "unit": "kW" + }, + "Speed": { + "datatype": "int32", + "description": "Motor rotational speed measured as rotations per minute. Negative values indicate reverse driving mode.", + "type": "sensor", + "unit": "rpm" + }, + "Temperature": { + "datatype": "int16", + "description": "Motor temperature.", + "type": "sensor", + "unit": "celsius" + }, + "Torque": { + "datatype": "int16", + "description": "Current motor torque. Negative values indicate regen mode.", + "type": "sensor", + "unit": "Nm" + } + }, + "description": "Electric Motor specific data.", + "type": "branch" + }, + "FuelSystem": { + "children": { + "AbsoluteLevel": { + "datatype": "float", + "description": "Current available fuel in the fuel tank expressed in liters.", + "type": "sensor", + "unit": "l" + }, + "AccumulatedConsumption": { + "datatype": "uint64", + "description": "Accumulated amount of fuel used during vehicle operation.", + "type": "sensor", + "unit": "ml" + }, + "AverageConsumption": { + "datatype": "float", + "description": "Average consumption in liters per 100 km.", + "min": 0, + "type": "sensor", + "unit": "l/100km" + }, + "ConsumptionSinceStart": { + "comment": "A new trip is considered to start when engine gets enabled (e.g. LowVoltageSystemState in ON or START mode). A trip is considered to end when engine is no longer enabled. The signal may however keep the value of the last trip until a new trip is started.", + "datatype": "float", + "description": "Fuel amount in liters consumed since start of current trip.", + "type": "sensor", + "unit": "l" + }, + "HybridType": { + "allowed": [ + "UNKNOWN", + "NOT_APPLICABLE", + "STOP_START", + "BELT_ISG", + "CIMG", + "PHEV" + ], + "datatype": "string", + "default": "UNKNOWN", + "description": "Defines the hybrid type of the vehicle.", + "type": "attribute" + }, + "InstantConsumption": { + "datatype": "float", + "description": "Current consumption in liters per 100 km.", + "min": 0, + "type": "sensor", + "unit": "l/100km" + }, + "IsEngineStopStartEnabled": { + "datatype": "boolean", + "description": "Indicates whether eco start stop is currently enabled.", + "type": "sensor" + }, + "IsFuelLevelLow": { + "datatype": "boolean", + "description": "Indicates that the fuel level is low (e.g. <50km range).", + "type": "sensor" + }, + "Range": { + "datatype": "uint32", + "description": "Remaining range in meters using only liquid fuel.", + "type": "sensor", + "unit": "m" + }, + "RelativeLevel": { + "datatype": "uint8", + "description": "Level in fuel tank as percent of capacity. 0 = empty. 100 = full.", + "max": 100, + "min": 0, + "type": "sensor", + "unit": "percent" + }, + "SupportedFuel": { + "allowed": [ + "E5_95", + "E5_98", + "E10_95", + "E10_98", + "E85", + "B7", + "B10", + "B20", + "B30", + "B100", + "XTL", + "LPG", + "CNG", + "LNG", + "H2", + "OTHER" + ], + "comment": "RON 95 is sometimes referred to as Super, RON 98 as Super Plus.", + "datatype": "string[]", + "description": "Detailed information on fuels supported by the vehicle. Identifiers originating from DIN EN 16942:2021-08, appendix B, with additional suffix for octane (RON) where relevant.", + "type": "attribute" + }, + "SupportedFuelTypes": { + "allowed": [ + "GASOLINE", + "DIESEL", + "E85", + "LPG", + "CNG", + "LNG", + "H2", + "OTHER" + ], + "comment": "If a vehicle also has an electric drivetrain (e.g. hybrid) that will be obvious from the PowerTrain.Type signal.", + "datatype": "string[]", + "description": "High level information of fuel types supported", + "type": "attribute" + }, + "Tank": { + "children": { + "First": { + "children": { + "Fuel": { + "allowed": [ + "GASOLINE", + "DIESEL", + "E85", + "LPG", + "CNG", + "LNG", + "H2", + "OTHER" + ], + "datatype": "string", + "description": "Detailed information on fuel in tank. Identifiers originating from DIN EN 16942:2021-08,\nappendix B, with additional suffix for octane (RON) where relevant.\n", + "type": "sensor" + }, + "RelativeLevel": { + "datatype": "float", + "description": "Level in fuel tank as percent of capacity. 0 = empty. 100 = full.", + "max": 100.0, + "min": 0.0, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Information about the first and (optional) second fuel tank.", + "type": "branch" + }, + "Second": { + "children": { + "Fuel": { + "allowed": [ + "GASOLINE", + "DIESEL", + "E85", + "LPG", + "CNG", + "LNG", + "H2", + "OTHER" + ], + "datatype": "string", + "description": "Detailed information on fuel in tank. Identifiers originating from DIN EN 16942:2021-08,\nappendix B, with additional suffix for octane (RON) where relevant.\n", + "type": "sensor" + }, + "RelativeLevel": { + "datatype": "float", + "description": "Level in fuel tank as percent of capacity. 0 = empty. 100 = full.", + "max": 100.0, + "min": 0.0, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Information about the first and (optional) second fuel tank.", + "type": "branch" + } + }, + "description": "Information about the first and (optional) second fuel tank.", + "type": "branch" + }, + "TankCapacity": { + "datatype": "float", + "description": "Capacity of the fuel tank in liters.", + "type": "attribute", + "unit": "l" + } + }, + "description": "Fuel system data.", + "type": "branch" + }, + "PowerOptimizeLevel": { + "datatype": "uint8", + "description": "Power optimization level for this branch/subsystem. A higher number indicates more aggressive power optimization. Level 0 indicates that all functionality is enabled, no power optimization enabled. Level 10 indicates most aggressive power optimization mode, only essential functionality enabled.", + "max": 10, + "min": 0, + "type": "actuator" + }, + "Range": { + "datatype": "uint32", + "description": "Remaining range in meters using all energy sources available in the vehicle.", + "type": "sensor", + "unit": "m" + }, + "TractionBattery": { + "children": { + "AccumulatedChargedEnergy": { + "datatype": "float", + "description": "The accumulated energy delivered to the battery during charging over lifetime of the battery.", + "type": "sensor", + "unit": "kWh" + }, + "AccumulatedChargedThroughput": { + "datatype": "float", + "description": "The accumulated charge throughput delivered to the battery during charging over lifetime of the battery.", + "type": "sensor", + "unit": "Ah" + }, + "AccumulatedConsumedEnergy": { + "datatype": "float", + "description": "The accumulated energy leaving HV battery for propulsion and auxiliary loads over lifetime of the battery.", + "type": "sensor", + "unit": "kWh" + }, + "AccumulatedConsumedThroughput": { + "datatype": "float", + "description": "The accumulated charge throughput leaving HV battery for propulsion and auxiliary loads over lifetime of the battery.", + "type": "sensor", + "unit": "Ah" + }, + "CellVoltage": { + "children": { + "Max": { + "datatype": "float", + "description": "Current voltage of the battery cell with highest voltage.", + "type": "sensor", + "unit": "V" + }, + "Min": { + "datatype": "float", + "description": "Current voltage of the battery cell with lowest voltage.", + "type": "sensor", + "unit": "V" + } + }, + "description": "Voltage information for cells in the battery pack.", + "type": "branch" + }, + "Charging": { + "children": { + "ChargeCurrent": { + "children": { + "DC": { + "datatype": "float", + "description": "Current DC charging current at inlet. Negative if returning energy to grid.", + "type": "sensor", + "unit": "A" + }, + "Phase1": { + "datatype": "float", + "description": "Current AC charging current (rms) at inlet for Phase 1. Negative if returning energy to grid.", + "type": "sensor", + "unit": "A" + }, + "Phase2": { + "datatype": "float", + "description": "Current AC charging current (rms) at inlet for Phase 2. Negative if returning energy to grid.", + "type": "sensor", + "unit": "A" + }, + "Phase3": { + "datatype": "float", + "description": "Current AC charging current (rms) at inlet for Phase 3. Negative if returning energy to grid.", + "type": "sensor", + "unit": "A" + } + }, + "description": "Current charging current.", + "type": "branch" + }, + "ChargeLimit": { + "datatype": "uint8", + "default": 100, + "description": "Target charge limit (state of charge) for battery.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "ChargePlugType": { + "allowed": [ + "IEC_TYPE_1_AC", + "IEC_TYPE_2_AC", + "IEC_TYPE_3_AC", + "IEC_TYPE_4_DC", + "IEC_TYPE_1_CCS_DC", + "IEC_TYPE_2_CCS_DC", + "TESLA_ROADSTER", + "TESLA_HPWC", + "TESLA_SUPERCHARGER", + "GBT_AC", + "GBT_DC", + "OTHER" + ], + "comment": "A vehicle may have multiple charging inlets. IEC_TYPE_1_AC refers to Type 1 as defined in IEC 62196-2. Also known as Yazaki or J1772 connector. IEC_TYPE_2_AC refers to Type 2 as defined in IEC 62196-2. Also known as Mennekes connector. IEC_TYPE_3_AC refers to Type 3 as defined in IEC 62196-2. Also known as Scame connector. IEC_TYPE_4_DC refers to AA configuration as defined in IEC 62196-3. Also known as Type 4 or CHAdeMO connector. IEC_TYPE_1_CCS_DC refers to EE Configuration as defined in IEC 62196-3. Also known as CCS1 or Combo1 connector. IEC_TYPE_2_CCS_DC refers to FF Configuration as defined in IEC 62196-3. Also known as CCS2 or Combo2 connector. TESLA_ROADSTER, TESLA_HPWC (High Power Wall Connector) and TESLA_SUPERCHARGER refer to non-standardized charging inlets/methods used by Tesla. GBT_AC refers to connector specified in GB/T 20234.2. GBT_DC refers to connector specified in GB/T 20234.3. Also specified as BB Configuration in IEC 62196-3. OTHER shall be used if the vehicle has a charging connector, but not one of the connectors listed above. For additional information see https://en.wikipedia.org/wiki/IEC_62196.", + "datatype": "string[]", + "description": "Type of charge plug (charging inlet) available on the vehicle. IEC types refer to IEC 62196, GBT refers to GB/T 20234.", + "type": "attribute" + }, + "ChargePortFlap": { + "allowed": [ + "OPEN", + "CLOSED" + ], + "datatype": "string", + "description": "Status of the charge port cover, can potentially be controlled manually.", + "type": "actuator" + }, + "ChargeRate": { + "datatype": "float", + "description": "Current charging rate, as in kilometers of range added per hour.", + "type": "sensor", + "unit": "km/h" + }, + "ChargeVoltage": { + "children": { + "DC": { + "datatype": "float", + "description": "Current DC charging voltage at charging inlet.", + "type": "sensor", + "unit": "V" + }, + "Phase1": { + "datatype": "float", + "description": "Current AC charging voltage (rms) at inlet for Phase 1.", + "type": "sensor", + "unit": "V" + }, + "Phase2": { + "datatype": "float", + "description": "Current AC charging voltage (rms) at inlet for Phase 2.", + "type": "sensor", + "unit": "V" + }, + "Phase3": { + "datatype": "float", + "description": "Current AC charging voltage (rms) at inlet for Phase 3.", + "type": "sensor", + "unit": "V" + } + }, + "description": "Current charging voltage, as measured at the charging inlet.", + "type": "branch" + }, + "IsCharging": { + "datatype": "boolean", + "description": "True if charging is ongoing. Charging is considered to be ongoing if energy is flowing from charger to vehicle.", + "type": "sensor" + }, + "IsChargingCableConnected": { + "datatype": "boolean", + "description": "Indicates if a charging cable is physically connected to the vehicle or not.", + "type": "sensor" + }, + "IsChargingCableLocked": { + "comment": "Locking of charging cable can be used to prevent unintentional removing during charging.", + "datatype": "boolean", + "description": "Is charging cable locked to prevent removal.", + "type": "actuator" + }, + "IsDischarging": { + "datatype": "boolean", + "description": "True if discharging (vehicle to grid) is ongoing. Discharging is considered to be ongoing if energy is flowing from vehicle to charger/grid.", + "type": "sensor" + }, + "MaximumChargingCurrent": { + "children": { + "DC": { + "datatype": "float", + "description": "Maximum DC charging current at inlet that can be accepted by the system.", + "type": "sensor", + "unit": "A" + }, + "Phase1": { + "datatype": "float", + "description": "Maximum AC charging current (rms) at inlet for Phase 1 that can be accepted by the system.", + "type": "sensor", + "unit": "A" + }, + "Phase2": { + "datatype": "float", + "description": "Maximum AC charging current (rms) at inlet for Phase 2 that can be accepted by the system.", + "type": "sensor", + "unit": "A" + }, + "Phase3": { + "datatype": "float", + "description": "Maximum AC charging current (rms) at inlet for Phase 3 that can be accepted by the system.", + "type": "sensor", + "unit": "A" + } + }, + "description": "Maximum charging current that can be accepted by the system, as measured at the charging inlet.", + "type": "branch" + }, + "Mode": { + "allowed": [ + "MANUAL", + "TIMER", + "GRID", + "PROFILE" + ], + "comment": "The mechanism to provide a profile to the vehicle is currently not covered by VSS.", + "datatype": "string", + "description": "Control of the charge process. MANUAL means manually initiated (plug-in event, companion app, etc). TIMER means timer-based. GRID means grid-controlled (e.g. ISO 15118). PROFILE means controlled by profile download to vehicle.", + "type": "actuator" + }, + "PowerLoss": { + "datatype": "float", + "description": "Electrical energy lost by power dissipation to heat inside the AC/DC converter.", + "type": "sensor", + "unit": "W" + }, + "StartStopCharging": { + "allowed": [ + "START", + "STOP" + ], + "datatype": "string", + "description": "Start or stop the charging process.", + "type": "actuator" + }, + "Temperature": { + "datatype": "float", + "description": "Current temperature of AC/DC converter converting grid voltage to battery voltage.", + "type": "sensor", + "unit": "celsius" + }, + "TimeToComplete": { + "comment": "Shall consider time set by Charging.Timer.Time. E.g. if charging shall start in 3 hours and 2 hours of charging is needed, then Charging.TimeToComplete shall report 5 hours.", + "datatype": "uint32", + "description": "The time needed for the current charging process to reach Charging.ChargeLimit. 0 if charging is complete or no charging process is active or planned.", + "type": "sensor", + "unit": "s" + }, + "Timer": { + "children": { + "Mode": { + "allowed": [ + "INACTIVE", + "START_TIME", + "END_TIME" + ], + "datatype": "string", + "description": "Defines timer mode for charging: INACTIVE - no timer set, charging may start as soon as battery is connected to a charger. START_TIME - charging shall start at Charging.Timer.Time. END_TIME - charging shall be finished (reach Charging.ChargeLimit) at Charging.Timer.Time. When charging is completed the vehicle shall change mode to 'inactive' or set a new Charging.Timer.Time. Charging shall start immediately if mode is 'starttime' or 'endtime' and Charging.Timer.Time is a time in the past.", + "type": "actuator" + }, + "Time": { + "datatype": "string", + "description": "Time for next charging-related action, formatted according to ISO 8601 with UTC time zone. Value has no significance if Charging.Timer.Mode is 'inactive'.", + "type": "actuator" + } + }, + "description": "Properties related to timing of battery charging sessions.", + "type": "branch" + } + }, + "description": "Properties related to battery charging.", + "type": "branch" + }, + "CoolantTemperature": { + "datatype": "uint8", + "description": "The temperature of the battery pack coolant.\n", + "type": "sensor", + "unit": "celsius" + }, + "CurrentCurrent": { + "datatype": "float", + "description": "Current current flowing in/out of battery. Positive = Current flowing in to battery, e.g. during charging. Negative = Current flowing out of battery, e.g. during driving.", + "type": "sensor", + "unit": "A" + }, + "CurrentPower": { + "datatype": "float", + "description": "Current electrical energy flowing in/out of battery. Positive = Energy flowing in to battery, e.g. during charging. Negative = Energy flowing out of battery, e.g. during driving.", + "type": "sensor", + "unit": "W" + }, + "CurrentVoltage": { + "datatype": "float", + "description": "Current Voltage of the battery.", + "type": "sensor", + "unit": "V" + }, + "DCDC": { + "children": { + "PowerLoss": { + "datatype": "float", + "description": "Electrical energy lost by power dissipation to heat inside DC/DC converter.", + "type": "sensor", + "unit": "W" + }, + "Temperature": { + "datatype": "float", + "description": "Current temperature of DC/DC converter converting battery high voltage to vehicle low voltage (typically 12 Volts).", + "type": "sensor", + "unit": "celsius" + } + }, + "description": "Properties related to DC/DC converter converting high voltage (from high voltage battery) to vehicle low voltage (supply voltage, typically 12 Volts).", + "type": "branch" + }, + "GrossCapacity": { + "datatype": "uint16", + "description": "Gross capacity of the battery.", + "type": "attribute", + "unit": "kWh" + }, + "Id": { + "comment": "This could be serial number, part number plus serial number, UUID, or any other identifier that the OEM want to use to uniquely identify the battery individual.", + "datatype": "string", + "description": "Battery Identification Number as assigned by OEM.", + "type": "attribute" + }, + "IsGroundConnected": { + "comment": "It might be possible to disconnect the traction battery used by an electric powertrain. This is achieved by connectors, typically one for plus and one for minus.", + "datatype": "boolean", + "description": "Indicating if the ground (negative terminator) of the traction battery is connected to the powertrain.", + "type": "sensor" + }, + "IsPowerConnected": { + "comment": "It might be possible to disconnect the traction battery used by an electric powertrain. This is achieved by connectors, typically one for plus and one for minus.", + "datatype": "boolean", + "description": "Indicating if the power (positive terminator) of the traction battery is connected to the powertrain.", + "type": "sensor" + }, + "MaxVoltage": { + "datatype": "uint16", + "description": "Max allowed voltage of the battery, e.g. during charging.", + "type": "attribute", + "unit": "V" + }, + "NetCapacity": { + "datatype": "uint16", + "description": "Total net capacity of the battery considering aging.", + "type": "sensor", + "unit": "kWh" + }, + "NominalVoltage": { + "comment": "Nominal voltage typically refers to voltage of fully charged battery when delivering rated capacity.", + "datatype": "uint16", + "description": "Nominal Voltage of the battery.", + "type": "attribute", + "unit": "V" + }, + "PowerLoss": { + "datatype": "float", + "description": "Electrical energy lost by power dissipation to heat inside the battery.", + "type": "sensor", + "unit": "W" + }, + "ProductionDate": { + "datatype": "string", + "description": "Production date of battery in ISO8601 format, e.g. YYYY-MM-DD.", + "type": "attribute" + }, + "Range": { + "datatype": "uint32", + "description": "Remaining range in meters using only battery.", + "type": "sensor", + "unit": "m" + }, + "StateOfCharge": { + "children": { + "Current": { + "datatype": "float", + "description": "Physical state of charge of the high voltage battery, relative to net capacity. This is not necessarily the state of charge being displayed to the customer.", + "max": 100.0, + "min": 0, + "type": "sensor", + "unit": "percent" + }, + "CurrentEnergy": { + "comment": "Current energy could be calculated as .StateOfCharge.Current * .NetCapacity.", + "datatype": "float", + "description": "Physical state of charge of high voltage battery expressed in kWh.", + "type": "sensor", + "unit": "kWh" + }, + "Displayed": { + "datatype": "float", + "description": "State of charge displayed to the customer.", + "max": 100.0, + "min": 0, + "type": "sensor", + "unit": "percent" + } + }, + "description": "Information on the state of charge of the vehicle's high voltage battery.", + "type": "branch" + }, + "StateOfHealth": { + "comment": "Exact formula is implementation dependent. Could be e.g. current capacity at 20 degrees Celsius divided with original capacity at the same temperature.", + "datatype": "float", + "description": "Calculated battery state of health at standard conditions.", + "max": 100, + "min": 0, + "type": "sensor", + "unit": "percent" + }, + "Temperature": { + "children": { + "Average": { + "datatype": "float", + "description": "Current average temperature of the battery cells.", + "type": "sensor", + "unit": "celsius" + }, + "Max": { + "datatype": "float", + "description": "Current maximum temperature of the battery cells, i.e. temperature of the hottest cell.", + "type": "sensor", + "unit": "celsius" + }, + "Min": { + "datatype": "float", + "description": "Current minimum temperature of the battery cells, i.e. temperature of the coldest cell.", + "type": "sensor", + "unit": "celsius" + } + }, + "description": "Temperature Information for the battery pack.", + "type": "branch" + } + }, + "description": "Battery Management data.", + "type": "branch" + }, + "Transmission": { + "children": { + "ClutchEngagement": { + "datatype": "float", + "description": "Clutch engagement. 0% = Clutch fully disengaged. 100% = Clutch fully engaged.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "ClutchWear": { + "datatype": "uint8", + "description": "Clutch wear as a percent. 0 = no wear. 100 = worn.", + "max": 100, + "type": "sensor", + "unit": "percent" + }, + "CurrentGear": { + "datatype": "int8", + "description": "The current gear. 0=Neutral, 1/2/..=Forward, -1/-2/..=Reverse.", + "type": "sensor" + }, + "DiffLockFrontEngagement": { + "datatype": "float", + "description": "Front Diff Lock engagement. 0% = Diff lock fully disengaged. 100% = Diff lock fully engaged.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "DiffLockRearEngagement": { + "datatype": "float", + "description": "Rear Diff Lock engagement. 0% = Diff lock fully disengaged. 100% = Diff lock fully engaged.", + "max": 100, + "min": 0, + "type": "actuator", + "unit": "percent" + }, + "DriveType": { + "allowed": [ + "UNKNOWN", + "FORWARD_WHEEL_DRIVE", + "REAR_WHEEL_DRIVE", + "ALL_WHEEL_DRIVE" + ], + "datatype": "string", + "default": "UNKNOWN", + "description": "Drive type.", + "type": "attribute" + }, + "GearChangeMode": { + "allowed": [ + "MANUAL", + "AUTOMATIC" + ], + "datatype": "string", + "description": "Is the gearbox in automatic or manual (paddle) mode.", + "type": "actuator" + }, + "GearCount": { + "datatype": "int8", + "default": 0, + "description": "Number of forward gears in the transmission. -1 = CVT.", + "type": "attribute" + }, + "IsElectricalPowertrainEngaged": { + "comment": "In some hybrid solutions it is possible to disconnect/disengage the electrical powertrain mechanically to avoid induced voltage reaching a too high level when driving at high speed.", + "datatype": "boolean", + "description": "Is electrical powertrain mechanically connected/engaged to the drivetrain or not. False = Disconnected/Disengaged. True = Connected/Engaged.", + "type": "actuator" + }, + "IsLowRangeEngaged": { + "comment": "The possibility to switch between low and high gear range is typically only available in heavy vehicles and off-road vehicles.", + "datatype": "boolean", + "description": "Is gearbox in low range mode or not. False = Normal/High range engaged. True = Low range engaged.", + "type": "actuator" + }, + "IsParkLockEngaged": { + "datatype": "boolean", + "description": "Is the transmission park lock engaged or not. False = Disengaged. True = Engaged.", + "type": "actuator" + }, + "PerformanceMode": { + "allowed": [ + "NORMAL", + "SPORT", + "ECONOMY", + "SNOW", + "RAIN" + ], + "datatype": "string", + "description": "Current gearbox performance mode.", + "type": "actuator" + }, + "SelectedGear": { + "datatype": "int8", + "description": "The selected gear. 0=Neutral, 1/2/..=Forward, -1/-2/..=Reverse, 126=Park, 127=Drive.", + "type": "actuator" + }, + "Temperature": { + "datatype": "int16", + "description": "The current gearbox temperature.", + "type": "sensor", + "unit": "celsius" + }, + "TorqueDistribution": { + "datatype": "float", + "description": "Torque distribution between front and rear axle in percent. -100% = Full torque to front axle, 0% = 50:50 Front/Rear, 100% = Full torque to rear axle.", + "max": 100, + "min": -100, + "type": "actuator", + "unit": "percent" + }, + "TravelledDistance": { + "datatype": "float", + "description": "Odometer reading, total distance travelled during the lifetime of the transmission.", + "type": "sensor", + "unit": "km" + }, + "Type": { + "allowed": [ + "UNKNOWN", + "SEQUENTIAL", + "H", + "AUTOMATIC", + "DSG", + "CVT" + ], + "datatype": "string", + "default": "UNKNOWN", + "description": "Transmission type.", + "type": "attribute" + } + }, + "description": "Transmission-specific data, stopping at the drive shafts.", + "type": "branch" + }, + "Type": { + "allowed": [ + "COMBUSTION", + "HYBRID", + "ELECTRIC" + ], + "comment": "For vehicles with a combustion engine (including hybrids) more detailed information on fuels supported can be found in FuelSystem.SupportedFuelTypes and FuelSystem.SupportedFuels.", + "datatype": "string", + "description": "Defines the powertrain type of the vehicle.", + "type": "attribute" + } + }, + "description": "Powertrain data for battery management, etc.", + "type": "branch" + }, + "RoofLoad": { + "datatype": "int16", + "description": "The permitted total weight of cargo and installations (e.g. a roof rack) on top of the vehicle.", + "type": "attribute", + "unit": "kg" + }, + "Service": { + "children": { + "DistanceToService": { + "datatype": "float", + "description": "Remaining distance to service (of any kind). Negative values indicate service overdue.", + "type": "sensor", + "unit": "km" + }, + "IsServiceDue": { + "datatype": "boolean", + "description": "Indicates if vehicle needs service (of any kind). True = Service needed now or in the near future. False = No known need for service.", + "type": "sensor" + }, + "TimeToService": { + "datatype": "int32", + "description": "Remaining time to service (of any kind). Negative values indicate service overdue.", + "type": "sensor", + "unit": "s" + } + }, + "description": "Service data.", + "type": "branch" + }, + "Speed": { + "datatype": "float", + "description": "Vehicle speed.", + "type": "sensor", + "unit": "km/h" + }, + "StartTime": { + "comment": "This signal is supposed to be set whenever a new trip starts. A new trip is considered to start when engine gets enabled (e.g. LowVoltageSystemState in ON or START mode). A trip is considered to end when engine is no longer enabled. The default value indicates that the vehicle never has been started, or that latest start time is unknown.", + "datatype": "string", + "default": "0000-01-01T00:00Z", + "description": "Start time of current or latest trip, formatted according to ISO 8601 with UTC time zone.", + "type": "attribute" + }, + "Tachograph": { + "children": { + "DirectionIndicator": { + "datatype": "string", + "description": "Indicates the direction of the vehicle\n", + "type": "sensor" + }, + "Driver": { + "children": { + "Driver1": { + "children": { + "AuthenticationEquipment": { + "allowed": [ + "RESERVED", + "DRIVER_CARD", + "CONTROL_CARD", + "COMPANY_CARD", + "MANUFACTURING_CARD", + "VEHICLE_UNIT", + "MOTION_SENSOR" + ], + "comment": "See description of the field 'DriverAuthenticationEquipment'\nin COMMISSION REGULATION (EC) No 1360/2002 Annex 1b.\n", + "datatype": "string", + "description": "Code to distinguish different types of equipment for the tachograph application.", + "type": "attribute" + }, + "CardIssuingMemberState": { + "comment": "This field is formatted according the definition for NationAlpha\nin COMMISSION REGULATION (EC) No 1360/2002 Annex 1b.\n", + "datatype": "string", + "description": "The country alpha code of the Member State having issued the card.", + "type": "attribute" + }, + "CardRenewalIndex": { + "comment": "This field is formatted according the definition for CardRenewalIndex\n(chap 2.25) in: COMMISSION REGULATION (EC) No 1360/2002 Annex 1b.\n", + "datatype": "string", + "description": "A card renewal index.", + "type": "attribute" + }, + "CardReplacementIndex": { + "comment": "This field is formatted according the definition for CardReplacementIndex\n(chap 2.26) in: COMMISSION REGULATION (EC) No 1360/2002 Annex 1b.\n", + "datatype": "string", + "description": "A card replacement index.", + "type": "attribute" + }, + "Identification": { + "comment": "This field is formatted according the definition for driverIdentification\nin COMMISSION REGULATION (EC) No 1360/2002 Annex 1b.\n", + "datatype": "string", + "description": "The unique identification of a driver in a Member State.", + "type": "attribute" + }, + "IsCardPresent": { + "datatype": "boolean", + "description": "Indicates the presence of a driver card", + "type": "sensor" + }, + "IsLoggedIn": { + "datatype": "boolean", + "description": "Indicates if the driver is currently logged in.", + "type": "attribute" + }, + "OemIdentification": { + "datatype": "string", + "description": "An OEM specific driver id.", + "type": "attribute" + }, + "OemIdentificationType": { + "datatype": "string", + "description": "Contains an optional id type (e.g. pin, USB, encrypted EU id).", + "type": "attribute" + }, + "TimeRelatedStatus": { + "allowed": [ + "NORMAL", + "LIMIT_1", + "LIMIT_2", + "LIMIT_3", + "LIMIT_4", + "LIMIT_5", + "LIMIT_6", + "OTHER", + "ERROR", + "NOT_AVAILABLE" + ], + "datatype": "string", + "description": "Indicates if the driver approaches or exceeds working time limits (or other limits).\n", + "type": "sensor" + }, + "WorkingState": { + "allowed": [ + "DRIVE", + "WORK", + "DRIVER_AVAILABLE", + "REST", + "ERROR", + "NOT_AVAILABLE" + ], + "datatype": "string", + "description": "The current working state of the driver.\n0 - rest\n1 - driver available\n2 - work\n3 - drive\n6 - error\n7 - not available\n", + "type": "attribute" + } + }, + "description": "Information about the driver(s) of a (commercial) vehicle.", + "type": "branch" + }, + "Driver2": { + "children": { + "AuthenticationEquipment": { + "allowed": [ + "RESERVED", + "DRIVER_CARD", + "CONTROL_CARD", + "COMPANY_CARD", + "MANUFACTURING_CARD", + "VEHICLE_UNIT", + "MOTION_SENSOR" + ], + "comment": "See description of the field 'DriverAuthenticationEquipment'\nin COMMISSION REGULATION (EC) No 1360/2002 Annex 1b.\n", + "datatype": "string", + "description": "Code to distinguish different types of equipment for the tachograph application.", + "type": "attribute" + }, + "CardIssuingMemberState": { + "comment": "This field is formatted according the definition for NationAlpha\nin COMMISSION REGULATION (EC) No 1360/2002 Annex 1b.\n", + "datatype": "string", + "description": "The country alpha code of the Member State having issued the card.", + "type": "attribute" + }, + "CardRenewalIndex": { + "comment": "This field is formatted according the definition for CardRenewalIndex\n(chap 2.25) in: COMMISSION REGULATION (EC) No 1360/2002 Annex 1b.\n", + "datatype": "string", + "description": "A card renewal index.", + "type": "attribute" + }, + "CardReplacementIndex": { + "comment": "This field is formatted according the definition for CardReplacementIndex\n(chap 2.26) in: COMMISSION REGULATION (EC) No 1360/2002 Annex 1b.\n", + "datatype": "string", + "description": "A card replacement index.", + "type": "attribute" + }, + "Identification": { + "comment": "This field is formatted according the definition for driverIdentification\nin COMMISSION REGULATION (EC) No 1360/2002 Annex 1b.\n", + "datatype": "string", + "description": "The unique identification of a driver in a Member State.", + "type": "attribute" + }, + "IsCardPresent": { + "datatype": "boolean", + "description": "Indicates the presence of a driver card", + "type": "sensor" + }, + "IsLoggedIn": { + "datatype": "boolean", + "description": "Indicates if the driver is currently logged in.", + "type": "attribute" + }, + "OemIdentification": { + "datatype": "string", + "description": "An OEM specific driver id.", + "type": "attribute" + }, + "OemIdentificationType": { + "datatype": "string", + "description": "Contains an optional id type (e.g. pin, USB, encrypted EU id).", + "type": "attribute" + }, + "TimeRelatedStatus": { + "allowed": [ + "NORMAL", + "LIMIT_1", + "LIMIT_2", + "LIMIT_3", + "LIMIT_4", + "LIMIT_5", + "LIMIT_6", + "OTHER", + "ERROR", + "NOT_AVAILABLE" + ], + "datatype": "string", + "description": "Indicates if the driver approaches or exceeds working time limits (or other limits).\n", + "type": "sensor" + }, + "WorkingState": { + "allowed": [ + "DRIVE", + "WORK", + "DRIVER_AVAILABLE", + "REST", + "ERROR", + "NOT_AVAILABLE" + ], + "datatype": "string", + "description": "The current working state of the driver.\n0 - rest\n1 - driver available\n2 - work\n3 - drive\n6 - error\n7 - not available\n", + "type": "attribute" + } + }, + "description": "Information about the driver(s) of a (commercial) vehicle.", + "type": "branch" + } + }, + "description": "Information about the driver(s) of a (commercial) vehicle.", + "type": "branch" + }, + "IsAnalyzingPerformance": { + "datatype": "boolean", + "description": "Indicates whether the tachograph is currently analyzing its performance;\nincluding electronic or mechanical analysis, instrument analysis, speed sensor analysis,\nmass storage analysis, and printer analysis\n", + "type": "sensor" + }, + "IsHandlingInformationPresent": { + "datatype": "boolean", + "description": "Indicates that handling information is present. Information could include 'no printer paper', 'no driver card', etc\n", + "type": "sensor" + }, + "IsOverspeed": { + "datatype": "boolean", + "description": "Indicates whether the vehicle is exceeding the legal speed limit set in the tachograph.\n", + "type": "sensor" + }, + "IsSystemEventAvailable": { + "datatype": "boolean", + "description": "Indicates that a tachograph event has occurred. This may include power supply interruption,\ninterruption of the speed sensor, incorrect data on the driver card, driving without a driver\ncard, illegal removal of a driver card, insertion of a driver card during driving, and time adjustment\n", + "type": "sensor" + }, + "VehicleSpeed": { + "datatype": "double", + "description": "Speed of the vehicle registered by the tachograph.", + "min": 0.0, + "type": "sensor", + "unit": "km/h" + } + }, + "description": "Tachograph related data.", + "type": "branch" + }, + "Trailer": { + "children": { + "IsConnected": { + "datatype": "boolean", + "description": "Signal indicating if trailer is connected or not.", + "type": "sensor" + } + }, + "description": "Trailer signals.", + "type": "branch" + }, + "TraveledDistance": { + "datatype": "float", + "description": "Odometer reading, total distance traveled during the lifetime of the vehicle.", + "type": "sensor", + "unit": "km" + }, + "TraveledDistanceHighRes": { + "datatype": "uint64", + "description": "Accumulated distance travelled by the vehicle during its operation.", + "type": "sensor", + "unit": "m" + }, + "TraveledDistanceSinceStart": { + "comment": "A new trip is considered to start when engine gets enabled (e.g. LowVoltageSystemState in ON or START mode). A trip is considered to end when engine is no longer enabled. The signal may however keep the value of the last trip until a new trip is started.", + "datatype": "float", + "description": "Distance traveled since start of current trip.", + "type": "sensor", + "unit": "km" + }, + "TripDuration": { + "comment": "This signal is not assumed to be continuously updated, but instead set to 0 when a trip starts and set to the actual duration of the trip when a trip ends. A new trip is considered to start when engine gets enabled (e.g. LowVoltageSystemState in ON or START mode). A trip is considered to end when engine is no longer enabled.", + "datatype": "float", + "description": "Duration of latest trip.", + "type": "sensor", + "unit": "s" + }, + "TripMeterReading": { + "comment": "The trip meter is an odometer that can be manually reset by the driver", + "datatype": "float", + "description": "Trip meter reading.", + "type": "actuator", + "unit": "km" + }, + "VehicleIdentification": { + "children": { + "AcrissCode": { + "datatype": "string", + "description": "The ACRISS Car Classification Code is a code used by many car rental companies.", + "type": "attribute" + }, + "BodyType": { + "datatype": "string", + "description": "Indicates the design and body style of the vehicle (e.g. station wagon, hatchback, etc.).", + "type": "attribute" + }, + "Brand": { + "datatype": "string", + "description": "Vehicle brand or manufacturer.", + "type": "attribute" + }, + "DateVehicleFirstRegistered": { + "datatype": "string", + "description": "The date in ISO 8601 format of the first registration of the vehicle with the respective public authorities.", + "type": "attribute" + }, + "KnownVehicleDamages": { + "datatype": "string", + "description": "A textual description of known damages, both repaired and unrepaired.", + "type": "attribute" + }, + "MeetsEmissionStandard": { + "datatype": "string", + "description": "Indicates that the vehicle meets the respective emission standard.", + "type": "attribute" + }, + "Model": { + "datatype": "string", + "description": "Vehicle model.", + "type": "attribute" + }, + "OptionalExtras": { + "comment": "Allowed values are not standardized, each OEM can specify detail descriptions of array elements.", + "datatype": "string[]", + "description": "Optional extras refers to all car equipment options that are not installed as standard by the manufacturer.", + "type": "attribute" + }, + "ProductionDate": { + "datatype": "string", + "description": "The date in ISO 8601 format of production of the item, e.g. vehicle.", + "type": "attribute" + }, + "PurchaseDate": { + "datatype": "string", + "description": "The date in ISO 8601 format of the item e.g. vehicle was purchased by the current owner.", + "type": "attribute" + }, + "VIN": { + "datatype": "string", + "description": "17-character Vehicle Identification Number (VIN) as defined by ISO 3779.", + "type": "attribute" + }, + "VehicleConfiguration": { + "datatype": "string", + "description": "A short text indicating the configuration of the vehicle, e.g. '5dr hatchback ST 2.5 MT 225 hp' or 'limited edition'.", + "type": "attribute" + }, + "VehicleInteriorColor": { + "datatype": "string", + "description": "The color or color combination of the interior of the vehicle.", + "type": "attribute" + }, + "VehicleInteriorType": { + "datatype": "string", + "description": "The type or material of the interior of the vehicle (e.g. synthetic fabric, leather, wood, etc.).", + "type": "attribute" + }, + "VehicleModelDate": { + "datatype": "string", + "description": "The release date in ISO 8601 format of a vehicle model (often used to differentiate versions of the same make and model).", + "type": "attribute" + }, + "VehicleSeatingCapacity": { + "datatype": "uint16", + "description": "The number of passengers that can be seated in the vehicle, both in terms of the physical space available, and in terms of limitations set by law.", + "type": "attribute" + }, + "VehicleSpecialUsage": { + "datatype": "string", + "description": "Indicates whether the vehicle has been used for special purposes, like commercial rental, driving school.", + "type": "attribute" + }, + "WMI": { + "datatype": "string", + "description": "3-character World Manufacturer Identification (WMI) as defined by ISO 3780.", + "type": "attribute" + }, + "Year": { + "datatype": "uint16", + "description": "Model year of the vehicle.", + "type": "attribute" + } + }, + "description": "Attributes that identify a vehicle.", + "type": "branch" + }, + "VersionVSS": { + "children": { + "Label": { + "datatype": "string", + "description": "Label to further describe the version.", + "type": "attribute" + }, + "Major": { + "datatype": "uint32", + "default": 4, + "description": "Supported Version of VSS - Major version.", + "type": "attribute" + }, + "Minor": { + "datatype": "uint32", + "default": 0, + "description": "Supported Version of VSS - Minor version.", + "type": "attribute" + }, + "Patch": { + "datatype": "uint32", + "default": 0, + "description": "Supported Version of VSS - Patch version.", + "type": "attribute" + } + }, + "description": "Supported Version of VSS.", + "type": "branch" + }, + "Width": { + "datatype": "uint16", + "default": 0, + "description": "Overall vehicle width.", + "type": "attribute", + "unit": "mm" + } + }, + "description": "High-level vehicle data.", + "type": "branch" + } +} \ No newline at end of file diff --git a/spec/overlay/vss.json.license b/spec/overlay/vss.json.license new file mode 100644 index 0000000..59baed3 --- /dev/null +++ b/spec/overlay/vss.json.license @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0

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 =`oDdqztd>QZ}3<)`Z1-Cdc0^bi? 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