From aa3d2d2b73759461ef4118454264fe4c95946e07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Wed, 20 Dec 2023 17:07:56 +0100 Subject: [PATCH 01/29] feature: Add VSS Processor Plugin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The plugin is a composite project which means a higher separation to the other modules and common buildSrc plugins can't be used here. So plugins like publish / version had to be copied. The publish script had to be adapted for publishing a plugin close #45 Signed-Off-By: Mark Hüsers --- app/build.gradle.kts | 18 +++++- config/detekt/baseline.xml | 9 +-- gradle.properties | 1 - gradle/libs.versions.toml | 2 +- samples/build.gradle.kts | 13 +++++ settings.gradle.kts | 5 ++ vss-core/build.gradle.kts | 1 - .../kuksa/vsscore/annotation/VssDefinition.kt | 28 ++++++++-- vss-processor-plugin/.gitignore | 1 + vss-processor-plugin/build.gradle.kts | 55 +++++++++++++++++++ vss-processor-plugin/proguard-rules.pro | 21 +++++++ .../vssprocessor/plugin/VssProcessorPlugin.kt | 53 ++++++++++++++++++ .../vssprocessor/VssDefinitionProcessor.kt | 14 +++-- 13 files changed, 200 insertions(+), 21 deletions(-) create mode 100644 vss-processor-plugin/.gitignore create mode 100644 vss-processor-plugin/build.gradle.kts create mode 100644 vss-processor-plugin/proguard-rules.pro create mode 100644 vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1889a5b8..00aaf98e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,5 +1,3 @@ -import org.eclipse.kuksa.property.PropertiesLoader - /* * Copyright (c) 2023 Contributors to the Eclipse Foundation * @@ -19,9 +17,16 @@ import org.eclipse.kuksa.property.PropertiesLoader * */ +@file:Suppress("UnstableApiUsage") + +import com.google.devtools.ksp.gradle.KspTask +import org.eclipse.kuksa.property.PropertiesLoader +import org.eclipse.kuksa.vssprocessor.plugin.ProvideVssDefinitionTask + plugins { id("com.android.application") id("com.google.devtools.ksp") + id("org.eclipse.kuksa.vss-processor-plugin") kotlin("plugin.serialization") kotlin("android") } @@ -121,6 +126,15 @@ android { } } +tasks.register("ProvideVssDefinition") { + val vssDefinitionFilePath = "$projectDir/src/main/assets/vss_rel_4.0.yaml" + vssDefinitionFile = File(vssDefinitionFilePath) +} + +tasks.withType { + dependsOn(tasks.withType()) +} + tasks.withType().configureEach { useJUnitPlatform() diff --git a/config/detekt/baseline.xml b/config/detekt/baseline.xml index 130c0683..29197b9a 100644 --- a/config/detekt/baseline.xml +++ b/config/detekt/baseline.xml @@ -1,6 +1,7 @@ - + - - - + + EmptyFunctionBlock:VssProcessorPlugin.kt$VssProcessorPlugin${ } + + diff --git a/gradle.properties b/gradle.properties index 7572ceb8..3e033c25 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,3 @@ -android.defaults.buildfeatures.buildconfig=true android.nonFinalResIds=false android.nonTransitiveRClass=true android.useAndroidX=true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1c2e3b02..a1d161ed 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] activityKtx = "1.8.0" -androidGradlePlugin = "8.1.3" # Check with detekt table first: https://detekt.dev/docs/introduction/compatibility/ +androidGradlePlugin = "8.2.0" # Check with detekt table first: https://detekt.dev/docs/introduction/compatibility/ datastore = "1.0.0" constraintlayoutCompose = "1.0.1" datastorePreferences = "1.0.0" diff --git a/samples/build.gradle.kts b/samples/build.gradle.kts index ece184fb..96dcfbab 100644 --- a/samples/build.gradle.kts +++ b/samples/build.gradle.kts @@ -1,3 +1,6 @@ +import com.google.devtools.ksp.gradle.KspTask +import org.eclipse.kuksa.vssprocessor.plugin.ProvideVssDefinitionTask + /* * Copyright (c) 2023 Contributors to the Eclipse Foundation * @@ -20,6 +23,7 @@ plugins { id("com.android.application") id("com.google.devtools.ksp") + id("org.eclipse.kuksa.vss-processor-plugin") kotlin("android") } @@ -54,6 +58,15 @@ android { } } +tasks.register("ProvideVssDefinition") { + val vssDefinitionFilePath = "$projectDir/src/main/assets/vss_rel_4.0.yaml" + vssDefinitionFile = File(vssDefinitionFilePath) +} + +tasks.withType { + dependsOn(tasks.withType()) +} + dependencies { implementation(project(":kuksa-sdk")) // org.eclipse.kuksa.kuksa-sdk: ksp(project(":vss-processor")) // org.eclipse.kuksa.vss-processor: diff --git a/settings.gradle.kts b/settings.gradle.kts index 28ff0f32..4c1dd722 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -18,6 +18,8 @@ */ pluginManagement { + includeBuild("vss-processor-plugin") + repositories { gradlePluginPortal() google() @@ -26,6 +28,7 @@ pluginManagement { plugins { id("com.google.devtools.ksp") version "1.9.0-1.0.11" + id("org.eclipse.kuksa.vss-processor-plugin") version "0.1.2" kotlin("jvm") version "1.9.0-1.0.11" kotlin("plugin.serialization") version "1.9.0" } @@ -40,6 +43,8 @@ dependencyResolutionManagement { } } +rootProject.name = "kuksa-android-sdk" + include(":app") include(":kuksa-sdk") include(":samples") diff --git a/vss-core/build.gradle.kts b/vss-core/build.gradle.kts index 20cc6bec..bc5ce547 100644 --- a/vss-core/build.gradle.kts +++ b/vss-core/build.gradle.kts @@ -21,7 +21,6 @@ plugins { kotlin("jvm") - `maven-publish` publish alias(libs.plugins.dokka) } diff --git a/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt b/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt index fed48902..4e8f0665 100644 --- a/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt +++ b/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt @@ -21,10 +21,28 @@ package org.eclipse.kuksa.vsscore.annotation /** * Add this annotation to any class to trigger the model generation (Kotlin Symbol Processing) for the given - * Vehicle Signal Specification definition file. Only .yaml files are currently supported. The searched root folder - * is the assets folder (example path: app/src/main/assets). + * Vehicle Signal Specification definition file. Only .yaml files are currently supported. Use the + * "VSS Processor Plugin" to provide the Symbol Processor with the necessary definition file. Then provide the file name + * via the [vssDefinitionName] parameter (The path can be ignored). * - * ### Example + * ### Plugin Example + * + * ``` + * plugins { + * id("org.eclipse.kuksa.vss-processor-plugin") version "" + * } + * + * tasks.register("ProvideVssDefinition") { + * val vssDefinitionFilePath = "$projectDir/src/main/assets/vss_rel_4.0.yaml" + * vssDefinitionFile = File(vssDefinitionFilePath) + * } + * + * tasks.withType { + * dependsOn(tasks.withType()) + * } + * ``` + * + * ### Annotation Example * * ``` * @VssDefinition("vss_rel_4.0.yaml") @@ -36,10 +54,8 @@ package org.eclipse.kuksa.vsscore.annotation * then the incremental compiler for KSP needs to be disabled explicitly in the gradle properties. * ``` * - * - * @param vssDefinitionPath the path to the definition file * ``` */ @Target(AnnotationTarget.CLASS) @Retention(AnnotationRetention.SOURCE) -annotation class VssDefinition(val vssDefinitionPath: String) +annotation class VssDefinition(val vssDefinitionName: String) diff --git a/vss-processor-plugin/.gitignore b/vss-processor-plugin/.gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/vss-processor-plugin/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/vss-processor-plugin/build.gradle.kts b/vss-processor-plugin/build.gradle.kts new file mode 100644 index 00000000..c835592e --- /dev/null +++ b/vss-processor-plugin/build.gradle.kts @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * + */ + +repositories { + gradlePluginPortal() + google() + mavenCentral() +} + +plugins { + `kotlin-dsl` + `java-gradle-plugin` + `maven-publish` +// publish +} + +gradlePlugin { + plugins { + create("VssProcessorPlugin") { + id = "org.eclipse.kuksa.vss-processor-plugin" + implementationClass = "org.eclipse.kuksa.vssprocessor.plugin.VssProcessorPlugin" + } + } +} + +group = "org.eclipse.kuksa" +version = "0.1.2" + +dependencies { + implementation(kotlin("stdlib")) +} + +//configure { +// mavenPublicationName = "release" +// componentName = "java" +// description = "Vehicle Signal Specification (VSS) Plugin of the KUKSA SDK" +//} + + diff --git a/vss-processor-plugin/proguard-rules.pro b/vss-processor-plugin/proguard-rules.pro new file mode 100644 index 00000000..481bb434 --- /dev/null +++ b/vss-processor-plugin/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt new file mode 100644 index 00000000..cb8bc15e --- /dev/null +++ b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.eclipse.kuksa.vssprocessor.plugin + +import org.gradle.api.DefaultTask +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.api.file.RegularFileProperty +import org.gradle.api.tasks.InputFile +import org.gradle.api.tasks.TaskAction +import java.io.File + +class VssProcessorPlugin : Plugin { + override fun apply(project: Project) { + } +} + +abstract class ProvideVssDefinitionTask : DefaultTask() { + + @get:InputFile + abstract val vssDefinitionFile: RegularFileProperty + + @TaskAction + fun provideFile() { + val vssDefinitionInputFile = vssDefinitionFile.get().asFile + val buildDirPath = project.buildDir.absolutePath + val vssDefinitionBuildFile = File("$buildDirPath/$KSP_INPUT_BUILD_DIRECTORY/${vssDefinitionInputFile.name}") + + println("Found VSS definition input file: ${vssDefinitionInputFile.name}, copying to: $vssDefinitionBuildFile") + + vssDefinitionInputFile.copyTo(vssDefinitionBuildFile, true) + } + + companion object { + private const val KSP_INPUT_BUILD_DIRECTORY = "kspInput/" + } +} diff --git a/vss-processor/src/main/kotlin/org/eclipse/kuksa/vssprocessor/VssDefinitionProcessor.kt b/vss-processor/src/main/kotlin/org/eclipse/kuksa/vssprocessor/VssDefinitionProcessor.kt index 6b9d239d..a40c85cb 100644 --- a/vss-processor/src/main/kotlin/org/eclipse/kuksa/vssprocessor/VssDefinitionProcessor.kt +++ b/vss-processor/src/main/kotlin/org/eclipse/kuksa/vssprocessor/VssDefinitionProcessor.kt @@ -82,11 +82,11 @@ class VssDefinitionProcessor( ) val vssDefinition = classDeclaration.getAnnotationsByType(VssDefinition::class).firstOrNull() ?: return - val vssDefinitionPath = vssDefinition.vssDefinitionPath + val vssDefinitionPath = vssDefinition.vssDefinitionName val definitionFile = loadAssetFile(vssDefinitionPath) if (definitionFile == null || !definitionFile.exists()) { - logger.info("No VSS definition file was found!") + logger.error("No VSS definition file was found! Is the plugin correctly configured?") return } @@ -100,11 +100,11 @@ class VssDefinitionProcessor( private fun loadAssetFile(fileName: String): File? { val generatedFile = codeGenerator.generatedFile.firstOrNull() ?: return null val generationPath = generatedFile.absolutePath - val buildPath = generationPath.replaceAfterLast(buildDir, "") - val assetsFilePath = buildPath + fileSeparator + assetsDir - val assetsFolder = File(assetsFilePath) + val buildPath = generationPath.replaceAfter(BUILD_FOLDER_NAME, "") + val kspInputFilePath = "$buildPath/$KSP_INPUT_BUILD_DIRECTORY" + val kspInputFolder = File(kspInputFilePath) - return assetsFolder.walk().firstOrNull { it.name == fileName } + return kspInputFolder.walk().firstOrNull { it.name == fileName } } private fun generateModelFiles(vssPathToSpecification: Map) { @@ -140,6 +140,8 @@ class VssDefinitionProcessor( private companion object { private const val PACKAGE_NAME = "org.eclipse.kuksa.vss" private const val FILE_NAME_PROCESSOR_POSTFIX = "Processor" + private const val KSP_INPUT_BUILD_DIRECTORY = "kspInput/" + private const val BUILD_FOLDER_NAME = "build/" private val fileSeparator = File.separator private val assetsDir = "intermediates" + fileSeparator + "assets" + fileSeparator From 121a0e654618423fc71fcccc2969ce3d4b70ec97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Mon, 15 Jan 2024 08:35:29 +0100 Subject: [PATCH 02/29] chore: Add publish of VSS Processor Plugin --- app/build.gradle.kts | 3 +- config/detekt/baseline.xml | 9 +- gradle/libs.versions.toml | 2 +- samples/build.gradle.kts | 3 +- .../kuksa/vsscore/annotation/VssDefinition.kt | 7 +- vss-processor-plugin/build.gradle.kts | 16 +-- .../buildSrc/build.gradle.kts | 23 +++ .../buildSrc/settings.gradle.kts | 26 ++++ .../eclipse/kuksa/version/SemanticVersion.kt | 62 ++++++++ .../src/main/kotlin/publish.gradle.kts | 134 ++++++++++++++++++ .../src/main/kotlin/version.gradle.kts | 37 +++++ .../vssprocessor/plugin/VssProcessorPlugin.kt | 34 +++-- .../vssprocessor/VssDefinitionProcessor.kt | 10 +- 13 files changed, 332 insertions(+), 34 deletions(-) create mode 100644 vss-processor-plugin/buildSrc/build.gradle.kts create mode 100644 vss-processor-plugin/buildSrc/settings.gradle.kts create mode 100644 vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt create mode 100644 vss-processor-plugin/buildSrc/src/main/kotlin/publish.gradle.kts create mode 100644 vss-processor-plugin/buildSrc/src/main/kotlin/version.gradle.kts diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 00aaf98e..ed65af46 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -128,7 +128,8 @@ android { tasks.register("ProvideVssDefinition") { val vssDefinitionFilePath = "$projectDir/src/main/assets/vss_rel_4.0.yaml" - vssDefinitionFile = File(vssDefinitionFilePath) + val regularFile = RegularFile { File(vssDefinitionFilePath) } + vssDefinitionFile.add(regularFile) } tasks.withType { diff --git a/config/detekt/baseline.xml b/config/detekt/baseline.xml index 29197b9a..130c0683 100644 --- a/config/detekt/baseline.xml +++ b/config/detekt/baseline.xml @@ -1,7 +1,6 @@ - + - - EmptyFunctionBlock:VssProcessorPlugin.kt$VssProcessorPlugin${ } - - + + + diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a1d161ed..6ca333f8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] activityKtx = "1.8.0" -androidGradlePlugin = "8.2.0" # Check with detekt table first: https://detekt.dev/docs/introduction/compatibility/ +androidGradlePlugin = "8.2.2" # Check with detekt table first: https://detekt.dev/docs/introduction/compatibility/ datastore = "1.0.0" constraintlayoutCompose = "1.0.1" datastorePreferences = "1.0.0" diff --git a/samples/build.gradle.kts b/samples/build.gradle.kts index 96dcfbab..b553fa64 100644 --- a/samples/build.gradle.kts +++ b/samples/build.gradle.kts @@ -60,7 +60,8 @@ android { tasks.register("ProvideVssDefinition") { val vssDefinitionFilePath = "$projectDir/src/main/assets/vss_rel_4.0.yaml" - vssDefinitionFile = File(vssDefinitionFilePath) + val regularFile = RegularFile { File(vssDefinitionFilePath) } + vssDefinitionFile.add(regularFile) } tasks.withType { diff --git a/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt b/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt index 4e8f0665..d1418e03 100644 --- a/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt +++ b/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt @@ -22,8 +22,8 @@ package org.eclipse.kuksa.vsscore.annotation /** * Add this annotation to any class to trigger the model generation (Kotlin Symbol Processing) for the given * Vehicle Signal Specification definition file. Only .yaml files are currently supported. Use the - * "VSS Processor Plugin" to provide the Symbol Processor with the necessary definition file. Then provide the file name - * via the [vssDefinitionName] parameter (The path can be ignored). + * "VSS Processor Plugin" to provide the Symbol Processor with the necessary definition file(s). Then provide the file + * name via the [vssDefinitionName] parameter (The path can be ignored). * * ### Plugin Example * @@ -34,7 +34,8 @@ package org.eclipse.kuksa.vsscore.annotation * * tasks.register("ProvideVssDefinition") { * val vssDefinitionFilePath = "$projectDir/src/main/assets/vss_rel_4.0.yaml" - * vssDefinitionFile = File(vssDefinitionFilePath) + * val regularFile = RegularFile { File(vssDefinitionFilePath) } + * vssDefinitionFile.add(regularFile) * } * * tasks.withType { diff --git a/vss-processor-plugin/build.gradle.kts b/vss-processor-plugin/build.gradle.kts index c835592e..dec6f792 100644 --- a/vss-processor-plugin/build.gradle.kts +++ b/vss-processor-plugin/build.gradle.kts @@ -26,8 +26,8 @@ repositories { plugins { `kotlin-dsl` `java-gradle-plugin` - `maven-publish` -// publish + publish + version } gradlePlugin { @@ -40,16 +40,16 @@ gradlePlugin { } group = "org.eclipse.kuksa" -version = "0.1.2" +version = rootProject.extra["projectVersion"].toString() dependencies { implementation(kotlin("stdlib")) } -//configure { -// mavenPublicationName = "release" -// componentName = "java" -// description = "Vehicle Signal Specification (VSS) Plugin of the KUKSA SDK" -//} +configure { + mavenPublicationName = "release" + componentName = "java" + description = "Vehicle Signal Specification (VSS) Plugin of the KUKSA SDK" +} diff --git a/vss-processor-plugin/buildSrc/build.gradle.kts b/vss-processor-plugin/buildSrc/build.gradle.kts new file mode 100644 index 00000000..d0e0e4f5 --- /dev/null +++ b/vss-processor-plugin/buildSrc/build.gradle.kts @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * + */ + +plugins { + `kotlin-dsl` + `kotlin-dsl-precompiled-script-plugins` +} diff --git a/vss-processor-plugin/buildSrc/settings.gradle.kts b/vss-processor-plugin/buildSrc/settings.gradle.kts new file mode 100644 index 00000000..3c6ef202 --- /dev/null +++ b/vss-processor-plugin/buildSrc/settings.gradle.kts @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * + */ + +dependencyResolutionManagement { + repositories { + gradlePluginPortal() + google() + mavenCentral() + } +} diff --git a/vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt b/vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt new file mode 100644 index 00000000..6f50845d --- /dev/null +++ b/vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.eclipse.kuksa.version + +import java.util.Locale + +class SemanticVersion(semanticVersion: String) { + val major: Int + val minor: Int + val patch: Int + var suffix: String = "" + + val versionString: String + get() { + var version = "$major.$minor.$patch" + if (suffix.isNotEmpty()) { + version += "-$suffix" + } + + return version + } + + val versionCode: Int + get() { + val decorator = "10" + val paddedMajorVersion = String.format(Locale.ROOT, "%02d", major) + val paddedMinorVersion = String.format(Locale.ROOT, "%02d", minor) + val paddedPatchVersion = String.format(Locale.ROOT, "%02d", patch) + + return "$decorator$paddedMajorVersion$paddedMinorVersion$paddedPatchVersion".toInt() + } + + init { + val versions = semanticVersion.trim() + .substringBefore("-") // Ignore suffixes like -SNAPSHOT + .split(".") + val suffix = semanticVersion.substringAfter("-", "") + + major = versions[0].toInt() + minor = versions[1].toInt() + patch = versions[2].toInt() + this.suffix = suffix + + print("Current SemanticVersion($versionString)\n") + } +} diff --git a/vss-processor-plugin/buildSrc/src/main/kotlin/publish.gradle.kts b/vss-processor-plugin/buildSrc/src/main/kotlin/publish.gradle.kts new file mode 100644 index 00000000..26cff633 --- /dev/null +++ b/vss-processor-plugin/buildSrc/src/main/kotlin/publish.gradle.kts @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * + */ + +plugins { + `maven-publish` + signing +} + +interface PublishPluginExtension { + val mavenPublicationName: Property + val componentName: Property + val description: Property +} + +val extension = project.extensions.create("publish") + +afterEvaluate { + publishing { + repositories { + maven { + name = "OSSRHRelease" + + url = uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/") + credentials { + username = System.getenv("ORG_OSSRH_USERNAME") + password = System.getenv("ORG_OSSRH_PASSWORD") + } + } + maven { + name = "OSSRHSnapshot" + + url = uri("https://oss.sonatype.org/content/repositories/snapshots/") + credentials { + username = System.getenv("ORG_OSSRH_USERNAME") + password = System.getenv("ORG_OSSRH_PASSWORD") + } + } + } + publications { + register(extension.mavenPublicationName.get()) { + from(components[extension.componentName.get()]) + + pom { + name = "${project.group}:${project.name}" + description = extension.description.get() + url = "https://github.com/eclipse-kuksa/kuksa-android-sdk" + licenses { + license { + name.set("The Apache Software License, Version 2.0") + url.set("http://www.apache.org/licenses/LICENSE-2.0.txt") + } + } + developers { + developer { + name = "Mark Hüsers" + email = "mark.huesers@etas.com" + organization = "ETAS GmbH" + organizationUrl = "https://www.etas.com" + } + developer { + name = "Sebastian Schildt" + email = "sebastian.schildt@etas.com" + organization = "ETAS GmbH" + organizationUrl = "https://www.etas.com" + } + developer { + name = "Andre Weber" + email = "andre.weber3@etas.com" + organization = "ETAS GmbH" + organizationUrl = "https://www.etas.com" + } + } + scm { + connection.set("scm:git:github.com/eclipse-kuksa/kuksa-android-sdk.git") + developerConnection.set("scm:git:ssh://github.com/eclipse-kuksa/kuksa-android-sdk.git") + url.set("https://github.com/eclipse-kuksa/kuksa-android-sdk/tree/main") + } + } + } + } + } + + signing { + var keyId: String? = System.getenv("ORG_GPG_KEY_ID") + if (keyId != null && keyId.length > 8) { + keyId = keyId.takeLast(8) + } + val privateKey = System.getenv("ORG_GPG_PRIVATE_KEY") + val passphrase = System.getenv("ORG_GPG_PASSPHRASE") + + useInMemoryPgpKeys( + keyId, + privateKey, + passphrase, + ) + + sign(publishing.publications) + } +} + +gradle.taskGraph.whenReady { + tasks.withType(Sign::class) { + val publishToMavenLocalTask = allTasks.find { it.name.contains("ToMavenLocal") } + val isPublishingToMavenLocal = true + allTasks.forEach { + println("${it.name}") + } +// allTasks. + val muh = tasks.findByName("publishToMavenLocal") +//val muh = tasks["publishReleasePublicationToMavenLocal"] +// println("AHÀ${muh}") + if (isPublishingToMavenLocal) { + println(":${project.name}:$name - Signing is disabled (publishToMavenLocal)") + } + + onlyIf { !isPublishingToMavenLocal } // disable signing when publishing to MavenLocal + } +} diff --git a/vss-processor-plugin/buildSrc/src/main/kotlin/version.gradle.kts b/vss-processor-plugin/buildSrc/src/main/kotlin/version.gradle.kts new file mode 100644 index 00000000..121bc9d6 --- /dev/null +++ b/vss-processor-plugin/buildSrc/src/main/kotlin/version.gradle.kts @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * + */ + +import org.eclipse.kuksa.version.SemanticVersion + +val file = File("$rootDir/../version.txt") +val fileContent = file.readText() +val semanticVersion = SemanticVersion(fileContent) + +updateExtras() + +fun updateExtras() { + rootProject.extra["projectVersion"] = semanticVersion.versionString + rootProject.extra["projectVersionCode"] = semanticVersion.versionCode +} + +fun updateVersion() { + updateExtras() + + file.writeText(semanticVersion.versionString) +} diff --git a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt index cb8bc15e..86807b26 100644 --- a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt +++ b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt @@ -21,33 +21,49 @@ package org.eclipse.kuksa.vssprocessor.plugin import org.gradle.api.DefaultTask import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.api.file.RegularFileProperty -import org.gradle.api.tasks.InputFile +import org.gradle.api.file.RegularFile +import org.gradle.api.provider.ListProperty +import org.gradle.api.tasks.InputFiles import org.gradle.api.tasks.TaskAction import java.io.File class VssProcessorPlugin : Plugin { override fun apply(project: Project) { + // Configuration done by the custom task } } +/** + * This task takes a list of files and copies them into an input folder for the KSP VSS Processor. This is necessary + * because the Symbol Processor does not have access to the android assets folder. + */ abstract class ProvideVssDefinitionTask : DefaultTask() { - @get:InputFile - abstract val vssDefinitionFile: RegularFileProperty + @get:InputFiles + abstract val vssDefinitionFile: ListProperty @TaskAction fun provideFile() { - val vssDefinitionInputFile = vssDefinitionFile.get().asFile val buildDirPath = project.buildDir.absolutePath - val vssDefinitionBuildFile = File("$buildDirPath/$KSP_INPUT_BUILD_DIRECTORY/${vssDefinitionInputFile.name}") + vssDefinitionFile.get().forEach { file -> + val vssDefinitionInputFile = file.asFile + val vssDefinitionBuildFile = File( + "$buildDirPath$fileSeparator" + + "$KSP_INPUT_BUILD_DIRECTORY$fileSeparator" + + vssDefinitionInputFile.name, + ) - println("Found VSS definition input file: ${vssDefinitionInputFile.name}, copying to: $vssDefinitionBuildFile") + println( + "Found VSS definition input file: ${vssDefinitionInputFile.name}, copying to: $vssDefinitionBuildFile", + ) - vssDefinitionInputFile.copyTo(vssDefinitionBuildFile, true) + vssDefinitionInputFile.copyTo(vssDefinitionBuildFile, true) + } } companion object { - private const val KSP_INPUT_BUILD_DIRECTORY = "kspInput/" + private const val KSP_INPUT_BUILD_DIRECTORY = "kspInput" + + private val fileSeparator = File.separator } } diff --git a/vss-processor/src/main/kotlin/org/eclipse/kuksa/vssprocessor/VssDefinitionProcessor.kt b/vss-processor/src/main/kotlin/org/eclipse/kuksa/vssprocessor/VssDefinitionProcessor.kt index a40c85cb..f9786f1c 100644 --- a/vss-processor/src/main/kotlin/org/eclipse/kuksa/vssprocessor/VssDefinitionProcessor.kt +++ b/vss-processor/src/main/kotlin/org/eclipse/kuksa/vssprocessor/VssDefinitionProcessor.kt @@ -100,8 +100,8 @@ class VssDefinitionProcessor( private fun loadAssetFile(fileName: String): File? { val generatedFile = codeGenerator.generatedFile.firstOrNull() ?: return null val generationPath = generatedFile.absolutePath - val buildPath = generationPath.replaceAfter(BUILD_FOLDER_NAME, "") - val kspInputFilePath = "$buildPath/$KSP_INPUT_BUILD_DIRECTORY" + val buildPath = generationPath.replaceAfter("$BUILD_FOLDER_NAME$fileSeparator", "") + val kspInputFilePath = "$buildPath$fileSeparator$KSP_INPUT_BUILD_DIRECTORY" val kspInputFolder = File(kspInputFilePath) return kspInputFolder.walk().firstOrNull { it.name == fileName } @@ -140,12 +140,10 @@ class VssDefinitionProcessor( private companion object { private const val PACKAGE_NAME = "org.eclipse.kuksa.vss" private const val FILE_NAME_PROCESSOR_POSTFIX = "Processor" - private const val KSP_INPUT_BUILD_DIRECTORY = "kspInput/" - private const val BUILD_FOLDER_NAME = "build/" + private const val KSP_INPUT_BUILD_DIRECTORY = "kspInput" + private const val BUILD_FOLDER_NAME = "build" private val fileSeparator = File.separator - private val assetsDir = "intermediates" + fileSeparator + "assets" + fileSeparator - private val buildDir = fileSeparator + "build" + fileSeparator } } From 848f0198bd2e01bf7c9a72ce5c0dd060a71c6e46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Wed, 31 Jan 2024 11:26:27 +0100 Subject: [PATCH 03/29] chore: Enable publish for VSS Processor Plugin --- buildSrc/src/main/kotlin/publish.gradle.kts | 16 +++------- kuksa-sdk/build.gradle.kts | 23 ++++++++++++++ vss-processor-plugin/build.gradle.kts | 3 -- .../src/main/kotlin/publish.gradle.kts | 27 +--------------- .../src/main/kotlin/version.gradle.kts | 31 +++++++++++++++++++ 5 files changed, 60 insertions(+), 40 deletions(-) diff --git a/buildSrc/src/main/kotlin/publish.gradle.kts b/buildSrc/src/main/kotlin/publish.gradle.kts index acf4522d..efb71751 100644 --- a/buildSrc/src/main/kotlin/publish.gradle.kts +++ b/buildSrc/src/main/kotlin/publish.gradle.kts @@ -111,18 +111,12 @@ afterEvaluate { ) sign(publishing.publications) - } -} -gradle.taskGraph.whenReady { - tasks.withType(Sign::class) { - val publishToMavenLocalTask = allTasks.find { it.name.contains("publishToMavenLocal") } - val isPublishingToMavenLocal = publishToMavenLocalTask != null - - if (isPublishingToMavenLocal) { - println(":${project.name}:$name - Signing is disabled (publishToMavenLocal)") - } + setRequired({ + val publishToMavenLocalTask = gradle.taskGraph.allTasks.find { it.name.contains("ToMavenLocal") } + val isPublishingToMavenLocal = publishToMavenLocalTask != null - onlyIf { !isPublishingToMavenLocal } // disable signing when publishing to MavenLocal + !isPublishingToMavenLocal // disable signing when publishing to MavenLocal + }) } } diff --git a/kuksa-sdk/build.gradle.kts b/kuksa-sdk/build.gradle.kts index f10156c0..623ec389 100644 --- a/kuksa-sdk/build.gradle.kts +++ b/kuksa-sdk/build.gradle.kts @@ -122,3 +122,26 @@ protobuf { } } } + +// Tasks for included composite builds need to be called separately. For convenience sake we depend on the most used +// tasks. Every task execution of the main project will then be forwarded to the included build project. +// +// We have to manually define the task names because the task() method of the included build throws an error for any +// unknown task. +val dependentCompositeTasks = setOf( + "setSnapshotVersion", + "setReleaseVersion", + "publishToMavenLocal", + "publishAllPublicationsToOSSRHSnapshotRepository", + "publishAllPublicationsToOSSRHReleaseRepository" +) +tasks + .filter { dependentCompositeTasks.contains(it.name) } + .forEach { task -> + val compositeTask = gradle.includedBuilds.map { compositeBuild -> + val compositeTaskPath = task.path.substringAfter(":kuksa-sdk") + compositeBuild.task(compositeTaskPath) + } + + task.dependsOn(compositeTask) + } diff --git a/vss-processor-plugin/build.gradle.kts b/vss-processor-plugin/build.gradle.kts index dec6f792..a631fa46 100644 --- a/vss-processor-plugin/build.gradle.kts +++ b/vss-processor-plugin/build.gradle.kts @@ -47,9 +47,6 @@ dependencies { } configure { - mavenPublicationName = "release" - componentName = "java" description = "Vehicle Signal Specification (VSS) Plugin of the KUKSA SDK" } - diff --git a/vss-processor-plugin/buildSrc/src/main/kotlin/publish.gradle.kts b/vss-processor-plugin/buildSrc/src/main/kotlin/publish.gradle.kts index 26cff633..0c70a75f 100644 --- a/vss-processor-plugin/buildSrc/src/main/kotlin/publish.gradle.kts +++ b/vss-processor-plugin/buildSrc/src/main/kotlin/publish.gradle.kts @@ -23,8 +23,6 @@ plugins { } interface PublishPluginExtension { - val mavenPublicationName: Property - val componentName: Property val description: Property } @@ -53,9 +51,7 @@ afterEvaluate { } } publications { - register(extension.mavenPublicationName.get()) { - from(components[extension.componentName.get()]) - + getByName("pluginMaven") { pom { name = "${project.group}:${project.name}" description = extension.description.get() @@ -109,26 +105,5 @@ afterEvaluate { privateKey, passphrase, ) - - sign(publishing.publications) - } -} - -gradle.taskGraph.whenReady { - tasks.withType(Sign::class) { - val publishToMavenLocalTask = allTasks.find { it.name.contains("ToMavenLocal") } - val isPublishingToMavenLocal = true - allTasks.forEach { - println("${it.name}") - } -// allTasks. - val muh = tasks.findByName("publishToMavenLocal") -//val muh = tasks["publishReleasePublicationToMavenLocal"] -// println("AHÀ${muh}") - if (isPublishingToMavenLocal) { - println(":${project.name}:$name - Signing is disabled (publishToMavenLocal)") - } - - onlyIf { !isPublishingToMavenLocal } // disable signing when publishing to MavenLocal } } diff --git a/vss-processor-plugin/buildSrc/src/main/kotlin/version.gradle.kts b/vss-processor-plugin/buildSrc/src/main/kotlin/version.gradle.kts index 121bc9d6..6abd1df5 100644 --- a/vss-processor-plugin/buildSrc/src/main/kotlin/version.gradle.kts +++ b/vss-processor-plugin/buildSrc/src/main/kotlin/version.gradle.kts @@ -25,6 +25,37 @@ val semanticVersion = SemanticVersion(fileContent) updateExtras() +// Do not chain this command because it writes into a file which needs to be re-read inside the next gradle command +tasks.register("setReleaseVersion") { + group = "version" + doLast { + semanticVersion.suffix = "" + + updateVersion() + } +} + +// Do not chain this command because it writes into a file which needs to be re-read inside the next gradle command +tasks.register("setSnapshotVersion") { + group = "version" + doLast { + semanticVersion.suffix = "SNAPSHOT" + + updateVersion() + } +} + +tasks.register("printVersion") { + group = "version" + doLast { + val version = semanticVersion.versionString + + println("VERSION=$version") + } + + mustRunAfter("setReleaseVersion", "setSnapshotVersion") +} + fun updateExtras() { rootProject.extra["projectVersion"] = semanticVersion.versionString rootProject.extra["projectVersionCode"] = semanticVersion.versionCode From aad0a0cf29b0854c90577939eda51fd95adea3a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Wed, 31 Jan 2024 13:20:17 +0100 Subject: [PATCH 04/29] docs: Add VSS Processor Plugin docs --- README.md | 2 +- docs/QUICKSTART.md | 23 ++++++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d3860696..eb9fa46c 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ within an Android App. The main functionality consists of fetching, updating and ## Integration -*build.gradle* +*build.gradle.kts* ``` implementation("org.eclipse.kuksa:kuksa-sdk:") ``` diff --git a/docs/QUICKSTART.md b/docs/QUICKSTART.md index ffbb0571..bf04816f 100644 --- a/docs/QUICKSTART.md +++ b/docs/QUICKSTART.md @@ -4,7 +4,7 @@ Get instantly bootstrapped into the world of the KUKSA SDK with the following co ## Integration -*build.gradle* +*build.gradle.kts* ``` implementation("org.eclipse.kuksa:kuksa-sdk:") ``` @@ -153,9 +153,26 @@ For a more convenient usage you can opt in to auto generate Kotlin models via [S of the same specification the Databroker uses. For starters you can retrieve an extensive default specification from the release page of the [COVESA Vehicle Signal Specification GitHub repository](https://github.com/COVESA/vehicle_signal_specification/releases). -*build.gradle* +*build.gradle.kts* ``` -ksp("org.eclipse.kuksa:vss-processor:") +plugins { + id("org.eclipse.kuksa.vss-processor-plugin") +} + +dependencies { + ksp("org.eclipse.kuksa:vss-processor:") +} + +// Copies the given specification file to the KSP processor +tasks.register("ProvideVssDefinition") { + val vssDefinitionFilePath = "$projectDir/src/main/assets/" + val regularFile = RegularFile { File(vssDefinitionFilePath) } + vssDefinitionFile.add(regularFile) +} + +tasks.withType { + dependsOn(tasks.withType()) +} ``` Use the new [`VssDefinition`](https://github.com/eclipse-kuksa/kuksa-android-sdk/blob/main/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt) annotation and provide the path to the specification file (Inside the assets folder). From 09411de4f9f363e1f83d5f5a5e43c65337c3b747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Wed, 31 Jan 2024 13:45:20 +0100 Subject: [PATCH 05/29] chore: Update Checkout to v4 --- .github/workflows/build-main.yaml | 2 +- .github/workflows/build-pull-request.yaml | 2 +- .github/workflows/check-license.yaml | 2 +- .github/workflows/commitlint.yaml | 2 +- .github/workflows/dash.yaml | 2 +- .github/workflows/deploy-release.yaml | 2 +- .github/workflows/deploy-snapshot.yaml | 2 +- kuksa-sdk/build.gradle.kts | 2 +- settings.gradle.kts | 2 +- vss-processor-plugin/build.gradle.kts | 1 - 10 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index 684111ce..1747dea4 100755 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Project uses: ./.github/actions/setup-project diff --git a/.github/workflows/build-pull-request.yaml b/.github/workflows/build-pull-request.yaml index 907f2019..1e6cc0f2 100755 --- a/.github/workflows/build-pull-request.yaml +++ b/.github/workflows/build-pull-request.yaml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: "Run Docker Container of Databroker in detached mode" run: docker run --pull=always --rm --publish 55556:55556/tcp --detach --name databroker ghcr.io/eclipse/kuksa.val/databroker:master --port 55556 --insecure diff --git a/.github/workflows/check-license.yaml b/.github/workflows/check-license.yaml index 1c73a27f..d1016db7 100755 --- a/.github/workflows/check-license.yaml +++ b/.github/workflows/check-license.yaml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: # required to grab the history of the PR fetch-depth: 0 diff --git a/.github/workflows/commitlint.yaml b/.github/workflows/commitlint.yaml index ed49d02a..19f916ee 100644 --- a/.github/workflows/commitlint.yaml +++ b/.github/workflows/commitlint.yaml @@ -8,6 +8,6 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - uses: wagoid/commitlint-github-action@v5 diff --git a/.github/workflows/dash.yaml b/.github/workflows/dash.yaml index 50ab90d2..31e3dfad 100644 --- a/.github/workflows/dash.yaml +++ b/.github/workflows/dash.yaml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Project uses: ./.github/actions/setup-project diff --git a/.github/workflows/deploy-release.yaml b/.github/workflows/deploy-release.yaml index 67b65a0a..bd101611 100644 --- a/.github/workflows/deploy-release.yaml +++ b/.github/workflows/deploy-release.yaml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Project uses: ./.github/actions/setup-project diff --git a/.github/workflows/deploy-snapshot.yaml b/.github/workflows/deploy-snapshot.yaml index cc180e07..89c05d83 100644 --- a/.github/workflows/deploy-snapshot.yaml +++ b/.github/workflows/deploy-snapshot.yaml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Project uses: ./.github/actions/setup-project diff --git a/kuksa-sdk/build.gradle.kts b/kuksa-sdk/build.gradle.kts index 623ec389..975726d9 100644 --- a/kuksa-sdk/build.gradle.kts +++ b/kuksa-sdk/build.gradle.kts @@ -133,7 +133,7 @@ val dependentCompositeTasks = setOf( "setReleaseVersion", "publishToMavenLocal", "publishAllPublicationsToOSSRHSnapshotRepository", - "publishAllPublicationsToOSSRHReleaseRepository" + "publishAllPublicationsToOSSRHReleaseRepository", ) tasks .filter { dependentCompositeTasks.contains(it.name) } diff --git a/settings.gradle.kts b/settings.gradle.kts index 4c1dd722..92ea4cd7 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -28,7 +28,7 @@ pluginManagement { plugins { id("com.google.devtools.ksp") version "1.9.0-1.0.11" - id("org.eclipse.kuksa.vss-processor-plugin") version "0.1.2" + id("org.eclipse.kuksa.vss-processor-plugin") version "0.1.3" kotlin("jvm") version "1.9.0-1.0.11" kotlin("plugin.serialization") version "1.9.0" } diff --git a/vss-processor-plugin/build.gradle.kts b/vss-processor-plugin/build.gradle.kts index a631fa46..c6460623 100644 --- a/vss-processor-plugin/build.gradle.kts +++ b/vss-processor-plugin/build.gradle.kts @@ -49,4 +49,3 @@ dependencies { configure { description = "Vehicle Signal Specification (VSS) Plugin of the KUKSA SDK" } - From e997a9116ff323958806efc3a99603dad31d5845 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Thu, 1 Feb 2024 18:43:43 +0100 Subject: [PATCH 06/29] chore: Add automatic search to VSS files The plugin is now taking care of finding compatible VSS files or using the config provided by the developer. Afterwards it executes the custom task to copy the VSS files to the ksp input folder. --- .github/actions/setup-project/action.yaml | 4 +- app/build.gradle.kts | 13 +-- build.gradle.kts | 30 +++++ kuksa-sdk/build.gradle.kts | 23 +--- samples/build.gradle.kts | 14 +-- vss-core/build.gradle.kts | 2 +- vss-processor-plugin/build.gradle.kts | 2 +- .../vssprocessor/plugin/VssProcessorPlugin.kt | 103 ++++++++++++++++-- vss-processor/build.gradle.kts | 2 +- .../vssprocessor/VssDefinitionProcessor.kt | 2 +- 10 files changed, 136 insertions(+), 59 deletions(-) diff --git a/.github/actions/setup-project/action.yaml b/.github/actions/setup-project/action.yaml index 6eae6c99..15d4458f 100644 --- a/.github/actions/setup-project/action.yaml +++ b/.github/actions/setup-project/action.yaml @@ -4,10 +4,10 @@ description: Setups the gradle and java environment runs: using: "composite" steps: - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '17' - name: Setup Gradle - uses: gradle/gradle-build-action@v2 + uses: gradle/gradle-build-action@v3 diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ed65af46..285c2d96 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -19,9 +19,7 @@ @file:Suppress("UnstableApiUsage") -import com.google.devtools.ksp.gradle.KspTask import org.eclipse.kuksa.property.PropertiesLoader -import org.eclipse.kuksa.vssprocessor.plugin.ProvideVssDefinitionTask plugins { id("com.android.application") @@ -126,14 +124,9 @@ android { } } -tasks.register("ProvideVssDefinition") { - val vssDefinitionFilePath = "$projectDir/src/main/assets/vss_rel_4.0.yaml" - val regularFile = RegularFile { File(vssDefinitionFilePath) } - vssDefinitionFile.add(regularFile) -} - -tasks.withType { - dependsOn(tasks.withType()) +vssProcessor { + searchPath = "$projectDir/src/main/assets" + fileName = "vss_rel_4.0.yaml" } tasks.withType().configureEach { diff --git a/build.gradle.kts b/build.gradle.kts index 7ff5817d..72ec308b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -83,3 +83,33 @@ tasks.register("mergeDashFiles") { } } } + +// Tasks for included composite builds need to be called separately. For convenience sake we depend on the most used +// tasks. Every task execution of the main project will then be forwarded to the included build project. +// +// We have to manually define the task names because the task() method of the included build throws an error for any +// unknown task. +val dependentCompositeTasks = setOf( + "setSnapshotVersion", + "setReleaseVersion", + "publishToMavenLocal", + "publishAllPublicationsToOSSRHSnapshotRepository", + "publishAllPublicationsToOSSRHReleaseRepository", +) + +gradle.projectsEvaluated { + val subProjectTasks = tasks + subprojects.flatMap { it.tasks } + + subProjectTasks + .filter { dependentCompositeTasks.contains(it.name) } + .forEach { task -> + val compositeTask = gradle.includedBuilds.map { compositeBuild -> + val compositeTaskPath = task.path.substringAfterLast(":") + println("Linking composite task - ${compositeBuild.name} <-> ${task.project}:${task.name}") + + compositeBuild.task(":$compositeTaskPath") + } + + task.dependsOn(compositeTask) + } +} diff --git a/kuksa-sdk/build.gradle.kts b/kuksa-sdk/build.gradle.kts index 975726d9..d26ed2ce 100644 --- a/kuksa-sdk/build.gradle.kts +++ b/kuksa-sdk/build.gradle.kts @@ -92,7 +92,7 @@ dependencies { testImplementation(libs.mockk) } -configure { +publish { mavenPublicationName = "release" componentName = "release" description = "Android Connectivity Library for the KUKSA Databroker" @@ -123,25 +123,4 @@ protobuf { } } -// Tasks for included composite builds need to be called separately. For convenience sake we depend on the most used -// tasks. Every task execution of the main project will then be forwarded to the included build project. -// -// We have to manually define the task names because the task() method of the included build throws an error for any -// unknown task. -val dependentCompositeTasks = setOf( - "setSnapshotVersion", - "setReleaseVersion", - "publishToMavenLocal", - "publishAllPublicationsToOSSRHSnapshotRepository", - "publishAllPublicationsToOSSRHReleaseRepository", -) -tasks - .filter { dependentCompositeTasks.contains(it.name) } - .forEach { task -> - val compositeTask = gradle.includedBuilds.map { compositeBuild -> - val compositeTaskPath = task.path.substringAfter(":kuksa-sdk") - compositeBuild.task(compositeTaskPath) - } - task.dependsOn(compositeTask) - } diff --git a/samples/build.gradle.kts b/samples/build.gradle.kts index b553fa64..be77d87c 100644 --- a/samples/build.gradle.kts +++ b/samples/build.gradle.kts @@ -1,6 +1,3 @@ -import com.google.devtools.ksp.gradle.KspTask -import org.eclipse.kuksa.vssprocessor.plugin.ProvideVssDefinitionTask - /* * Copyright (c) 2023 Contributors to the Eclipse Foundation * @@ -58,14 +55,9 @@ android { } } -tasks.register("ProvideVssDefinition") { - val vssDefinitionFilePath = "$projectDir/src/main/assets/vss_rel_4.0.yaml" - val regularFile = RegularFile { File(vssDefinitionFilePath) } - vssDefinitionFile.add(regularFile) -} - -tasks.withType { - dependsOn(tasks.withType()) +vssProcessor { + searchPath = "$projectDir/src/main/assets" + fileName = "vss_rel_4.0.yaml" } dependencies { diff --git a/vss-core/build.gradle.kts b/vss-core/build.gradle.kts index bc5ce547..8896e09a 100644 --- a/vss-core/build.gradle.kts +++ b/vss-core/build.gradle.kts @@ -48,7 +48,7 @@ tasks.withType().configureEach { } } -configure { +publish { mavenPublicationName = "release" componentName = "java" description = "Vehicle Signal Specification (VSS) Core Module of the KUKSA SDK" diff --git a/vss-processor-plugin/build.gradle.kts b/vss-processor-plugin/build.gradle.kts index c6460623..e373bab5 100644 --- a/vss-processor-plugin/build.gradle.kts +++ b/vss-processor-plugin/build.gradle.kts @@ -46,6 +46,6 @@ dependencies { implementation(kotlin("stdlib")) } -configure { +publish { description = "Vehicle Signal Specification (VSS) Plugin of the KUKSA SDK" } diff --git a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt index 86807b26..b55e9ad1 100644 --- a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt +++ b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt @@ -22,40 +22,123 @@ import org.gradle.api.DefaultTask import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.file.RegularFile +import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.ListProperty +import org.gradle.api.provider.Property import org.gradle.api.tasks.InputFiles import org.gradle.api.tasks.TaskAction +import org.gradle.kotlin.dsl.create +import org.gradle.kotlin.dsl.register import java.io.File +import javax.inject.Inject +open class VssProcessorPluginExtension +@Inject +internal constructor(objectFactory: ObjectFactory) { + /** + * The default search path is the main assets folder. If + */ + val searchPath: Property = objectFactory.property(String::class.java).convention("") + val fileName: Property = objectFactory.property(String::class.java).convention("") +} + +/** + * This Plugin searches for compatible specification files and copies them into an input folder for the + * KSP VSS Processor. This is necessary because the Symbol Processor does not have access to the android assets folder. + * The default search path is the main assets folder. + * + */ class VssProcessorPlugin : Plugin { override fun apply(project: Project) { - // Configuration done by the custom task + val extension = project.extensions.create(EXTENSION_NAME) + + val mainAssetsDirectory = "${project.projectDir}${fileSeparator}$mainAssetsDirectory" + val searchDirectory = extension.searchPath.get().ifEmpty { mainAssetsDirectory } + + val compatibleFiles = findFiles( + directory = searchDirectory, + fileName = extension.fileName.get(), + validExtensions = compatibleExtensions + ) + + val provideVssDefinitionTask = project.tasks.register("ProvideVssDefinition") { + compatibleFiles.forEach { definitionFile -> + val regularFile = RegularFile { definitionFile } + vssDefinitionFiles.add(regularFile) + } + } + + project.tasks.getByName("preBuild").finalizedBy( + provideVssDefinitionTask.get() + ) + } + + private fun findFiles( + directory: String, + fileName: String = "", + validExtensions: Collection, + ): Sequence { + val mainAssetsFolder = File(directory) + + return mainAssetsFolder + .walk() + .filter { validExtensions.contains(it.extension) } + .filter { file -> + if (fileName.isEmpty()) return@filter true + + file.name == fileName + } + } + + companion object { + private const val EXTENSION_NAME = "vssProcessor" + + private val compatibleExtensions = setOf("yaml") + private val fileSeparator = File.separator + private val mainAssetsDirectory = "src$fileSeparator" + "main$fileSeparator" + "assets" } } -/** - * This task takes a list of files and copies them into an input folder for the KSP VSS Processor. This is necessary - * because the Symbol Processor does not have access to the android assets folder. - */ abstract class ProvideVssDefinitionTask : DefaultTask() { @get:InputFiles - abstract val vssDefinitionFile: ListProperty + abstract val vssDefinitionFiles: ListProperty @TaskAction fun provideFile() { +// val buildDirPath = project.buildDir.absolutePath +// val mainAssets = "${project.projectDir}$fileSeparator$mainAssetsDirectory" +// val mainAssetsFolder = File(mainAssets) + +// mainAssetsFolder +// .walk() +// .filter { compatibleExtensions.contains(it.extension) } +// .forEach { vssDefinitionInputFile -> +// val vssDefinitionBuildFile = File( +// "$buildDirPath$fileSeparator" + +// "$KSP_INPUT_BUILD_DIRECTORY$fileSeparator" + +// vssDefinitionInputFile.name, +// ) +// +// println( +// "Found VSS definition input file: ${vssDefinitionInputFile.name}, " + +// "copying to: $vssDefinitionBuildFile", +// ) +// +// vssDefinitionInputFile.copyTo(vssDefinitionBuildFile, true) +// } + val buildDirPath = project.buildDir.absolutePath - vssDefinitionFile.get().forEach { file -> + vssDefinitionFiles.get().forEach { file -> val vssDefinitionInputFile = file.asFile + println("Searching for VSS file: ${vssDefinitionInputFile.absolutePath}") val vssDefinitionBuildFile = File( "$buildDirPath$fileSeparator" + "$KSP_INPUT_BUILD_DIRECTORY$fileSeparator" + vssDefinitionInputFile.name, ) - println( - "Found VSS definition input file: ${vssDefinitionInputFile.name}, copying to: $vssDefinitionBuildFile", - ) + println("Found VSS input file: ${vssDefinitionInputFile.name}, copying to: $vssDefinitionBuildFile") vssDefinitionInputFile.copyTo(vssDefinitionBuildFile, true) } diff --git a/vss-processor/build.gradle.kts b/vss-processor/build.gradle.kts index 2b242f33..3b03b284 100644 --- a/vss-processor/build.gradle.kts +++ b/vss-processor/build.gradle.kts @@ -52,7 +52,7 @@ tasks.withType().configureEach { } } -configure { +publish { mavenPublicationName = "release" componentName = "java" description = "Vehicle Signal Specification (VSS) Code Generator for the KUKSA SDK" diff --git a/vss-processor/src/main/kotlin/org/eclipse/kuksa/vssprocessor/VssDefinitionProcessor.kt b/vss-processor/src/main/kotlin/org/eclipse/kuksa/vssprocessor/VssDefinitionProcessor.kt index f9786f1c..42ffd1e3 100644 --- a/vss-processor/src/main/kotlin/org/eclipse/kuksa/vssprocessor/VssDefinitionProcessor.kt +++ b/vss-processor/src/main/kotlin/org/eclipse/kuksa/vssprocessor/VssDefinitionProcessor.kt @@ -100,7 +100,7 @@ class VssDefinitionProcessor( private fun loadAssetFile(fileName: String): File? { val generatedFile = codeGenerator.generatedFile.firstOrNull() ?: return null val generationPath = generatedFile.absolutePath - val buildPath = generationPath.replaceAfter("$BUILD_FOLDER_NAME$fileSeparator", "") + val buildPath = generationPath.replaceAfterLast("$BUILD_FOLDER_NAME$fileSeparator", "") val kspInputFilePath = "$buildPath$fileSeparator$KSP_INPUT_BUILD_DIRECTORY" val kspInputFolder = File(kspInputFilePath) From 32276336de066d20698fc4b6aa4ce4739f500af2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Fri, 2 Feb 2024 16:13:38 +0100 Subject: [PATCH 07/29] chore: Switch to gradle publish plugin --- .github/workflows/deploy-snapshot.yaml | 2 +- buildSrc/build.gradle.kts | 2 +- gradle/libs.versions.toml | 1 + vss-processor-plugin/build.gradle.kts | 112 ++++++++++-- .../src/main/kotlin/publish.gradle.kts | 163 +++++++++--------- vss-processor-plugin/settings.gradle.kts | 42 +++++ .../vssprocessor/plugin/VssProcessorPlugin.kt | 8 +- 7 files changed, 234 insertions(+), 96 deletions(-) create mode 100644 vss-processor-plugin/settings.gradle.kts diff --git a/.github/workflows/deploy-snapshot.yaml b/.github/workflows/deploy-snapshot.yaml index 89c05d83..e2288bb1 100644 --- a/.github/workflows/deploy-snapshot.yaml +++ b/.github/workflows/deploy-snapshot.yaml @@ -5,7 +5,7 @@ concurrency: snapshot on: push: branches: - - main + - feature-45-work jobs: deployment: diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index cf8e4b48..ebcfe519 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -8,7 +8,7 @@ * 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, + * distributed under the Lice nse 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/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6ca333f8..8565a265 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -71,3 +71,4 @@ grpc-protoc-java-gen = { group = "io.grpc", name = "protoc-gen-grpc-java", versi [plugins] dokka = { id = "org.jetbrains.dokka", version.ref = "kotlin" } +pluginPublishing = { id = "com.gradle.plugin-publish", version = "1.2.1" } diff --git a/vss-processor-plugin/build.gradle.kts b/vss-processor-plugin/build.gradle.kts index e373bab5..09ac1027 100644 --- a/vss-processor-plugin/build.gradle.kts +++ b/vss-processor-plugin/build.gradle.kts @@ -17,35 +17,119 @@ * */ -repositories { - gradlePluginPortal() - google() - mavenCentral() -} - plugins { + alias(libs.plugins.pluginPublishing) + signing `kotlin-dsl` - `java-gradle-plugin` - publish +// publish version } +group = "org.eclipse.kuksa" +version = rootProject.extra["projectVersion"].toString() + gradlePlugin { + website.set("https://github.com/eclipse-kuksa/kuksa-android-sdk") + vcsUrl.set("https://github.com/eclipse-kuksa/kuksa-android-sdk") plugins { create("VssProcessorPlugin") { id = "org.eclipse.kuksa.vss-processor-plugin" implementationClass = "org.eclipse.kuksa.vssprocessor.plugin.VssProcessorPlugin" + displayName = "Vss Processor Plugin" + tags.set(listOf("KUKSA", "Vehicle Signal Specification", "VSS", "android", "kotlin")) + description = "Vehicle Signal Specification (VSS) Plugin of the KUKSA SDK. This is used in combination " + + "with the KSP processor component 'KUKSA VSS Processor'. The plugin is configured to provide " + + "VSS Files to KSP processor. This is mandatory to use the 'KUKSA VSS Processor' component." } } } -group = "org.eclipse.kuksa" -version = rootProject.extra["projectVersion"].toString() +afterEvaluate { + publishing { + repositories { + maven { + name = "OSSRHRelease" -dependencies { - implementation(kotlin("stdlib")) + url = uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/") + credentials { + username = System.getenv("ORG_OSSRH_USERNAME") + password = System.getenv("ORG_OSSRH_PASSWORD") + } + } + maven { + name = "OSSRHSnapshot" + + url = uri("https://oss.sonatype.org/content/repositories/snapshots/") + credentials { + username = System.getenv("ORG_OSSRH_USERNAME") + password = System.getenv("ORG_OSSRH_PASSWORD") + } + } + } + publications { + getByName("pluginMaven") { + pom { + licenses { + license { + name.set("The Apache Software License, Version 2.0") + url.set("http://www.apache.org/licenses/LICENSE-2.0.txt") + } + } + developers { + developer { + name = "Mark Hüsers" + email = "mark.huesers@etas.com" + organization = "ETAS GmbH" + organizationUrl = "https://www.etas.com" + } + developer { + name = "Sebastian Schildt" + email = "sebastian.schildt@etas.com" + organization = "ETAS GmbH" + organizationUrl = "https://www.etas.com" + } + developer { + name = "Andre Weber" + email = "andre.weber3@etas.com" + organization = "ETAS GmbH" + organizationUrl = "https://www.etas.com" + } + } + scm { + connection.set("scm:git:github.com/eclipse-kuksa/kuksa-android-sdk.git") + developerConnection.set("scm:git:ssh://github.com/eclipse-kuksa/kuksa-android-sdk.git") + url.set("https://github.com/eclipse-kuksa/kuksa-android-sdk/tree/main") + } + } + } + } + } + + signing { + var keyId: String? = System.getenv("ORG_GPG_KEY_ID") + if (keyId != null && keyId.length > 8) { + keyId = keyId.takeLast(8) + } + val privateKey = System.getenv("ORG_GPG_PRIVATE_KEY") + val passphrase = System.getenv("ORG_GPG_PASSPHRASE") + + useInMemoryPgpKeys( + keyId, + privateKey, + passphrase, + ) + + sign(publishing.publications) + + setRequired({ + val publishToMavenLocalTask = gradle.taskGraph.allTasks.find { it.name.contains("ToMavenLocal") } + val isPublishingToMavenLocal = publishToMavenLocalTask != null + + !isPublishingToMavenLocal // disable signing when publishing to MavenLocal + }) + } } -publish { - description = "Vehicle Signal Specification (VSS) Plugin of the KUKSA SDK" +dependencies { + implementation(kotlin("stdlib")) } diff --git a/vss-processor-plugin/buildSrc/src/main/kotlin/publish.gradle.kts b/vss-processor-plugin/buildSrc/src/main/kotlin/publish.gradle.kts index 0c70a75f..c1ffd499 100644 --- a/vss-processor-plugin/buildSrc/src/main/kotlin/publish.gradle.kts +++ b/vss-processor-plugin/buildSrc/src/main/kotlin/publish.gradle.kts @@ -18,7 +18,7 @@ */ plugins { - `maven-publish` +// id("com.gradle.plugin-publish") signing } @@ -28,82 +28,87 @@ interface PublishPluginExtension { val extension = project.extensions.create("publish") -afterEvaluate { - publishing { - repositories { - maven { - name = "OSSRHRelease" +//afterEvaluate { +// publishing { +// repositories { +// maven { +// name = "OSSRHRelease" +// +// url = uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/") +// credentials { +// username = System.getenv("ORG_OSSRH_USERNAME") +// password = System.getenv("ORG_OSSRH_PASSWORD") +// } +// } +// maven { +// name = "OSSRHSnapshot" +// +// url = uri("https://oss.sonatype.org/content/repositories/snapshots/") +// credentials { +// username = System.getenv("ORG_OSSRH_USERNAME") +// password = System.getenv("ORG_OSSRH_PASSWORD") +// } +// } +// } +// publications { +// getByName("pluginMaven") { +// pom { +// name = "${project.group}:${project.name}" +// description = extension.description.get() +// url = "https://github.com/eclipse-kuksa/kuksa-android-sdk" +// licenses { +// license { +// name.set("The Apache Software License, Version 2.0") +// url.set("http://www.apache.org/licenses/LICENSE-2.0.txt") +// } +// } +// developers { +// developer { +// name = "Mark Hüsers" +// email = "mark.huesers@etas.com" +// organization = "ETAS GmbH" +// organizationUrl = "https://www.etas.com" +// } +// developer { +// name = "Sebastian Schildt" +// email = "sebastian.schildt@etas.com" +// organization = "ETAS GmbH" +// organizationUrl = "https://www.etas.com" +// } +// developer { +// name = "Andre Weber" +// email = "andre.weber3@etas.com" +// organization = "ETAS GmbH" +// organizationUrl = "https://www.etas.com" +// } +// } +// scm { +// connection.set("scm:git:github.com/eclipse-kuksa/kuksa-android-sdk.git") +// developerConnection.set("scm:git:ssh://github.com/eclipse-kuksa/kuksa-android-sdk.git") +// url.set("https://github.com/eclipse-kuksa/kuksa-android-sdk/tree/main") +// } +// } +// } +// } +// } +// +// signing { +// var keyId: String? = System.getenv("ORG_GPG_KEY_ID") +// if (keyId != null && keyId.length > 8) { +// keyId = keyId.takeLast(8) +// } +// val privateKey = System.getenv("ORG_GPG_PRIVATE_KEY") +// val passphrase = System.getenv("ORG_GPG_PASSPHRASE") +// +// useInMemoryPgpKeys( +// keyId, +// privateKey, +// passphrase, +// ) +// } +//} - url = uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/") - credentials { - username = System.getenv("ORG_OSSRH_USERNAME") - password = System.getenv("ORG_OSSRH_PASSWORD") - } - } - maven { - name = "OSSRHSnapshot" - - url = uri("https://oss.sonatype.org/content/repositories/snapshots/") - credentials { - username = System.getenv("ORG_OSSRH_USERNAME") - password = System.getenv("ORG_OSSRH_PASSWORD") - } - } - } - publications { - getByName("pluginMaven") { - pom { - name = "${project.group}:${project.name}" - description = extension.description.get() - url = "https://github.com/eclipse-kuksa/kuksa-android-sdk" - licenses { - license { - name.set("The Apache Software License, Version 2.0") - url.set("http://www.apache.org/licenses/LICENSE-2.0.txt") - } - } - developers { - developer { - name = "Mark Hüsers" - email = "mark.huesers@etas.com" - organization = "ETAS GmbH" - organizationUrl = "https://www.etas.com" - } - developer { - name = "Sebastian Schildt" - email = "sebastian.schildt@etas.com" - organization = "ETAS GmbH" - organizationUrl = "https://www.etas.com" - } - developer { - name = "Andre Weber" - email = "andre.weber3@etas.com" - organization = "ETAS GmbH" - organizationUrl = "https://www.etas.com" - } - } - scm { - connection.set("scm:git:github.com/eclipse-kuksa/kuksa-android-sdk.git") - developerConnection.set("scm:git:ssh://github.com/eclipse-kuksa/kuksa-android-sdk.git") - url.set("https://github.com/eclipse-kuksa/kuksa-android-sdk/tree/main") - } - } - } - } - } - - signing { - var keyId: String? = System.getenv("ORG_GPG_KEY_ID") - if (keyId != null && keyId.length > 8) { - keyId = keyId.takeLast(8) - } - val privateKey = System.getenv("ORG_GPG_PRIVATE_KEY") - val passphrase = System.getenv("ORG_GPG_PASSPHRASE") - - useInMemoryPgpKeys( - keyId, - privateKey, - passphrase, - ) - } -} +//gradlePlugin { +// website = "" +// vcsUrl = "" +//} diff --git a/vss-processor-plugin/settings.gradle.kts b/vss-processor-plugin/settings.gradle.kts new file mode 100644 index 00000000..2f92194d --- /dev/null +++ b/vss-processor-plugin/settings.gradle.kts @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * + */ + +pluginManagement { + repositories { + gradlePluginPortal() + google() + mavenCentral() + } +} + +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + mavenLocal() + google() + mavenCentral() + } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} + +rootProject.name = "vss-processor-plugin" diff --git a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt index b55e9ad1..092b142d 100644 --- a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt +++ b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt @@ -36,9 +36,15 @@ open class VssProcessorPluginExtension @Inject internal constructor(objectFactory: ObjectFactory) { /** - * The default search path is the main assets folder. If + * The default search path is the main assets folder. The defined folder will be crawled for all compatible + * extension types by this plugin. */ val searchPath: Property = objectFactory.property(String::class.java).convention("") + + /** + * If no file name is provided then all compatible files inside the [searchPath] will be copied. Otherwise only + * the defined file will be used if available. + */ val fileName: Property = objectFactory.property(String::class.java).convention("") } From c35e53e2ffbdffa9cdc336f70db4447544456a12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Tue, 6 Feb 2024 10:42:33 +0100 Subject: [PATCH 08/29] chore: Update documentation Update the documentation for plugin interface. --- build.gradle.kts | 1 - buildSrc/build.gradle.kts | 2 +- docs/QUICKSTART.md | 13 +- kuksa-sdk/build.gradle.kts | 2 - settings.gradle.kts | 2 +- .../kuksa/vsscore/annotation/VssDefinition.kt | 12 +- vss-processor-plugin/build.gradle.kts | 12 +- .../src/main/kotlin/publish.gradle.kts | 114 ------------------ .../vssprocessor/plugin/VssProcessorPlugin.kt | 40 ++---- 9 files changed, 22 insertions(+), 176 deletions(-) delete mode 100644 vss-processor-plugin/buildSrc/src/main/kotlin/publish.gradle.kts diff --git a/build.gradle.kts b/build.gradle.kts index 72ec308b..dee8ec5a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -93,7 +93,6 @@ val dependentCompositeTasks = setOf( "setSnapshotVersion", "setReleaseVersion", "publishToMavenLocal", - "publishAllPublicationsToOSSRHSnapshotRepository", "publishAllPublicationsToOSSRHReleaseRepository", ) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index ebcfe519..cf8e4b48 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -8,7 +8,7 @@ * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software - * distributed under the Lice nse is distributed on an "AS IS" BASIS, + * 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/docs/QUICKSTART.md b/docs/QUICKSTART.md index bf04816f..7982453c 100644 --- a/docs/QUICKSTART.md +++ b/docs/QUICKSTART.md @@ -163,15 +163,10 @@ dependencies { ksp("org.eclipse.kuksa:vss-processor:") } -// Copies the given specification file to the KSP processor -tasks.register("ProvideVssDefinition") { - val vssDefinitionFilePath = "$projectDir/src/main/assets/" - val regularFile = RegularFile { File(vssDefinitionFilePath) } - vssDefinitionFile.add(regularFile) -} - -tasks.withType { - dependsOn(tasks.withType()) +// Optional - See plugin documentation. Files inside the main assets are used automatically. +vssProcessor { + searchPath = "$projectDir/src/main/assets" + fileName = "vss_rel_4.0.yaml" } ``` diff --git a/kuksa-sdk/build.gradle.kts b/kuksa-sdk/build.gradle.kts index d26ed2ce..dbfe1be4 100644 --- a/kuksa-sdk/build.gradle.kts +++ b/kuksa-sdk/build.gradle.kts @@ -122,5 +122,3 @@ protobuf { } } } - - diff --git a/settings.gradle.kts b/settings.gradle.kts index 92ea4cd7..d0d432c5 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -28,7 +28,7 @@ pluginManagement { plugins { id("com.google.devtools.ksp") version "1.9.0-1.0.11" - id("org.eclipse.kuksa.vss-processor-plugin") version "0.1.3" + id("org.eclipse.kuksa.vss-processor-plugin") // Always take the newest version since it's locally included kotlin("jvm") version "1.9.0-1.0.11" kotlin("plugin.serialization") version "1.9.0" } diff --git a/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt b/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt index d1418e03..d88c73bb 100644 --- a/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt +++ b/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt @@ -32,14 +32,10 @@ package org.eclipse.kuksa.vsscore.annotation * id("org.eclipse.kuksa.vss-processor-plugin") version "" * } * - * tasks.register("ProvideVssDefinition") { - * val vssDefinitionFilePath = "$projectDir/src/main/assets/vss_rel_4.0.yaml" - * val regularFile = RegularFile { File(vssDefinitionFilePath) } - * vssDefinitionFile.add(regularFile) - * } - * - * tasks.withType { - * dependsOn(tasks.withType()) + * // Optional - See plugin documentation. Files inside the main assets are used automatically. + * vssProcessor { + * searchPath = "$projectDir/src/main/assets" + * fileName = "vss_rel_4.0.yaml" * } * ``` * diff --git a/vss-processor-plugin/build.gradle.kts b/vss-processor-plugin/build.gradle.kts index 09ac1027..4938a919 100644 --- a/vss-processor-plugin/build.gradle.kts +++ b/vss-processor-plugin/build.gradle.kts @@ -21,7 +21,6 @@ plugins { alias(libs.plugins.pluginPublishing) signing `kotlin-dsl` -// publish version } @@ -56,15 +55,8 @@ afterEvaluate { password = System.getenv("ORG_OSSRH_PASSWORD") } } - maven { - name = "OSSRHSnapshot" - - url = uri("https://oss.sonatype.org/content/repositories/snapshots/") - credentials { - username = System.getenv("ORG_OSSRH_USERNAME") - password = System.getenv("ORG_OSSRH_PASSWORD") - } - } + // Snapshot are disabled for Plugins since the plugin marker has issues finding the correct jar with the + // automatic timestamps / build number being added as a postfix to the files. } publications { getByName("pluginMaven") { diff --git a/vss-processor-plugin/buildSrc/src/main/kotlin/publish.gradle.kts b/vss-processor-plugin/buildSrc/src/main/kotlin/publish.gradle.kts deleted file mode 100644 index c1ffd499..00000000 --- a/vss-processor-plugin/buildSrc/src/main/kotlin/publish.gradle.kts +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c) 2023 Contributors to the Eclipse Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ - -plugins { -// id("com.gradle.plugin-publish") - signing -} - -interface PublishPluginExtension { - val description: Property -} - -val extension = project.extensions.create("publish") - -//afterEvaluate { -// publishing { -// repositories { -// maven { -// name = "OSSRHRelease" -// -// url = uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/") -// credentials { -// username = System.getenv("ORG_OSSRH_USERNAME") -// password = System.getenv("ORG_OSSRH_PASSWORD") -// } -// } -// maven { -// name = "OSSRHSnapshot" -// -// url = uri("https://oss.sonatype.org/content/repositories/snapshots/") -// credentials { -// username = System.getenv("ORG_OSSRH_USERNAME") -// password = System.getenv("ORG_OSSRH_PASSWORD") -// } -// } -// } -// publications { -// getByName("pluginMaven") { -// pom { -// name = "${project.group}:${project.name}" -// description = extension.description.get() -// url = "https://github.com/eclipse-kuksa/kuksa-android-sdk" -// licenses { -// license { -// name.set("The Apache Software License, Version 2.0") -// url.set("http://www.apache.org/licenses/LICENSE-2.0.txt") -// } -// } -// developers { -// developer { -// name = "Mark Hüsers" -// email = "mark.huesers@etas.com" -// organization = "ETAS GmbH" -// organizationUrl = "https://www.etas.com" -// } -// developer { -// name = "Sebastian Schildt" -// email = "sebastian.schildt@etas.com" -// organization = "ETAS GmbH" -// organizationUrl = "https://www.etas.com" -// } -// developer { -// name = "Andre Weber" -// email = "andre.weber3@etas.com" -// organization = "ETAS GmbH" -// organizationUrl = "https://www.etas.com" -// } -// } -// scm { -// connection.set("scm:git:github.com/eclipse-kuksa/kuksa-android-sdk.git") -// developerConnection.set("scm:git:ssh://github.com/eclipse-kuksa/kuksa-android-sdk.git") -// url.set("https://github.com/eclipse-kuksa/kuksa-android-sdk/tree/main") -// } -// } -// } -// } -// } -// -// signing { -// var keyId: String? = System.getenv("ORG_GPG_KEY_ID") -// if (keyId != null && keyId.length > 8) { -// keyId = keyId.takeLast(8) -// } -// val privateKey = System.getenv("ORG_GPG_PRIVATE_KEY") -// val passphrase = System.getenv("ORG_GPG_PASSPHRASE") -// -// useInMemoryPgpKeys( -// keyId, -// privateKey, -// passphrase, -// ) -// } -//} - -//gradlePlugin { -// website = "" -// vcsUrl = "" -//} diff --git a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt index 092b142d..3055957e 100644 --- a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt +++ b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt @@ -48,11 +48,12 @@ internal constructor(objectFactory: ObjectFactory) { val fileName: Property = objectFactory.property(String::class.java).convention("") } +private val fileSeparator = File.separator + /** * This Plugin searches for compatible specification files and copies them into an input folder for the * KSP VSS Processor. This is necessary because the Symbol Processor does not have access to the android assets folder. * The default search path is the main assets folder. - * */ class VssProcessorPlugin : Plugin { override fun apply(project: Project) { @@ -64,10 +65,10 @@ class VssProcessorPlugin : Plugin { val compatibleFiles = findFiles( directory = searchDirectory, fileName = extension.fileName.get(), - validExtensions = compatibleExtensions + validExtensions = compatibleExtensions, ) - val provideVssDefinitionTask = project.tasks.register("ProvideVssDefinition") { + val provideVssDefinitionTask = project.tasks.register(PROVIDE_VSS_DEFINITION_TASK) { compatibleFiles.forEach { definitionFile -> val regularFile = RegularFile { definitionFile } vssDefinitionFiles.add(regularFile) @@ -75,10 +76,11 @@ class VssProcessorPlugin : Plugin { } project.tasks.getByName("preBuild").finalizedBy( - provideVssDefinitionTask.get() + provideVssDefinitionTask.get(), ) } + @Suppress("SameParameterValue") private fun findFiles( directory: String, fileName: String = "", @@ -98,42 +100,22 @@ class VssProcessorPlugin : Plugin { companion object { private const val EXTENSION_NAME = "vssProcessor" + private const val PROVIDE_VSS_DEFINITION_TASK = "ProvideVssDefinition" private val compatibleExtensions = setOf("yaml") - private val fileSeparator = File.separator private val mainAssetsDirectory = "src$fileSeparator" + "main$fileSeparator" + "assets" } } +/** + * This task takes a collection of files + */ abstract class ProvideVssDefinitionTask : DefaultTask() { - @get:InputFiles abstract val vssDefinitionFiles: ListProperty @TaskAction fun provideFile() { -// val buildDirPath = project.buildDir.absolutePath -// val mainAssets = "${project.projectDir}$fileSeparator$mainAssetsDirectory" -// val mainAssetsFolder = File(mainAssets) - -// mainAssetsFolder -// .walk() -// .filter { compatibleExtensions.contains(it.extension) } -// .forEach { vssDefinitionInputFile -> -// val vssDefinitionBuildFile = File( -// "$buildDirPath$fileSeparator" + -// "$KSP_INPUT_BUILD_DIRECTORY$fileSeparator" + -// vssDefinitionInputFile.name, -// ) -// -// println( -// "Found VSS definition input file: ${vssDefinitionInputFile.name}, " + -// "copying to: $vssDefinitionBuildFile", -// ) -// -// vssDefinitionInputFile.copyTo(vssDefinitionBuildFile, true) -// } - val buildDirPath = project.buildDir.absolutePath vssDefinitionFiles.get().forEach { file -> val vssDefinitionInputFile = file.asFile @@ -152,7 +134,5 @@ abstract class ProvideVssDefinitionTask : DefaultTask() { companion object { private const val KSP_INPUT_BUILD_DIRECTORY = "kspInput" - - private val fileSeparator = File.separator } } From bf741885c3aa0e58ae4ed245965a83159d7828d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Fri, 9 Feb 2024 12:22:15 +0100 Subject: [PATCH 09/29] chore: Support incremental builds Vss Plugin tasks Using @InputDirectory and @OutputDirectory for a custom tasks allows for the usage of incremental builds. --- app/build.gradle.kts | 5 - .../kuksa/testapp/KuksaDataBrokerActivity.kt | 2 +- docs/QUICKSTART.md | 9 +- samples/build.gradle.kts | 3 +- samples/src/main/assets/vss_rel_4.0.yaml | 8197 ----------------- .../java/com/example/sample/JavaActivity.java | 2 +- .../com/example/sample/KotlinActivity.kt | 2 +- .../kuksa/vsscore/annotation/VssDefinition.kt | 15 +- .../vssprocessor/plugin/VssProcessorPlugin.kt | 121 +- .../vssprocessor/VssDefinitionProcessor.kt | 30 +- {app/src/main/assets => vss}/vss_rel_4.0.yaml | 0 11 files changed, 85 insertions(+), 8301 deletions(-) delete mode 100644 samples/src/main/assets/vss_rel_4.0.yaml rename {app/src/main/assets => vss}/vss_rel_4.0.yaml (100%) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 285c2d96..7184b3bc 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -124,11 +124,6 @@ android { } } -vssProcessor { - searchPath = "$projectDir/src/main/assets" - fileName = "vss_rel_4.0.yaml" -} - tasks.withType().configureEach { useJUnitPlatform() diff --git a/app/src/main/kotlin/org/eclipse/kuksa/testapp/KuksaDataBrokerActivity.kt b/app/src/main/kotlin/org/eclipse/kuksa/testapp/KuksaDataBrokerActivity.kt index 1f562550..52b48c0a 100644 --- a/app/src/main/kotlin/org/eclipse/kuksa/testapp/KuksaDataBrokerActivity.kt +++ b/app/src/main/kotlin/org/eclipse/kuksa/testapp/KuksaDataBrokerActivity.kt @@ -60,7 +60,7 @@ import org.eclipse.kuksa.testapp.ui.theme.KuksaAppAndroidTheme import org.eclipse.kuksa.vsscore.annotation.VssDefinition import org.eclipse.kuksa.vsscore.model.VssSpecification -@VssDefinition("vss_rel_4.0.yaml") +@VssDefinition class KuksaDataBrokerActivity : ComponentActivity() { private lateinit var connectionInfoRepository: ConnectionInfoRepository diff --git a/docs/QUICKSTART.md b/docs/QUICKSTART.md index 7982453c..a3e5e2c0 100644 --- a/docs/QUICKSTART.md +++ b/docs/QUICKSTART.md @@ -163,10 +163,9 @@ dependencies { ksp("org.eclipse.kuksa:vss-processor:") } -// Optional - See plugin documentation. Files inside the main assets are used automatically. +// Optional - See plugin documentation. Files inside the "$rootDir/vss" folder are used automatically. vssProcessor { - searchPath = "$projectDir/src/main/assets" - fileName = "vss_rel_4.0.yaml" + searchPath = "$rootDir/vss" } ``` @@ -177,12 +176,12 @@ convenience operators and extension methods to work with to manipulate the tree *Kotlin* ```kotlin -@VssDefinition("vss_rel_4.0.yaml") +@VssDefinition class KotlinActivity ``` *Java* ```java -@VssDefinition(vssDefinitionPath = "vss_rel_4.0.yaml") +@VssDefinition public class JavaActivity ``` > [!IMPORTANT] diff --git a/samples/build.gradle.kts b/samples/build.gradle.kts index be77d87c..1f021616 100644 --- a/samples/build.gradle.kts +++ b/samples/build.gradle.kts @@ -56,8 +56,7 @@ android { } vssProcessor { - searchPath = "$projectDir/src/main/assets" - fileName = "vss_rel_4.0.yaml" + searchPath = "$rootDir/vss" } dependencies { diff --git a/samples/src/main/assets/vss_rel_4.0.yaml b/samples/src/main/assets/vss_rel_4.0.yaml deleted file mode 100644 index 5f2f05a5..00000000 --- a/samples/src/main/assets/vss_rel_4.0.yaml +++ /dev/null @@ -1,8197 +0,0 @@ -Vehicle: - description: High-level vehicle data. - type: branch - uuid: ccc825f94139544dbb5f4bfd033bece6 - -Vehicle.ADAS: - description: All Advanced Driver Assist Systems data. - type: branch - uuid: 14c2b2e1297b513197d320a5ce58f42e - -Vehicle.ADAS.ABS: - description: Antilock Braking System signals. - type: branch - uuid: 219270ef27c4531f874bbda63743b330 - -Vehicle.ADAS.ABS.IsEnabled: - datatype: boolean - description: Indicates if ABS is enabled. True = Enabled. False = Disabled. - type: actuator - uuid: cad374fbfdc65df9b777508f04d5b073 - -Vehicle.ADAS.ABS.IsEngaged: - datatype: boolean - description: Indicates if ABS is currently regulating brake pressure. True = Engaged. False = Not Engaged. - type: sensor - uuid: 6dd21979a2225e31940dc2ece1aa9a04 - -Vehicle.ADAS.ABS.IsError: - datatype: boolean - description: Indicates if ABS incurred an error condition. True = Error. False = No Error. - type: sensor - uuid: 13cfabb3122254128234f9a696f14678 - -Vehicle.ADAS.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 - uuid: b101c6928fc55948b1cc485e568ecd8d - -Vehicle.ADAS.CruiseControl: - description: Signals from Cruise Control system. - type: branch - uuid: c4d751cf74f9576dbba3cc820991c1fb - -Vehicle.ADAS.CruiseControl.IsActive: - datatype: boolean - description: Indicates if cruise control system is active (i.e. actively controls speed). True = Active. False = Inactive. - type: actuator - uuid: 78ab5ce923dc5aa1a6622bcb948e1561 - -Vehicle.ADAS.CruiseControl.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 - uuid: 018417f6c8535315895d0f54d209035a - -Vehicle.ADAS.CruiseControl.IsError: - datatype: boolean - description: Indicates if cruise control system incurred an error condition. True = Error. False = No Error. - type: sensor - uuid: 22923d4a36bc5192a08e40fe9e5ed458 - -Vehicle.ADAS.CruiseControl.SpeedSet: - datatype: float - description: Set cruise control speed in kilometers per hour. - type: actuator - unit: km/h - uuid: b3f3a53ccd825e4da5cb1226f94dc005 - -Vehicle.ADAS.DMS: - description: Driver Monitoring System signals. - type: branch - uuid: 1cd72c7fc7fe5269a93c9954f46a4f60 - -Vehicle.ADAS.DMS.IsEnabled: - datatype: boolean - description: Indicates if DMS is enabled. True = Enabled. False = Disabled. - type: actuator - uuid: 63e6d3803ce35fd79afc728c65295804 - -Vehicle.ADAS.DMS.IsError: - datatype: boolean - description: Indicates if DMS incurred an error condition. True = Error. False = No Error. - type: sensor - uuid: d5213c8cb5d5575994b2c8ee1ad8eccf - -Vehicle.ADAS.DMS.IsWarning: - datatype: boolean - description: Indicates if DMS has registered a driver alert condition. - type: sensor - uuid: 2c86cd0363cd55ffb175a9e07cc32e4d - -Vehicle.ADAS.EBA: - description: Emergency Brake Assist (EBA) System signals. - type: branch - uuid: 51ec0930d0af5b91b84a0775c6e87a97 - -Vehicle.ADAS.EBA.IsEnabled: - datatype: boolean - description: Indicates if EBA is enabled. True = Enabled. False = Disabled. - type: actuator - uuid: 3ae9171b69555fb08855054ab38e9b17 - -Vehicle.ADAS.EBA.IsEngaged: - datatype: boolean - description: Indicates if EBA is currently regulating brake pressure. True = Engaged. False = Not Engaged. - type: sensor - uuid: 86360c44ead354d18af7ff14176151f6 - -Vehicle.ADAS.EBA.IsError: - datatype: boolean - description: Indicates if EBA incurred an error condition. True = Error. False = No Error. - type: sensor - uuid: bae0fe856398502ba4a09283867c6c81 - -Vehicle.ADAS.EBD: - description: Electronic Brakeforce Distribution (EBD) System signals. - type: branch - uuid: 3f4c74a588735b10ac9fe918d305cd5a - -Vehicle.ADAS.EBD.IsEnabled: - datatype: boolean - description: Indicates if EBD is enabled. True = Enabled. False = Disabled. - type: actuator - uuid: 30f88d3e68575b67853b14ce5f7a08e5 - -Vehicle.ADAS.EBD.IsEngaged: - datatype: boolean - description: Indicates if EBD is currently regulating vehicle brakeforce distribution. True = Engaged. False = Not Engaged. - type: sensor - uuid: 67aa2a598f635edda6eb944af99b06db - -Vehicle.ADAS.EBD.IsError: - datatype: boolean - description: Indicates if EBD incurred an error condition. True = Error. False = No Error. - type: sensor - uuid: 918157073be95015ae38913cd7a9796a - -Vehicle.ADAS.ESC: - description: Electronic Stability Control System signals. - type: branch - uuid: 636b4586ce7854b4b270a2f3b6c0af4f - -Vehicle.ADAS.ESC.IsEnabled: - datatype: boolean - description: Indicates if ESC is enabled. True = Enabled. False = Disabled. - type: actuator - uuid: 3f4f39b8d8c05c97a6de685282ba74b7 - -Vehicle.ADAS.ESC.IsEngaged: - datatype: boolean - description: Indicates if ESC is currently regulating vehicle stability. True = Engaged. False = Not Engaged. - type: sensor - uuid: 2088953a28385353a9d46b3a3dc11cac - -Vehicle.ADAS.ESC.IsError: - datatype: boolean - description: Indicates if ESC incurred an error condition. True = Error. False = No Error. - type: sensor - uuid: 6c237535654b5bc7a70f6a70c760b9d4 - -Vehicle.ADAS.ESC.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 - uuid: ebfd609531345c37914b89e553df80cb - -Vehicle.ADAS.ESC.RoadFriction: - description: Road friction values reported by the ESC system. - type: branch - uuid: 71a32e4eb131532c82195508d93807ed - -Vehicle.ADAS.ESC.RoadFriction.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 - uuid: 634289f58b5d511ea9979f04a9d0f2ab - -Vehicle.ADAS.ESC.RoadFriction.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 - uuid: b0eb72430cd95bfbba0d187fcb6e2a62 - -Vehicle.ADAS.ESC.RoadFriction.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 - uuid: ad0415a799575fcd8d1f49bed9a2baeb - -Vehicle.ADAS.LaneDepartureDetection: - description: Signals from Lane Departure Detection System. - type: branch - uuid: e45f33fdcf245f11981b2f201ee8281a - -Vehicle.ADAS.LaneDepartureDetection.IsEnabled: - datatype: boolean - description: Indicates if lane departure detection system is enabled. True = Enabled. False = Disabled. - type: actuator - uuid: c099ae97260f5c418977cd14631e95be - -Vehicle.ADAS.LaneDepartureDetection.IsError: - datatype: boolean - description: Indicates if lane departure system incurred an error condition. True = Error. False = No Error. - type: sensor - uuid: 73b2fc4f6a4952e4b7886671450e7798 - -Vehicle.ADAS.LaneDepartureDetection.IsWarning: - datatype: boolean - description: Indicates if lane departure detection registered a lane departure. - type: sensor - uuid: c32fcd1d56035cb08acfd380be224c6a - -Vehicle.ADAS.ObstacleDetection: - description: Signals form Obstacle Sensor System. - type: branch - uuid: e7b6d81631cc5ac584d027d4c1a66cb5 - -Vehicle.ADAS.ObstacleDetection.IsEnabled: - datatype: boolean - description: Indicates if obstacle sensor system is enabled (i.e. monitoring for obstacles). True = Enabled. False = Disabled. - type: actuator - uuid: cc0cd497285e5034a1cccb25f02e9db9 - -Vehicle.ADAS.ObstacleDetection.IsError: - datatype: boolean - description: Indicates if obstacle sensor system incurred an error condition. True = Error. False = No Error. - type: sensor - uuid: 368b74e2468d5217925a478ed6e34f9f - -Vehicle.ADAS.ObstacleDetection.IsWarning: - datatype: boolean - description: Indicates if obstacle sensor system registered an obstacle. - type: sensor - uuid: b0b1eab51f135ffcb2a17a7603415fec - -Vehicle.ADAS.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 - uuid: 044ad42893e65993bfc439455fb08faa - -Vehicle.ADAS.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 - uuid: 020410189ab4517cb85ceda268b40f51 - -Vehicle.ADAS.TCS: - description: Traction Control System signals. - type: branch - uuid: 0572e9f6b1aa5fb5b2f68086aff05073 - -Vehicle.ADAS.TCS.IsEnabled: - datatype: boolean - description: Indicates if TCS is enabled. True = Enabled. False = Disabled. - type: actuator - uuid: 1d2dda19b11758a19ba7c1d5cd2d7956 - -Vehicle.ADAS.TCS.IsEngaged: - datatype: boolean - description: Indicates if TCS is currently regulating traction. True = Engaged. False = Not Engaged. - type: sensor - uuid: b33d70009ad5589fbffe17fa7e827242 - -Vehicle.ADAS.TCS.IsError: - datatype: boolean - description: Indicates if TCS incurred an error condition. True = Error. False = No Error. - type: sensor - uuid: 08f88723ba63558b8c804b8fe8e3f149 - -Vehicle.Acceleration: - description: Spatial acceleration. Axis definitions according to ISO 8855. - type: branch - uuid: 6c490e6a798c5abc8f0178ed6deae0a8 - -Vehicle.Acceleration.Lateral: - datatype: float - description: Vehicle acceleration in Y (lateral acceleration). - type: sensor - unit: m/s^2 - uuid: 7522c5d6b7665b16a099643b2700e93c - -Vehicle.Acceleration.Longitudinal: - datatype: float - description: Vehicle acceleration in X (longitudinal acceleration). - type: sensor - unit: m/s^2 - uuid: 3d511fe7232b5841be311b37f322de5a - -Vehicle.Acceleration.Vertical: - datatype: float - description: Vehicle acceleration in Z (vertical acceleration). - type: sensor - unit: m/s^2 - uuid: a4a8a7c4ac5b52deb0b3ee4ed8787c59 - -Vehicle.AngularVelocity: - description: Spatial rotation. Axis definitions according to ISO 8855. - type: branch - uuid: 1eef530a43de56aab665d2766483cde2 - -Vehicle.AngularVelocity.Pitch: - datatype: float - description: Vehicle rotation rate along Y (lateral). - type: sensor - unit: degrees/s - uuid: 42236f4a01f45313a97fdd9b6848ce4f - -Vehicle.AngularVelocity.Roll: - datatype: float - description: Vehicle rotation rate along X (longitudinal). - type: sensor - unit: degrees/s - uuid: 221e6b93881e5771bcbd03e0849e0075 - -Vehicle.AngularVelocity.Yaw: - datatype: float - description: Vehicle rotation rate along Z (vertical). - type: sensor - unit: degrees/s - uuid: 4114c41552565c1f9035670cabe2a611 - -Vehicle.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 - uuid: 43a489636a665c3abb99b63174eb552b - -Vehicle.Body: - description: All body components. - type: branch - uuid: bd2854e6a9165c5698ce8dd9f0438ecc - -Vehicle.Body.BodyType: - datatype: string - description: Body type code as defined by ISO 3779. - type: attribute - uuid: 6253412513105deea63b1d424117fd88 - -Vehicle.Body.Hood: - 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 - uuid: 84510652bf915bbe8bf5f477aab2b44a - -Vehicle.Body.Hood.IsOpen: - datatype: boolean - description: Hood open or closed. True = Open. False = Closed. - type: actuator - uuid: 890aa3359e1a579288af1cf8e6b5b71f - -Vehicle.Body.Horn: - description: Horn signals. - type: branch - uuid: 09c76633887f52268b960740eb969c89 - -Vehicle.Body.Horn.IsActive: - datatype: boolean - description: Horn active or inactive. True = Active. False = Inactive. - type: actuator - uuid: ba20deed9314525bb9d552a2b787fb20 - -Vehicle.Body.Lights: - description: Exterior lights. - type: branch - uuid: 399d1ec14d6f55bb825e078a801bde55 - -Vehicle.Body.Lights.Backup: - description: Backup lights. - type: branch - uuid: 4fe2cb68fc77506686eced7225aeff9a - -Vehicle.Body.Lights.Backup.IsDefect: - datatype: boolean - description: Indicates if light is defect. True = Light is defect. False = Light has no defect. - type: sensor - uuid: b907c4ac4ee459faa987c64a6da424c3 - -Vehicle.Body.Lights.Backup.IsOn: - datatype: boolean - description: Indicates if light is on or off. True = On. False = Off. - type: actuator - uuid: ef23a3fa6106564195a66e21d8cf69b4 - -Vehicle.Body.Lights.Beam: - description: Beam lights. - type: branch - uuid: 6685308a9d955ecdad92a7cc68666a12 - -Vehicle.Body.Lights.Beam.High: - description: Beam lights. - type: branch - uuid: 306b51d2e1ec572fa80172aad6727da0 - -Vehicle.Body.Lights.Beam.High.IsDefect: - datatype: boolean - description: Indicates if light is defect. True = Light is defect. False = Light has no defect. - type: sensor - uuid: 83561d8c9a025cfdad6c4b325829fa00 - -Vehicle.Body.Lights.Beam.High.IsOn: - datatype: boolean - description: Indicates if light is on or off. True = On. False = Off. - type: actuator - uuid: 24d1346519b05697b872c06556a09fb4 - -Vehicle.Body.Lights.Beam.Low: - description: Beam lights. - type: branch - uuid: f6f21ea5b263545297f4411b2e15037f - -Vehicle.Body.Lights.Beam.Low.IsDefect: - datatype: boolean - description: Indicates if light is defect. True = Light is defect. False = Light has no defect. - type: sensor - uuid: 3a135f1267ea5b2a80aa9a17fc8072db - -Vehicle.Body.Lights.Beam.Low.IsOn: - datatype: boolean - description: Indicates if light is on or off. True = On. False = Off. - type: actuator - uuid: 8b4d4855b0c95963a25dc564c9758610 - -Vehicle.Body.Lights.Brake: - description: Brake lights. - type: branch - uuid: 30eabe704102501cb299d03696fad92a - -Vehicle.Body.Lights.Brake.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 - uuid: 65eb84d61ea95313985054f626b85b59 - -Vehicle.Body.Lights.Brake.IsDefect: - datatype: boolean - description: Indicates if light is defect. True = Light is defect. False = Light has no defect. - type: sensor - uuid: 1db542c5ba715e09b948527418966728 - -Vehicle.Body.Lights.DirectionIndicator: - description: Indicator lights. - type: branch - uuid: 0566cb97d05c554eb88a07142f2475ac - -Vehicle.Body.Lights.DirectionIndicator.Left: - description: Indicator lights. - type: branch - uuid: 446dea42b8e95d87b45e5e51c881bf98 - -Vehicle.Body.Lights.DirectionIndicator.Left.IsDefect: - datatype: boolean - description: Indicates if light is defect. True = Light is defect. False = Light has no defect. - type: sensor - uuid: 32a092936fb65165ba1dd8dfa38bf77d - -Vehicle.Body.Lights.DirectionIndicator.Left.IsSignaling: - datatype: boolean - description: Indicates if light is signaling or off. True = signaling. False = Off. - type: actuator - uuid: 33ac6ec5e4d9550aac6ae0ce97dae259 - -Vehicle.Body.Lights.DirectionIndicator.Right: - description: Indicator lights. - type: branch - uuid: 9922f6b417e95f1c945ef9f414bcdf78 - -Vehicle.Body.Lights.DirectionIndicator.Right.IsDefect: - datatype: boolean - description: Indicates if light is defect. True = Light is defect. False = Light has no defect. - type: sensor - uuid: db70c2d885725583a7ed95b215a8ec6c - -Vehicle.Body.Lights.DirectionIndicator.Right.IsSignaling: - datatype: boolean - description: Indicates if light is signaling or off. True = signaling. False = Off. - type: actuator - uuid: 9b0a1dab153f5dcda8df2116c3b6d487 - -Vehicle.Body.Lights.Fog: - description: Fog lights. - type: branch - uuid: 1e90cf42bb825217b283c7285a606953 - -Vehicle.Body.Lights.Fog.Front: - description: Fog lights. - type: branch - uuid: 230cc65abaaf500c9085c29d48107552 - -Vehicle.Body.Lights.Fog.Front.IsDefect: - datatype: boolean - description: Indicates if light is defect. True = Light is defect. False = Light has no defect. - type: sensor - uuid: f9238f15d2615a22802ce9ec9f1d72e9 - -Vehicle.Body.Lights.Fog.Front.IsOn: - datatype: boolean - description: Indicates if light is on or off. True = On. False = Off. - type: actuator - uuid: 0ec10846d20a5d1b9b8a286303ecb844 - -Vehicle.Body.Lights.Fog.Rear: - description: Fog lights. - type: branch - uuid: 38359f258135516cb49c0fa1f093d478 - -Vehicle.Body.Lights.Fog.Rear.IsDefect: - datatype: boolean - description: Indicates if light is defect. True = Light is defect. False = Light has no defect. - type: sensor - uuid: 1d44e594ffa35d73a6f620f479eeef4c - -Vehicle.Body.Lights.Fog.Rear.IsOn: - datatype: boolean - description: Indicates if light is on or off. True = On. False = Off. - type: actuator - uuid: 1fe08a2f687c5c2880adef26cc7de746 - -Vehicle.Body.Lights.Hazard: - description: Hazard lights. - type: branch - uuid: 803498c3be6253dfb074c0e0294be758 - -Vehicle.Body.Lights.Hazard.IsDefect: - datatype: boolean - description: Indicates if light is defect. True = Light is defect. False = Light has no defect. - type: sensor - uuid: 25cd3475beb6543a8538974b67544c43 - -Vehicle.Body.Lights.Hazard.IsSignaling: - datatype: boolean - description: Indicates if light is signaling or off. True = signaling. False = Off. - type: actuator - uuid: c53950205aa15dffa304390dcb761cc3 - -Vehicle.Body.Lights.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 - uuid: ac7db3cd30f55650bc6939df504f1a79 - -Vehicle.Body.Lights.LicensePlate: - description: License plate lights. - type: branch - uuid: 7bb12e42a8c45c198f83bf41b19131fa - -Vehicle.Body.Lights.LicensePlate.IsDefect: - datatype: boolean - description: Indicates if light is defect. True = Light is defect. False = Light has no defect. - type: sensor - uuid: 4de6594de7815cec97e5b851d70e239b - -Vehicle.Body.Lights.LicensePlate.IsOn: - datatype: boolean - description: Indicates if light is on or off. True = On. False = Off. - type: actuator - uuid: afeace5d76ed53f989ae4251090ba069 - -Vehicle.Body.Lights.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 - uuid: 2feb14a3558256339442413783969f4f - -Vehicle.Body.Lights.Parking: - description: Parking lights. - type: branch - uuid: dfb819be5cec5be09b9fb743829301c3 - -Vehicle.Body.Lights.Parking.IsDefect: - datatype: boolean - description: Indicates if light is defect. True = Light is defect. False = Light has no defect. - type: sensor - uuid: 56761305eae559c7931f6ff5fee0dfa8 - -Vehicle.Body.Lights.Parking.IsOn: - datatype: boolean - description: Indicates if light is on or off. True = On. False = Off. - type: actuator - uuid: 6ba0825427335408ad7d0f148d6250ea - -Vehicle.Body.Lights.Running: - description: Running lights. - type: branch - uuid: 38868a9f1bda573595501302c1f0a1db - -Vehicle.Body.Lights.Running.IsDefect: - datatype: boolean - description: Indicates if light is defect. True = Light is defect. False = Light has no defect. - type: sensor - uuid: 7cda127e6d45547681757e789c0b7a87 - -Vehicle.Body.Lights.Running.IsOn: - datatype: boolean - description: Indicates if light is on or off. True = On. False = Off. - type: actuator - uuid: 1c4e44f1e0275965b466ac674a5b8cac - -Vehicle.Body.Mirrors: - description: All mirrors. - type: branch - uuid: a4ea618914885a239ef5fa62c671a800 - -Vehicle.Body.Mirrors.DriverSide: - description: All mirrors. - type: branch - uuid: 3c62705bbcf654489c8179b63118829f - -Vehicle.Body.Mirrors.DriverSide.IsHeatingOn: - datatype: boolean - description: Mirror Heater on or off. True = Heater On. False = Heater Off. - type: actuator - uuid: 21262ce775a85abe9f6354f9c3ac9988 - -Vehicle.Body.Mirrors.DriverSide.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 - uuid: 4749ae14c526547c9b511f66a67b3d27 - -Vehicle.Body.Mirrors.DriverSide.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 - uuid: eafa81963c315aa78eda11eec8012d34 - -Vehicle.Body.Mirrors.PassengerSide: - description: All mirrors. - type: branch - uuid: 8025a1e06e9d5ddb96405cce1f1f38cb - -Vehicle.Body.Mirrors.PassengerSide.IsHeatingOn: - datatype: boolean - description: Mirror Heater on or off. True = Heater On. False = Heater Off. - type: actuator - uuid: 9d64ad38532658298e5f59a2f999ef57 - -Vehicle.Body.Mirrors.PassengerSide.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 - uuid: d3dc2e11874f528fa0987e596993bde8 - -Vehicle.Body.Mirrors.PassengerSide.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 - uuid: 0f3734b090065873a7feb40931c72a28 - -Vehicle.Body.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 - uuid: 2fe44a1c3bb155aca782b017efeb6175 - -Vehicle.Body.Raindetection: - description: Rain sensor signals. - type: branch - uuid: f16759f3dcfb5be4832e962da29ebd6c - -Vehicle.Body.Raindetection.Intensity: - datatype: uint8 - description: Rain intensity. 0 = Dry, No Rain. 100 = Covered. - max: 100 - type: sensor - unit: percent - uuid: 1ee0a2f22e8257d299425a4ff2652555 - -Vehicle.Body.RearMainSpoilerPosition: - datatype: float - description: Rear spoiler position, 0% = Spoiler fully stowed. 100% = Spoiler fully exposed. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 6209a82390585b869cc3d00d069eade2 - -Vehicle.Body.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 - uuid: 53ef90a851fa57f0810d50238e852f02 - -Vehicle.Body.Trunk: - 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 - uuid: a584c6a5aa235cb88ac686f8d72a1dff - -Vehicle.Body.Trunk.Front: - 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 - uuid: a455aca5bae55c22b7949fd31a765a6c - -Vehicle.Body.Trunk.Front.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 - uuid: 43d7844934a45890bf2a287b676a994b - -Vehicle.Body.Trunk.Front.IsLocked: - datatype: boolean - description: Is trunk locked or unlocked. True = Locked. False = Unlocked. - type: actuator - uuid: e0eabc210f07505fa1b66b67729d681b - -Vehicle.Body.Trunk.Front.IsOpen: - datatype: boolean - description: Trunk open or closed. True = Open. False = Closed. - type: actuator - uuid: 2047de0896a352fcaf02baa06819a023 - -Vehicle.Body.Trunk.Rear: - 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 - uuid: a6170ff5e4325f38b5d57402e1d95e5a - -Vehicle.Body.Trunk.Rear.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 - uuid: a1065214515c5f7aa86f51eb7bf36664 - -Vehicle.Body.Trunk.Rear.IsLocked: - datatype: boolean - description: Is trunk locked or unlocked. True = Locked. False = Unlocked. - type: actuator - uuid: 8f9b55b002ed59d3ac2ef0b014abf4aa - -Vehicle.Body.Trunk.Rear.IsOpen: - datatype: boolean - description: Trunk open or closed. True = Open. False = Closed. - type: actuator - uuid: 3d3249e59306594698367b839b12c938 - -Vehicle.Body.Windshield: - description: Windshield signals. - type: branch - uuid: 73efba535dcb5032b9edc43406b050b8 - -Vehicle.Body.Windshield.Front: - description: Windshield signals. - type: branch - uuid: 8f0c61e4e4f557d98729210fc3c74f72 - -Vehicle.Body.Windshield.Front.IsHeatingOn: - datatype: boolean - description: Windshield heater status. False - off, True - on. - type: actuator - uuid: 26e6a3b7e9bb58bebba29258faa6e300 - -Vehicle.Body.Windshield.Front.WasherFluid: - description: Windshield washer fluid signals - type: branch - uuid: 2de24016515353289953de5ea81efd3c - -Vehicle.Body.Windshield.Front.WasherFluid.IsLevelLow: - datatype: boolean - description: Low level indication for washer fluid. True = Level Low. False = Level OK. - type: sensor - uuid: 8ca54695ad115f9bb6f56d7c450781a7 - -Vehicle.Body.Windshield.Front.WasherFluid.Level: - datatype: uint8 - description: Washer fluid level as a percent. 0 = Empty. 100 = Full. - max: 100 - type: sensor - unit: percent - uuid: a36dfb91414f5792bd01d193dceff1f4 - -Vehicle.Body.Windshield.Front.Wiping: - description: Windshield wiper signals. - type: branch - uuid: 2cffeccdc19a587cbe2264f426c6881a - -Vehicle.Body.Windshield.Front.Wiping.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 - uuid: 7cdd36d1cc8f5f9a9f079f663190b588 - -Vehicle.Body.Windshield.Front.Wiping.IsWipersWorn: - datatype: boolean - description: Wiper wear status. True = Worn, Replacement recommended or required. False = Not Worn. - type: sensor - uuid: b04ccc7daedb559c9bcdda6b00332be5 - -Vehicle.Body.Windshield.Front.Wiping.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 - uuid: 3ee6552c96e551c5b06b79ad30226767 - -Vehicle.Body.Windshield.Front.Wiping.System: - 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 - uuid: 9002ff76166950e0aa3b7c9df3b53468 - -Vehicle.Body.Windshield.Front.Wiping.System.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 - uuid: 026307b591465a8a99ffc0ebf262b393 - -Vehicle.Body.Windshield.Front.Wiping.System.DriveCurrent: - comment: May be negative in special situations. - datatype: float - description: Actual current used by wiper drive. - type: sensor - unit: A - uuid: 251e695821b758e7b7d459d5e2ab6ca4 - -Vehicle.Body.Windshield.Front.Wiping.System.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 - uuid: 7394c8b8d20d52638881161ec1b41fc0 - -Vehicle.Body.Windshield.Front.Wiping.System.IsBlocked: - datatype: boolean - description: Indicates if wiper movement is blocked. True = Movement blocked. False = Movement not blocked. - type: sensor - uuid: 4b526a2c781e56e386c82df226061f9e - -Vehicle.Body.Windshield.Front.Wiping.System.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 - uuid: 5000f7f0c39e5fed9a95413ae4166482 - -Vehicle.Body.Windshield.Front.Wiping.System.IsOverheated: - datatype: boolean - description: Indicates if wiper system is overheated. True = Wiper system overheated. False = Wiper system not overheated. - type: sensor - uuid: e05d376ec2525ba2b61039d55f93760f - -Vehicle.Body.Windshield.Front.Wiping.System.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 - uuid: d42149fa8982593991aa5cd13a1cdee9 - -Vehicle.Body.Windshield.Front.Wiping.System.IsWiperError: - datatype: boolean - description: Indicates system failure. True if wiping is disabled due to system failure. - type: sensor - uuid: 5276055d973f57998e1b8d6e536de735 - -Vehicle.Body.Windshield.Front.Wiping.System.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 - uuid: 2015a4610d7a5fbdbb63b260640838e6 - -Vehicle.Body.Windshield.Front.Wiping.System.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 - uuid: d15518f5d1bc54a38718f43ef749dd34 - -Vehicle.Body.Windshield.Front.Wiping.System.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 - uuid: 7a4a3fdd2947596dbada6980c142f090 - -Vehicle.Body.Windshield.Front.Wiping.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 - uuid: 92c879c11bc65e6da30d582a3928caac - -Vehicle.Body.Windshield.Rear: - description: Windshield signals. - type: branch - uuid: 095ff58459b854aaa742e56447fe7a93 - -Vehicle.Body.Windshield.Rear.IsHeatingOn: - datatype: boolean - description: Windshield heater status. False - off, True - on. - type: actuator - uuid: 76d811b4c4c356f4898dd6383e28bc6f - -Vehicle.Body.Windshield.Rear.WasherFluid: - description: Windshield washer fluid signals - type: branch - uuid: 1ea4ac2370e1567b9b812c1e3020ddfb - -Vehicle.Body.Windshield.Rear.WasherFluid.IsLevelLow: - datatype: boolean - description: Low level indication for washer fluid. True = Level Low. False = Level OK. - type: sensor - uuid: 8ca0356548ae54e8af3aeace49e5ed71 - -Vehicle.Body.Windshield.Rear.WasherFluid.Level: - datatype: uint8 - description: Washer fluid level as a percent. 0 = Empty. 100 = Full. - max: 100 - type: sensor - unit: percent - uuid: c167e5b265895c108da1b9582de2dd91 - -Vehicle.Body.Windshield.Rear.Wiping: - description: Windshield wiper signals. - type: branch - uuid: f56e80a50fd75dbca48581aea4f012b7 - -Vehicle.Body.Windshield.Rear.Wiping.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 - uuid: f18b13b9d96b51c492c031d3d86d22da - -Vehicle.Body.Windshield.Rear.Wiping.IsWipersWorn: - datatype: boolean - description: Wiper wear status. True = Worn, Replacement recommended or required. False = Not Worn. - type: sensor - uuid: 0e8d5f7cb6295b908be3a03e8792cca8 - -Vehicle.Body.Windshield.Rear.Wiping.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 - uuid: 8cc0b88ac8b45f5fa30bb7755ce22648 - -Vehicle.Body.Windshield.Rear.Wiping.System: - 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 - uuid: a00826f6ecc25c3fae7ad164361bdb33 - -Vehicle.Body.Windshield.Rear.Wiping.System.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 - uuid: eddee2607a135582bbcf3d3afc845892 - -Vehicle.Body.Windshield.Rear.Wiping.System.DriveCurrent: - comment: May be negative in special situations. - datatype: float - description: Actual current used by wiper drive. - type: sensor - unit: A - uuid: 7a254692329055dfb4089e2dcc1d4ef3 - -Vehicle.Body.Windshield.Rear.Wiping.System.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 - uuid: 371171d971995c999585b028e19be461 - -Vehicle.Body.Windshield.Rear.Wiping.System.IsBlocked: - datatype: boolean - description: Indicates if wiper movement is blocked. True = Movement blocked. False = Movement not blocked. - type: sensor - uuid: 046e818b4dd9595a8301503e9afe028b - -Vehicle.Body.Windshield.Rear.Wiping.System.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 - uuid: c1357156d87c58f49d4c43c2a6e97c03 - -Vehicle.Body.Windshield.Rear.Wiping.System.IsOverheated: - datatype: boolean - description: Indicates if wiper system is overheated. True = Wiper system overheated. False = Wiper system not overheated. - type: sensor - uuid: d30bc6f33b995ef491c252980a559ee2 - -Vehicle.Body.Windshield.Rear.Wiping.System.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 - uuid: ad35e8d17cd95273b1091dcef2104ea1 - -Vehicle.Body.Windshield.Rear.Wiping.System.IsWiperError: - datatype: boolean - description: Indicates system failure. True if wiping is disabled due to system failure. - type: sensor - uuid: ac5983deacbe59d7ba1312d44bfd9cd4 - -Vehicle.Body.Windshield.Rear.Wiping.System.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 - uuid: 4e001bf679e85c9aa7319bafc3a86e75 - -Vehicle.Body.Windshield.Rear.Wiping.System.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 - uuid: f2f47522466d570baa7618fac5b0359c - -Vehicle.Body.Windshield.Rear.Wiping.System.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 - uuid: c39bef0760185555904a92a305392080 - -Vehicle.Body.Windshield.Rear.Wiping.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 - uuid: afd6a352230f5eeaa8ac5f1f188bfd33 - -Vehicle.Cabin: - description: All in-cabin components, including doors. - type: branch - uuid: 1a94457b237f5e8eb3c77c0532ac88d7 - -Vehicle.Cabin.Convertible: - description: Convertible roof. - type: branch - uuid: 2aece85d39d6569e93cf842387a645d9 - -Vehicle.Cabin.Convertible.Status: - allowed: - - UNDEFINED - - CLOSED - - OPEN - - CLOSING - - OPENING - - STALLED - datatype: string - description: Roof status on convertible vehicles. - type: sensor - uuid: c8812698198a56d7a1adcc8bbe87845f - -Vehicle.Cabin.Door: - description: All doors, including windows and switches. - type: branch - uuid: fd7f4d16f8965419a9a69fd66b40c1d7 - -Vehicle.Cabin.Door.Row1: - description: All doors, including windows and switches. - type: branch - uuid: fd3fcb481cb953dc9a853125c6ca0453 - -Vehicle.Cabin.Door.Row1.DriverSide: - description: All doors, including windows and switches. - type: branch - uuid: 0fe04659010a505a9816a3a9457b3540 - -Vehicle.Cabin.Door.Row1.DriverSide.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 - uuid: 62a265895be0566694358eecab381a4c - -Vehicle.Cabin.Door.Row1.DriverSide.IsLocked: - datatype: boolean - description: Is door locked or unlocked. True = Locked. False = Unlocked. - type: actuator - uuid: 9080712219dc57eaacf85d6630e01ca0 - -Vehicle.Cabin.Door.Row1.DriverSide.IsOpen: - datatype: boolean - description: Is door open or closed - type: actuator - uuid: da3dccb4ab085fcabca24efd99435d87 - -Vehicle.Cabin.Door.Row1.DriverSide.Shade: - description: Side window shade - type: branch - uuid: 7220d013b9205e1b9e7ca6b95cb14058 - -Vehicle.Cabin.Door.Row1.DriverSide.Shade.Position: - datatype: uint8 - description: Position of window blind. 0 = Fully retracted. 100 = Fully deployed. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 7ec218dfc5855bfa88af947d7b06b1f4 - -Vehicle.Cabin.Door.Row1.DriverSide.Shade.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 - uuid: fea7f9577a8456128c548daf3c548ea4 - -Vehicle.Cabin.Door.Row1.DriverSide.Window: - description: Door window status - type: branch - uuid: 6ab9b77468d45cdfadebe124256aa910 - -Vehicle.Cabin.Door.Row1.DriverSide.Window.IsOpen: - datatype: boolean - description: Is window open or closed? - type: sensor - uuid: ff58aae512475431bec02b5c4a36b6f9 - -Vehicle.Cabin.Door.Row1.DriverSide.Window.Position: - datatype: uint8 - description: Window position. 0 = Fully closed 100 = Fully opened. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 83da2e0448465874bf2bff9aeff91793 - -Vehicle.Cabin.Door.Row1.DriverSide.Window.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 - uuid: 5d3f802110a95653b4518b8f21836113 - -Vehicle.Cabin.Door.Row1.PassengerSide: - description: All doors, including windows and switches. - type: branch - uuid: 9ea0425fb2085ded9a393d4e999ae90a - -Vehicle.Cabin.Door.Row1.PassengerSide.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 - uuid: 74a842786a73553ba3491975c2077ac7 - -Vehicle.Cabin.Door.Row1.PassengerSide.IsLocked: - datatype: boolean - description: Is door locked or unlocked. True = Locked. False = Unlocked. - type: actuator - uuid: 48d4388ec67b519ab500ee424ce4b6cb - -Vehicle.Cabin.Door.Row1.PassengerSide.IsOpen: - datatype: boolean - description: Is door open or closed - type: actuator - uuid: 80aca3884840557db10f1314a27a5eeb - -Vehicle.Cabin.Door.Row1.PassengerSide.Shade: - description: Side window shade - type: branch - uuid: dfe64259f26a54bda64b9aa24362c7eb - -Vehicle.Cabin.Door.Row1.PassengerSide.Shade.Position: - datatype: uint8 - description: Position of window blind. 0 = Fully retracted. 100 = Fully deployed. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 8f583d09021e51319aa6bdd0e29aefc8 - -Vehicle.Cabin.Door.Row1.PassengerSide.Shade.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 - uuid: c700d6a13a16522ead84b81314fd452b - -Vehicle.Cabin.Door.Row1.PassengerSide.Window: - description: Door window status - type: branch - uuid: c588ac43d3945dc0a45994c4d298d9b0 - -Vehicle.Cabin.Door.Row1.PassengerSide.Window.IsOpen: - datatype: boolean - description: Is window open or closed? - type: sensor - uuid: 120e3b950fd657fabd90069e6e01f44e - -Vehicle.Cabin.Door.Row1.PassengerSide.Window.Position: - datatype: uint8 - description: Window position. 0 = Fully closed 100 = Fully opened. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: ec293d2eb9e052e88d01927c811711ef - -Vehicle.Cabin.Door.Row1.PassengerSide.Window.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 - uuid: 36efa23a161a5fe1b65e36f5656738fb - -Vehicle.Cabin.Door.Row2: - description: All doors, including windows and switches. - type: branch - uuid: 74c8a76ad2545ceba474a85ae84eec8e - -Vehicle.Cabin.Door.Row2.DriverSide: - description: All doors, including windows and switches. - type: branch - uuid: 996c7ede1ac453ae9aed508c2835ae56 - -Vehicle.Cabin.Door.Row2.DriverSide.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 - uuid: 707facc3d89052d8ae66675ffd8755a8 - -Vehicle.Cabin.Door.Row2.DriverSide.IsLocked: - datatype: boolean - description: Is door locked or unlocked. True = Locked. False = Unlocked. - type: actuator - uuid: df98641aae1553a68b741826496d9d42 - -Vehicle.Cabin.Door.Row2.DriverSide.IsOpen: - datatype: boolean - description: Is door open or closed - type: actuator - uuid: 49c55921d1825bc1a82334a40eeb45f9 - -Vehicle.Cabin.Door.Row2.DriverSide.Shade: - description: Side window shade - type: branch - uuid: 9b08a5dc400253b8bf31776582f275fd - -Vehicle.Cabin.Door.Row2.DriverSide.Shade.Position: - datatype: uint8 - description: Position of window blind. 0 = Fully retracted. 100 = Fully deployed. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 96227261fc205735adb031fb549de6bf - -Vehicle.Cabin.Door.Row2.DriverSide.Shade.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 - uuid: 81f6196e909d590d858fe4da18c60590 - -Vehicle.Cabin.Door.Row2.DriverSide.Window: - description: Door window status - type: branch - uuid: bb6ac206a45b507f9f1fe5fdfcf82b31 - -Vehicle.Cabin.Door.Row2.DriverSide.Window.IsOpen: - datatype: boolean - description: Is window open or closed? - type: sensor - uuid: 1fa3b2f43118575aa2f136fdd15ff61f - -Vehicle.Cabin.Door.Row2.DriverSide.Window.Position: - datatype: uint8 - description: Window position. 0 = Fully closed 100 = Fully opened. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 8a097ade895c5cd8afe9efeef79532fc - -Vehicle.Cabin.Door.Row2.DriverSide.Window.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 - uuid: 4dd1a3858c1b54cc94a8dc4d011ea307 - -Vehicle.Cabin.Door.Row2.PassengerSide: - description: All doors, including windows and switches. - type: branch - uuid: 16bc38dcd8055f50b54f87478f72f776 - -Vehicle.Cabin.Door.Row2.PassengerSide.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 - uuid: 082f7e3633ab56d4a48817329cf46ef9 - -Vehicle.Cabin.Door.Row2.PassengerSide.IsLocked: - datatype: boolean - description: Is door locked or unlocked. True = Locked. False = Unlocked. - type: actuator - uuid: 32fa3a8c0b2d5451a4a1976438417305 - -Vehicle.Cabin.Door.Row2.PassengerSide.IsOpen: - datatype: boolean - description: Is door open or closed - type: actuator - uuid: 84cab77c9c1d59aba1565b3484c5e01f - -Vehicle.Cabin.Door.Row2.PassengerSide.Shade: - description: Side window shade - type: branch - uuid: 8dc8133322a65057844f9b7eceee6ef9 - -Vehicle.Cabin.Door.Row2.PassengerSide.Shade.Position: - datatype: uint8 - description: Position of window blind. 0 = Fully retracted. 100 = Fully deployed. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: aa5627291c29505b8d2f7d652cc4800d - -Vehicle.Cabin.Door.Row2.PassengerSide.Shade.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 - uuid: 0c33dd31375452d6ad0c531eac1637c6 - -Vehicle.Cabin.Door.Row2.PassengerSide.Window: - description: Door window status - type: branch - uuid: b64ba696bf7b5fdc8dba79ae5cb119d1 - -Vehicle.Cabin.Door.Row2.PassengerSide.Window.IsOpen: - datatype: boolean - description: Is window open or closed? - type: sensor - uuid: 13e37e2924115c73a36df78f09fad493 - -Vehicle.Cabin.Door.Row2.PassengerSide.Window.Position: - datatype: uint8 - description: Window position. 0 = Fully closed 100 = Fully opened. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: e3e3fa03f4e357ae8ac8f43799a99350 - -Vehicle.Cabin.Door.Row2.PassengerSide.Window.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 - uuid: 174b3bc145625a22b23a283c424c28b4 - -Vehicle.Cabin.DoorCount: - datatype: uint8 - default: 4 - description: Number of doors in vehicle. - type: attribute - uuid: c293fbef75725c57a9918dd5a34055c4 - -Vehicle.Cabin.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 - uuid: bca9ccd50358584d8d20865694b0d15f - -Vehicle.Cabin.HVAC: - description: Climate control - type: branch - uuid: f8ff34337cdf568e91ab406a365c3249 - -Vehicle.Cabin.HVAC.AmbientAirTemperature: - datatype: float - description: Ambient air temperature inside the vehicle. - type: sensor - unit: celsius - uuid: 611868a24bc25eb9a837208c235e9491 - -Vehicle.Cabin.HVAC.IsAirConditioningActive: - datatype: boolean - description: Is Air conditioning active. - type: actuator - uuid: dc4f79e4211c54a6b4eed0236aae84a6 - -Vehicle.Cabin.HVAC.IsFrontDefrosterActive: - datatype: boolean - description: Is front defroster active. - type: actuator - uuid: afa678c87182544bb6ab81fa6a770791 - -Vehicle.Cabin.HVAC.IsRearDefrosterActive: - datatype: boolean - description: Is rear defroster active. - type: actuator - uuid: d342a7939f2e5adeaeb5e68e3a314445 - -Vehicle.Cabin.HVAC.IsRecirculationActive: - datatype: boolean - description: Is recirculation active. - type: actuator - uuid: 7b80c41c63b35c9299a410166cd33c81 - -Vehicle.Cabin.HVAC.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 - uuid: ee011a09ebc6519183177b05d7302ce8 - -Vehicle.Cabin.HVAC.Station: - description: HVAC for single station in the vehicle - type: branch - uuid: 253e683e6f135b83b6302a30b6c0ec8d - -Vehicle.Cabin.HVAC.Station.Row1: - description: HVAC for single station in the vehicle - type: branch - uuid: 80860491fba75babaf3c439d1d471a6d - -Vehicle.Cabin.HVAC.Station.Row1.Driver: - description: HVAC for single station in the vehicle - type: branch - uuid: 7480dcf1e7375c7491a4dc083a8a7d15 - -Vehicle.Cabin.HVAC.Station.Row1.Driver.AirDistribution: - allowed: - - UP - - MIDDLE - - DOWN - datatype: string - description: Direction of airstream - type: actuator - uuid: 8b7412018a6f5c0a8467bdddb53e76f7 - -Vehicle.Cabin.HVAC.Station.Row1.Driver.FanSpeed: - datatype: uint8 - description: Fan Speed, 0 = off. 100 = max - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 3db004f9a2ee528099499d660bfa715f - -Vehicle.Cabin.HVAC.Station.Row1.Driver.Temperature: - datatype: int8 - description: Temperature - type: actuator - unit: celsius - uuid: 1eae45dbda85581ca794b6b4513376cd - -Vehicle.Cabin.HVAC.Station.Row1.Passenger: - description: HVAC for single station in the vehicle - type: branch - uuid: e536a7f5f6a05ff48f26f96ef5772455 - -Vehicle.Cabin.HVAC.Station.Row1.Passenger.AirDistribution: - allowed: - - UP - - MIDDLE - - DOWN - datatype: string - description: Direction of airstream - type: actuator - uuid: 610facc5829f5d52a40e8b1e9706866c - -Vehicle.Cabin.HVAC.Station.Row1.Passenger.FanSpeed: - datatype: uint8 - description: Fan Speed, 0 = off. 100 = max - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 2d00c3cf2f735a37b646d9a51e77ef9e - -Vehicle.Cabin.HVAC.Station.Row1.Passenger.Temperature: - datatype: int8 - description: Temperature - type: actuator - unit: celsius - uuid: 3a7a6b5f8c4756d4bcf540ee41c781e1 - -Vehicle.Cabin.HVAC.Station.Row2: - description: HVAC for single station in the vehicle - type: branch - uuid: d98e8f5f94da5acfbf428c635a8bcc0c - -Vehicle.Cabin.HVAC.Station.Row2.Driver: - description: HVAC for single station in the vehicle - type: branch - uuid: d1dd7712867d51ec847afa67e6dd3c92 - -Vehicle.Cabin.HVAC.Station.Row2.Driver.AirDistribution: - allowed: - - UP - - MIDDLE - - DOWN - datatype: string - description: Direction of airstream - type: actuator - uuid: 8a021c3941ee5fed99efb5b8c7e6882a - -Vehicle.Cabin.HVAC.Station.Row2.Driver.FanSpeed: - datatype: uint8 - description: Fan Speed, 0 = off. 100 = max - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 873e0193650f5f4a88bdb9777ead4df7 - -Vehicle.Cabin.HVAC.Station.Row2.Driver.Temperature: - datatype: int8 - description: Temperature - type: actuator - unit: celsius - uuid: 50d268809c555b82b275884f8c170825 - -Vehicle.Cabin.HVAC.Station.Row2.Passenger: - description: HVAC for single station in the vehicle - type: branch - uuid: ed9c94346bd8511584c4d9a8e2d49ec0 - -Vehicle.Cabin.HVAC.Station.Row2.Passenger.AirDistribution: - allowed: - - UP - - MIDDLE - - DOWN - datatype: string - description: Direction of airstream - type: actuator - uuid: 06105fb9e69755f38a02132b4b432351 - -Vehicle.Cabin.HVAC.Station.Row2.Passenger.FanSpeed: - datatype: uint8 - description: Fan Speed, 0 = off. 100 = max - max: 100 - min: 0 - type: actuator - unit: percent - uuid: a9d1c8e5a9e35e7ca924ec4871364de8 - -Vehicle.Cabin.HVAC.Station.Row2.Passenger.Temperature: - datatype: int8 - description: Temperature - type: actuator - unit: celsius - uuid: a83b6548c3c95d288072caa1a7dc2904 - -Vehicle.Cabin.HVAC.Station.Row3: - description: HVAC for single station in the vehicle - type: branch - uuid: 6eb8d63b66c859d5b36ef52d264aed2b - -Vehicle.Cabin.HVAC.Station.Row3.Driver: - description: HVAC for single station in the vehicle - type: branch - uuid: 299b787af2fe56ab9721086824692e10 - -Vehicle.Cabin.HVAC.Station.Row3.Driver.AirDistribution: - allowed: - - UP - - MIDDLE - - DOWN - datatype: string - description: Direction of airstream - type: actuator - uuid: ec927fbdee9e51c89ccba5c3752189cb - -Vehicle.Cabin.HVAC.Station.Row3.Driver.FanSpeed: - datatype: uint8 - description: Fan Speed, 0 = off. 100 = max - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 9c111ac7582752228e43bda739c0a26a - -Vehicle.Cabin.HVAC.Station.Row3.Driver.Temperature: - datatype: int8 - description: Temperature - type: actuator - unit: celsius - uuid: d16ac539f8035e209831c1f4c7c39c83 - -Vehicle.Cabin.HVAC.Station.Row3.Passenger: - description: HVAC for single station in the vehicle - type: branch - uuid: 810eed3a9836574a886923f2ddf67dfd - -Vehicle.Cabin.HVAC.Station.Row3.Passenger.AirDistribution: - allowed: - - UP - - MIDDLE - - DOWN - datatype: string - description: Direction of airstream - type: actuator - uuid: 5cf67ab3c7d1500ab306c397b7dddb12 - -Vehicle.Cabin.HVAC.Station.Row3.Passenger.FanSpeed: - datatype: uint8 - description: Fan Speed, 0 = off. 100 = max - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 71f5693b021f52ca888335848535db51 - -Vehicle.Cabin.HVAC.Station.Row3.Passenger.Temperature: - datatype: int8 - description: Temperature - type: actuator - unit: celsius - uuid: 1499ad96881c551886081c52d404d3e3 - -Vehicle.Cabin.HVAC.Station.Row4: - description: HVAC for single station in the vehicle - type: branch - uuid: ff0c0fa26de7508dbe92a83bc087dff6 - -Vehicle.Cabin.HVAC.Station.Row4.Driver: - description: HVAC for single station in the vehicle - type: branch - uuid: 7211e138449252378f1a6ffbece35753 - -Vehicle.Cabin.HVAC.Station.Row4.Driver.AirDistribution: - allowed: - - UP - - MIDDLE - - DOWN - datatype: string - description: Direction of airstream - type: actuator - uuid: 984add0704f850f2bb06a748c43211fb - -Vehicle.Cabin.HVAC.Station.Row4.Driver.FanSpeed: - datatype: uint8 - description: Fan Speed, 0 = off. 100 = max - max: 100 - min: 0 - type: actuator - unit: percent - uuid: fbd6ca78cdc557078f91b3d649866ec2 - -Vehicle.Cabin.HVAC.Station.Row4.Driver.Temperature: - datatype: int8 - description: Temperature - type: actuator - unit: celsius - uuid: 9db31f66a7575255864758d62a4e0185 - -Vehicle.Cabin.HVAC.Station.Row4.Passenger: - description: HVAC for single station in the vehicle - type: branch - uuid: 30fac3fdc3785d7fa8eb4298da45e95b - -Vehicle.Cabin.HVAC.Station.Row4.Passenger.AirDistribution: - allowed: - - UP - - MIDDLE - - DOWN - datatype: string - description: Direction of airstream - type: actuator - uuid: 2c829297b81e54cf85a04bde79f31f34 - -Vehicle.Cabin.HVAC.Station.Row4.Passenger.FanSpeed: - datatype: uint8 - description: Fan Speed, 0 = off. 100 = max - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 580538988d3f513c88612665621bba09 - -Vehicle.Cabin.HVAC.Station.Row4.Passenger.Temperature: - datatype: int8 - description: Temperature - type: actuator - unit: celsius - uuid: 06b974ba5325558793b8a7dccb560bde - -Vehicle.Cabin.Infotainment: - description: Infotainment system. - type: branch - uuid: d88f92fbdda35012a2443b5e130d5eff - -Vehicle.Cabin.Infotainment.HMI: - description: HMI related signals - type: branch - uuid: 271e3d9202825f37bd054820e5ea8141 - -Vehicle.Cabin.Infotainment.HMI.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 - uuid: 44147980dabd56b883ae4d2491383a17 - -Vehicle.Cabin.Infotainment.HMI.CurrentLanguage: - datatype: string - description: ISO 639-1 standard language code for the current HMI - type: sensor - uuid: dc29ee5b7f7154b4ab05a9771fe930b3 - -Vehicle.Cabin.Infotainment.HMI.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 - uuid: 0f03c3955fe953e9893a1f52e964919e - -Vehicle.Cabin.Infotainment.HMI.DayNightMode: - allowed: - - DAY - - NIGHT - datatype: string - description: Current display theme - type: actuator - uuid: a892039ba136588fa26b2670f839c0cc - -Vehicle.Cabin.Infotainment.HMI.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 - uuid: 130114ebf81f59718cf257e198b90e01 - -Vehicle.Cabin.Infotainment.HMI.DistanceUnit: - allowed: - - MILES - - KILOMETERS - datatype: string - description: Distance unit used in the current HMI - type: actuator - uuid: 4b40e8bdb1a053ee9ee35338d8804e7b - -Vehicle.Cabin.Infotainment.HMI.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 - uuid: 914846f6804757ba81ca6bcfac8d2c48 - -Vehicle.Cabin.Infotainment.HMI.FontSize: - allowed: - - STANDARD - - LARGE - - EXTRA_LARGE - datatype: string - description: Font size used in the current HMI - type: actuator - uuid: 630bf4a73340503799e8d86889ffd863 - -Vehicle.Cabin.Infotainment.HMI.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 - uuid: 0e6a43ce1aa45243b753545ffa1f0f8c - -Vehicle.Cabin.Infotainment.HMI.FuelVolumeUnit: - allowed: - - LITER - - GALLON_US - - GALLON_UK - datatype: string - description: Fuel volume unit used in the current HMI - type: actuator - uuid: aef80d0bd01d593082e41abf072dab9b - -Vehicle.Cabin.Infotainment.HMI.IsScreenAlwaysOn: - datatype: boolean - description: Used to prevent the screen going black if no action placed. - type: actuator - uuid: f6f2bffbad7e5e9098b351bf99b71624 - -Vehicle.Cabin.Infotainment.HMI.LastActionTime: - datatype: string - description: Time for last hmi action, formatted according to ISO 8601 with UTC time zone. - type: sensor - uuid: 19b4f7e950bc526f8c263b4cc5954960 - -Vehicle.Cabin.Infotainment.HMI.TemperatureUnit: - allowed: - - C - - F - datatype: string - description: Temperature unit used in the current HMI - type: actuator - uuid: a7d1533490bb52b6b4f650280e72543d - -Vehicle.Cabin.Infotainment.HMI.TimeFormat: - allowed: - - HR_12 - - HR_24 - datatype: string - description: Time format used in the current HMI - type: actuator - uuid: 73083b87a4e25c02aee672ea32e40005 - -Vehicle.Cabin.Infotainment.HMI.TirePressureUnit: - allowed: - - PSI - - KPA - - BAR - datatype: string - description: Tire pressure unit used in the current HMI - type: actuator - uuid: e5ffaf58cc10523fa0858deafb61a8ce - -Vehicle.Cabin.Infotainment.Media: - description: All Media actions - type: branch - uuid: 3f324d13873e501a84daf2cfade24d0f - -Vehicle.Cabin.Infotainment.Media.Action: - allowed: - - UNKNOWN - - STOP - - PLAY - - FAST_FORWARD - - FAST_BACKWARD - - SKIP_FORWARD - - SKIP_BACKWARD - datatype: string - description: Tells if the media was - type: actuator - uuid: 0357aea525bf505981a14e4fc720094e - -Vehicle.Cabin.Infotainment.Media.DeclinedURI: - datatype: string - description: URI of suggested media that was declined - type: sensor - uuid: 51b0d6227db55b92bc35eedd8277f4c4 - -Vehicle.Cabin.Infotainment.Media.Played: - description: Collection of signals updated in concert when a new media is played - type: branch - uuid: 6585e9d3b6ff596da72a5f8c98d2d47a - -Vehicle.Cabin.Infotainment.Media.Played.Album: - datatype: string - description: Name of album being played - type: sensor - uuid: 1d80b1e2c1085def92b3548b5db2786e - -Vehicle.Cabin.Infotainment.Media.Played.Artist: - datatype: string - description: Name of artist being played - type: sensor - uuid: 076af7ad8aff5110ab5a64d1f58ccdcb - -Vehicle.Cabin.Infotainment.Media.Played.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 - uuid: f5e58f66f21f560fbd0124ab5b17460e - -Vehicle.Cabin.Infotainment.Media.Played.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 - uuid: 54fb88a7d7cf5e3aab63e8f52415c187 - -Vehicle.Cabin.Infotainment.Media.Played.Track: - datatype: string - description: Name of track being played - type: sensor - uuid: ee800d62a40351e6934649ca75927d69 - -Vehicle.Cabin.Infotainment.Media.Played.URI: - datatype: string - description: User Resource associated with the media - type: sensor - uuid: 1ed22b9925c3502d8d1389c8e02d0f07 - -Vehicle.Cabin.Infotainment.Media.SelectedURI: - datatype: string - description: URI of suggested media that was selected - type: actuator - uuid: 4820f7a961c25e91af12d3417a145d32 - -Vehicle.Cabin.Infotainment.Media.Volume: - datatype: uint8 - description: Current Media Volume - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 8b344688816f5844ae5812bb136c8006 - -Vehicle.Cabin.Infotainment.Navigation: - description: All navigation actions - type: branch - uuid: 79bb0cc4acae5d1eb34fb214352d7863 - -Vehicle.Cabin.Infotainment.Navigation.DestinationSet: - description: A navigation has been selected. - type: branch - uuid: f51ce253dc5b58168ecca99297139455 - -Vehicle.Cabin.Infotainment.Navigation.DestinationSet.Latitude: - datatype: double - description: Latitude of destination in WGS 84 geodetic coordinates. - max: 90 - min: -90 - type: actuator - unit: degrees - uuid: 3e33f3252934565d86de5409c761262b - -Vehicle.Cabin.Infotainment.Navigation.DestinationSet.Longitude: - datatype: double - description: Longitude of destination in WGS 84 geodetic coordinates. - max: 180 - min: -180 - type: actuator - unit: degrees - uuid: e9bd511146ca51639c8d42c0702e22ee - -Vehicle.Cabin.Infotainment.Navigation.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 - uuid: f5404f515db05e518d7b74460cf83eee - -Vehicle.Cabin.Infotainment.Navigation.Mute: - allowed: - - MUTED - - ALERT_ONLY - - UNMUTED - datatype: string - description: Navigation mute state that was selected. - type: actuator - uuid: d7ab68ec65aa5bafa95f042a60c91639 - -Vehicle.Cabin.Infotainment.Navigation.Volume: - datatype: uint8 - description: Current navigation volume - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 3609ff09d29d54d596068f978cbc0777 - -Vehicle.Cabin.Infotainment.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 - uuid: 7be907e3d9fd5c46a516f7cd07f050a3 - -Vehicle.Cabin.Infotainment.SmartphoneProjection: - description: All smartphone projection actions. - type: branch - uuid: fd47f73b4d6b51679f4bed75f6d63518 - -Vehicle.Cabin.Infotainment.SmartphoneProjection.Active: - allowed: - - NONE - - ACTIVE - - INACTIVE - comment: NONE indicates that projection is not supported. - datatype: string - description: Projection activation info. - type: actuator - uuid: 7156b00b47a8513c8e86f50f7d152614 - -Vehicle.Cabin.Infotainment.SmartphoneProjection.Source: - allowed: - - USB - - BLUETOOTH - - WIFI - datatype: string - description: Connectivity source selected for projection. - type: actuator - uuid: 1c2d1f379f5752ac802456a992b88156 - -Vehicle.Cabin.Infotainment.SmartphoneProjection.SupportedMode: - allowed: - - ANDROID_AUTO - - APPLE_CARPLAY - - MIRROR_LINK - - OTHER - datatype: string[] - description: Supportable list for projection. - type: attribute - uuid: 80fa132703655d989386bc6711afed49 - -Vehicle.Cabin.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 - uuid: 23d94405d1035201ae2866f911f02063 - -Vehicle.Cabin.Light: - 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 - uuid: 2fc2ad48d5315cc4aa1e4638a6985585 - -Vehicle.Cabin.Light.AmbientLight: - description: Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc. - type: branch - uuid: c3983df208565cb78c8af970a57351fd - -Vehicle.Cabin.Light.AmbientLight.Row1: - description: Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc. - type: branch - uuid: b3447dca710f51e39ed1af3d240f8851 - -Vehicle.Cabin.Light.AmbientLight.Row1.DriverSide: - description: Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc. - type: branch - uuid: e42bfc0abac857f0a40f579cc0ced424 - -Vehicle.Cabin.Light.AmbientLight.Row1.DriverSide.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 - uuid: c5717a5df33359959d1df3ae75dd687e - -Vehicle.Cabin.Light.AmbientLight.Row1.DriverSide.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 - uuid: a9ddbecc501e5ad4b95b7197cd4d6edf - -Vehicle.Cabin.Light.AmbientLight.Row1.DriverSide.IsLightOn: - datatype: boolean - description: Indicates whether the light is turned on. True = On, False = Off. - type: actuator - uuid: 3b6d9d8d6acb55bc81022522cf2499a3 - -Vehicle.Cabin.Light.AmbientLight.Row1.PassengerSide: - description: Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc. - type: branch - uuid: 05a04fb5fb025049b9e9fbb109fef22a - -Vehicle.Cabin.Light.AmbientLight.Row1.PassengerSide.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 - uuid: a58681f838a75596b6b64623803479cc - -Vehicle.Cabin.Light.AmbientLight.Row1.PassengerSide.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 - uuid: 9d9096fdd737597b8423214633a97063 - -Vehicle.Cabin.Light.AmbientLight.Row1.PassengerSide.IsLightOn: - datatype: boolean - description: Indicates whether the light is turned on. True = On, False = Off. - type: actuator - uuid: a52466424a9550868a5f6a1aa83f3dce - -Vehicle.Cabin.Light.AmbientLight.Row2: - description: Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc. - type: branch - uuid: f4462f76907e529fbcc7cc6761ca5cbe - -Vehicle.Cabin.Light.AmbientLight.Row2.DriverSide: - description: Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc. - type: branch - uuid: ddf477f1910e595f8c8055508cbdd808 - -Vehicle.Cabin.Light.AmbientLight.Row2.DriverSide.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 - uuid: 8eb7ad17cb3f546c96fb8f76a7ac09f6 - -Vehicle.Cabin.Light.AmbientLight.Row2.DriverSide.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 - uuid: 93c3bf189e045a52b2134aa20cfcf2b2 - -Vehicle.Cabin.Light.AmbientLight.Row2.DriverSide.IsLightOn: - datatype: boolean - description: Indicates whether the light is turned on. True = On, False = Off. - type: actuator - uuid: c95376e9f63f5ae996907ab83fa40a0b - -Vehicle.Cabin.Light.AmbientLight.Row2.PassengerSide: - description: Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc. - type: branch - uuid: b9a621db27d75d56b377890d98222d53 - -Vehicle.Cabin.Light.AmbientLight.Row2.PassengerSide.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 - uuid: 6ed1d61f74155275bde970d8233f0f51 - -Vehicle.Cabin.Light.AmbientLight.Row2.PassengerSide.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 - uuid: 1e9bcef987795ad3a38bc76de810df19 - -Vehicle.Cabin.Light.AmbientLight.Row2.PassengerSide.IsLightOn: - datatype: boolean - description: Indicates whether the light is turned on. True = On, False = Off. - type: actuator - uuid: e61968ff0fb15adf891efadc9181f78c - -Vehicle.Cabin.Light.InteractiveLightBar: - description: Decorative coloured light bar that supports effects, usually mounted on the dashboard (e.g. BMW i7 Interactive bar). - type: branch - uuid: de6062a1a9c05ff687128f748307e331 - -Vehicle.Cabin.Light.InteractiveLightBar.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 - uuid: 099955ec87a0528ba1a89cc3e439c806 - -Vehicle.Cabin.Light.InteractiveLightBar.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 - uuid: c0167026c1575ec8a2de0901a71d0d8d - -Vehicle.Cabin.Light.InteractiveLightBar.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 - uuid: 9c73159ff0db5341af2bd3aaffc183c5 - -Vehicle.Cabin.Light.InteractiveLightBar.IsLightOn: - datatype: boolean - description: Indicates whether the light is turned on. True = On, False = Off. - type: actuator - uuid: 7c858ba899585fd6bb65a981db056fd7 - -Vehicle.Cabin.Light.IsDomeOn: - datatype: boolean - description: Is central dome light on - type: actuator - uuid: 0dcbdddcc3bb59d292bd7a0cf3747c83 - -Vehicle.Cabin.Light.IsGloveBoxOn: - datatype: boolean - description: Is glove box light on - type: actuator - uuid: 9b4db6bf8cc95c7a855442b95e1e0e18 - -Vehicle.Cabin.Light.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 - uuid: 4d605e0e591a510d9613bdb412175729 - -Vehicle.Cabin.Light.Spotlight: - description: Spotlight for a specific area in the vehicle. - type: branch - uuid: a03cd35849a05136ac8e16f4e96d866b - -Vehicle.Cabin.Light.Spotlight.Row1: - description: Spotlight for a specific area in the vehicle. - type: branch - uuid: 35f4c5574dbb5c5bafe82107b55377ec - -Vehicle.Cabin.Light.Spotlight.Row1.DriverSide: - description: Spotlight for a specific area in the vehicle. - type: branch - uuid: 39ac4414f40754e2ab28a6bb10b397bb - -Vehicle.Cabin.Light.Spotlight.Row1.DriverSide.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 - uuid: 838b3bc619d153d993ddfad96918ad7e - -Vehicle.Cabin.Light.Spotlight.Row1.DriverSide.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 - uuid: 497ba6de557452829f1c3bbcad2c1386 - -Vehicle.Cabin.Light.Spotlight.Row1.DriverSide.IsLightOn: - datatype: boolean - description: Indicates whether the light is turned on. True = On, False = Off. - type: actuator - uuid: dff99845cbdf54239f1cc36834434a91 - -Vehicle.Cabin.Light.Spotlight.Row1.PassengerSide: - description: Spotlight for a specific area in the vehicle. - type: branch - uuid: 669fe375bd1151b497eab93492e41597 - -Vehicle.Cabin.Light.Spotlight.Row1.PassengerSide.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 - uuid: 7643021f0af15edeba9e35f7e87a7bd5 - -Vehicle.Cabin.Light.Spotlight.Row1.PassengerSide.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 - uuid: a2d72853978f54379cd66a2c82cd63fa - -Vehicle.Cabin.Light.Spotlight.Row1.PassengerSide.IsLightOn: - datatype: boolean - description: Indicates whether the light is turned on. True = On, False = Off. - type: actuator - uuid: 834df09382ee509b898b2ff2652a3ea2 - -Vehicle.Cabin.Light.Spotlight.Row2: - description: Spotlight for a specific area in the vehicle. - type: branch - uuid: 259f6228620a532abbac5548c72b3c35 - -Vehicle.Cabin.Light.Spotlight.Row2.DriverSide: - description: Spotlight for a specific area in the vehicle. - type: branch - uuid: 92fe0ca17e39548d8681a0fdd4f2a035 - -Vehicle.Cabin.Light.Spotlight.Row2.DriverSide.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 - uuid: fddcfd397c63530b8b7e6f3c5fd98b20 - -Vehicle.Cabin.Light.Spotlight.Row2.DriverSide.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 - uuid: 054dfd5255675357b090663df26c6370 - -Vehicle.Cabin.Light.Spotlight.Row2.DriverSide.IsLightOn: - datatype: boolean - description: Indicates whether the light is turned on. True = On, False = Off. - type: actuator - uuid: d7cdb8c7fe305b99a482ac7f8025519b - -Vehicle.Cabin.Light.Spotlight.Row2.PassengerSide: - description: Spotlight for a specific area in the vehicle. - type: branch - uuid: 1e9617c06a0b53eca745dcf96f8d5d70 - -Vehicle.Cabin.Light.Spotlight.Row2.PassengerSide.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 - uuid: bdc48b556b565f0e9fd4e68b814ee934 - -Vehicle.Cabin.Light.Spotlight.Row2.PassengerSide.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 - uuid: b5e5c87ee11c5f84a7d92dc7871f3241 - -Vehicle.Cabin.Light.Spotlight.Row2.PassengerSide.IsLightOn: - datatype: boolean - description: Indicates whether the light is turned on. True = On, False = Off. - type: actuator - uuid: ded8281b9520524ead6bc1a5c3cccd5d - -Vehicle.Cabin.Light.Spotlight.Row3: - description: Spotlight for a specific area in the vehicle. - type: branch - uuid: 7b6666a198e8514582f8c85525dccceb - -Vehicle.Cabin.Light.Spotlight.Row3.DriverSide: - description: Spotlight for a specific area in the vehicle. - type: branch - uuid: 36bd0e114ba652b0919db771e3a0d946 - -Vehicle.Cabin.Light.Spotlight.Row3.DriverSide.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 - uuid: 5394e601144f5d75ae66a1566d182c68 - -Vehicle.Cabin.Light.Spotlight.Row3.DriverSide.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 - uuid: 50376cb5f02750d599f3ae5932520952 - -Vehicle.Cabin.Light.Spotlight.Row3.DriverSide.IsLightOn: - datatype: boolean - description: Indicates whether the light is turned on. True = On, False = Off. - type: actuator - uuid: fa58686f4c925907a17f40aded066a01 - -Vehicle.Cabin.Light.Spotlight.Row3.PassengerSide: - description: Spotlight for a specific area in the vehicle. - type: branch - uuid: 69b6df651e9b5154b46c5709ce167fb6 - -Vehicle.Cabin.Light.Spotlight.Row3.PassengerSide.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 - uuid: b50787e8b3bf56ebb3e007ee21aa1f30 - -Vehicle.Cabin.Light.Spotlight.Row3.PassengerSide.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 - uuid: b8e1a7326abe538199f595555c4c0ca0 - -Vehicle.Cabin.Light.Spotlight.Row3.PassengerSide.IsLightOn: - datatype: boolean - description: Indicates whether the light is turned on. True = On, False = Off. - type: actuator - uuid: 68eacf65617c56489f0c1f475576eaaa - -Vehicle.Cabin.Light.Spotlight.Row4: - description: Spotlight for a specific area in the vehicle. - type: branch - uuid: 41b0adb2cba85665824d3ad497b593a8 - -Vehicle.Cabin.Light.Spotlight.Row4.DriverSide: - description: Spotlight for a specific area in the vehicle. - type: branch - uuid: 661dcc2f512159329fc272128a054b0b - -Vehicle.Cabin.Light.Spotlight.Row4.DriverSide.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 - uuid: 6cc3fc21887c593a90d799209dcc40c0 - -Vehicle.Cabin.Light.Spotlight.Row4.DriverSide.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 - uuid: 5459910482cb507db1583252b26e62c7 - -Vehicle.Cabin.Light.Spotlight.Row4.DriverSide.IsLightOn: - datatype: boolean - description: Indicates whether the light is turned on. True = On, False = Off. - type: actuator - uuid: ca9e9652c52757ce98744209c0d2344f - -Vehicle.Cabin.Light.Spotlight.Row4.PassengerSide: - description: Spotlight for a specific area in the vehicle. - type: branch - uuid: fbffb10dc86a523bb40f624c1ad385e7 - -Vehicle.Cabin.Light.Spotlight.Row4.PassengerSide.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 - uuid: fde4be32cd6f5fcf8997b01564eaadaf - -Vehicle.Cabin.Light.Spotlight.Row4.PassengerSide.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 - uuid: 8be53f681198503bb8f93d331e2315cd - -Vehicle.Cabin.Light.Spotlight.Row4.PassengerSide.IsLightOn: - datatype: boolean - description: Indicates whether the light is turned on. True = On, False = Off. - type: actuator - uuid: c35925e7af4d5a929b153cb7f587ca5b - -Vehicle.Cabin.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 - uuid: 728b62b170055bd8b1530ec423dd5a9a - -Vehicle.Cabin.RearShade: - description: Rear window shade. - type: branch - uuid: 8a0c86f4fc6f5ea8ac8cf8f327969dcc - -Vehicle.Cabin.RearShade.Position: - datatype: uint8 - description: Position of window blind. 0 = Fully retracted. 100 = Fully deployed. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 9e16fc53f2ec575dbf66c79f969949a9 - -Vehicle.Cabin.RearShade.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 - uuid: da9f01e9baf35544842f1a7674c5172a - -Vehicle.Cabin.RearviewMirror: - description: Rear-view mirror. - type: branch - uuid: e655b654ab9f55bbb04952a99755efae - -Vehicle.Cabin.RearviewMirror.DimmingLevel: - datatype: uint8 - description: Dimming level of rear-view mirror. 0 = Undimmed. 100 = Fully dimmed. - max: 100 - type: actuator - unit: percent - uuid: 4e2bcbaa6dc1586d8282324b475e5dee - -Vehicle.Cabin.Seat: - description: All seats. - type: branch - uuid: b0b253106b2851e3bb5c71ae3b09f09d - -Vehicle.Cabin.Seat.Row1: - description: All seats. - type: branch - uuid: 7a420ddeac6f538eb3939bb4a242d136 - -Vehicle.Cabin.Seat.Row1.DriverSide: - description: All seats. - type: branch - uuid: a8dd9e808a765a04874c2853c7926ed4 - -Vehicle.Cabin.Seat.Row1.DriverSide.Airbag: - description: Airbag signals. - type: branch - uuid: cf3eca19b11e5e3ea66a078bed805968 - -Vehicle.Cabin.Seat.Row1.DriverSide.Airbag.IsDeployed: - datatype: boolean - description: Airbag deployment status. True = Airbag deployed. False = Airbag not deployed. - type: sensor - uuid: 7308c4cd91025db3aad6dee3e4f9d2a1 - -Vehicle.Cabin.Seat.Row1.DriverSide.Backrest: - description: Describes signals related to the backrest of the seat. - type: branch - uuid: 876fb7f9209155749108c95bb268836b - -Vehicle.Cabin.Seat.Row1.DriverSide.Backrest.Lumbar: - description: Adjustable lumbar support mechanisms in seats allow the user to change the seat back shape. - type: branch - uuid: 2112602ef7ab5470b3e57b85d6ff903f - -Vehicle.Cabin.Seat.Row1.DriverSide.Backrest.Lumbar.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 - uuid: 637adce522d45075a064f3f94dc568ce - -Vehicle.Cabin.Seat.Row1.DriverSide.Backrest.Lumbar.Support: - datatype: float - description: Lumbar support (in/out position). 0 = Innermost position. 100 = Outermost position. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: dc2da05595a151ada19e6d86037abaf0 - -Vehicle.Cabin.Seat.Row1.DriverSide.Backrest.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 - uuid: c58f21ae6ce150bc8f0b2cdd4698f958 - -Vehicle.Cabin.Seat.Row1.DriverSide.Backrest.SideBolster: - description: Backrest side bolster (lumbar side support) settings. - type: branch - uuid: bd36af767f2e582bae11c7a62b635789 - -Vehicle.Cabin.Seat.Row1.DriverSide.Backrest.SideBolster.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 - uuid: c3bcf9587aac58af827a41364bc91b55 - -Vehicle.Cabin.Seat.Row1.DriverSide.Headrest: - description: Headrest settings. - type: branch - uuid: 4b193a02bffe52819b69d422d5e50042 - -Vehicle.Cabin.Seat.Row1.DriverSide.Headrest.Angle: - datatype: float - description: Headrest angle, relative to backrest, 0 degrees if parallel to backrest, Positive degrees = tilted forward. - type: actuator - unit: degrees - uuid: 55cf95c00d2056be859d330d0060a363 - -Vehicle.Cabin.Seat.Row1.DriverSide.Headrest.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 - uuid: 51de4b90534a5f089a9d81d53a663704 - -Vehicle.Cabin.Seat.Row1.DriverSide.Heating: - datatype: int8 - description: Seat cooling / heating. 0 = off. -100 = max cold. +100 = max heat. - max: 100 - min: -100 - type: actuator - unit: percent - uuid: efeb2be118bb5f5eb796a81d298ab560 - -Vehicle.Cabin.Seat.Row1.DriverSide.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 - uuid: f44c52884b5c58e4ae462656832c888b - -Vehicle.Cabin.Seat.Row1.DriverSide.IsBelted: - datatype: boolean - description: Is the belt engaged. - type: sensor - uuid: db477d45def05e11a90689c9e655cad9 - -Vehicle.Cabin.Seat.Row1.DriverSide.IsOccupied: - datatype: boolean - description: Does the seat have a passenger in it. - type: sensor - uuid: e8b805d0bd3e56be9258685f390a7a9c - -Vehicle.Cabin.Seat.Row1.DriverSide.Massage: - datatype: uint8 - description: Seat massage level. 0 = off. 100 = max massage. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 6d333404bc155fd2afa57a6380ecfd5c - -Vehicle.Cabin.Seat.Row1.DriverSide.Occupant: - description: Occupant data. - type: branch - uuid: 936f0c2fad4855d382e92393ec6223d7 - -Vehicle.Cabin.Seat.Row1.DriverSide.Occupant.Identifier: - description: Identifier attributes based on OAuth 2.0. - type: branch - uuid: 972f188af9425bc186a075224bbc3630 - -Vehicle.Cabin.Seat.Row1.DriverSide.Occupant.Identifier.Issuer: - datatype: string - description: Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com. - type: sensor - uuid: a48e731c91b55a2c9022b21774923b73 - -Vehicle.Cabin.Seat.Row1.DriverSide.Occupant.Identifier.Subject: - datatype: string - description: Subject for the authentication of the occupant e.g. UserID 7331677. - type: sensor - uuid: c4bb8a01fe8a5335b1c7c9288b9863c9 - -Vehicle.Cabin.Seat.Row1.DriverSide.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 - uuid: b9587caa89dd50d2af7167c99c13bc85 - -Vehicle.Cabin.Seat.Row1.DriverSide.Seating: - 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 - uuid: 1e49fb9d59d85494b290e53b7753dd72 - -Vehicle.Cabin.Seat.Row1.DriverSide.Seating.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 - uuid: b030abb632dc503aa313ba5c75ba36f1 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch: - description: Seat switch signals - type: branch - uuid: 3eb5fc8b515e5a90baaeb10bed7d68ca - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest: - description: Describes switches related to the backrest of the seat. - type: branch - uuid: 27ef6aedeefb5b288d191ca8e5306f55 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.IsReclineBackwardEngaged: - datatype: boolean - description: Backrest recline backward switch engaged (SingleSeat.Backrest.Recline). - type: actuator - uuid: 7cc9aaaa51085baaa45be2ee7c7330bf - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.IsReclineForwardEngaged: - datatype: boolean - description: Backrest recline forward switch engaged (SingleSeat.Backrest.Recline). - type: actuator - uuid: 794645c172745cb0ba6b081d9903be78 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.Lumbar: - description: Switches for SingleSeat.Backrest.Lumbar. - type: branch - uuid: e69977f72c375925ac2817d8313a78e6 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.Lumbar.IsDownEngaged: - datatype: boolean - description: Lumbar down switch engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: e34e3c3330ac503a962eb076c7a05209 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.Lumbar.IsLessSupportEngaged: - datatype: boolean - description: Is switch for less lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: 30ac7b216df9562abc6b7a2c6e0f665c - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.Lumbar.IsMoreSupportEngaged: - datatype: boolean - description: Is switch for more lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: 9645281792d65ada94160182c5ef2722 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.Lumbar.IsUpEngaged: - datatype: boolean - description: Lumbar up switch engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: 07e098c9c24c5500ac7054a75529187d - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.SideBolster: - description: Switches for SingleSeat.Backrest.SideBolster. - type: branch - uuid: 2702b44037a05092987a5da7a1b4e582 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.SideBolster.IsLessSupportEngaged: - datatype: boolean - description: Is switch for less side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). - type: actuator - uuid: 381639fd2a2751a9bb1429be5e0d5a99 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.SideBolster.IsMoreSupportEngaged: - datatype: boolean - description: Is switch for more side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). - type: actuator - uuid: 056e7fa78a095b3e8c4e025ac7f69893 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Headrest: - description: Switches for SingleSeat.Headrest. - type: branch - uuid: 2839bf77f2e95c17afd1a63e2d85249c - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Headrest.IsBackwardEngaged: - datatype: boolean - description: Head rest backward switch engaged (SingleSeat.Headrest.Angle). - type: actuator - uuid: 5d2d997eaadc510fa7a0ff4f0422aa7e - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Headrest.IsDownEngaged: - datatype: boolean - description: Head rest down switch engaged (SingleSeat.Headrest.Height). - type: actuator - uuid: 14783a76b08953bca5d24ebc8d59b824 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Headrest.IsForwardEngaged: - datatype: boolean - description: Head rest forward switch engaged (SingleSeat.Headrest.Angle). - type: actuator - uuid: fe246f08a3ba5fe89703bf807c479528 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Headrest.IsUpEngaged: - datatype: boolean - description: Head rest up switch engaged (SingleSeat.Headrest.Height). - type: actuator - uuid: 31d5f0a7c65f51c4b7e67d1c8b45b9b8 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.IsBackwardEngaged: - datatype: boolean - description: Seat backward switch engaged (SingleSeat.Position). - type: actuator - uuid: 242ef7b872b25d9b94db1553e7f0cb0e - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.IsCoolerEngaged: - datatype: boolean - description: Cooler switch for Seat heater (SingleSeat.Heating). - type: actuator - uuid: 5e450517dd065464ac9a4927abc936a7 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.IsDownEngaged: - datatype: boolean - description: Seat down switch engaged (SingleSeat.Height). - type: actuator - uuid: d982ff943e5e5e06a7984a2e7bfe2f45 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.IsForwardEngaged: - datatype: boolean - description: Seat forward switch engaged (SingleSeat.Position). - type: actuator - uuid: 3414b4d1e0ea5887b900171cb52e13b5 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.IsTiltBackwardEngaged: - datatype: boolean - description: Tilt backward switch engaged (SingleSeat.Tilt). - type: actuator - uuid: b3862480ad00587598d3f3f7c3468443 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.IsTiltForwardEngaged: - datatype: boolean - description: Tilt forward switch engaged (SingleSeat.Tilt). - type: actuator - uuid: abef0f196c08580f8b5e610071167e41 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.IsUpEngaged: - datatype: boolean - description: Seat up switch engaged (SingleSeat.Height). - type: actuator - uuid: baef531919455c159b068c8ac8e2bca2 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.IsWarmerEngaged: - datatype: boolean - description: Warmer switch for Seat heater (SingleSeat.Heating). - type: actuator - uuid: c7bd527be0fc59208eae631000d0ecf8 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Massage: - description: Switches for SingleSeat.Massage. - type: branch - uuid: 6d9d54a7a13e57769cf6ec91e63b4190 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Massage.IsDecreaseEngaged: - datatype: boolean - description: Decrease massage level switch engaged (SingleSeat.Massage). - type: actuator - uuid: dfcf5fbc84955377b1024600afdb6128 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Massage.IsIncreaseEngaged: - datatype: boolean - description: Increase massage level switch engaged (SingleSeat.Massage). - type: actuator - uuid: f321c48d000a5cf88d144e6c8aaebf64 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Seating: - description: Describes switches related to the seating of the seat. - type: branch - uuid: d71f5acd57365612bf06f4c372bcbc13 - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Seating.IsBackwardEngaged: - datatype: boolean - description: Is switch to decrease seating length engaged (SingleSeat.Seating.Length). - type: actuator - uuid: 7f35a13f8af55631bc280df0fedf00be - -Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Seating.IsForwardEngaged: - datatype: boolean - description: Is switch to increase seating length engaged (SingleSeat.Seating.Length). - type: actuator - uuid: ea6bcaed18645c6fa9110c68b0dcc8b1 - -Vehicle.Cabin.Seat.Row1.DriverSide.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 - uuid: c4d3fb129999531a9b59ecff95cfc1c2 - -Vehicle.Cabin.Seat.Row1.Middle: - description: All seats. - type: branch - uuid: bb6213be75be5b33adf6ad5957bb64e9 - -Vehicle.Cabin.Seat.Row1.Middle.Airbag: - description: Airbag signals. - type: branch - uuid: 278a7e2126435a46a04dec92fd50ff8a - -Vehicle.Cabin.Seat.Row1.Middle.Airbag.IsDeployed: - datatype: boolean - description: Airbag deployment status. True = Airbag deployed. False = Airbag not deployed. - type: sensor - uuid: 41909de6e59a56f8b4d3d3a4296c4cb5 - -Vehicle.Cabin.Seat.Row1.Middle.Backrest: - description: Describes signals related to the backrest of the seat. - type: branch - uuid: 5bef9412aeaf582284dc8f9cca5a5129 - -Vehicle.Cabin.Seat.Row1.Middle.Backrest.Lumbar: - description: Adjustable lumbar support mechanisms in seats allow the user to change the seat back shape. - type: branch - uuid: 03d5b5e01dcb54e5a3f3ce890cd27cee - -Vehicle.Cabin.Seat.Row1.Middle.Backrest.Lumbar.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 - uuid: 32c42eb692605c0c8c2dc7df74a65f4e - -Vehicle.Cabin.Seat.Row1.Middle.Backrest.Lumbar.Support: - datatype: float - description: Lumbar support (in/out position). 0 = Innermost position. 100 = Outermost position. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 22125fcec8aa5bc99fca8b86edbed2f0 - -Vehicle.Cabin.Seat.Row1.Middle.Backrest.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 - uuid: f16a244ea7e2560db3991cb581149683 - -Vehicle.Cabin.Seat.Row1.Middle.Backrest.SideBolster: - description: Backrest side bolster (lumbar side support) settings. - type: branch - uuid: 0c0b84957f8158d98f5a8c6d4f3265e5 - -Vehicle.Cabin.Seat.Row1.Middle.Backrest.SideBolster.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 - uuid: 94e5f2630b7355c7b1b3ac75785bc5c6 - -Vehicle.Cabin.Seat.Row1.Middle.Headrest: - description: Headrest settings. - type: branch - uuid: a183fc37f47d55de8c5d2f2f27c779e0 - -Vehicle.Cabin.Seat.Row1.Middle.Headrest.Angle: - datatype: float - description: Headrest angle, relative to backrest, 0 degrees if parallel to backrest, Positive degrees = tilted forward. - type: actuator - unit: degrees - uuid: d5cc4a79f94f515aa8f5fa59184a5c35 - -Vehicle.Cabin.Seat.Row1.Middle.Headrest.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 - uuid: 520ec12b50515918a664ae6f2ac6b702 - -Vehicle.Cabin.Seat.Row1.Middle.Heating: - datatype: int8 - description: Seat cooling / heating. 0 = off. -100 = max cold. +100 = max heat. - max: 100 - min: -100 - type: actuator - unit: percent - uuid: 85e4a1400e1455149687f608cd4a4d08 - -Vehicle.Cabin.Seat.Row1.Middle.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 - uuid: e9ada64ce4b454928de166adaa4344da - -Vehicle.Cabin.Seat.Row1.Middle.IsBelted: - datatype: boolean - description: Is the belt engaged. - type: sensor - uuid: 42a9c6f57d75550180138950e91e096e - -Vehicle.Cabin.Seat.Row1.Middle.IsOccupied: - datatype: boolean - description: Does the seat have a passenger in it. - type: sensor - uuid: decf460a32ce5f1a9f2d4b68329707eb - -Vehicle.Cabin.Seat.Row1.Middle.Massage: - datatype: uint8 - description: Seat massage level. 0 = off. 100 = max massage. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 17936943738e57888f4c11a38570f25c - -Vehicle.Cabin.Seat.Row1.Middle.Occupant: - description: Occupant data. - type: branch - uuid: cd842b8d4e7359d3ac47e8b39ab25ea9 - -Vehicle.Cabin.Seat.Row1.Middle.Occupant.Identifier: - description: Identifier attributes based on OAuth 2.0. - type: branch - uuid: acfb210c54605ebeb1d231aa09d98575 - -Vehicle.Cabin.Seat.Row1.Middle.Occupant.Identifier.Issuer: - datatype: string - description: Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com. - type: sensor - uuid: a22655ee843f5faf8c86daf55abad5f4 - -Vehicle.Cabin.Seat.Row1.Middle.Occupant.Identifier.Subject: - datatype: string - description: Subject for the authentication of the occupant e.g. UserID 7331677. - type: sensor - uuid: d3fda2f366ea5b60a284b945c21aeb17 - -Vehicle.Cabin.Seat.Row1.Middle.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 - uuid: a9c61deb42ac5bb1b2c92fb5ee222db9 - -Vehicle.Cabin.Seat.Row1.Middle.Seating: - 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 - uuid: 46a99e1f2b3553099fbb046a6b7dd86d - -Vehicle.Cabin.Seat.Row1.Middle.Seating.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 - uuid: 6fcbf711e9c852ba91f7d846f6066978 - -Vehicle.Cabin.Seat.Row1.Middle.Switch: - description: Seat switch signals - type: branch - uuid: 85bc5781995852329c3f56ab07a00a39 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest: - description: Describes switches related to the backrest of the seat. - type: branch - uuid: d386d2b7ca955caf8a4d2467d4c7603e - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.IsReclineBackwardEngaged: - datatype: boolean - description: Backrest recline backward switch engaged (SingleSeat.Backrest.Recline). - type: actuator - uuid: a1b764756af559c0b850ee370d859c86 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.IsReclineForwardEngaged: - datatype: boolean - description: Backrest recline forward switch engaged (SingleSeat.Backrest.Recline). - type: actuator - uuid: 8bd7805b426b5e439abd732e9b503bb3 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.Lumbar: - description: Switches for SingleSeat.Backrest.Lumbar. - type: branch - uuid: acb8e84f703d518dbf6c9c8b899766b0 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.Lumbar.IsDownEngaged: - datatype: boolean - description: Lumbar down switch engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: 7f7face91df2506f9351f8c27915bc18 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.Lumbar.IsLessSupportEngaged: - datatype: boolean - description: Is switch for less lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: 0f54dcace731576785322d02b68d2068 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.Lumbar.IsMoreSupportEngaged: - datatype: boolean - description: Is switch for more lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: 44923c7fe53c5fa39b632f999a6a951e - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.Lumbar.IsUpEngaged: - datatype: boolean - description: Lumbar up switch engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: a947a1e52c3850e8ae81e12ef503c472 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.SideBolster: - description: Switches for SingleSeat.Backrest.SideBolster. - type: branch - uuid: b2617422a80e5d409d5e327bec8a5895 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.SideBolster.IsLessSupportEngaged: - datatype: boolean - description: Is switch for less side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). - type: actuator - uuid: a7d928b58dc152408e38fc7b6fdf6851 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.SideBolster.IsMoreSupportEngaged: - datatype: boolean - description: Is switch for more side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). - type: actuator - uuid: 34016708d65655708157e432fad53f1f - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Headrest: - description: Switches for SingleSeat.Headrest. - type: branch - uuid: ec7f8f340e005006bc966a96829f886d - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Headrest.IsBackwardEngaged: - datatype: boolean - description: Head rest backward switch engaged (SingleSeat.Headrest.Angle). - type: actuator - uuid: a7eee2a690c75ab7b7143d95b89d0678 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Headrest.IsDownEngaged: - datatype: boolean - description: Head rest down switch engaged (SingleSeat.Headrest.Height). - type: actuator - uuid: 90d5bb0917875c009a7ee80b61a00e24 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Headrest.IsForwardEngaged: - datatype: boolean - description: Head rest forward switch engaged (SingleSeat.Headrest.Angle). - type: actuator - uuid: cbecebd77ff953c5830fbab699a3e0b8 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Headrest.IsUpEngaged: - datatype: boolean - description: Head rest up switch engaged (SingleSeat.Headrest.Height). - type: actuator - uuid: 4abfea463f0359fcb387aa1538f12d52 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.IsBackwardEngaged: - datatype: boolean - description: Seat backward switch engaged (SingleSeat.Position). - type: actuator - uuid: 3fdbbe5de45356d383be845b5deeceb8 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.IsCoolerEngaged: - datatype: boolean - description: Cooler switch for Seat heater (SingleSeat.Heating). - type: actuator - uuid: 4ad9208a44b555d5a80b819aaf97b2c8 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.IsDownEngaged: - datatype: boolean - description: Seat down switch engaged (SingleSeat.Height). - type: actuator - uuid: f108af06fb3954d5a87fb97cfadba808 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.IsForwardEngaged: - datatype: boolean - description: Seat forward switch engaged (SingleSeat.Position). - type: actuator - uuid: 6ebb2556d17959ec9bfc1d796e1f34c6 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.IsTiltBackwardEngaged: - datatype: boolean - description: Tilt backward switch engaged (SingleSeat.Tilt). - type: actuator - uuid: c7ece3b4d7435fed910b23f7ea5360d1 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.IsTiltForwardEngaged: - datatype: boolean - description: Tilt forward switch engaged (SingleSeat.Tilt). - type: actuator - uuid: 77dca23345a358fa99636c734b4de8ac - -Vehicle.Cabin.Seat.Row1.Middle.Switch.IsUpEngaged: - datatype: boolean - description: Seat up switch engaged (SingleSeat.Height). - type: actuator - uuid: a5628090d3465668adb6f1bc32bd2329 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.IsWarmerEngaged: - datatype: boolean - description: Warmer switch for Seat heater (SingleSeat.Heating). - type: actuator - uuid: 874c7f1345975e67b6a691d541cf46f1 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Massage: - description: Switches for SingleSeat.Massage. - type: branch - uuid: d51481c8a5e05a1ca9481cd8fbaa6844 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Massage.IsDecreaseEngaged: - datatype: boolean - description: Decrease massage level switch engaged (SingleSeat.Massage). - type: actuator - uuid: cd3226582b7a5f6590d983a6ed661a7b - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Massage.IsIncreaseEngaged: - datatype: boolean - description: Increase massage level switch engaged (SingleSeat.Massage). - type: actuator - uuid: 932e55cb1ea154a0ac35170f8c63cf01 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Seating: - description: Describes switches related to the seating of the seat. - type: branch - uuid: 965137f2801f50e292cfc673a3e145ed - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Seating.IsBackwardEngaged: - datatype: boolean - description: Is switch to decrease seating length engaged (SingleSeat.Seating.Length). - type: actuator - uuid: c47a888b0ff85426a98fdcc6763abe10 - -Vehicle.Cabin.Seat.Row1.Middle.Switch.Seating.IsForwardEngaged: - datatype: boolean - description: Is switch to increase seating length engaged (SingleSeat.Seating.Length). - type: actuator - uuid: e262f30a38285d7da365a42960f440e2 - -Vehicle.Cabin.Seat.Row1.Middle.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 - uuid: a9931f9f76cd5c9aa7cac23c43d09e38 - -Vehicle.Cabin.Seat.Row1.PassengerSide: - description: All seats. - type: branch - uuid: c9eef94c5e075ce088020f8a568c0183 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Airbag: - description: Airbag signals. - type: branch - uuid: c931d21b21005b5c9f0eb9a732f9b2ef - -Vehicle.Cabin.Seat.Row1.PassengerSide.Airbag.IsDeployed: - datatype: boolean - description: Airbag deployment status. True = Airbag deployed. False = Airbag not deployed. - type: sensor - uuid: 31e4cea8ba6a5254bf1d1471402d0700 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Backrest: - description: Describes signals related to the backrest of the seat. - type: branch - uuid: 999c7466ce1f5354b4695626f3a2e935 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Backrest.Lumbar: - description: Adjustable lumbar support mechanisms in seats allow the user to change the seat back shape. - type: branch - uuid: c2fbe0340f245b4ab3b1269de65b4c2d - -Vehicle.Cabin.Seat.Row1.PassengerSide.Backrest.Lumbar.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 - uuid: 0df596249cce5c77955e6938c0c9bea6 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Backrest.Lumbar.Support: - datatype: float - description: Lumbar support (in/out position). 0 = Innermost position. 100 = Outermost position. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: e8b52c64f1e957cbbbaf63b03c3dd9ef - -Vehicle.Cabin.Seat.Row1.PassengerSide.Backrest.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 - uuid: 089f2ca3258e5f94871953539fe5acbc - -Vehicle.Cabin.Seat.Row1.PassengerSide.Backrest.SideBolster: - description: Backrest side bolster (lumbar side support) settings. - type: branch - uuid: 4c48af687fd15c7785b9c4c075dc457c - -Vehicle.Cabin.Seat.Row1.PassengerSide.Backrest.SideBolster.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 - uuid: bd9dfba052ab5b24aa0eaa35fa47914f - -Vehicle.Cabin.Seat.Row1.PassengerSide.Headrest: - description: Headrest settings. - type: branch - uuid: f13eb4ad4b7a51bbad88db50dae636d3 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Headrest.Angle: - datatype: float - description: Headrest angle, relative to backrest, 0 degrees if parallel to backrest, Positive degrees = tilted forward. - type: actuator - unit: degrees - uuid: 5456d8e86ecb5cdf91b2bc08fe696d19 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Headrest.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 - uuid: 2701bc81fcc059b2b4ddc938407a503a - -Vehicle.Cabin.Seat.Row1.PassengerSide.Heating: - datatype: int8 - description: Seat cooling / heating. 0 = off. -100 = max cold. +100 = max heat. - max: 100 - min: -100 - type: actuator - unit: percent - uuid: f62e56245db158508c9535a07474eed7 - -Vehicle.Cabin.Seat.Row1.PassengerSide.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 - uuid: ae6a103cb748510e9383e2b72d6f2a00 - -Vehicle.Cabin.Seat.Row1.PassengerSide.IsBelted: - datatype: boolean - description: Is the belt engaged. - type: sensor - uuid: ed71588a6ea1511cbd4578967a94f963 - -Vehicle.Cabin.Seat.Row1.PassengerSide.IsOccupied: - datatype: boolean - description: Does the seat have a passenger in it. - type: sensor - uuid: 05a31ee58c97506485a19a2e0c213244 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Massage: - datatype: uint8 - description: Seat massage level. 0 = off. 100 = max massage. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 89f7a63fc4f65f05b7df4b74b232cc9f - -Vehicle.Cabin.Seat.Row1.PassengerSide.Occupant: - description: Occupant data. - type: branch - uuid: fd753377a2335b9fbda2cc2d29f826a6 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Occupant.Identifier: - description: Identifier attributes based on OAuth 2.0. - type: branch - uuid: c7156b61e1b45698ae98b5d30c31ade3 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Occupant.Identifier.Issuer: - datatype: string - description: Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com. - type: sensor - uuid: bab527a608bd55d4b8a9d4b7d46c7037 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Occupant.Identifier.Subject: - datatype: string - description: Subject for the authentication of the occupant e.g. UserID 7331677. - type: sensor - uuid: 121cb6ae3f4451df848f7809b313c392 - -Vehicle.Cabin.Seat.Row1.PassengerSide.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 - uuid: 3d09265704af56d59e5d80f92be3d66f - -Vehicle.Cabin.Seat.Row1.PassengerSide.Seating: - 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 - uuid: 4ae8093ea56d5613a782b97c8b1be915 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Seating.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 - uuid: c4dfd494ffc95c4abdc49716a3b73c53 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch: - description: Seat switch signals - type: branch - uuid: d7c6f91f09425d619cb93542ea55bed4 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest: - description: Describes switches related to the backrest of the seat. - type: branch - uuid: d035fd8a2e855edfb90e7955b3bd8065 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.IsReclineBackwardEngaged: - datatype: boolean - description: Backrest recline backward switch engaged (SingleSeat.Backrest.Recline). - type: actuator - uuid: 8e0c8a7fbb8a5cee933b3b1b50d4cbf1 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.IsReclineForwardEngaged: - datatype: boolean - description: Backrest recline forward switch engaged (SingleSeat.Backrest.Recline). - type: actuator - uuid: 2a19419f5c355aff9a41ee8c8ec434a0 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.Lumbar: - description: Switches for SingleSeat.Backrest.Lumbar. - type: branch - uuid: 73c59cba46725637bfa725a042713d0b - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.Lumbar.IsDownEngaged: - datatype: boolean - description: Lumbar down switch engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: 5e8dd9ae1001569388bb4da677bdb377 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.Lumbar.IsLessSupportEngaged: - datatype: boolean - description: Is switch for less lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: cb08d335fa245f34b616f9c56fc529e0 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.Lumbar.IsMoreSupportEngaged: - datatype: boolean - description: Is switch for more lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: c688f60d0f0650868ac32cba3d0c526e - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.Lumbar.IsUpEngaged: - datatype: boolean - description: Lumbar up switch engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: 10c691cb05f0581b8a6c4e764d81404d - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.SideBolster: - description: Switches for SingleSeat.Backrest.SideBolster. - type: branch - uuid: 8dfa254cccc059e881af97bce032cea9 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.SideBolster.IsLessSupportEngaged: - datatype: boolean - description: Is switch for less side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). - type: actuator - uuid: 0ef641f1e4e75200879330a5de3d3315 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.SideBolster.IsMoreSupportEngaged: - datatype: boolean - description: Is switch for more side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). - type: actuator - uuid: 811d841212295f92a7d070dac262ef84 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Headrest: - description: Switches for SingleSeat.Headrest. - type: branch - uuid: 3d328ade9dbf52e1bf8002caed74253f - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Headrest.IsBackwardEngaged: - datatype: boolean - description: Head rest backward switch engaged (SingleSeat.Headrest.Angle). - type: actuator - uuid: e5b1e2a73c1d530298be5aa2b92ceb6a - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Headrest.IsDownEngaged: - datatype: boolean - description: Head rest down switch engaged (SingleSeat.Headrest.Height). - type: actuator - uuid: 2bd34fa3b02d54b0822890750a57eaae - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Headrest.IsForwardEngaged: - datatype: boolean - description: Head rest forward switch engaged (SingleSeat.Headrest.Angle). - type: actuator - uuid: 5486d882309558cd95a5d0742d9eea2a - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Headrest.IsUpEngaged: - datatype: boolean - description: Head rest up switch engaged (SingleSeat.Headrest.Height). - type: actuator - uuid: 90a53f3c0a585c7cb5b1565092e62539 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.IsBackwardEngaged: - datatype: boolean - description: Seat backward switch engaged (SingleSeat.Position). - type: actuator - uuid: d1a57d3e62725e51871433889877eb3e - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.IsCoolerEngaged: - datatype: boolean - description: Cooler switch for Seat heater (SingleSeat.Heating). - type: actuator - uuid: 5861078e66285792a4c5caa3158c3b93 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.IsDownEngaged: - datatype: boolean - description: Seat down switch engaged (SingleSeat.Height). - type: actuator - uuid: ec27034136cd5e728c88c7ac0b87cf04 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.IsForwardEngaged: - datatype: boolean - description: Seat forward switch engaged (SingleSeat.Position). - type: actuator - uuid: 012004eeaa2250758c2fea329aec9dc2 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.IsTiltBackwardEngaged: - datatype: boolean - description: Tilt backward switch engaged (SingleSeat.Tilt). - type: actuator - uuid: a49e3b4e3047525ab1034e04896f7a73 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.IsTiltForwardEngaged: - datatype: boolean - description: Tilt forward switch engaged (SingleSeat.Tilt). - type: actuator - uuid: 1abb80c7ce615f73a2e0fb6583b09431 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.IsUpEngaged: - datatype: boolean - description: Seat up switch engaged (SingleSeat.Height). - type: actuator - uuid: d4d0df3f6b5b51039847f748282d77ab - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.IsWarmerEngaged: - datatype: boolean - description: Warmer switch for Seat heater (SingleSeat.Heating). - type: actuator - uuid: 597dd13468fd5b57858c6bbbc911392e - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Massage: - description: Switches for SingleSeat.Massage. - type: branch - uuid: 3739036112535b9cbdad726a5f6e17a4 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Massage.IsDecreaseEngaged: - datatype: boolean - description: Decrease massage level switch engaged (SingleSeat.Massage). - type: actuator - uuid: 8044c9338f5e5df1a036c91cc4d91423 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Massage.IsIncreaseEngaged: - datatype: boolean - description: Increase massage level switch engaged (SingleSeat.Massage). - type: actuator - uuid: 1d7d951e97b45aa5824f4e959c68737b - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Seating: - description: Describes switches related to the seating of the seat. - type: branch - uuid: 12458c0216335477882e669e98330a1a - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Seating.IsBackwardEngaged: - datatype: boolean - description: Is switch to decrease seating length engaged (SingleSeat.Seating.Length). - type: actuator - uuid: 87edf3b9896659f6a87d05531c260a36 - -Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Seating.IsForwardEngaged: - datatype: boolean - description: Is switch to increase seating length engaged (SingleSeat.Seating.Length). - type: actuator - uuid: aaf6db1585b15365be9ac729c11688e3 - -Vehicle.Cabin.Seat.Row1.PassengerSide.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 - uuid: 086f231720875bb5b4d5e2b8ed0092df - -Vehicle.Cabin.Seat.Row2: - description: All seats. - type: branch - uuid: 8c3aaf015ef8595cb45d9461a9c1195f - -Vehicle.Cabin.Seat.Row2.DriverSide: - description: All seats. - type: branch - uuid: a3956dd19f73577a9e118e5ee6f5a180 - -Vehicle.Cabin.Seat.Row2.DriverSide.Airbag: - description: Airbag signals. - type: branch - uuid: 215134942dea5de0bf542dc6b1f7aeb3 - -Vehicle.Cabin.Seat.Row2.DriverSide.Airbag.IsDeployed: - datatype: boolean - description: Airbag deployment status. True = Airbag deployed. False = Airbag not deployed. - type: sensor - uuid: 1ec1956a54ae5107a802b9ec2b215b41 - -Vehicle.Cabin.Seat.Row2.DriverSide.Backrest: - description: Describes signals related to the backrest of the seat. - type: branch - uuid: 1b7a7b3e344d50cca118327668f35be5 - -Vehicle.Cabin.Seat.Row2.DriverSide.Backrest.Lumbar: - description: Adjustable lumbar support mechanisms in seats allow the user to change the seat back shape. - type: branch - uuid: 5eb73ac74d6a56ba9155cf16e145b9b4 - -Vehicle.Cabin.Seat.Row2.DriverSide.Backrest.Lumbar.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 - uuid: eb67d32eadf15c0085f6314546e86e20 - -Vehicle.Cabin.Seat.Row2.DriverSide.Backrest.Lumbar.Support: - datatype: float - description: Lumbar support (in/out position). 0 = Innermost position. 100 = Outermost position. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: c8fec973719351b3b17f3824653d685a - -Vehicle.Cabin.Seat.Row2.DriverSide.Backrest.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 - uuid: 65cf20c7effb5d159fd1099869cd0ebe - -Vehicle.Cabin.Seat.Row2.DriverSide.Backrest.SideBolster: - description: Backrest side bolster (lumbar side support) settings. - type: branch - uuid: 2e06cc24d15651a1a1616fc77a5ba23b - -Vehicle.Cabin.Seat.Row2.DriverSide.Backrest.SideBolster.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 - uuid: 04cc8929b0f0509495b512a77b48afef - -Vehicle.Cabin.Seat.Row2.DriverSide.Headrest: - description: Headrest settings. - type: branch - uuid: 67f772d705af5fac95ec768cf2bfe557 - -Vehicle.Cabin.Seat.Row2.DriverSide.Headrest.Angle: - datatype: float - description: Headrest angle, relative to backrest, 0 degrees if parallel to backrest, Positive degrees = tilted forward. - type: actuator - unit: degrees - uuid: b7ee83ec92ac5595b56557cecbce7fd2 - -Vehicle.Cabin.Seat.Row2.DriverSide.Headrest.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 - uuid: 916740f753715f3ea6c55b5284613f8e - -Vehicle.Cabin.Seat.Row2.DriverSide.Heating: - datatype: int8 - description: Seat cooling / heating. 0 = off. -100 = max cold. +100 = max heat. - max: 100 - min: -100 - type: actuator - unit: percent - uuid: 7ae50ab2fea25798adc27814579bd33b - -Vehicle.Cabin.Seat.Row2.DriverSide.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 - uuid: 2bd4b50c13d7541db0a86a945c728849 - -Vehicle.Cabin.Seat.Row2.DriverSide.IsBelted: - datatype: boolean - description: Is the belt engaged. - type: sensor - uuid: ec3dc746a34752a1b55ac428579c3dfc - -Vehicle.Cabin.Seat.Row2.DriverSide.IsOccupied: - datatype: boolean - description: Does the seat have a passenger in it. - type: sensor - uuid: 3752de2ef1d85781a6e0a20a6812b9fc - -Vehicle.Cabin.Seat.Row2.DriverSide.Massage: - datatype: uint8 - description: Seat massage level. 0 = off. 100 = max massage. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: d7428179c70d576fb626a9a4bae4299e - -Vehicle.Cabin.Seat.Row2.DriverSide.Occupant: - description: Occupant data. - type: branch - uuid: e4a46503b2945ab18ac1ad96f0517151 - -Vehicle.Cabin.Seat.Row2.DriverSide.Occupant.Identifier: - description: Identifier attributes based on OAuth 2.0. - type: branch - uuid: a12121bc096c5224a14c2d8ab10ae88b - -Vehicle.Cabin.Seat.Row2.DriverSide.Occupant.Identifier.Issuer: - datatype: string - description: Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com. - type: sensor - uuid: a6b6158bc96c5ac98ad206193ff8b358 - -Vehicle.Cabin.Seat.Row2.DriverSide.Occupant.Identifier.Subject: - datatype: string - description: Subject for the authentication of the occupant e.g. UserID 7331677. - type: sensor - uuid: dfc0fb66d7c058b7925970667b284bea - -Vehicle.Cabin.Seat.Row2.DriverSide.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 - uuid: 71b34d4141225b77bc232bd3a2efa86f - -Vehicle.Cabin.Seat.Row2.DriverSide.Seating: - 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 - uuid: 5e581a713efc5867b769f38e64a2f320 - -Vehicle.Cabin.Seat.Row2.DriverSide.Seating.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 - uuid: 4a5bd16967c65dd88eacf3e4ef8c071f - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch: - description: Seat switch signals - type: branch - uuid: 7a5a1ffb9ab65c6a9ee4cb581077f015 - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest: - description: Describes switches related to the backrest of the seat. - type: branch - uuid: 55b0756c450a5df2b1a4b0e54b27804b - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.IsReclineBackwardEngaged: - datatype: boolean - description: Backrest recline backward switch engaged (SingleSeat.Backrest.Recline). - type: actuator - uuid: d45a563848b15928885bc7abb88a2d29 - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.IsReclineForwardEngaged: - datatype: boolean - description: Backrest recline forward switch engaged (SingleSeat.Backrest.Recline). - type: actuator - uuid: 838457df1a415fd1a9575eda730a3fa0 - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.Lumbar: - description: Switches for SingleSeat.Backrest.Lumbar. - type: branch - uuid: 7789f295ccf75ab2aa899d2b095bafd4 - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.Lumbar.IsDownEngaged: - datatype: boolean - description: Lumbar down switch engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: 802ef996df3850c299f5c88dff83ab13 - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.Lumbar.IsLessSupportEngaged: - datatype: boolean - description: Is switch for less lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: 9c6786e620f151a3a5eeb4b54395d2d8 - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.Lumbar.IsMoreSupportEngaged: - datatype: boolean - description: Is switch for more lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: eeaa79b8443c59c28ba4eed3d2cc1aa1 - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.Lumbar.IsUpEngaged: - datatype: boolean - description: Lumbar up switch engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: ebf3534d31615c55803dc8b48d92ca6f - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.SideBolster: - description: Switches for SingleSeat.Backrest.SideBolster. - type: branch - uuid: a5e3d845386b51c7bd2b054b81025112 - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.SideBolster.IsLessSupportEngaged: - datatype: boolean - description: Is switch for less side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). - type: actuator - uuid: ed76c57d2d0c5a1d851a708fbc750a29 - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.SideBolster.IsMoreSupportEngaged: - datatype: boolean - description: Is switch for more side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). - type: actuator - uuid: a5bcb578170d5442aad65c116302557c - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Headrest: - description: Switches for SingleSeat.Headrest. - type: branch - uuid: bb516988089154dfaff8b5b376778d76 - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Headrest.IsBackwardEngaged: - datatype: boolean - description: Head rest backward switch engaged (SingleSeat.Headrest.Angle). - type: actuator - uuid: c2654d9579905679b73ab44b6028b664 - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Headrest.IsDownEngaged: - datatype: boolean - description: Head rest down switch engaged (SingleSeat.Headrest.Height). - type: actuator - uuid: 10092cdf11165ffdb1e5b616fa5f841a - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Headrest.IsForwardEngaged: - datatype: boolean - description: Head rest forward switch engaged (SingleSeat.Headrest.Angle). - type: actuator - uuid: aa341f93f6095298ba328a8f164452cd - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Headrest.IsUpEngaged: - datatype: boolean - description: Head rest up switch engaged (SingleSeat.Headrest.Height). - type: actuator - uuid: bf7acae10ed55aa49a9579f7dd028a8d - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.IsBackwardEngaged: - datatype: boolean - description: Seat backward switch engaged (SingleSeat.Position). - type: actuator - uuid: a313045c29195b9ab11141155dd7ce17 - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.IsCoolerEngaged: - datatype: boolean - description: Cooler switch for Seat heater (SingleSeat.Heating). - type: actuator - uuid: 05e311e0669d5c128757475c8a83dc51 - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.IsDownEngaged: - datatype: boolean - description: Seat down switch engaged (SingleSeat.Height). - type: actuator - uuid: 192b6f898aa35459baa670b58c59c48f - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.IsForwardEngaged: - datatype: boolean - description: Seat forward switch engaged (SingleSeat.Position). - type: actuator - uuid: 95928045f69d5bfe9ef1c3eb2afec32a - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.IsTiltBackwardEngaged: - datatype: boolean - description: Tilt backward switch engaged (SingleSeat.Tilt). - type: actuator - uuid: d4f3974ffcd75ba3a5f040f9e823fffe - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.IsTiltForwardEngaged: - datatype: boolean - description: Tilt forward switch engaged (SingleSeat.Tilt). - type: actuator - uuid: aa71ac6246895ec1b6c74fd76ceecdda - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.IsUpEngaged: - datatype: boolean - description: Seat up switch engaged (SingleSeat.Height). - type: actuator - uuid: c2915c2c175c5a3a862b99d9d2a9cc9a - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.IsWarmerEngaged: - datatype: boolean - description: Warmer switch for Seat heater (SingleSeat.Heating). - type: actuator - uuid: 65c26ab3824b5208bb21d7b8e2dd0124 - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Massage: - description: Switches for SingleSeat.Massage. - type: branch - uuid: e40ca46bfdeb5a82965c1d6b0fc06890 - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Massage.IsDecreaseEngaged: - datatype: boolean - description: Decrease massage level switch engaged (SingleSeat.Massage). - type: actuator - uuid: 854f8899693756e8840ee04c856dd12b - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Massage.IsIncreaseEngaged: - datatype: boolean - description: Increase massage level switch engaged (SingleSeat.Massage). - type: actuator - uuid: a10a2542fdc85bd59286d62f5af32210 - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Seating: - description: Describes switches related to the seating of the seat. - type: branch - uuid: f28ce1da77645fcd83aa72171ea172e8 - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Seating.IsBackwardEngaged: - datatype: boolean - description: Is switch to decrease seating length engaged (SingleSeat.Seating.Length). - type: actuator - uuid: 5d6d6db128965724a9e6f236d9532377 - -Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Seating.IsForwardEngaged: - datatype: boolean - description: Is switch to increase seating length engaged (SingleSeat.Seating.Length). - type: actuator - uuid: 9ec6de29b168513f823be11c8f348e8c - -Vehicle.Cabin.Seat.Row2.DriverSide.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 - uuid: 68275a8560a95481a54b590ce458d0e9 - -Vehicle.Cabin.Seat.Row2.Middle: - description: All seats. - type: branch - uuid: a27650921e1e5ee0bd56562364c7dd6f - -Vehicle.Cabin.Seat.Row2.Middle.Airbag: - description: Airbag signals. - type: branch - uuid: aa6d77c09158565787a2e418a1c9ea98 - -Vehicle.Cabin.Seat.Row2.Middle.Airbag.IsDeployed: - datatype: boolean - description: Airbag deployment status. True = Airbag deployed. False = Airbag not deployed. - type: sensor - uuid: cc06da5cab1e5b2e91d180c93c9e8eab - -Vehicle.Cabin.Seat.Row2.Middle.Backrest: - description: Describes signals related to the backrest of the seat. - type: branch - uuid: 4f54b32f4c85549b88acbe7cd19dcb20 - -Vehicle.Cabin.Seat.Row2.Middle.Backrest.Lumbar: - description: Adjustable lumbar support mechanisms in seats allow the user to change the seat back shape. - type: branch - uuid: f675492be60e5a1f9e4ed760a2ee4c33 - -Vehicle.Cabin.Seat.Row2.Middle.Backrest.Lumbar.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 - uuid: 1a20e907d2515d669c8207a464685be8 - -Vehicle.Cabin.Seat.Row2.Middle.Backrest.Lumbar.Support: - datatype: float - description: Lumbar support (in/out position). 0 = Innermost position. 100 = Outermost position. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: c281162d58ed50ccbd90fa58a1478047 - -Vehicle.Cabin.Seat.Row2.Middle.Backrest.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 - uuid: d24b223dcbb0534389c6c506126497e7 - -Vehicle.Cabin.Seat.Row2.Middle.Backrest.SideBolster: - description: Backrest side bolster (lumbar side support) settings. - type: branch - uuid: 10538af050535035a3a20e6f702ce99f - -Vehicle.Cabin.Seat.Row2.Middle.Backrest.SideBolster.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 - uuid: b391d00bfb8f5e699fa2332cb5991cdb - -Vehicle.Cabin.Seat.Row2.Middle.Headrest: - description: Headrest settings. - type: branch - uuid: eb9a3ea623445fbab28e98ace9716f48 - -Vehicle.Cabin.Seat.Row2.Middle.Headrest.Angle: - datatype: float - description: Headrest angle, relative to backrest, 0 degrees if parallel to backrest, Positive degrees = tilted forward. - type: actuator - unit: degrees - uuid: 41f7b225f1485deaba50f489d58656da - -Vehicle.Cabin.Seat.Row2.Middle.Headrest.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 - uuid: 987682ae6e7a539897bab4d96458fe15 - -Vehicle.Cabin.Seat.Row2.Middle.Heating: - datatype: int8 - description: Seat cooling / heating. 0 = off. -100 = max cold. +100 = max heat. - max: 100 - min: -100 - type: actuator - unit: percent - uuid: 3b6a82f5f68f56bba88b7c5349e1a45d - -Vehicle.Cabin.Seat.Row2.Middle.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 - uuid: 5e2a819627075c7ea1a6fb2c6b7e550d - -Vehicle.Cabin.Seat.Row2.Middle.IsBelted: - datatype: boolean - description: Is the belt engaged. - type: sensor - uuid: a4c37cf044a25eb9925b2278786b6cba - -Vehicle.Cabin.Seat.Row2.Middle.IsOccupied: - datatype: boolean - description: Does the seat have a passenger in it. - type: sensor - uuid: 50e0eeee98e95db58b87aa11a9285492 - -Vehicle.Cabin.Seat.Row2.Middle.Massage: - datatype: uint8 - description: Seat massage level. 0 = off. 100 = max massage. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: d5c053d69d3457ecb3b87be15ccbfe1c - -Vehicle.Cabin.Seat.Row2.Middle.Occupant: - description: Occupant data. - type: branch - uuid: 6850b36bd23f57d682a3ef7bc4faab5d - -Vehicle.Cabin.Seat.Row2.Middle.Occupant.Identifier: - description: Identifier attributes based on OAuth 2.0. - type: branch - uuid: 3216275b8b6e5ab2a5f739232945c139 - -Vehicle.Cabin.Seat.Row2.Middle.Occupant.Identifier.Issuer: - datatype: string - description: Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com. - type: sensor - uuid: 299d9f7fadef59859076cc783c2c6044 - -Vehicle.Cabin.Seat.Row2.Middle.Occupant.Identifier.Subject: - datatype: string - description: Subject for the authentication of the occupant e.g. UserID 7331677. - type: sensor - uuid: 2b257368bdb556d087e8f13806003ab2 - -Vehicle.Cabin.Seat.Row2.Middle.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 - uuid: c7e61a5fe6f35d0fb50a4cbb3c5d15e8 - -Vehicle.Cabin.Seat.Row2.Middle.Seating: - 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 - uuid: 8a5674259c805a498c827cc4341b20c7 - -Vehicle.Cabin.Seat.Row2.Middle.Seating.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 - uuid: 76071549a729587fbdebb78ef360cad9 - -Vehicle.Cabin.Seat.Row2.Middle.Switch: - description: Seat switch signals - type: branch - uuid: c634c8cf644d57098ae8b5337dec44a9 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest: - description: Describes switches related to the backrest of the seat. - type: branch - uuid: ea42e74c9ee55a188af9e0728428a991 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.IsReclineBackwardEngaged: - datatype: boolean - description: Backrest recline backward switch engaged (SingleSeat.Backrest.Recline). - type: actuator - uuid: 28a3b3bd920c552b8079c52743f10c22 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.IsReclineForwardEngaged: - datatype: boolean - description: Backrest recline forward switch engaged (SingleSeat.Backrest.Recline). - type: actuator - uuid: 2f81fa98e09b5cbdb462747053b61fe0 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.Lumbar: - description: Switches for SingleSeat.Backrest.Lumbar. - type: branch - uuid: 11adccdb44b15e26b22252dd75810422 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.Lumbar.IsDownEngaged: - datatype: boolean - description: Lumbar down switch engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: fbb8355fefd151b58936c7adbde8edd2 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.Lumbar.IsLessSupportEngaged: - datatype: boolean - description: Is switch for less lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: 03390dc0feb256f4977f5aadcdef1663 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.Lumbar.IsMoreSupportEngaged: - datatype: boolean - description: Is switch for more lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: 703ec67285de5b3799ebd2e4f090e2eb - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.Lumbar.IsUpEngaged: - datatype: boolean - description: Lumbar up switch engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: 24535eb7418f5bd4ac16900ea925c3ee - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.SideBolster: - description: Switches for SingleSeat.Backrest.SideBolster. - type: branch - uuid: 0618172eae735abdb3c40ed24481cb68 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.SideBolster.IsLessSupportEngaged: - datatype: boolean - description: Is switch for less side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). - type: actuator - uuid: c67fc3cb95bf54ef988ec24b76db4221 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.SideBolster.IsMoreSupportEngaged: - datatype: boolean - description: Is switch for more side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). - type: actuator - uuid: dfcaac526f3952e0aa29caacf9cd796e - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Headrest: - description: Switches for SingleSeat.Headrest. - type: branch - uuid: 84788fd7b9215fa78374c9ca196e5d2d - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Headrest.IsBackwardEngaged: - datatype: boolean - description: Head rest backward switch engaged (SingleSeat.Headrest.Angle). - type: actuator - uuid: aec4843ad9435b9785f0d2485d457c56 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Headrest.IsDownEngaged: - datatype: boolean - description: Head rest down switch engaged (SingleSeat.Headrest.Height). - type: actuator - uuid: e993d306024f5d5d8f1ffe8897d76a38 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Headrest.IsForwardEngaged: - datatype: boolean - description: Head rest forward switch engaged (SingleSeat.Headrest.Angle). - type: actuator - uuid: bbeb896cdb5059ea83add870abb45c69 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Headrest.IsUpEngaged: - datatype: boolean - description: Head rest up switch engaged (SingleSeat.Headrest.Height). - type: actuator - uuid: 2078f41ff0505639aab472a9793e0767 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.IsBackwardEngaged: - datatype: boolean - description: Seat backward switch engaged (SingleSeat.Position). - type: actuator - uuid: f9b78ecd6f065a59918c8fea51464f7a - -Vehicle.Cabin.Seat.Row2.Middle.Switch.IsCoolerEngaged: - datatype: boolean - description: Cooler switch for Seat heater (SingleSeat.Heating). - type: actuator - uuid: 36969412c2325b81906fc4a327a22c84 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.IsDownEngaged: - datatype: boolean - description: Seat down switch engaged (SingleSeat.Height). - type: actuator - uuid: 7507db75bf2d541e8eba802db5108fa7 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.IsForwardEngaged: - datatype: boolean - description: Seat forward switch engaged (SingleSeat.Position). - type: actuator - uuid: 0075b9cb31ae5a0c8172e966e6b40954 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.IsTiltBackwardEngaged: - datatype: boolean - description: Tilt backward switch engaged (SingleSeat.Tilt). - type: actuator - uuid: 974123228c7a5fc0bbbc8b13063eb76e - -Vehicle.Cabin.Seat.Row2.Middle.Switch.IsTiltForwardEngaged: - datatype: boolean - description: Tilt forward switch engaged (SingleSeat.Tilt). - type: actuator - uuid: 736dd231351d54389a65e77e39e28816 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.IsUpEngaged: - datatype: boolean - description: Seat up switch engaged (SingleSeat.Height). - type: actuator - uuid: f8ded34424025a93b04ee9d47f451b22 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.IsWarmerEngaged: - datatype: boolean - description: Warmer switch for Seat heater (SingleSeat.Heating). - type: actuator - uuid: 2cdec47cb7565df3934ed28acf1e05a3 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Massage: - description: Switches for SingleSeat.Massage. - type: branch - uuid: dc5720a01af45e78a562d12a93db0fbd - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Massage.IsDecreaseEngaged: - datatype: boolean - description: Decrease massage level switch engaged (SingleSeat.Massage). - type: actuator - uuid: 07e2a1c17a1854abb180fdf2038ece03 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Massage.IsIncreaseEngaged: - datatype: boolean - description: Increase massage level switch engaged (SingleSeat.Massage). - type: actuator - uuid: 9c2cd2dab1d65532b6b738966db8af41 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Seating: - description: Describes switches related to the seating of the seat. - type: branch - uuid: 473086da2fc4501f9b3bdbc94133eb92 - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Seating.IsBackwardEngaged: - datatype: boolean - description: Is switch to decrease seating length engaged (SingleSeat.Seating.Length). - type: actuator - uuid: fb25e00b59f1513eb66355fd254e3bbe - -Vehicle.Cabin.Seat.Row2.Middle.Switch.Seating.IsForwardEngaged: - datatype: boolean - description: Is switch to increase seating length engaged (SingleSeat.Seating.Length). - type: actuator - uuid: 45ef8de577b55ff9b621aad08238edaf - -Vehicle.Cabin.Seat.Row2.Middle.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 - uuid: 30d7caa224e6589a882751be94fb7a33 - -Vehicle.Cabin.Seat.Row2.PassengerSide: - description: All seats. - type: branch - uuid: 8cd32cb3e2d157b39af57d9cfe2e128c - -Vehicle.Cabin.Seat.Row2.PassengerSide.Airbag: - description: Airbag signals. - type: branch - uuid: d16d61dc474f514fb10d1c8ecbeb9179 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Airbag.IsDeployed: - datatype: boolean - description: Airbag deployment status. True = Airbag deployed. False = Airbag not deployed. - type: sensor - uuid: a73fecde42375d07834a6670209228f4 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Backrest: - description: Describes signals related to the backrest of the seat. - type: branch - uuid: ea5285b1124c527681e1a45c51429bdb - -Vehicle.Cabin.Seat.Row2.PassengerSide.Backrest.Lumbar: - description: Adjustable lumbar support mechanisms in seats allow the user to change the seat back shape. - type: branch - uuid: 4eb3938a709f5e4dbdefeada15a4ddb9 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Backrest.Lumbar.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 - uuid: a8bcc5c7172e545db2b7d56611d5ab6a - -Vehicle.Cabin.Seat.Row2.PassengerSide.Backrest.Lumbar.Support: - datatype: float - description: Lumbar support (in/out position). 0 = Innermost position. 100 = Outermost position. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: b29e1fd9898e5981807d74caa94dd16a - -Vehicle.Cabin.Seat.Row2.PassengerSide.Backrest.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 - uuid: 6e3669fe31425539a49a2235c11bd5b5 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Backrest.SideBolster: - description: Backrest side bolster (lumbar side support) settings. - type: branch - uuid: 7e9c0a02e46b57879a2e3a0e66f02137 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Backrest.SideBolster.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 - uuid: a97af5b193b1521e90eb0fd33472ab38 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Headrest: - description: Headrest settings. - type: branch - uuid: a5449c4df2955aac981992fcbb581b84 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Headrest.Angle: - datatype: float - description: Headrest angle, relative to backrest, 0 degrees if parallel to backrest, Positive degrees = tilted forward. - type: actuator - unit: degrees - uuid: 13f6bb21aa64545c97257c2b614622cb - -Vehicle.Cabin.Seat.Row2.PassengerSide.Headrest.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 - uuid: a82bd9a0a9745ef68dae31474a095294 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Heating: - datatype: int8 - description: Seat cooling / heating. 0 = off. -100 = max cold. +100 = max heat. - max: 100 - min: -100 - type: actuator - unit: percent - uuid: 4c0ab40eaf745f12a09dc2c5acbedae9 - -Vehicle.Cabin.Seat.Row2.PassengerSide.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 - uuid: b1ca33bf7f4455ada6be941b92b824da - -Vehicle.Cabin.Seat.Row2.PassengerSide.IsBelted: - datatype: boolean - description: Is the belt engaged. - type: sensor - uuid: c7d63d6c97845df5b602791f700968f7 - -Vehicle.Cabin.Seat.Row2.PassengerSide.IsOccupied: - datatype: boolean - description: Does the seat have a passenger in it. - type: sensor - uuid: 516d511279a75513a53ca57adade3a99 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Massage: - datatype: uint8 - description: Seat massage level. 0 = off. 100 = max massage. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: bd9ec382d92e52ae826cb532ba13e11f - -Vehicle.Cabin.Seat.Row2.PassengerSide.Occupant: - description: Occupant data. - type: branch - uuid: 0cd5c8c3bd3f55ee8cc4c876cad0b75f - -Vehicle.Cabin.Seat.Row2.PassengerSide.Occupant.Identifier: - description: Identifier attributes based on OAuth 2.0. - type: branch - uuid: d18aded275a454068904eb5371a69f4d - -Vehicle.Cabin.Seat.Row2.PassengerSide.Occupant.Identifier.Issuer: - datatype: string - description: Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com. - type: sensor - uuid: 3acca59e11b95e92945ac8ea568a3213 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Occupant.Identifier.Subject: - datatype: string - description: Subject for the authentication of the occupant e.g. UserID 7331677. - type: sensor - uuid: 9fc55976f51c552fac70632a7e61b1f4 - -Vehicle.Cabin.Seat.Row2.PassengerSide.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 - uuid: 07a8fe28cc1850dc96458e827a9ebeb5 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Seating: - 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 - uuid: ef3307b33fae500b837da872d2fad454 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Seating.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 - uuid: 68e28b1aadcf5c3db177943af27a9098 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch: - description: Seat switch signals - type: branch - uuid: dc15316849e75f6d9995d428eee65421 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest: - description: Describes switches related to the backrest of the seat. - type: branch - uuid: 9417cfbf4a08528f9a6bb6de95dd53a3 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.IsReclineBackwardEngaged: - datatype: boolean - description: Backrest recline backward switch engaged (SingleSeat.Backrest.Recline). - type: actuator - uuid: e9591a8c0ef551dd8d2da760bf96045a - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.IsReclineForwardEngaged: - datatype: boolean - description: Backrest recline forward switch engaged (SingleSeat.Backrest.Recline). - type: actuator - uuid: 9fca194c445257049d2ba0bc5d134e12 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.Lumbar: - description: Switches for SingleSeat.Backrest.Lumbar. - type: branch - uuid: ee7310791c475bcb946bd7074fb375af - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.Lumbar.IsDownEngaged: - datatype: boolean - description: Lumbar down switch engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: 32defc92edd159bc96939d399202d4ca - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.Lumbar.IsLessSupportEngaged: - datatype: boolean - description: Is switch for less lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: 54dd7359d76f5caeb221807f3c9f05d6 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.Lumbar.IsMoreSupportEngaged: - datatype: boolean - description: Is switch for more lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: bc763cfcd7fd511cbdc8ae2cc64a0ac7 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.Lumbar.IsUpEngaged: - datatype: boolean - description: Lumbar up switch engaged (SingleSeat.Backrest.Lumbar.Support). - type: actuator - uuid: 8bc621f1041052c7abf17124cb6dc270 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.SideBolster: - description: Switches for SingleSeat.Backrest.SideBolster. - type: branch - uuid: a69bfc99fd21564b9d6e06504063f3f0 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.SideBolster.IsLessSupportEngaged: - datatype: boolean - description: Is switch for less side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). - type: actuator - uuid: ccdd90ab2f3152be80c64b4500c78a8b - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.SideBolster.IsMoreSupportEngaged: - datatype: boolean - description: Is switch for more side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). - type: actuator - uuid: cd893883ea4857b8a42e02dccd7c48d6 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Headrest: - description: Switches for SingleSeat.Headrest. - type: branch - uuid: 0db2d43128845f65a029915777d30ac9 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Headrest.IsBackwardEngaged: - datatype: boolean - description: Head rest backward switch engaged (SingleSeat.Headrest.Angle). - type: actuator - uuid: 0f6c3fada9695cfc89309bca1941d0f5 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Headrest.IsDownEngaged: - datatype: boolean - description: Head rest down switch engaged (SingleSeat.Headrest.Height). - type: actuator - uuid: 263c5edb7c7c515581a853327df34215 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Headrest.IsForwardEngaged: - datatype: boolean - description: Head rest forward switch engaged (SingleSeat.Headrest.Angle). - type: actuator - uuid: d86793d827f6545e97e03d1b8363236d - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Headrest.IsUpEngaged: - datatype: boolean - description: Head rest up switch engaged (SingleSeat.Headrest.Height). - type: actuator - uuid: b77c09fbcec95c5fb04a6d14af5b9f94 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.IsBackwardEngaged: - datatype: boolean - description: Seat backward switch engaged (SingleSeat.Position). - type: actuator - uuid: cefaab13d761577f86c35403460a83de - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.IsCoolerEngaged: - datatype: boolean - description: Cooler switch for Seat heater (SingleSeat.Heating). - type: actuator - uuid: 119275e2b8b9579fbaf45f419f01879b - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.IsDownEngaged: - datatype: boolean - description: Seat down switch engaged (SingleSeat.Height). - type: actuator - uuid: 00793becfbf35a1f9e22e62c0ee23382 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.IsForwardEngaged: - datatype: boolean - description: Seat forward switch engaged (SingleSeat.Position). - type: actuator - uuid: 6c4cb5e0ab59597db55b22918510c1a1 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.IsTiltBackwardEngaged: - datatype: boolean - description: Tilt backward switch engaged (SingleSeat.Tilt). - type: actuator - uuid: d6a316b6a3455e9da8769144aece2a74 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.IsTiltForwardEngaged: - datatype: boolean - description: Tilt forward switch engaged (SingleSeat.Tilt). - type: actuator - uuid: b601c11e3b525dd19933adaf807bc5c1 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.IsUpEngaged: - datatype: boolean - description: Seat up switch engaged (SingleSeat.Height). - type: actuator - uuid: 0f1060fee7e05b2b91cc51d5a9b3da74 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.IsWarmerEngaged: - datatype: boolean - description: Warmer switch for Seat heater (SingleSeat.Heating). - type: actuator - uuid: a6ae083174c65a9599901c00819694f8 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Massage: - description: Switches for SingleSeat.Massage. - type: branch - uuid: bd644892090f5bd9a4b89281331cbe4d - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Massage.IsDecreaseEngaged: - datatype: boolean - description: Decrease massage level switch engaged (SingleSeat.Massage). - type: actuator - uuid: 399c59f3d97151499a9005b329368baf - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Massage.IsIncreaseEngaged: - datatype: boolean - description: Increase massage level switch engaged (SingleSeat.Massage). - type: actuator - uuid: ac7635aa2fc7578aae97d8a253e9a303 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Seating: - description: Describes switches related to the seating of the seat. - type: branch - uuid: 0b6331463cf65b44a5709705a1e55d7c - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Seating.IsBackwardEngaged: - datatype: boolean - description: Is switch to decrease seating length engaged (SingleSeat.Seating.Length). - type: actuator - uuid: ed70ebf0a7065894af1ac26e409d2408 - -Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Seating.IsForwardEngaged: - datatype: boolean - description: Is switch to increase seating length engaged (SingleSeat.Seating.Length). - type: actuator - uuid: ef90f29f5ab65b0cbf271a7e06fa848d - -Vehicle.Cabin.Seat.Row2.PassengerSide.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 - uuid: 646c179da57a59c39ca9777a4808980b - -Vehicle.Cabin.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 - uuid: 8dd40ecd47ab51c79ed9c74ae4296d7e - -Vehicle.Cabin.SeatRowCount: - comment: Default value corresponds to two rows of seats. - datatype: uint8 - default: 2 - description: Number of seat rows in vehicle. - type: attribute - uuid: 1002a7a4a954581b9cbc72fa438c5292 - -Vehicle.Cabin.Sunroof: - description: Sun roof status. - type: branch - uuid: 8ff70db05c065e3eb530082a0b6983cf - -Vehicle.Cabin.Sunroof.Position: - datatype: int8 - description: Sunroof position. 0 = Fully closed 100 = Fully opened. -100 = Fully tilted. - max: 100 - min: -100 - type: sensor - unit: percent - uuid: ab598697f1c852eda4df9ed62a956d17 - -Vehicle.Cabin.Sunroof.Shade: - description: Sun roof shade status. - type: branch - uuid: eeaae5977adb5683b16f405993405b2e - -Vehicle.Cabin.Sunroof.Shade.Position: - datatype: uint8 - description: Position of window blind. 0 = Fully retracted. 100 = Fully deployed. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 5f78c2a631b75abc88744f9bad277f5a - -Vehicle.Cabin.Sunroof.Shade.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 - uuid: 3836077128c65381b01e74a1a8be1c40 - -Vehicle.Cabin.Sunroof.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 - uuid: 88c39afd45a25ea2b474ff581e1fb138 - -Vehicle.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 - uuid: 789feabca2e8560ea3c1852371b4096e - -Vehicle.Chassis: - description: All data concerning steering, suspension, wheels, and brakes. - type: branch - uuid: 87d260d635425da0a4ebd62bc4e5c313 - -Vehicle.Chassis.Accelerator: - description: Accelerator signals - type: branch - uuid: 3b2b562086a45eb29c55186f3b710621 - -Vehicle.Chassis.Accelerator.PedalPosition: - datatype: uint8 - description: Accelerator pedal position as percent. 0 = Not depressed. 100 = Fully depressed. - max: 100 - min: 0 - type: sensor - unit: percent - uuid: 2fabd8b61db45f62b4e97e7a612b4a73 - -Vehicle.Chassis.Axle: - description: Axle signals - type: branch - uuid: 0a3ebde7efa85c04ac6c29b5676fec5d - -Vehicle.Chassis.Axle.Row1: - description: Axle signals - type: branch - uuid: d7e93a94af0752aaab36819f6be4f67a - -Vehicle.Chassis.Axle.Row1.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 - uuid: 4458487c2a4e51efa3762349188ce2a1 - -Vehicle.Chassis.Axle.Row1.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 - uuid: 91310e9ef88450c68791fbb07d83f104 - -Vehicle.Chassis.Axle.Row1.TireAspectRatio: - datatype: uint8 - description: Aspect ratio between tire section height and tire section width, as per ETRTO / TRA standard. - type: attribute - unit: percent - uuid: 716fec24167e5c36b2b97daaf091f911 - -Vehicle.Chassis.Axle.Row1.TireDiameter: - datatype: float - description: Outer diameter of tires, in inches, as per ETRTO / TRA standard. - type: attribute - unit: inch - uuid: ed9f037c1b5d53c78c90b71179db1f4f - -Vehicle.Chassis.Axle.Row1.TireWidth: - datatype: uint16 - description: Nominal section width of tires, in mm, as per ETRTO / TRA standard. - type: attribute - unit: mm - uuid: 3444d8773c215cd7a076d688eb7f1afc - -Vehicle.Chassis.Axle.Row1.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 - uuid: d854bb9c72615e2896c1ed084db515fa - -Vehicle.Chassis.Axle.Row1.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 - uuid: 0851716e0b635392b6bb64cb478e82b0 - -Vehicle.Chassis.Axle.Row1.Wheel: - description: Wheel signals for axle - type: branch - uuid: 8ed02c02eee0502ba6d94a5d5f1fb789 - -Vehicle.Chassis.Axle.Row1.Wheel.Left: - description: Wheel signals for axle - type: branch - uuid: 0cd478c6e72b55c6be6d3d9df9624545 - -Vehicle.Chassis.Axle.Row1.Wheel.Left.Brake: - description: Brake signals for wheel - type: branch - uuid: 162dab13d5815ec4bc22888b0bc59cbf - -Vehicle.Chassis.Axle.Row1.Wheel.Left.Brake.FluidLevel: - datatype: uint8 - description: Brake fluid level as percent. 0 = Empty. 100 = Full. - max: 100 - type: sensor - unit: percent - uuid: 63aa9c4973ef50b18bd7214c9f2634c5 - -Vehicle.Chassis.Axle.Row1.Wheel.Left.Brake.IsBrakesWorn: - datatype: boolean - description: Brake pad wear status. True = Worn. False = Not Worn. - type: sensor - uuid: 901771088eb35dec9e69b56a8cb3e8f5 - -Vehicle.Chassis.Axle.Row1.Wheel.Left.Brake.IsFluidLevelLow: - datatype: boolean - description: Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK. - type: sensor - uuid: 713da56818e55714ac441e10870b3753 - -Vehicle.Chassis.Axle.Row1.Wheel.Left.Brake.PadWear: - datatype: uint8 - description: Brake pad wear as percent. 0 = No Wear. 100 = Worn. - max: 100 - type: sensor - unit: percent - uuid: b4ed36f8143d512fadaca3e641739ee2 - -Vehicle.Chassis.Axle.Row1.Wheel.Left.Speed: - datatype: float - description: Rotational speed of a vehicle's wheel. - type: sensor - unit: km/h - uuid: 47897f20b2745b6aa2d0f76f1ecf824a - -Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire: - description: Tire signals for wheel. - type: branch - uuid: 17c60ec3c02054b4951c975156375d9a - -Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.IsPressureLow: - datatype: boolean - description: Tire Pressure Status. True = Low tire pressure. False = Good tire pressure. - type: sensor - uuid: 4088315cfaa05c28b51c3d3462c65339 - -Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.Pressure: - datatype: uint16 - description: Tire pressure in kilo-Pascal. - type: sensor - unit: kPa - uuid: 9fa3f176fd975d28a68f70c7d72e370f - -Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.Temperature: - datatype: float - description: Tire temperature in Celsius. - type: sensor - unit: celsius - uuid: 093d8fb119755f6bafa979e4eae201a0 - -Vehicle.Chassis.Axle.Row1.Wheel.Right: - description: Wheel signals for axle - type: branch - uuid: c7ae1f1787ec502d8aea41802dc9a203 - -Vehicle.Chassis.Axle.Row1.Wheel.Right.Brake: - description: Brake signals for wheel - type: branch - uuid: f334a45b92215f86b4ecadbd82c8b249 - -Vehicle.Chassis.Axle.Row1.Wheel.Right.Brake.FluidLevel: - datatype: uint8 - description: Brake fluid level as percent. 0 = Empty. 100 = Full. - max: 100 - type: sensor - unit: percent - uuid: 386bfddee4605e419d59755a51835650 - -Vehicle.Chassis.Axle.Row1.Wheel.Right.Brake.IsBrakesWorn: - datatype: boolean - description: Brake pad wear status. True = Worn. False = Not Worn. - type: sensor - uuid: 4c669b71c91e57dd8fd804ee68174b9c - -Vehicle.Chassis.Axle.Row1.Wheel.Right.Brake.IsFluidLevelLow: - datatype: boolean - description: Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK. - type: sensor - uuid: bb2057bc31c25beda1da0610ca62bd51 - -Vehicle.Chassis.Axle.Row1.Wheel.Right.Brake.PadWear: - datatype: uint8 - description: Brake pad wear as percent. 0 = No Wear. 100 = Worn. - max: 100 - type: sensor - unit: percent - uuid: f3c53c8c5628527a8501e12778dae6c7 - -Vehicle.Chassis.Axle.Row1.Wheel.Right.Speed: - datatype: float - description: Rotational speed of a vehicle's wheel. - type: sensor - unit: km/h - uuid: c288d064d56e53bfb94cef8670872587 - -Vehicle.Chassis.Axle.Row1.Wheel.Right.Tire: - description: Tire signals for wheel. - type: branch - uuid: 660f90ae8f14594cb6e97d000c1985a1 - -Vehicle.Chassis.Axle.Row1.Wheel.Right.Tire.IsPressureLow: - datatype: boolean - description: Tire Pressure Status. True = Low tire pressure. False = Good tire pressure. - type: sensor - uuid: 93fa1125894e53259af5b7e1d991c8da - -Vehicle.Chassis.Axle.Row1.Wheel.Right.Tire.Pressure: - datatype: uint16 - description: Tire pressure in kilo-Pascal. - type: sensor - unit: kPa - uuid: ea8038b63e6650ffb1a20539e915064a - -Vehicle.Chassis.Axle.Row1.Wheel.Right.Tire.Temperature: - datatype: float - description: Tire temperature in Celsius. - type: sensor - unit: celsius - uuid: 58d4cee188d353d7996e855d48bb92df - -Vehicle.Chassis.Axle.Row1.WheelCount: - datatype: uint8 - description: Number of wheels on the axle - type: attribute - uuid: 7232effafb7d5c908a9bafe1cef2ff3e - -Vehicle.Chassis.Axle.Row1.WheelDiameter: - datatype: float - description: Diameter of wheels (rims without tires), in inches, as per ETRTO / TRA standard. - type: attribute - unit: inch - uuid: 60d4b948ae8a5485bd77c45e1f648c13 - -Vehicle.Chassis.Axle.Row1.WheelWidth: - datatype: float - description: Width of wheels (rims without tires), in inches, as per ETRTO / TRA standard. - type: attribute - unit: inch - uuid: 5b92bdab1e035ff4ba000330e20f826b - -Vehicle.Chassis.Axle.Row2: - description: Axle signals - type: branch - uuid: 8ef77768446659b6b5020a06c7b23c8b - -Vehicle.Chassis.Axle.Row2.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 - uuid: 99860d78f2b25ae0b420660b76f933f0 - -Vehicle.Chassis.Axle.Row2.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 - uuid: bf1960525e725d2ca145ce12ba939ea3 - -Vehicle.Chassis.Axle.Row2.TireAspectRatio: - datatype: uint8 - description: Aspect ratio between tire section height and tire section width, as per ETRTO / TRA standard. - type: attribute - unit: percent - uuid: 9b4515273bf1554dab746212db05d352 - -Vehicle.Chassis.Axle.Row2.TireDiameter: - datatype: float - description: Outer diameter of tires, in inches, as per ETRTO / TRA standard. - type: attribute - unit: inch - uuid: 4dc46ee7fe0a5240a6eb67f9bf43a1ea - -Vehicle.Chassis.Axle.Row2.TireWidth: - datatype: uint16 - description: Nominal section width of tires, in mm, as per ETRTO / TRA standard. - type: attribute - unit: mm - uuid: 76a9071697b25fb8ab42393dfb77f0ef - -Vehicle.Chassis.Axle.Row2.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 - uuid: b6c5ba52f1985f179c9346edbabe2f9b - -Vehicle.Chassis.Axle.Row2.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 - uuid: bdfd2fb7c3b25091a48f873462466f84 - -Vehicle.Chassis.Axle.Row2.Wheel: - description: Wheel signals for axle - type: branch - uuid: 87b119ed6de254159877b24047fd3026 - -Vehicle.Chassis.Axle.Row2.Wheel.Left: - description: Wheel signals for axle - type: branch - uuid: 4c32a1c722a45ea09a52c389e8a8a618 - -Vehicle.Chassis.Axle.Row2.Wheel.Left.Brake: - description: Brake signals for wheel - type: branch - uuid: 774d0a5771d35975872870cf71ea1487 - -Vehicle.Chassis.Axle.Row2.Wheel.Left.Brake.FluidLevel: - datatype: uint8 - description: Brake fluid level as percent. 0 = Empty. 100 = Full. - max: 100 - type: sensor - unit: percent - uuid: 4b0d4f80b8855973a55ffee80fdfc4ba - -Vehicle.Chassis.Axle.Row2.Wheel.Left.Brake.IsBrakesWorn: - datatype: boolean - description: Brake pad wear status. True = Worn. False = Not Worn. - type: sensor - uuid: 3d9bae5bf0705de99789ecea26b99a5c - -Vehicle.Chassis.Axle.Row2.Wheel.Left.Brake.IsFluidLevelLow: - datatype: boolean - description: Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK. - type: sensor - uuid: 01f57161b0bf539fad1d2bfa9d9a9fc4 - -Vehicle.Chassis.Axle.Row2.Wheel.Left.Brake.PadWear: - datatype: uint8 - description: Brake pad wear as percent. 0 = No Wear. 100 = Worn. - max: 100 - type: sensor - unit: percent - uuid: 8eff72d583015e1e94eab98bf8f0497e - -Vehicle.Chassis.Axle.Row2.Wheel.Left.Speed: - datatype: float - description: Rotational speed of a vehicle's wheel. - type: sensor - unit: km/h - uuid: 427abdd04fc355769697d998a47d3f58 - -Vehicle.Chassis.Axle.Row2.Wheel.Left.Tire: - description: Tire signals for wheel. - type: branch - uuid: edfee87117dc5a6f9d970167f26ec090 - -Vehicle.Chassis.Axle.Row2.Wheel.Left.Tire.IsPressureLow: - datatype: boolean - description: Tire Pressure Status. True = Low tire pressure. False = Good tire pressure. - type: sensor - uuid: d895b1e23a4f59ec92735fc317e44769 - -Vehicle.Chassis.Axle.Row2.Wheel.Left.Tire.Pressure: - datatype: uint16 - description: Tire pressure in kilo-Pascal. - type: sensor - unit: kPa - uuid: ea414012c36e54fc84ec1d421f370ddd - -Vehicle.Chassis.Axle.Row2.Wheel.Left.Tire.Temperature: - datatype: float - description: Tire temperature in Celsius. - type: sensor - unit: celsius - uuid: 06ab6b3fe7bb5f7c9e2e104ee0e7cfd5 - -Vehicle.Chassis.Axle.Row2.Wheel.Right: - description: Wheel signals for axle - type: branch - uuid: f59f6ce66b1454498f5dc71be581732a - -Vehicle.Chassis.Axle.Row2.Wheel.Right.Brake: - description: Brake signals for wheel - type: branch - uuid: 5c33ec4bd8a15d3590f59e7257bf4d25 - -Vehicle.Chassis.Axle.Row2.Wheel.Right.Brake.FluidLevel: - datatype: uint8 - description: Brake fluid level as percent. 0 = Empty. 100 = Full. - max: 100 - type: sensor - unit: percent - uuid: 83e5e261302d5ab38c9ee4dddc18c8ae - -Vehicle.Chassis.Axle.Row2.Wheel.Right.Brake.IsBrakesWorn: - datatype: boolean - description: Brake pad wear status. True = Worn. False = Not Worn. - type: sensor - uuid: 9b5963e98a9c5b229a61df76ef5c86e0 - -Vehicle.Chassis.Axle.Row2.Wheel.Right.Brake.IsFluidLevelLow: - datatype: boolean - description: Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK. - type: sensor - uuid: 727823c7e0d551f48f26a5dd4f0578bd - -Vehicle.Chassis.Axle.Row2.Wheel.Right.Brake.PadWear: - datatype: uint8 - description: Brake pad wear as percent. 0 = No Wear. 100 = Worn. - max: 100 - type: sensor - unit: percent - uuid: 63a564bca18a5b1fabd7d3cff1af0e6d - -Vehicle.Chassis.Axle.Row2.Wheel.Right.Speed: - datatype: float - description: Rotational speed of a vehicle's wheel. - type: sensor - unit: km/h - uuid: 85b41a82f4775fcea57dcc6218fb6d7b - -Vehicle.Chassis.Axle.Row2.Wheel.Right.Tire: - description: Tire signals for wheel. - type: branch - uuid: d855fe9ffb4e52be83ebfc7967c1c3ee - -Vehicle.Chassis.Axle.Row2.Wheel.Right.Tire.IsPressureLow: - datatype: boolean - description: Tire Pressure Status. True = Low tire pressure. False = Good tire pressure. - type: sensor - uuid: da2f63312a455d92abd5edc405f01903 - -Vehicle.Chassis.Axle.Row2.Wheel.Right.Tire.Pressure: - datatype: uint16 - description: Tire pressure in kilo-Pascal. - type: sensor - unit: kPa - uuid: 0cd3dd4be36c5fcda49d6360556ba7c8 - -Vehicle.Chassis.Axle.Row2.Wheel.Right.Tire.Temperature: - datatype: float - description: Tire temperature in Celsius. - type: sensor - unit: celsius - uuid: 7c08b5778bc05265bb8d4e08fdca29cf - -Vehicle.Chassis.Axle.Row2.WheelCount: - datatype: uint8 - description: Number of wheels on the axle - type: attribute - uuid: ac6fe103410153d382306426d14213ab - -Vehicle.Chassis.Axle.Row2.WheelDiameter: - datatype: float - description: Diameter of wheels (rims without tires), in inches, as per ETRTO / TRA standard. - type: attribute - unit: inch - uuid: af27b1d18a5455e593692a9929909bb9 - -Vehicle.Chassis.Axle.Row2.WheelWidth: - datatype: float - description: Width of wheels (rims without tires), in inches, as per ETRTO / TRA standard. - type: attribute - unit: inch - uuid: 889d279053c051979ebbe301bacac206 - -Vehicle.Chassis.AxleCount: - datatype: uint8 - default: 2 - description: Number of axles on the vehicle - type: attribute - uuid: 86d084c9148d5f22b5402a030413ed79 - -Vehicle.Chassis.Brake: - description: Brake system signals - type: branch - uuid: 38df972e5c6b558e93839a5e97238c5a - -Vehicle.Chassis.Brake.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 - uuid: 0d462892aeac5062a62ee7d07306f6a6 - -Vehicle.Chassis.Brake.PedalPosition: - datatype: uint8 - description: Brake pedal position as percent. 0 = Not depressed. 100 = Fully depressed. - max: 100 - min: 0 - type: sensor - unit: percent - uuid: 0477d3a4a831564ea473976cf34374f2 - -Vehicle.Chassis.ParkingBrake: - description: Parking brake signals - type: branch - uuid: 3849d42292f4551590fa4bf716fc90f7 - -Vehicle.Chassis.ParkingBrake.IsAutoApplyEnabled: - datatype: boolean - description: Indicates if parking brake will be automatically engaged when the vehicle engine is turned off. - type: actuator - uuid: 26c694c9a1c75b699cc8c1dd2986ab90 - -Vehicle.Chassis.ParkingBrake.IsEngaged: - datatype: boolean - description: Parking brake status. True = Parking Brake is Engaged. False = Parking Brake is not Engaged. - type: actuator - uuid: faa7f94e6a5555c6b2d62e3328520ce0 - -Vehicle.Chassis.SteeringWheel: - description: Steering wheel signals - type: branch - uuid: 8c759072791e5986ac4efe9df0c2b751 - -Vehicle.Chassis.SteeringWheel.Angle: - datatype: int16 - description: Steering wheel angle. Positive = degrees to the left. Negative = degrees to the right. - type: sensor - unit: degrees - uuid: 92cd3b3d37585b2291806fe5127d9393 - -Vehicle.Chassis.SteeringWheel.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 - uuid: 6a84cc3604fc5960a1fb384fe63fae72 - -Vehicle.Chassis.SteeringWheel.Tilt: - datatype: uint8 - description: Steering wheel column tilt. 0 = Lowest position. 100 = Highest position. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 33e979769f91521d8080384447d06c00 - -Vehicle.Chassis.Wheelbase: - datatype: uint16 - default: 0 - description: Overall wheelbase, in mm. - type: attribute - unit: mm - uuid: 11677e0433935dc7aa9c1806c96a8a6b - -Vehicle.Connectivity: - description: Connectivity data. - type: branch - uuid: 89c267fccea35f3da9871cca2b4dc4df - -Vehicle.Connectivity.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 - uuid: b6d11be2a6565996b68ffb07a96595a7 - -Vehicle.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 - uuid: 69ac6ca079de59d19737f75e4c5c4342 - -Vehicle.CurrentLocation: - description: The current latitude and longitude of the vehicle. - type: branch - uuid: 24777bd485f15fb69550ae0520c40ad5 - -Vehicle.CurrentLocation.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 - uuid: d3ead98ab0b751c1a5b5dd5bc0e5e216 - -Vehicle.CurrentLocation.GNSSReceiver: - description: Information on the GNSS receiver used for determining current location. - type: branch - uuid: b1bea5d88662539a8cff6f8fe4974740 - -Vehicle.CurrentLocation.GNSSReceiver.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 - uuid: 52853b33d4605608bd0ae50595c69309 - -Vehicle.CurrentLocation.GNSSReceiver.MountingPosition: - 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 - uuid: 5c0887bce6fb5eb79402baaccb203e61 - -Vehicle.CurrentLocation.GNSSReceiver.MountingPosition.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 - uuid: f23d40f3556b5676a0d1e3def037197f - -Vehicle.CurrentLocation.GNSSReceiver.MountingPosition.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 - uuid: 16745ae827c0527ea2c48c20f0c146f1 - -Vehicle.CurrentLocation.GNSSReceiver.MountingPosition.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 - uuid: a4d04e86518e5c5ab60e5e4face35756 - -Vehicle.CurrentLocation.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 - uuid: 2a8f0afa2b315943aa001278875ce012 - -Vehicle.CurrentLocation.HorizontalAccuracy: - datatype: double - description: Accuracy of the latitude and longitude coordinates. - type: sensor - unit: m - uuid: bf25ef243f0c5f839f7ef874f9c57fda - -Vehicle.CurrentLocation.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 - uuid: 08933c5a445055df80bea15fbfa07f1c - -Vehicle.CurrentLocation.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 - uuid: 5246f2ec5fea550cb1b36f110854cfbb - -Vehicle.CurrentLocation.Timestamp: - datatype: string - description: Timestamp from GNSS system for current location, formatted according to ISO 8601 with UTC time zone. - type: sensor - uuid: 094aeff73be05c08905690be0e82a438 - -Vehicle.CurrentLocation.VerticalAccuracy: - datatype: double - description: Accuracy of altitude. - type: sensor - unit: m - uuid: 8f54055bce9e5e8e97fb6051582707ab - -Vehicle.CurrentOverallWeight: - datatype: uint16 - description: Current overall Vehicle weight. Including passengers, cargo and other load inside the car. - type: sensor - unit: kg - uuid: 75599d7628bb5f35839055269d3ad205 - -Vehicle.Driver: - description: Driver data. - type: branch - uuid: 1cac57e7b7e756dc8a154eaacbce6426 - -Vehicle.Driver.AttentiveProbability: - datatype: float - description: Probability of attentiveness of the driver. - max: 100 - min: 0 - type: sensor - unit: percent - uuid: fcd202467afb533fbbf9e7da89cc1cee - -Vehicle.Driver.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 - uuid: cb35ec0b924e58979e1469146d65c3fa - -Vehicle.Driver.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 - uuid: 49b1626295705a79ae20d8a270c48b6b - -Vehicle.Driver.HeartRate: - datatype: uint16 - description: Heart rate of the driver. - type: sensor - unit: bpm - uuid: d71516905f785c4da867a2f86e774d93 - -Vehicle.Driver.Identifier: - description: Identifier attributes based on OAuth 2.0. - type: branch - uuid: 89705397069c5ec58d607318f2ff0ea8 - -Vehicle.Driver.Identifier.Issuer: - datatype: string - description: Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com. - type: sensor - uuid: ee7988d26d7156d2a030ecc506ea97e7 - -Vehicle.Driver.Identifier.Subject: - datatype: string - description: Subject for the authentication of the occupant e.g. UserID 7331677. - type: sensor - uuid: b41ec688af265f10824bc9635989ac55 - -Vehicle.Driver.IsEyesOnRoad: - datatype: boolean - description: Has driver the eyes on road or not? - type: sensor - uuid: 625e5009f1145aa0b797ee6c335ca2fe - -Vehicle.Driver.IsHandsOnWheel: - datatype: boolean - description: Are the driver's hands on the steering wheel or not? - type: sensor - uuid: 90d7dc2c408c528d941829ff88075f24 - -Vehicle.EmissionsCO2: - datatype: int16 - description: The CO2 emissions. - type: attribute - unit: g/km - uuid: b73e8f1ed17d584fad3f088c666dc2a5 - -Vehicle.Exterior: - description: Information about exterior measured by vehicle. - type: branch - uuid: 06c5def549f3580e8cdaffa3e0f5d25c - -Vehicle.Exterior.AirTemperature: - datatype: float - description: Air temperature outside the vehicle. - type: sensor - unit: celsius - uuid: a38d3f5dfeb35317aca8b90453dc1a75 - -Vehicle.Exterior.Humidity: - datatype: float - description: Relative humidity outside the vehicle. 0 = Dry, 100 = Air fully saturated. - max: 100 - min: 0 - type: sensor - unit: percent - uuid: 6c785ec5d9a5534f98be7ce198d25d6b - -Vehicle.Exterior.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 - uuid: 9b46b70490f853e891e1cc35dd08dddc - -Vehicle.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 - uuid: 9671cb551dd8570fbe5d7cd797265e6a - -Vehicle.Height: - datatype: uint16 - default: 0 - description: Overall vehicle height. - type: attribute - unit: mm - uuid: 9784d39f68b8541f90c355178ded7d7c - -Vehicle.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 - uuid: 469ebd2a76b45e5b97b799262a085330 - -Vehicle.IsMoving: - datatype: boolean - description: Indicates whether the vehicle is stationary or moving. - type: sensor - uuid: db69549cc7375e919c2a2883b41cd19c - -Vehicle.Length: - datatype: uint16 - default: 0 - description: Overall vehicle length. - type: attribute - unit: mm - uuid: 885f1be6842a513582e52a42edb3176f - -Vehicle.LowVoltageBattery: - description: Signals related to low voltage battery. - type: branch - uuid: ab8c5816d44f55b68f6e1d6d9e5acb0b - -Vehicle.LowVoltageBattery.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 - uuid: e1d76e489d505b03ace30771ba4291b1 - -Vehicle.LowVoltageBattery.CurrentVoltage: - datatype: float - description: Current Voltage of the low voltage battery. - type: sensor - unit: V - uuid: 1394234e8b975a279959ae82e03df786 - -Vehicle.LowVoltageBattery.NominalCapacity: - datatype: uint16 - description: Nominal capacity of the low voltage battery. - type: attribute - unit: Ah - uuid: d9f32612cb2f58d3b863a0dae21ff7af - -Vehicle.LowVoltageBattery.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 - uuid: bd5d4b6ee33f507fb49782505c3040e0 - -Vehicle.LowVoltageSystemState: - allowed: - - UNDEFINED - - LOCK - - 'OFF' - - ACC - - 'ON' - - START - datatype: string - description: State of the supply voltage of the control units (usually 12V). - type: sensor - uuid: d7391ceb132e5519b02d4c13d5513d99 - -Vehicle.MaxTowBallWeight: - datatype: uint16 - default: 0 - description: Maximum vertical weight on the tow ball of a trailer. - type: attribute - unit: kg - uuid: fec550f2064750e8b65b54fbf1368d68 - -Vehicle.MaxTowWeight: - datatype: uint16 - default: 0 - description: Maximum weight of trailer. - type: attribute - unit: kg - uuid: a1b8fd65897654aa8a418bccf443f1f3 - -Vehicle.OBD: - description: OBD data. - type: branch - uuid: 7ad7c512ed5d52c8b31944d2d47a4bc3 - -Vehicle.OBD.AbsoluteLoad: - datatype: float - description: PID 43 - Absolute load value - type: sensor - unit: percent - uuid: b3dd889a42ce5de9a7904b7196ae325c - -Vehicle.OBD.AcceleratorPositionD: - datatype: float - description: PID 49 - Accelerator pedal position D - type: sensor - unit: percent - uuid: 7e63256081ac5a7b8a28a6fa3c2c2ff9 - -Vehicle.OBD.AcceleratorPositionE: - datatype: float - description: PID 4A - Accelerator pedal position E - type: sensor - unit: percent - uuid: 4104e7fc25355e25b4522d233565d84b - -Vehicle.OBD.AcceleratorPositionF: - datatype: float - description: PID 4B - Accelerator pedal position F - type: sensor - unit: percent - uuid: 95f5c2a209a857ff930e2f8e32ac2d3f - -Vehicle.OBD.AirStatus: - datatype: string - description: PID 12 - Secondary air status - type: sensor - uuid: 548f65bf59ed505a86dfaa1c33342e4d - -Vehicle.OBD.AmbientAirTemperature: - datatype: float - description: PID 46 - Ambient air temperature - type: sensor - unit: celsius - uuid: 220a90f183c5583ea8b8b6454d774517 - -Vehicle.OBD.BarometricPressure: - datatype: float - description: PID 33 - Barometric pressure - type: sensor - unit: kPa - uuid: 1966bfff4d235767bfd9a21afb445ac7 - -Vehicle.OBD.Catalyst: - description: Catalyst signals - type: branch - uuid: 4eb0b191d6445de081f3f3f759af31c2 - -Vehicle.OBD.Catalyst.Bank1: - description: Catalyst bank 1 signals - type: branch - uuid: 0c3aaf014ba95b938b639d4202ef8b25 - -Vehicle.OBD.Catalyst.Bank1.Temperature1: - datatype: float - description: PID 3C - Catalyst temperature from bank 1, sensor 1 - type: sensor - unit: celsius - uuid: 5a770f13939e5d069682d408f160a895 - -Vehicle.OBD.Catalyst.Bank1.Temperature2: - datatype: float - description: PID 3E - Catalyst temperature from bank 1, sensor 2 - type: sensor - unit: celsius - uuid: ca9419a5d23b5937af23b51d823722fa - -Vehicle.OBD.Catalyst.Bank2: - description: Catalyst bank 2 signals - type: branch - uuid: 9a20459754755146a3b9608bf6384835 - -Vehicle.OBD.Catalyst.Bank2.Temperature1: - datatype: float - description: PID 3D - Catalyst temperature from bank 2, sensor 1 - type: sensor - unit: celsius - uuid: 011658e4ee89502c9a33877c92dbf888 - -Vehicle.OBD.Catalyst.Bank2.Temperature2: - datatype: float - description: PID 3F - Catalyst temperature from bank 2, sensor 2 - type: sensor - unit: celsius - uuid: f60c68f0ebca5fcf97086ce04e16d661 - -Vehicle.OBD.CommandedEGR: - datatype: float - description: PID 2C - Commanded exhaust gas recirculation (EGR) - type: sensor - unit: percent - uuid: 0265890a4a695ee6952c9b9f565ddaa5 - -Vehicle.OBD.CommandedEVAP: - datatype: float - description: PID 2E - Commanded evaporative purge (EVAP) valve - type: sensor - unit: percent - uuid: 5e6295d04a9159b88f4698b561b86842 - -Vehicle.OBD.CommandedEquivalenceRatio: - datatype: float - description: PID 44 - Commanded equivalence ratio - type: sensor - unit: ratio - uuid: 104e39e816f65fa791d0afa24603292b - -Vehicle.OBD.ControlModuleVoltage: - datatype: float - description: PID 42 - Control module voltage - type: sensor - unit: V - uuid: 59e072b932605ffc88a299c874d885c4 - -Vehicle.OBD.CoolantTemperature: - datatype: float - description: PID 05 - Coolant temperature - type: sensor - unit: celsius - uuid: 824892cdc72d5f92a38ef3136576edc8 - -Vehicle.OBD.DTCList: - datatype: string[] - description: List of currently active DTCs formatted according OBD II (SAE-J2012DA_201812) standard ([P|C|B|U]XXXXX ) - type: sensor - uuid: eee1b64e69845d5ab5e793b74631f9dc - -Vehicle.OBD.DistanceSinceDTCClear: - datatype: float - description: PID 31 - Distance traveled since codes cleared - type: sensor - unit: km - uuid: 0da628e2c69d561eb86216ddcb6e7b2a - -Vehicle.OBD.DistanceWithMIL: - datatype: float - description: PID 21 - Distance traveled with MIL on - type: sensor - unit: km - uuid: a9a522e343f25522b08f11e81bb91349 - -Vehicle.OBD.DriveCycleStatus: - description: PID 41 - OBD status for the current drive cycle - type: branch - uuid: 5215e28062f75154822789b8a5f30630 - -Vehicle.OBD.DriveCycleStatus.DTCCount: - datatype: uint8 - description: Number of sensor Trouble Codes (DTC) - type: sensor - uuid: 312856f746ff560e8098c19196964d3b - -Vehicle.OBD.DriveCycleStatus.IgnitionType: - allowed: - - SPARK - - COMPRESSION - datatype: string - description: Type of the ignition for ICE - spark = spark plug ignition, compression = self-igniting (Diesel engines) - type: sensor - uuid: 1aeb7b6d025f5a8693104824abaa1c49 - -Vehicle.OBD.DriveCycleStatus.IsMILOn: - datatype: boolean - description: Malfunction Indicator Light (MIL) - False = Off, True = On - type: sensor - uuid: e367394c9a075eef8fd66499e3d9cf14 - -Vehicle.OBD.EGRError: - datatype: float - description: PID 2D - Exhaust gas recirculation (EGR) error - type: sensor - unit: percent - uuid: 80a7000c5c7b5444b5571a26264061e5 - -Vehicle.OBD.EVAPVaporPressure: - datatype: float - description: PID 32 - Evaporative purge (EVAP) system pressure - type: sensor - unit: Pa - uuid: 70b5dae2ffd0561eab73efed8ad2f0ad - -Vehicle.OBD.EVAPVaporPressureAbsolute: - datatype: float - description: PID 53 - Absolute evaporative purge (EVAP) system pressure - type: sensor - unit: kPa - uuid: ef188a1e1a1356f7bc425081e3e00805 - -Vehicle.OBD.EVAPVaporPressureAlternate: - datatype: float - description: PID 54 - Alternate evaporative purge (EVAP) system pressure - type: sensor - unit: Pa - uuid: 68eaba3c79975d61bc35b92cd3e5e8d0 - -Vehicle.OBD.EngineLoad: - datatype: float - description: PID 04 - Engine load in percent - 0 = no load, 100 = full load - type: sensor - unit: percent - uuid: a8fda8a1b4c6534aa49c447bafc1c700 - -Vehicle.OBD.EngineSpeed: - datatype: float - description: PID 0C - Engine speed measured as rotations per minute - type: sensor - unit: rpm - uuid: b682eea93b3e5874ab3b52e95a1fad37 - -Vehicle.OBD.EthanolPercent: - datatype: float - description: PID 52 - Percentage of ethanol in the fuel - type: sensor - unit: percent - uuid: a207e7de17e1520c894b412af6f2522c - -Vehicle.OBD.FreezeDTC: - datatype: string - description: PID 02 - DTC that triggered the freeze frame - type: sensor - uuid: 5b87fae8dda4522aae209ae528960782 - -Vehicle.OBD.FuelInjectionTiming: - datatype: float - description: PID 5D - Fuel injection timing - type: sensor - unit: degrees - uuid: ab4869446f5357d6936838983e1b8949 - -Vehicle.OBD.FuelLevel: - datatype: float - description: PID 2F - Fuel level in the fuel tank - type: sensor - unit: percent - uuid: fd39813424ee5cd08c44714b35697287 - -Vehicle.OBD.FuelPressure: - datatype: float - description: PID 0A - Fuel pressure - type: sensor - unit: kPa - uuid: 34e6b0689f025d7b9bfa1fc49bb30c0f - -Vehicle.OBD.FuelRailPressureAbsolute: - datatype: float - description: PID 59 - Absolute fuel rail pressure - type: sensor - unit: kPa - uuid: 83c88b13d30153949eeca1b1180a9061 - -Vehicle.OBD.FuelRailPressureDirect: - datatype: float - description: PID 23 - Fuel rail pressure direct inject - type: sensor - unit: kPa - uuid: 039cb7bf1a8356a98d09eaf4fc029fe9 - -Vehicle.OBD.FuelRailPressureVac: - datatype: float - description: PID 22 - Fuel rail pressure relative to vacuum - type: sensor - unit: kPa - uuid: b3b0adf44aa3572fa07e7434993e6458 - -Vehicle.OBD.FuelRate: - datatype: float - description: PID 5E - Engine fuel rate - type: sensor - unit: l/h - uuid: 4ab7c2b710f95ceb9c7d01d19dabac38 - -Vehicle.OBD.FuelStatus: - datatype: string - description: PID 03 - Fuel status - type: sensor - uuid: 15fa2f3f667a5f5786eda5c83435ef16 - -Vehicle.OBD.FuelType: - datatype: uint8 - description: PID 51 - Fuel type - max: 23 - min: 0 - type: attribute - uuid: aefb45bdd8035904b0c8f3ffcedc53a9 - -Vehicle.OBD.HybridBatteryRemaining: - datatype: float - description: PID 5B - Remaining life of hybrid battery - type: sensor - unit: percent - uuid: c9517b6243df5e8d8f3aa3e57f71ec37 - -Vehicle.OBD.IntakeTemp: - datatype: float - description: PID 0F - Intake temperature - type: sensor - unit: celsius - uuid: 7c108305178b5854b430a23e125588bd - -Vehicle.OBD.IsPTOActive: - datatype: boolean - description: PID 1E - Auxiliary input status (power take off) - type: sensor - uuid: ce291dc40bba5a969e57b17f11ae23a9 - -Vehicle.OBD.LongTermFuelTrim1: - datatype: float - description: PID 07 - Long Term (learned) Fuel Trim - Bank 1 - negative percent leaner, positive percent richer - type: sensor - unit: percent - uuid: 1c203b11667150f0b4ee1be26a60c084 - -Vehicle.OBD.LongTermFuelTrim2: - datatype: float - description: PID 09 - Long Term (learned) Fuel Trim - Bank 2 - negative percent leaner, positive percent richer - type: sensor - unit: percent - uuid: b02aff2efce05632b5694a256e5b9ec7 - -Vehicle.OBD.LongTermO2Trim1: - datatype: float - description: PID 56 (byte A) - Long term secondary O2 trim - Bank 1 - type: sensor - unit: percent - uuid: 9a9586e29a02567e9920cb9b0aa2e3f5 - -Vehicle.OBD.LongTermO2Trim2: - datatype: float - description: PID 58 (byte A) - Long term secondary O2 trim - Bank 2 - type: sensor - unit: percent - uuid: e579f6c930605b389e8ce2d7edd92999 - -Vehicle.OBD.LongTermO2Trim3: - datatype: float - description: PID 56 (byte B) - Long term secondary O2 trim - Bank 3 - type: sensor - unit: percent - uuid: 50ea51ad343a5e59b1d214053e522a45 - -Vehicle.OBD.LongTermO2Trim4: - datatype: float - description: PID 58 (byte B) - Long term secondary O2 trim - Bank 4 - type: sensor - unit: percent - uuid: f9c20edd12f456e5ace21581cea484bd - -Vehicle.OBD.MAF: - datatype: float - description: PID 10 - Grams of air drawn into engine per second - type: sensor - unit: g/s - uuid: f3acdf89fb865313883d5d3126f15518 - -Vehicle.OBD.MAP: - datatype: float - description: PID 0B - Intake manifold pressure - type: sensor - unit: kPa - uuid: 335991b1b53f56f097fea7b05d4db83b - -Vehicle.OBD.MaxMAF: - datatype: float - description: PID 50 - Maximum flow for mass air flow sensor - type: sensor - unit: g/s - uuid: e21826479f715ee7afe8dc485f109b11 - -Vehicle.OBD.O2: - description: Oxygen sensors (PID 14 - PID 1B) - type: branch - uuid: 31f007df72af50f0925d2b4647682a4d - -Vehicle.OBD.O2.Sensor1: - description: Oxygen sensors (PID 14 - PID 1B) - type: branch - uuid: 3aa8859203d4545083196a9690d72627 - -Vehicle.OBD.O2.Sensor1.ShortTermFuelTrim: - datatype: float - description: PID 1x (byte B) - Short term fuel trim - type: sensor - unit: percent - uuid: ee366d40132456c0bce8cac3a837f16a - -Vehicle.OBD.O2.Sensor1.Voltage: - datatype: float - description: PID 1x (byte A) - Sensor voltage - type: sensor - unit: V - uuid: e95f4ea667265ee3a68ab57b86ecbf66 - -Vehicle.OBD.O2.Sensor2: - description: Oxygen sensors (PID 14 - PID 1B) - type: branch - uuid: efcb337cf94056c8a724e76bcfee6765 - -Vehicle.OBD.O2.Sensor2.ShortTermFuelTrim: - datatype: float - description: PID 1x (byte B) - Short term fuel trim - type: sensor - unit: percent - uuid: 92e6e172777457a9866ca045d0d79853 - -Vehicle.OBD.O2.Sensor2.Voltage: - datatype: float - description: PID 1x (byte A) - Sensor voltage - type: sensor - unit: V - uuid: 5f1781bde96b53ce9b810a5a56b7c8ed - -Vehicle.OBD.O2.Sensor3: - description: Oxygen sensors (PID 14 - PID 1B) - type: branch - uuid: b8c145402b7a5cffaa2699ed61b056fa - -Vehicle.OBD.O2.Sensor3.ShortTermFuelTrim: - datatype: float - description: PID 1x (byte B) - Short term fuel trim - type: sensor - unit: percent - uuid: 66c300d35eb85e7387dc42528cca48d9 - -Vehicle.OBD.O2.Sensor3.Voltage: - datatype: float - description: PID 1x (byte A) - Sensor voltage - type: sensor - unit: V - uuid: a86a1986f0fe5d25b6c438a00438ff60 - -Vehicle.OBD.O2.Sensor4: - description: Oxygen sensors (PID 14 - PID 1B) - type: branch - uuid: 853945bce86c5c4f95081075ae32261c - -Vehicle.OBD.O2.Sensor4.ShortTermFuelTrim: - datatype: float - description: PID 1x (byte B) - Short term fuel trim - type: sensor - unit: percent - uuid: b71dcf9d850c5d5686f14ad46cd2cae3 - -Vehicle.OBD.O2.Sensor4.Voltage: - datatype: float - description: PID 1x (byte A) - Sensor voltage - type: sensor - unit: V - uuid: 772cbfab91be59f7bbf3ec4140ffbcc4 - -Vehicle.OBD.O2.Sensor5: - description: Oxygen sensors (PID 14 - PID 1B) - type: branch - uuid: f48c76c9c7ec5ddcb6838ced0bd7517b - -Vehicle.OBD.O2.Sensor5.ShortTermFuelTrim: - datatype: float - description: PID 1x (byte B) - Short term fuel trim - type: sensor - unit: percent - uuid: 7604de26198b51e28a441f79b1d84242 - -Vehicle.OBD.O2.Sensor5.Voltage: - datatype: float - description: PID 1x (byte A) - Sensor voltage - type: sensor - unit: V - uuid: 155a0816093b5aee8012ed2a8d532b7f - -Vehicle.OBD.O2.Sensor6: - description: Oxygen sensors (PID 14 - PID 1B) - type: branch - uuid: 5269c1877ded507b87d7d1d7bec10605 - -Vehicle.OBD.O2.Sensor6.ShortTermFuelTrim: - datatype: float - description: PID 1x (byte B) - Short term fuel trim - type: sensor - unit: percent - uuid: 2fb034769cab5089986d90bf7f9000ca - -Vehicle.OBD.O2.Sensor6.Voltage: - datatype: float - description: PID 1x (byte A) - Sensor voltage - type: sensor - unit: V - uuid: 85430592fb795e848d7bb91e6b9f1e00 - -Vehicle.OBD.O2.Sensor7: - description: Oxygen sensors (PID 14 - PID 1B) - type: branch - uuid: 4b565102e4a052aa8aa64f27dc678ce3 - -Vehicle.OBD.O2.Sensor7.ShortTermFuelTrim: - datatype: float - description: PID 1x (byte B) - Short term fuel trim - type: sensor - unit: percent - uuid: 81f34b16b5e05d1ab159de9474eaf5bc - -Vehicle.OBD.O2.Sensor7.Voltage: - datatype: float - description: PID 1x (byte A) - Sensor voltage - type: sensor - unit: V - uuid: 23984a68e63f532bab18679e1174130d - -Vehicle.OBD.O2.Sensor8: - description: Oxygen sensors (PID 14 - PID 1B) - type: branch - uuid: d5eef24c35f1561982127404b50ece11 - -Vehicle.OBD.O2.Sensor8.ShortTermFuelTrim: - datatype: float - description: PID 1x (byte B) - Short term fuel trim - type: sensor - unit: percent - uuid: 1699eb2267615e258259e480be0fa606 - -Vehicle.OBD.O2.Sensor8.Voltage: - datatype: float - description: PID 1x (byte A) - Sensor voltage - type: sensor - unit: V - uuid: 23e057b3629a5136bb585638725fe0a2 - -Vehicle.OBD.O2WR: - description: Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B) - type: branch - uuid: a439f2bc16575318afe20d0bc6a8cacf - -Vehicle.OBD.O2WR.Sensor1: - description: Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B) - type: branch - uuid: 496074cec04a5260b60fd39bb7ed1479 - -Vehicle.OBD.O2WR.Sensor1.Current: - datatype: float - description: PID 3x (byte CD) - Current for wide range/band oxygen sensor - type: sensor - unit: A - uuid: bb4c70d9d2ae56c8a9a3be446db6f54c - -Vehicle.OBD.O2WR.Sensor1.Lambda: - datatype: float - description: PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor - type: sensor - uuid: b809083454a5516f995477c59bf4d3c6 - -Vehicle.OBD.O2WR.Sensor1.Voltage: - datatype: float - description: PID 2x (byte CD) - Voltage for wide range/band oxygen sensor - type: sensor - unit: V - uuid: 396251cbfa5a57ffb1dd743298dfcdf9 - -Vehicle.OBD.O2WR.Sensor2: - description: Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B) - type: branch - uuid: 079f9960f75d5f399df7ff86fcea8f0c - -Vehicle.OBD.O2WR.Sensor2.Current: - datatype: float - description: PID 3x (byte CD) - Current for wide range/band oxygen sensor - type: sensor - unit: A - uuid: 442ab33180ca5028a37a487056ba4a51 - -Vehicle.OBD.O2WR.Sensor2.Lambda: - datatype: float - description: PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor - type: sensor - uuid: ce55aed0e8705a49970566db71ebcf90 - -Vehicle.OBD.O2WR.Sensor2.Voltage: - datatype: float - description: PID 2x (byte CD) - Voltage for wide range/band oxygen sensor - type: sensor - unit: V - uuid: a784675c3b765d42ad023d8ee412be26 - -Vehicle.OBD.O2WR.Sensor3: - description: Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B) - type: branch - uuid: a8a83d3e33f9584b824088e830bcbaec - -Vehicle.OBD.O2WR.Sensor3.Current: - datatype: float - description: PID 3x (byte CD) - Current for wide range/band oxygen sensor - type: sensor - unit: A - uuid: c942468e349e5aaebde4d90ee0bc3814 - -Vehicle.OBD.O2WR.Sensor3.Lambda: - datatype: float - description: PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor - type: sensor - uuid: f2ae7c781b0a5dcf8db91558e3cf4c13 - -Vehicle.OBD.O2WR.Sensor3.Voltage: - datatype: float - description: PID 2x (byte CD) - Voltage for wide range/band oxygen sensor - type: sensor - unit: V - uuid: a78f7621a3f75df2adc1dc940219834a - -Vehicle.OBD.O2WR.Sensor4: - description: Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B) - type: branch - uuid: bb67047ddad158ba98876a6a87d02e97 - -Vehicle.OBD.O2WR.Sensor4.Current: - datatype: float - description: PID 3x (byte CD) - Current for wide range/band oxygen sensor - type: sensor - unit: A - uuid: f16b31fde63a516db04cb44feaa7c27b - -Vehicle.OBD.O2WR.Sensor4.Lambda: - datatype: float - description: PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor - type: sensor - uuid: be09013f423c588eae9c06da9ddf290f - -Vehicle.OBD.O2WR.Sensor4.Voltage: - datatype: float - description: PID 2x (byte CD) - Voltage for wide range/band oxygen sensor - type: sensor - unit: V - uuid: abeca90ba22d5c32a34ee907cedf3192 - -Vehicle.OBD.O2WR.Sensor5: - description: Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B) - type: branch - uuid: 01c4160d39af5db59c66db844646195e - -Vehicle.OBD.O2WR.Sensor5.Current: - datatype: float - description: PID 3x (byte CD) - Current for wide range/band oxygen sensor - type: sensor - unit: A - uuid: 40494cb5826554929f5ecadd5b9173fd - -Vehicle.OBD.O2WR.Sensor5.Lambda: - datatype: float - description: PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor - type: sensor - uuid: 16a957200f5c51f89824bbb76a23b9c0 - -Vehicle.OBD.O2WR.Sensor5.Voltage: - datatype: float - description: PID 2x (byte CD) - Voltage for wide range/band oxygen sensor - type: sensor - unit: V - uuid: 699c4db2439f51af8465e823687018b8 - -Vehicle.OBD.O2WR.Sensor6: - description: Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B) - type: branch - uuid: cff12c30bde957798daaa3a91758b48b - -Vehicle.OBD.O2WR.Sensor6.Current: - datatype: float - description: PID 3x (byte CD) - Current for wide range/band oxygen sensor - type: sensor - unit: A - uuid: 06a38b6b4784545bb637279e96d48eb5 - -Vehicle.OBD.O2WR.Sensor6.Lambda: - datatype: float - description: PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor - type: sensor - uuid: fdae9bb9a3a45b4680450f0347cf6d66 - -Vehicle.OBD.O2WR.Sensor6.Voltage: - datatype: float - description: PID 2x (byte CD) - Voltage for wide range/band oxygen sensor - type: sensor - unit: V - uuid: 304c181c76d55c3abe75382a935c7bde - -Vehicle.OBD.O2WR.Sensor7: - description: Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B) - type: branch - uuid: 44459df1f25f5d43a07b00f2bad65ef5 - -Vehicle.OBD.O2WR.Sensor7.Current: - datatype: float - description: PID 3x (byte CD) - Current for wide range/band oxygen sensor - type: sensor - unit: A - uuid: 6ed46315325d540eb95c86ec61eef8e4 - -Vehicle.OBD.O2WR.Sensor7.Lambda: - datatype: float - description: PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor - type: sensor - uuid: 9221a5289157538b9dcaa0d961c335fa - -Vehicle.OBD.O2WR.Sensor7.Voltage: - datatype: float - description: PID 2x (byte CD) - Voltage for wide range/band oxygen sensor - type: sensor - unit: V - uuid: 0ad1d79dcce65c00ac48421b5b54ca0e - -Vehicle.OBD.O2WR.Sensor8: - description: Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B) - type: branch - uuid: b8865e72055d52a086f6935d5c188cc1 - -Vehicle.OBD.O2WR.Sensor8.Current: - datatype: float - description: PID 3x (byte CD) - Current for wide range/band oxygen sensor - type: sensor - unit: A - uuid: 96de3c3b036c50c2978ab2aa490d4d9e - -Vehicle.OBD.O2WR.Sensor8.Lambda: - datatype: float - description: PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor - type: sensor - uuid: c56db1195fa3519ab6718ab57d2cd543 - -Vehicle.OBD.O2WR.Sensor8.Voltage: - datatype: float - description: PID 2x (byte CD) - Voltage for wide range/band oxygen sensor - type: sensor - unit: V - uuid: ab7d6c739f025782bba640e58123f0c8 - -Vehicle.OBD.OBDStandards: - datatype: uint8 - description: PID 1C - OBD standards this vehicle conforms to - type: attribute - uuid: 1aa8d7d055cf5a29a31b04a12124f673 - -Vehicle.OBD.OilTemperature: - datatype: float - description: PID 5C - Engine oil temperature - type: sensor - unit: celsius - uuid: ef3dfc11085d5077b363b1a4e8e4a84e - -Vehicle.OBD.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 - uuid: 0a9ba3f0a9b256d78bafd62ee8ce73cd - -Vehicle.OBD.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 - uuid: 41d3377813d651aa9b9344ba9fd2f880 - -Vehicle.OBD.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 - uuid: ba1c1b9034955d2d97249c3b4516beef - -Vehicle.OBD.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 - uuid: 00193c560a0a5525baa45681e07b50f6 - -Vehicle.OBD.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 - uuid: 7c3a3f0ecc5d593aa996892668afe4b0 - -Vehicle.OBD.RelativeAcceleratorPosition: - datatype: float - description: PID 5A - Relative accelerator pedal position - type: sensor - unit: percent - uuid: e25de9aacad3549285b4fb234f10be8f - -Vehicle.OBD.RelativeThrottlePosition: - datatype: float - description: PID 45 - Relative throttle position - type: sensor - unit: percent - uuid: 54ecf7dd671c5053aac4bc1bb061d64b - -Vehicle.OBD.RunTime: - datatype: float - description: PID 1F - Engine run time - type: sensor - unit: s - uuid: acf70773752256d1a227ab48257624b5 - -Vehicle.OBD.RunTimeMIL: - datatype: float - description: PID 4D - Run time with MIL on - type: sensor - unit: min - uuid: 555604a484535f60adf8894a6bd895b6 - -Vehicle.OBD.ShortTermFuelTrim1: - datatype: float - description: PID 06 - Short Term (immediate) Fuel Trim - Bank 1 - negative percent leaner, positive percent richer - type: sensor - unit: percent - uuid: 569c983874335fb392d4e82a002654cb - -Vehicle.OBD.ShortTermFuelTrim2: - datatype: float - description: PID 08 - Short Term (immediate) Fuel Trim - Bank 2 - negative percent leaner, positive percent richer - type: sensor - unit: percent - uuid: 53a39620773a523a8182169027169ec2 - -Vehicle.OBD.ShortTermO2Trim1: - datatype: float - description: PID 55 (byte A) - Short term secondary O2 trim - Bank 1 - type: sensor - unit: percent - uuid: be7ed33a854557ba802da0c51f9f4564 - -Vehicle.OBD.ShortTermO2Trim2: - datatype: float - description: PID 57 (byte A) - Short term secondary O2 trim - Bank 2 - type: sensor - unit: percent - uuid: c8b962f8990e51d294621408ceaa21d9 - -Vehicle.OBD.ShortTermO2Trim3: - datatype: float - description: PID 55 (byte B) - Short term secondary O2 trim - Bank 3 - type: sensor - unit: percent - uuid: af58212df970568b9edcc5e58fa36f8d - -Vehicle.OBD.ShortTermO2Trim4: - datatype: float - description: PID 57 (byte B) - Short term secondary O2 trim - Bank 4 - type: sensor - unit: percent - uuid: 8ef0516c0c965fd6aecbacd6b9120a5b - -Vehicle.OBD.Speed: - datatype: float - description: PID 0D - Vehicle speed - type: sensor - unit: km/h - uuid: 91ed0bb43eb054759813cd784b071764 - -Vehicle.OBD.Status: - description: PID 01 - OBD status - type: branch - uuid: 474f58e593ee5bfebbb9c6ce4a453f96 - -Vehicle.OBD.Status.DTCCount: - datatype: uint8 - description: Number of Diagnostic Trouble Codes (DTC) - type: sensor - uuid: 4afdf65e788c5f69baf682597e69fb67 - -Vehicle.OBD.Status.IgnitionType: - allowed: - - SPARK - - COMPRESSION - datatype: string - description: Type of the ignition for ICE - spark = spark plug ignition, compression = self-igniting (Diesel engines) - type: attribute - uuid: 7ffd71caac8e5bd18f93366afdfe534d - -Vehicle.OBD.Status.IsMILOn: - datatype: boolean - description: Malfunction Indicator Light (MIL) False = Off, True = On - type: sensor - uuid: 8744bcb275205630932320b66185502c - -Vehicle.OBD.ThrottleActuator: - datatype: float - description: PID 4C - Commanded throttle actuator - type: sensor - unit: percent - uuid: 49a19905a1005ee3abe0c0a84d7112d1 - -Vehicle.OBD.ThrottlePosition: - datatype: float - description: PID 11 - Throttle position - 0 = closed throttle, 100 = open throttle - type: sensor - unit: percent - uuid: ec1d372020205bb4a846a014b33801e1 - -Vehicle.OBD.ThrottlePositionB: - datatype: float - description: PID 47 - Absolute throttle position B - type: sensor - unit: percent - uuid: 701712a565ed5bf8b6630487a7152c87 - -Vehicle.OBD.ThrottlePositionC: - datatype: float - description: PID 48 - Absolute throttle position C - type: sensor - unit: percent - uuid: 06f162dc00a85f628f9d5d1bc952665c - -Vehicle.OBD.TimeSinceDTCCleared: - datatype: float - description: PID 4E - Time since trouble codes cleared - type: sensor - unit: min - uuid: 66ea3984a2585dcdaaf6452eef835c0d - -Vehicle.OBD.TimingAdvance: - datatype: float - description: PID 0E - Time advance - type: sensor - unit: degrees - uuid: 35533b7e327d5f839b17c932b630767c - -Vehicle.OBD.WarmupsSinceDTCClear: - datatype: uint8 - description: PID 30 - Number of warm-ups since codes cleared - type: sensor - uuid: a63ba60721785fc591e3dd067c4dc2ae - -Vehicle.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 - uuid: add77f60f7885e39a84baae200569077 - -Vehicle.Powertrain: - description: Powertrain data for battery management, etc. - type: branch - uuid: 12f35ec7bd1c58d1a329565ce3d053d5 - -Vehicle.Powertrain.AccumulatedBrakingEnergy: - datatype: float - description: The accumulated energy from regenerative braking over lifetime. - type: sensor - unit: kWh - uuid: 0dd466d28d3d5ad094f2015adafb91a5 - -Vehicle.Powertrain.CombustionEngine: - description: Engine-specific data, stopping at the bell housing. - type: branch - uuid: 159e2e3e75f0590f95b4d2f6cfae54b5 - -Vehicle.Powertrain.CombustionEngine.AspirationType: - allowed: - - UNKNOWN - - NATURAL - - SUPERCHARGER - - TURBOCHARGER - datatype: string - default: UNKNOWN - description: Type of aspiration (natural, turbocharger, supercharger etc). - type: attribute - uuid: 3ca6a8ff30275c20a9d8d6d6829574eb - -Vehicle.Powertrain.CombustionEngine.Bore: - datatype: float - description: Bore in millimetres. - type: attribute - unit: mm - uuid: 1618fb16035b5464961570cc1afd934e - -Vehicle.Powertrain.CombustionEngine.CompressionRatio: - datatype: string - description: Engine compression ratio, specified in the format 'X:1', e.g. '9.2:1'. - type: attribute - uuid: ead42922511051a0a0a1b634781f3c09 - -Vehicle.Powertrain.CombustionEngine.Configuration: - allowed: - - UNKNOWN - - STRAIGHT - - V - - BOXER - - W - - ROTARY - - RADIAL - - SQUARE - - H - - U - - OPPOSED - - X - datatype: string - default: UNKNOWN - description: Engine configuration. - type: attribute - uuid: 586be4567fe059ee9e6cf42901c2e773 - -Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid: - 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 - uuid: 81d8eec46d9357a3b1064bfb5d070fa2 - -Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid.Capacity: - datatype: float - description: Capacity in liters of the Diesel Exhaust Fluid Tank. - type: attribute - unit: l - uuid: 863c16ad452b5cf5b7a37f58bdda14c3 - -Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid.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 - uuid: 811af3fe4f7f5270b4119bb66cff8759 - -Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid.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 - uuid: f5b0269b58ff5a8e8399f6d96963a3b6 - -Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid.Range: - datatype: uint32 - description: Remaining range in meters of the Diesel Exhaust Fluid present in the vehicle. - type: sensor - unit: m - uuid: 124afbee975c5a67b316413f7b805eac - -Vehicle.Powertrain.CombustionEngine.DieselParticulateFilter: - description: Diesel Particulate Filter signals. - type: branch - uuid: eeddd99ad6475b1a92b9ec7bd7cefdbd - -Vehicle.Powertrain.CombustionEngine.DieselParticulateFilter.DeltaPressure: - datatype: float - description: Delta Pressure of Diesel Particulate Filter. - type: sensor - unit: Pa - uuid: a6f476775c60531b93acb835e0bc6ab6 - -Vehicle.Powertrain.CombustionEngine.DieselParticulateFilter.InletTemperature: - datatype: float - description: Inlet temperature of Diesel Particulate Filter. - type: sensor - unit: celsius - uuid: 70e90d202d3054bd967e67dce95c8ef2 - -Vehicle.Powertrain.CombustionEngine.DieselParticulateFilter.OutletTemperature: - datatype: float - description: Outlet temperature of Diesel Particulate Filter. - type: sensor - unit: celsius - uuid: e2b7f9d97bec5c0d94ade71a5e2f6518 - -Vehicle.Powertrain.CombustionEngine.Displacement: - datatype: uint16 - description: Displacement in cubic centimetres. - type: attribute - unit: cm^3 - uuid: 94dbd928847150ab842c00fa5caaf272 - -Vehicle.Powertrain.CombustionEngine.ECT: - datatype: int16 - description: Engine coolant temperature. - type: sensor - unit: celsius - uuid: fff3cad23cac5b189a1a075c3ab562cd - -Vehicle.Powertrain.CombustionEngine.EOP: - datatype: uint16 - description: Engine oil pressure. - type: sensor - unit: kPa - uuid: 76c7039dc7975ec3a003f0f4a04895ec - -Vehicle.Powertrain.CombustionEngine.EOT: - datatype: int16 - description: Engine oil temperature. - type: sensor - unit: celsius - uuid: eae6f5eae04f530e80f6b024f95b767d - -Vehicle.Powertrain.CombustionEngine.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 - uuid: 4ec845911b8e5b64b2cb1d34063184de - -Vehicle.Powertrain.CombustionEngine.EngineCoolantCapacity: - datatype: float - description: Engine coolant capacity in liters. - type: attribute - unit: l - uuid: 90b5b64808ea5f4fa2798d96143b0d60 - -Vehicle.Powertrain.CombustionEngine.EngineHours: - datatype: float - description: Accumulated time during engine lifetime with 'engine speed (rpm) > 0'. - type: sensor - unit: h - uuid: a23a62e24f58514d961890f53262e4e0 - -Vehicle.Powertrain.CombustionEngine.EngineOilCapacity: - datatype: float - description: Engine oil capacity in liters. - type: attribute - unit: l - uuid: 2ca7af6facb55a13885989faa9bc6ca7 - -Vehicle.Powertrain.CombustionEngine.EngineOilLevel: - allowed: - - CRITICALLY_LOW - - LOW - - NORMAL - - HIGH - - CRITICALLY_HIGH - datatype: string - description: Engine oil level. - type: sensor - uuid: e3813f59e94b509eb865fd97255a8a4f - -Vehicle.Powertrain.CombustionEngine.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 - uuid: 6caa3d7e669c5cc6aecd4a6be9a302d4 - -Vehicle.Powertrain.CombustionEngine.IsRunning: - datatype: boolean - description: Engine Running. True if engine is rotating (Speed > 0). - type: sensor - uuid: 57652c27679757398c44d56af7a044d3 - -Vehicle.Powertrain.CombustionEngine.MAF: - datatype: uint16 - description: Grams of air drawn into engine per second. - type: sensor - unit: g/s - uuid: 1e222ed8c48b5dcea60e43ac8af7d6df - -Vehicle.Powertrain.CombustionEngine.MAP: - datatype: uint16 - description: Manifold absolute pressure possibly boosted using forced induction. - type: sensor - unit: kPa - uuid: 28d4354fa34056369acb857aa7cc76ac - -Vehicle.Powertrain.CombustionEngine.MaxPower: - datatype: uint16 - default: 0 - description: Peak power, in kilowatts, that engine can generate. - type: attribute - unit: kW - uuid: 81fbdd5e90f557a38b96578a38dc137d - -Vehicle.Powertrain.CombustionEngine.MaxTorque: - datatype: uint16 - default: 0 - description: Peak torque, in newton meter, that the engine can generate. - type: attribute - unit: Nm - uuid: 471cd478c1e8597f8e97c85b4e4ebe26 - -Vehicle.Powertrain.CombustionEngine.NumberOfCylinders: - datatype: uint16 - description: Number of cylinders. - type: attribute - uuid: b2cd342c218257e88d214cdb511df82b - -Vehicle.Powertrain.CombustionEngine.NumberOfValvesPerCylinder: - datatype: uint16 - description: Number of valves per cylinder. - type: attribute - uuid: 44633204726e561ca21beff31f3fef80 - -Vehicle.Powertrain.CombustionEngine.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 - uuid: 94303734c68c5353a02625f652103918 - -Vehicle.Powertrain.CombustionEngine.Power: - datatype: uint16 - description: Current engine power output. Shall be reported as 0 during engine breaking. - type: sensor - unit: kW - uuid: 20e8b5d2187758c2848ed421248c180d - -Vehicle.Powertrain.CombustionEngine.Speed: - datatype: uint16 - description: Engine speed measured as rotations per minute. - type: sensor - unit: rpm - uuid: 557ce24c5a4d51cc825059c948ac9e29 - -Vehicle.Powertrain.CombustionEngine.StrokeLength: - datatype: float - description: Stroke length in millimetres. - type: attribute - unit: mm - uuid: 1bdfdab7904d51ed93e101b84ea54ddf - -Vehicle.Powertrain.CombustionEngine.TPS: - datatype: uint8 - description: Current throttle position. - max: 100 - type: sensor - unit: percent - uuid: 1ddb77860de558b4876ffb399a442bda - -Vehicle.Powertrain.CombustionEngine.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 - uuid: b81f504bdb57513299ae6e9402ec7bcd - -Vehicle.Powertrain.ElectricMotor: - description: Electric Motor specific data. - type: branch - uuid: 1ade64f6b0d05f6c9340e7a667555ae2 - -Vehicle.Powertrain.ElectricMotor.CoolantTemperature: - datatype: int16 - description: Motor coolant temperature (if applicable). - type: sensor - unit: celsius - uuid: 3c5ea8c7700956518f2ae7a2a0f34f1c - -Vehicle.Powertrain.ElectricMotor.EngineCode: - datatype: string - description: Engine code designation, as specified by vehicle manufacturer. - type: attribute - uuid: e4102a5142ed501495e5edafd3d36dfb - -Vehicle.Powertrain.ElectricMotor.MaxPower: - datatype: uint16 - default: 0 - description: Peak power, in kilowatts, that motor(s) can generate. - type: attribute - unit: kW - uuid: 825ec7911ee958abb199b9f7903df3a6 - -Vehicle.Powertrain.ElectricMotor.MaxRegenPower: - datatype: uint16 - default: 0 - description: Peak regen/brake power, in kilowatts, that motor(s) can generate. - type: attribute - unit: kW - uuid: 7f2cb2650ba95485b7156ffe76e27366 - -Vehicle.Powertrain.ElectricMotor.MaxRegenTorque: - datatype: uint16 - default: 0 - description: Peak regen/brake torque, in newton meter, that the motor(s) can generate. - type: attribute - unit: Nm - uuid: 0e5190c2517b55aa80fcb9bf698e02d6 - -Vehicle.Powertrain.ElectricMotor.MaxTorque: - datatype: uint16 - default: 0 - description: Peak power, in newton meter, that the motor(s) can generate. - type: attribute - unit: Nm - uuid: cf31eabcde5151f589e9b0f7a6090512 - -Vehicle.Powertrain.ElectricMotor.Power: - datatype: int16 - description: Current motor power output. Negative values indicate regen mode. - type: sensor - unit: kW - uuid: 46b86286fba059349a733fed9a0e3232 - -Vehicle.Powertrain.ElectricMotor.Speed: - datatype: int32 - description: Motor rotational speed measured as rotations per minute. Negative values indicate reverse driving mode. - type: sensor - unit: rpm - uuid: ca961aa6ca435095a89f9d404a5d849d - -Vehicle.Powertrain.ElectricMotor.Temperature: - datatype: int16 - description: Motor temperature. - type: sensor - unit: celsius - uuid: 1b7c15e5341052139995bfacea2c05b2 - -Vehicle.Powertrain.ElectricMotor.Torque: - datatype: int16 - description: Current motor torque. Negative values indicate regen mode. - type: sensor - unit: Nm - uuid: aceffe768ddf5b828fff0975349d2433 - -Vehicle.Powertrain.FuelSystem: - description: Fuel system data. - type: branch - uuid: dbc194a7f97d5a56bc8942c17c2db22e - -Vehicle.Powertrain.FuelSystem.AbsoluteLevel: - datatype: float - description: Current available fuel in the fuel tank expressed in liters. - type: sensor - unit: l - uuid: 00a1399655ee5d9188022f3d55d8f05e - -Vehicle.Powertrain.FuelSystem.AverageConsumption: - datatype: float - description: Average consumption in liters per 100 km. - min: 0 - type: sensor - unit: l/100km - uuid: e2252108125a54dcab34e1bad0fe8bdc - -Vehicle.Powertrain.FuelSystem.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 - uuid: adf0a40964ff556f92b10275ad918883 - -Vehicle.Powertrain.FuelSystem.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 - uuid: f0f72012f5e453c1935ff8c3a5aff696 - -Vehicle.Powertrain.FuelSystem.InstantConsumption: - datatype: float - description: Current consumption in liters per 100 km. - min: 0 - type: sensor - unit: l/100km - uuid: cf65767ec8ad56ffadfdccd831e4b562 - -Vehicle.Powertrain.FuelSystem.IsEngineStopStartEnabled: - datatype: boolean - description: Indicates whether eco start stop is currently enabled. - type: sensor - uuid: 176eed5bb0da582a9ee56f1c70e12075 - -Vehicle.Powertrain.FuelSystem.IsFuelLevelLow: - datatype: boolean - description: Indicates that the fuel level is low (e.g. <50km range). - type: sensor - uuid: 65f18ee3b04f5d4c8bb76083227dd9fe - -Vehicle.Powertrain.FuelSystem.Range: - datatype: uint32 - description: Remaining range in meters using only liquid fuel. - type: sensor - unit: m - uuid: c5a0dbe5e754553897f0aed0069af57a - -Vehicle.Powertrain.FuelSystem.RelativeLevel: - datatype: uint8 - description: Level in fuel tank as percent of capacity. 0 = empty. 100 = full. - max: 100 - min: 0 - type: sensor - unit: percent - uuid: e90e3daa1dcd5165a9d78b09e890fb22 - -Vehicle.Powertrain.FuelSystem.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 - uuid: 7fd3bf2ef0c650e69ff2037875ec59ee - -Vehicle.Powertrain.FuelSystem.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 - uuid: 80edc3002aa25097aba6455fe459fa6c - -Vehicle.Powertrain.FuelSystem.TankCapacity: - datatype: float - description: Capacity of the fuel tank in liters. - type: attribute - unit: l - uuid: 362643b866c55d5386fdbdf383464e90 - -Vehicle.Powertrain.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 - uuid: d740b02e2fb35c07bf88a6e5ebe2f6e4 - -Vehicle.Powertrain.Range: - datatype: uint32 - description: Remaining range in meters using all energy sources available in the vehicle. - type: sensor - unit: m - uuid: ea4b6de772d65d20b1fa611f997aa7b8 - -Vehicle.Powertrain.TractionBattery: - description: Battery Management data. - type: branch - uuid: 1a2515d1a8875d86873431194ade2b50 - -Vehicle.Powertrain.TractionBattery.AccumulatedChargedEnergy: - datatype: float - description: The accumulated energy delivered to the battery during charging over lifetime of the battery. - type: sensor - unit: kWh - uuid: 739d06021d795da0877bc0ef3c107de1 - -Vehicle.Powertrain.TractionBattery.AccumulatedChargedThroughput: - datatype: float - description: The accumulated charge throughput delivered to the battery during charging over lifetime of the battery. - type: sensor - unit: Ah - uuid: 6d038ccc313351fba3a9104c1158a207 - -Vehicle.Powertrain.TractionBattery.AccumulatedConsumedEnergy: - datatype: float - description: The accumulated energy leaving HV battery for propulsion and auxiliary loads over lifetime of the battery. - type: sensor - unit: kWh - uuid: b844cb96765f574d8d31edb09ccaef81 - -Vehicle.Powertrain.TractionBattery.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 - uuid: f3e2ca21f3b550288d494827c9a172dd - -Vehicle.Powertrain.TractionBattery.CellVoltage: - description: Voltage information for cells in the battery pack. - type: branch - uuid: 0070210b80125f1a8e9473f8875fe3d1 - -Vehicle.Powertrain.TractionBattery.CellVoltage.Max: - datatype: float - description: Current voltage of the battery cell with highest voltage. - type: sensor - unit: V - uuid: bde40aa6b442580db3c0d4c1efed8a09 - -Vehicle.Powertrain.TractionBattery.CellVoltage.Min: - datatype: float - description: Current voltage of the battery cell with lowest voltage. - type: sensor - unit: V - uuid: b868f28cc42a5ba28a127647cd16cb93 - -Vehicle.Powertrain.TractionBattery.Charging: - description: Properties related to battery charging. - type: branch - uuid: 49b9ef0c8b145a36afdf17d0cb44131b - -Vehicle.Powertrain.TractionBattery.Charging.ChargeCurrent: - description: Current charging current. - type: branch - uuid: 94739cf563735b438878ac0f85601f27 - -Vehicle.Powertrain.TractionBattery.Charging.ChargeCurrent.DC: - datatype: float - description: Current DC charging current at inlet. Negative if returning energy to grid. - type: sensor - unit: A - uuid: 44204d7ae6fd5f8e954d0670a739bdf2 - -Vehicle.Powertrain.TractionBattery.Charging.ChargeCurrent.Phase1: - datatype: float - description: Current AC charging current (rms) at inlet for Phase 1. Negative if returning energy to grid. - type: sensor - unit: A - uuid: 400dca50fcde52a6bb605d7e86f49776 - -Vehicle.Powertrain.TractionBattery.Charging.ChargeCurrent.Phase2: - datatype: float - description: Current AC charging current (rms) at inlet for Phase 2. Negative if returning energy to grid. - type: sensor - unit: A - uuid: 32cb24d1c495503a9087d6f55997cf57 - -Vehicle.Powertrain.TractionBattery.Charging.ChargeCurrent.Phase3: - datatype: float - description: Current AC charging current (rms) at inlet for Phase 3. Negative if returning energy to grid. - type: sensor - unit: A - uuid: 55fb7fb7ff4a5df9b6a3af435eac868e - -Vehicle.Powertrain.TractionBattery.Charging.ChargeLimit: - datatype: uint8 - default: 100 - description: Target charge limit (state of charge) for battery. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 62360a4ed1095275a7052d65112aaef1 - -Vehicle.Powertrain.TractionBattery.Charging.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 - uuid: 4c56357a6f1d586395215a9beeb26d91 - -Vehicle.Powertrain.TractionBattery.Charging.ChargePortFlap: - allowed: - - OPEN - - CLOSED - datatype: string - description: Status of the charge port cover, can potentially be controlled manually. - type: actuator - uuid: 71bdd2145bb55c3393df194bfc2e03e5 - -Vehicle.Powertrain.TractionBattery.Charging.ChargeRate: - datatype: float - description: Current charging rate, as in kilometers of range added per hour. - type: sensor - unit: km/h - uuid: a287cea3fdaa533180c8e349343a7851 - -Vehicle.Powertrain.TractionBattery.Charging.ChargeVoltage: - description: Current charging voltage, as measured at the charging inlet. - type: branch - uuid: 7170151d653b52c6bb5e75cb0a14d1c5 - -Vehicle.Powertrain.TractionBattery.Charging.ChargeVoltage.DC: - datatype: float - description: Current DC charging voltage at charging inlet. - type: sensor - unit: V - uuid: 701c21d1a4815b35ba061415789ec911 - -Vehicle.Powertrain.TractionBattery.Charging.ChargeVoltage.Phase1: - datatype: float - description: Current AC charging voltage (rms) at inlet for Phase 1. - type: sensor - unit: V - uuid: 15991c8316585816815d6f4fb6b06776 - -Vehicle.Powertrain.TractionBattery.Charging.ChargeVoltage.Phase2: - datatype: float - description: Current AC charging voltage (rms) at inlet for Phase 2. - type: sensor - unit: V - uuid: 6c0dcf98169d5a5190736a6dd81291a4 - -Vehicle.Powertrain.TractionBattery.Charging.ChargeVoltage.Phase3: - datatype: float - description: Current AC charging voltage (rms) at inlet for Phase 3. - type: sensor - unit: V - uuid: 1ab06b48231e54e2ac27e543508c84f0 - -Vehicle.Powertrain.TractionBattery.Charging.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 - uuid: d28244c9e3365899954bd3e38ef46bb9 - -Vehicle.Powertrain.TractionBattery.Charging.IsChargingCableConnected: - datatype: boolean - description: Indicates if a charging cable is physically connected to the vehicle or not. - type: sensor - uuid: a1c8e2f662b95a54a9933a1b163fff84 - -Vehicle.Powertrain.TractionBattery.Charging.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 - uuid: 7fa81693f3b8587f8d71e7b1619c8e21 - -Vehicle.Powertrain.TractionBattery.Charging.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 - uuid: 534d884fb36652688535543b52419529 - -Vehicle.Powertrain.TractionBattery.Charging.MaximumChargingCurrent: - description: Maximum charging current that can be accepted by the system, as measured at the charging inlet. - type: branch - uuid: e3f2e57e7a395d9ca9931d429e540a34 - -Vehicle.Powertrain.TractionBattery.Charging.MaximumChargingCurrent.DC: - datatype: float - description: Maximum DC charging current at inlet that can be accepted by the system. - type: sensor - unit: A - uuid: 5a70acfd3c8959898b43738151ab36e1 - -Vehicle.Powertrain.TractionBattery.Charging.MaximumChargingCurrent.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 - uuid: e3c1034e89cc55968ff51b990906db43 - -Vehicle.Powertrain.TractionBattery.Charging.MaximumChargingCurrent.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 - uuid: ab3514bc982e54f2b98698fb6c752368 - -Vehicle.Powertrain.TractionBattery.Charging.MaximumChargingCurrent.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 - uuid: 47dd5e99c30d562e9e2e1c58007846b6 - -Vehicle.Powertrain.TractionBattery.Charging.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 - uuid: 1e4be3280b265873945531f6f6d0ec6b - -Vehicle.Powertrain.TractionBattery.Charging.PowerLoss: - datatype: float - description: Electrical energy lost by power dissipation to heat inside the AC/DC converter. - type: sensor - unit: W - uuid: 88f40bbeb80b5dfb97ceba13269665c5 - -Vehicle.Powertrain.TractionBattery.Charging.StartStopCharging: - allowed: - - START - - STOP - datatype: string - description: Start or stop the charging process. - type: actuator - uuid: 80506d3e9a2557c2b52f74a50d89593f - -Vehicle.Powertrain.TractionBattery.Charging.Temperature: - datatype: float - description: Current temperature of AC/DC converter converting grid voltage to battery voltage. - type: sensor - unit: celsius - uuid: c3c0ef3a41db5df1bab659803adbc7ba - -Vehicle.Powertrain.TractionBattery.Charging.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 - uuid: c6439c2e068652b08383b9654e2e784a - -Vehicle.Powertrain.TractionBattery.Charging.Timer: - description: Properties related to timing of battery charging sessions. - type: branch - uuid: cd5b57ada627510e83f90832efed9d5a - -Vehicle.Powertrain.TractionBattery.Charging.Timer.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 - uuid: b09fb52261735977af275dda1904a7a1 - -Vehicle.Powertrain.TractionBattery.Charging.Timer.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 - uuid: c08dcaeda02b5e26aacd7e2542f0fc90 - -Vehicle.Powertrain.TractionBattery.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 - uuid: 7a1488e0c83f50a6b69d8ea85c5bb592 - -Vehicle.Powertrain.TractionBattery.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 - uuid: 8859e1b0386a5eda880a9c30cd0dfa8e - -Vehicle.Powertrain.TractionBattery.CurrentVoltage: - datatype: float - description: Current Voltage of the battery. - type: sensor - unit: V - uuid: 7b54ea22ee7d5f559da552aefcc07222 - -Vehicle.Powertrain.TractionBattery.DCDC: - 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 - uuid: 01f4943795b55cbd8f94e1bca137fc0a - -Vehicle.Powertrain.TractionBattery.DCDC.PowerLoss: - datatype: float - description: Electrical energy lost by power dissipation to heat inside DC/DC converter. - type: sensor - unit: W - uuid: f29e37087cdf57ca998188c7b945a77b - -Vehicle.Powertrain.TractionBattery.DCDC.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 - uuid: 4e587c3af2aa5fbb9205e42a64fc8d77 - -Vehicle.Powertrain.TractionBattery.GrossCapacity: - datatype: uint16 - description: Gross capacity of the battery. - type: attribute - unit: kWh - uuid: 5460530488435dc8bfa1298bf47a993d - -Vehicle.Powertrain.TractionBattery.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 - uuid: c8279874660c55b38c7ac64a8503a519 - -Vehicle.Powertrain.TractionBattery.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 - uuid: dd38d1c7ee12530aac03f49ad01d5c04 - -Vehicle.Powertrain.TractionBattery.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 - uuid: e30ef59fc2a25f6b8990248e19a5cdf9 - -Vehicle.Powertrain.TractionBattery.MaxVoltage: - datatype: uint16 - description: Max allowed voltage of the battery, e.g. during charging. - type: attribute - unit: V - uuid: a81264a0ef0c55d288671cfc62c4add5 - -Vehicle.Powertrain.TractionBattery.NetCapacity: - datatype: uint16 - description: Total net capacity of the battery considering aging. - type: sensor - unit: kWh - uuid: 9c68fe42cb81501eb6349f8c9b0b6899 - -Vehicle.Powertrain.TractionBattery.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 - uuid: 3eccae5633185b998d5bdb6ea33cd926 - -Vehicle.Powertrain.TractionBattery.PowerLoss: - datatype: float - description: Electrical energy lost by power dissipation to heat inside the battery. - type: sensor - unit: W - uuid: 880082aafe025cb3a5776b623f9a48b5 - -Vehicle.Powertrain.TractionBattery.ProductionDate: - datatype: string - description: Production date of battery in ISO8601 format, e.g. YYYY-MM-DD. - type: attribute - uuid: c9509ba4d76c56d9a8c1d6e2280ae02f - -Vehicle.Powertrain.TractionBattery.Range: - datatype: uint32 - description: Remaining range in meters using only battery. - type: sensor - unit: m - uuid: c0376a425e5d578d9d86ae0dc2ad9778 - -Vehicle.Powertrain.TractionBattery.StateOfCharge: - description: Information on the state of charge of the vehicle's high voltage battery. - type: branch - uuid: 26bae2ce7c4d5e2a951915ef2f5d8b7d - -Vehicle.Powertrain.TractionBattery.StateOfCharge.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 - uuid: 2e647ca3a1ff5e52af137aab240642da - -Vehicle.Powertrain.TractionBattery.StateOfCharge.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 - uuid: 435ef8dbe4425450ae1ff6215fc9e40b - -Vehicle.Powertrain.TractionBattery.StateOfCharge.Displayed: - datatype: float - description: State of charge displayed to the customer. - max: 100.0 - min: 0 - type: sensor - unit: percent - uuid: 1bfcc228293b5512aafe2508ab0500d2 - -Vehicle.Powertrain.TractionBattery.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 - uuid: 4d982c47f3245048bcfec1190973a3ed - -Vehicle.Powertrain.TractionBattery.Temperature: - description: Temperature Information for the battery pack. - type: branch - uuid: 1cfbcf8c152959dcb3eb2c54fc42e623 - -Vehicle.Powertrain.TractionBattery.Temperature.Average: - datatype: float - description: Current average temperature of the battery cells. - type: sensor - unit: celsius - uuid: ae28e502137f56b9a037ed9b32bc04e1 - -Vehicle.Powertrain.TractionBattery.Temperature.Max: - datatype: float - description: Current maximum temperature of the battery cells, i.e. temperature of the hottest cell. - type: sensor - unit: celsius - uuid: 07aa7c8ba1d355398d7469c2b337152a - -Vehicle.Powertrain.TractionBattery.Temperature.Min: - datatype: float - description: Current minimum temperature of the battery cells, i.e. temperature of the coldest cell. - type: sensor - unit: celsius - uuid: 4e3f630fefa7558fa302b175bc7eb5c7 - -Vehicle.Powertrain.Transmission: - description: Transmission-specific data, stopping at the drive shafts. - type: branch - uuid: 6b71e284b63a527caa6296a66e9fdd0c - -Vehicle.Powertrain.Transmission.ClutchEngagement: - datatype: float - description: Clutch engagement. 0% = Clutch fully disengaged. 100% = Clutch fully engaged. - max: 100 - min: 0 - type: actuator - unit: percent - uuid: 2890bd4a2b6a56c19b62d7bd95151fc6 - -Vehicle.Powertrain.Transmission.ClutchWear: - datatype: uint8 - description: Clutch wear as a percent. 0 = no wear. 100 = worn. - max: 100 - type: sensor - unit: percent - uuid: c113405ad165571a9d53ae4cf55dc929 - -Vehicle.Powertrain.Transmission.CurrentGear: - datatype: int8 - description: The current gear. 0=Neutral, 1/2/..=Forward, -1/-2/..=Reverse. - type: sensor - uuid: cd0ba1d772565e16bff46cbd5c9361da - -Vehicle.Powertrain.Transmission.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 - uuid: 5149afe37fbd5c24847b5820821abc02 - -Vehicle.Powertrain.Transmission.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 - uuid: 197c939bd1405613b80179becec6db83 - -Vehicle.Powertrain.Transmission.DriveType: - allowed: - - UNKNOWN - - FORWARD_WHEEL_DRIVE - - REAR_WHEEL_DRIVE - - ALL_WHEEL_DRIVE - datatype: string - default: UNKNOWN - description: Drive type. - type: attribute - uuid: 0e480b76fb2d5f8bb08fb586f90ee6ae - -Vehicle.Powertrain.Transmission.GearChangeMode: - allowed: - - MANUAL - - AUTOMATIC - datatype: string - description: Is the gearbox in automatic or manual (paddle) mode. - type: actuator - uuid: ff3c69378c2f598286e51f7dac13adaa - -Vehicle.Powertrain.Transmission.GearCount: - datatype: int8 - default: 0 - description: Number of forward gears in the transmission. -1 = CVT. - type: attribute - uuid: 84293f40d3ed57f1a08992d97b1a9ccd - -Vehicle.Powertrain.Transmission.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 - uuid: 6660cf1d88d15430b1e7c8908a7b769b - -Vehicle.Powertrain.Transmission.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 - uuid: 63ba7593926b574ebbe4f90b28557e78 - -Vehicle.Powertrain.Transmission.IsParkLockEngaged: - datatype: boolean - description: Is the transmission park lock engaged or not. False = Disengaged. True = Engaged. - type: actuator - uuid: 1578da3f925e54ac9df978abd0195408 - -Vehicle.Powertrain.Transmission.PerformanceMode: - allowed: - - NORMAL - - SPORT - - ECONOMY - - SNOW - - RAIN - datatype: string - description: Current gearbox performance mode. - type: actuator - uuid: 6b5cfd85cb595e559503ccf993be04dd - -Vehicle.Powertrain.Transmission.SelectedGear: - datatype: int8 - description: The selected gear. 0=Neutral, 1/2/..=Forward, -1/-2/..=Reverse, 126=Park, 127=Drive. - type: actuator - uuid: 490fd99b9d5f562eb180c19e8cef5e12 - -Vehicle.Powertrain.Transmission.Temperature: - datatype: int16 - description: The current gearbox temperature. - type: sensor - unit: celsius - uuid: 4f5e48c3511b5e1abff11aa7ec62dd18 - -Vehicle.Powertrain.Transmission.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 - uuid: d3bcaaf973d3512287817049db9bd677 - -Vehicle.Powertrain.Transmission.TravelledDistance: - datatype: float - description: Odometer reading, total distance travelled during the lifetime of the transmission. - type: sensor - unit: km - uuid: b9dd66f20c7f5b12a046766b94dc20c1 - -Vehicle.Powertrain.Transmission.Type: - allowed: - - UNKNOWN - - SEQUENTIAL - - H - - AUTOMATIC - - DSG - - CVT - datatype: string - default: UNKNOWN - description: Transmission type. - type: attribute - uuid: f83b9e5464d85a0288fcb32c164d3c63 - -Vehicle.Powertrain.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 - uuid: 2a000da4204658a4a6e3ecd5176bdfba - -Vehicle.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 - uuid: 97dc98269a19591d9efa455a8d943c16 - -Vehicle.Service: - description: Service data. - type: branch - uuid: b6463772705b56a7a993e23601bd3d47 - -Vehicle.Service.DistanceToService: - datatype: float - description: Remaining distance to service (of any kind). Negative values indicate service overdue. - type: sensor - unit: km - uuid: 6f4347ce149759819572c8c3a17e8d93 - -Vehicle.Service.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 - uuid: 3e28f85ccccd5702b9adbe9a761ea1b4 - -Vehicle.Service.TimeToService: - datatype: int32 - description: Remaining time to service (of any kind). Negative values indicate service overdue. - type: sensor - unit: s - uuid: c968be91a5685fa9ae30b84a0f91934e - -Vehicle.Speed: - datatype: float - description: Vehicle speed. - type: sensor - unit: km/h - uuid: efe50798638d55fab18ab7d43cc490e9 - -Vehicle.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 - uuid: 3790b5f4513c5a3d90a0503a965bbbe0 - -Vehicle.Trailer: - description: Trailer signals. - type: branch - uuid: 66206ee5c25a5817bef214c0c8ae8013 - -Vehicle.Trailer.IsConnected: - datatype: boolean - description: Signal indicating if trailer is connected or not. - type: sensor - uuid: 77f28ed03c125ac9a19d22e9436b0ec4 - -Vehicle.TraveledDistance: - datatype: float - description: Odometer reading, total distance traveled during the lifetime of the vehicle. - type: sensor - unit: km - uuid: 32c3c3585f105d8aa5566ef5a038a741 - -Vehicle.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 - uuid: cfc6efd2793152e487f9fe3f4e03fd5d - -Vehicle.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 - uuid: 84b9558ad33555389791b57d505f27a8 - -Vehicle.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 - uuid: 81f51ebfe29c591190171d7b96e1c948 - -Vehicle.VehicleIdentification: - description: Attributes that identify a vehicle. - type: branch - uuid: c33861c3e9125208b05f23fe922bf08e - -Vehicle.VehicleIdentification.AcrissCode: - datatype: string - description: The ACRISS Car Classification Code is a code used by many car rental companies. - type: attribute - uuid: 115a821e8e0b57f08e4b9e61e85d7156 - -Vehicle.VehicleIdentification.BodyType: - datatype: string - description: Indicates the design and body style of the vehicle (e.g. station wagon, hatchback, etc.). - type: attribute - uuid: e6d5c71ecec95d68b0b59bb7e93af759 - -Vehicle.VehicleIdentification.Brand: - datatype: string - description: Vehicle brand or manufacturer. - type: attribute - uuid: 19fd645ff5385767bcdbf5dd4313483f - -Vehicle.VehicleIdentification.DateVehicleFirstRegistered: - datatype: string - description: The date in ISO 8601 format of the first registration of the vehicle with the respective public authorities. - type: attribute - uuid: 046f47acf62e50bd863d6568d73743d7 - -Vehicle.VehicleIdentification.KnownVehicleDamages: - datatype: string - description: A textual description of known damages, both repaired and unrepaired. - type: attribute - uuid: e87f352cddb15e94b340506b17207586 - -Vehicle.VehicleIdentification.MeetsEmissionStandard: - datatype: string - description: Indicates that the vehicle meets the respective emission standard. - type: attribute - uuid: d75dedbfadca54d8b6c7261c37ad5d83 - -Vehicle.VehicleIdentification.Model: - datatype: string - description: Vehicle model. - type: attribute - uuid: dd3d3b72e6a85b3695ba25f829255403 - -Vehicle.VehicleIdentification.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 - uuid: d9ecc64b0c995595967e05009d6fc1b9 - -Vehicle.VehicleIdentification.ProductionDate: - datatype: string - description: The date in ISO 8601 format of production of the item, e.g. vehicle. - type: attribute - uuid: 5683877c4bac504d915b268c9476c190 - -Vehicle.VehicleIdentification.PurchaseDate: - datatype: string - description: The date in ISO 8601 format of the item e.g. vehicle was purchased by the current owner. - type: attribute - uuid: 31302f8b57e85c4197afda3e3201fce8 - -Vehicle.VehicleIdentification.VIN: - datatype: string - description: 17-character Vehicle Identification Number (VIN) as defined by ISO 3779. - type: attribute - uuid: 6f0b6fa8c34f589baa92e565bc9df5bd - -Vehicle.VehicleIdentification.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 - uuid: 2526c7ba4c8458c78000a9e5f2fe89d5 - -Vehicle.VehicleIdentification.VehicleInteriorColor: - datatype: string - description: The color or color combination of the interior of the vehicle. - type: attribute - uuid: 67a8b069b8bf573993d51959c24f04e2 - -Vehicle.VehicleIdentification.VehicleInteriorType: - datatype: string - description: The type or material of the interior of the vehicle (e.g. synthetic fabric, leather, wood, etc.). - type: attribute - uuid: 4c4eed302b2e51daa9b6f5f398987a77 - -Vehicle.VehicleIdentification.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 - uuid: c71b63f83dea536bac58e62bbe537f11 - -Vehicle.VehicleIdentification.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 - uuid: 7ae5db0e0482555686b9be71dd8a0c38 - -Vehicle.VehicleIdentification.VehicleSpecialUsage: - datatype: string - description: Indicates whether the vehicle has been used for special purposes, like commercial rental, driving school. - type: attribute - uuid: 7e6e8a48f54a5549a8f6af8f1dc5eb8d - -Vehicle.VehicleIdentification.WMI: - datatype: string - description: 3-character World Manufacturer Identification (WMI) as defined by ISO 3780. - type: attribute - uuid: e7c86defbcd554a79f90ba85de58e133 - -Vehicle.VehicleIdentification.Year: - datatype: uint16 - description: Model year of the vehicle. - type: attribute - uuid: 9a76b0aca8e45f6fb33dbaf5b976b8b5 - -Vehicle.VersionVSS: - description: Supported Version of VSS. - type: branch - uuid: 9a687e56f1305eedb20f6a021ea58f48 - -Vehicle.VersionVSS.Label: - datatype: string - description: Label to further describe the version. - type: attribute - uuid: 7c92cd50d24b5662922b27cb9a327e53 - -Vehicle.VersionVSS.Major: - datatype: uint32 - default: 4 - description: Supported Version of VSS - Major version. - type: attribute - uuid: 5edf1a338c975cbb84d4ce3cfe1aa4b4 - -Vehicle.VersionVSS.Minor: - datatype: uint32 - default: 0 - description: Supported Version of VSS - Minor version. - type: attribute - uuid: 6e70a598dbc7534c96c58c18e9888cfd - -Vehicle.VersionVSS.Patch: - datatype: uint32 - default: 0 - description: Supported Version of VSS - Patch version. - type: attribute - uuid: 69858f224af459338b9bfbff436dda45 - -Vehicle.Width: - datatype: uint16 - default: 0 - description: Overall vehicle width. - type: attribute - unit: mm - uuid: b4aabe144e3259adb1459a2e25fec9bd diff --git a/samples/src/main/java/com/example/sample/JavaActivity.java b/samples/src/main/java/com/example/sample/JavaActivity.java index 01acaf54..97022bb9 100644 --- a/samples/src/main/java/com/example/sample/JavaActivity.java +++ b/samples/src/main/java/com/example/sample/JavaActivity.java @@ -52,7 +52,7 @@ /** * @noinspection unused */ -//@VssDefinition(vssDefinitionPath = "vss_rel_4.0.yaml") // Commented out to prevent conflicts with the Kotlin activity +//@VssDefinition // Commented out to prevent conflicts with the Kotlin activity public class JavaActivity extends AppCompatActivity { private final DisconnectListener disconnectListener = () -> { diff --git a/samples/src/main/kotlin/com/example/sample/KotlinActivity.kt b/samples/src/main/kotlin/com/example/sample/KotlinActivity.kt index 297e08cf..cc8003f3 100644 --- a/samples/src/main/kotlin/com/example/sample/KotlinActivity.kt +++ b/samples/src/main/kotlin/com/example/sample/KotlinActivity.kt @@ -41,7 +41,7 @@ import org.eclipse.kuksa.vsscore.annotation.VssDefinition import java.io.IOException @Suppress("UNUSED_VARIABLE", "SwallowedException") -@VssDefinition("vss_rel_4.0.yaml") +@VssDefinition class KotlinActivity : AppCompatActivity() { private var disconnectListener = DisconnectListener { diff --git a/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt b/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt index d88c73bb..d1661144 100644 --- a/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt +++ b/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt @@ -21,9 +21,8 @@ package org.eclipse.kuksa.vsscore.annotation /** * Add this annotation to any class to trigger the model generation (Kotlin Symbol Processing) for the given - * Vehicle Signal Specification definition file. Only .yaml files are currently supported. Use the - * "VSS Processor Plugin" to provide the Symbol Processor with the necessary definition file(s). Then provide the file - * name via the [vssDefinitionName] parameter (The path can be ignored). + * Vehicle Signal Specification definition file by the "vss-processor-plugin". Only .yaml files are currently supported. + * Use the "VSS Processor Plugin" to provide the Symbol Processor with the necessary definition file(s). * * ### Plugin Example * @@ -32,17 +31,17 @@ package org.eclipse.kuksa.vsscore.annotation * id("org.eclipse.kuksa.vss-processor-plugin") version "" * } * - * // Optional - See plugin documentation. Files inside the main assets are used automatically. + * // Optional - See plugin documentation. Files inside the "$rootDir/vss" folder are used automatically. * vssProcessor { - * searchPath = "$projectDir/src/main/assets" - * fileName = "vss_rel_4.0.yaml" + * searchPath = "$rootDir/vss" * } * ``` * * ### Annotation Example * * ``` - * @VssDefinition("vss_rel_4.0.yaml") + * @VssDefinition + * class Activity * ``` * * ### Important @@ -55,4 +54,4 @@ package org.eclipse.kuksa.vsscore.annotation */ @Target(AnnotationTarget.CLASS) @Retention(AnnotationRetention.SOURCE) -annotation class VssDefinition(val vssDefinitionName: String) +annotation class VssDefinition diff --git a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt index 3055957e..3e02eecb 100644 --- a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt +++ b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt @@ -21,14 +21,21 @@ package org.eclipse.kuksa.vssprocessor.plugin import org.gradle.api.DefaultTask import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.api.file.RegularFile +import org.gradle.api.file.DirectoryProperty +import org.gradle.api.file.FileType import org.gradle.api.model.ObjectFactory -import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property -import org.gradle.api.tasks.InputFiles +import org.gradle.api.tasks.InputDirectory +import org.gradle.api.tasks.OutputDirectory +import org.gradle.api.tasks.PathSensitive +import org.gradle.api.tasks.PathSensitivity import org.gradle.api.tasks.TaskAction +import org.gradle.kotlin.dsl.assign import org.gradle.kotlin.dsl.create import org.gradle.kotlin.dsl.register +import org.gradle.work.ChangeType +import org.gradle.work.Incremental +import org.gradle.work.InputChanges import java.io.File import javax.inject.Inject @@ -36,16 +43,10 @@ open class VssProcessorPluginExtension @Inject internal constructor(objectFactory: ObjectFactory) { /** - * The default search path is the main assets folder. The defined folder will be crawled for all compatible + * The default search path is the $rootProject/vss folder. The defined folder will be crawled for all compatible * extension types by this plugin. */ val searchPath: Property = objectFactory.property(String::class.java).convention("") - - /** - * If no file name is provided then all compatible files inside the [searchPath] will be copied. Otherwise only - * the defined file will be used if available. - */ - val fileName: Property = objectFactory.property(String::class.java).convention("") } private val fileSeparator = File.separator @@ -53,86 +54,72 @@ private val fileSeparator = File.separator /** * This Plugin searches for compatible specification files and copies them into an input folder for the * KSP VSS Processor. This is necessary because the Symbol Processor does not have access to the android assets folder. - * The default search path is the main assets folder. */ class VssProcessorPlugin : Plugin { override fun apply(project: Project) { val extension = project.extensions.create(EXTENSION_NAME) - val mainAssetsDirectory = "${project.projectDir}${fileSeparator}$mainAssetsDirectory" - val searchDirectory = extension.searchPath.get().ifEmpty { mainAssetsDirectory } + // The extension variables are only available after the project has been evaluated + project.afterEvaluate { + val buildDirPath = buildDir.absolutePath + val vssDirectory = "${rootDir}${fileSeparator}$VSS_FOLDER_NAME" - val compatibleFiles = findFiles( - directory = searchDirectory, - fileName = extension.fileName.get(), - validExtensions = compatibleExtensions, - ) + val provideVssDefinitionTask = + project.tasks.register(PROVIDE_VSS_DEFINITION_TASK) { + val searchDirectory = extension.searchPath.get().ifEmpty { vssDirectory } + val vssDefinitionBuildFile = File( + "$buildDirPath$fileSeparator" + + "$KSP_INPUT_BUILD_DIRECTORY$fileSeparator", + ) - val provideVssDefinitionTask = project.tasks.register(PROVIDE_VSS_DEFINITION_TASK) { - compatibleFiles.forEach { definitionFile -> - val regularFile = RegularFile { definitionFile } - vssDefinitionFiles.add(regularFile) - } - } + println("Searching directory: $searchDirectory for vss definitions") - project.tasks.getByName("preBuild").finalizedBy( - provideVssDefinitionTask.get(), - ) - } + inputDir = file(searchDirectory) + outputDir = vssDefinitionBuildFile + } - @Suppress("SameParameterValue") - private fun findFiles( - directory: String, - fileName: String = "", - validExtensions: Collection, - ): Sequence { - val mainAssetsFolder = File(directory) - - return mainAssetsFolder - .walk() - .filter { validExtensions.contains(it.extension) } - .filter { file -> - if (fileName.isEmpty()) return@filter true - - file.name == fileName - } + tasks.getByName("preBuild").finalizedBy( + provideVssDefinitionTask.get(), + ) + } } companion object { + private const val KSP_INPUT_BUILD_DIRECTORY = "kspInput" private const val EXTENSION_NAME = "vssProcessor" private const val PROVIDE_VSS_DEFINITION_TASK = "ProvideVssDefinition" - - private val compatibleExtensions = setOf("yaml") - private val mainAssetsDirectory = "src$fileSeparator" + "main$fileSeparator" + "assets" + private const val VSS_FOLDER_NAME = "vss" } } /** - * This task takes a collection of files + * This task takes an input directory [inputDir] which should contain all available VSS definition files and an + * output directory [outputDir] where all files are copied to so the VSSProcessor can work with them. */ -abstract class ProvideVssDefinitionTask : DefaultTask() { - @get:InputFiles - abstract val vssDefinitionFiles: ListProperty +private abstract class ProvideVssDefinitionTask : DefaultTask() { + @get:Incremental + @get:PathSensitive(PathSensitivity.NAME_ONLY) + @get:InputDirectory + abstract val inputDir: DirectoryProperty + + @get:OutputDirectory + abstract val outputDir: DirectoryProperty @TaskAction - fun provideFile() { - val buildDirPath = project.buildDir.absolutePath - vssDefinitionFiles.get().forEach { file -> - val vssDefinitionInputFile = file.asFile - println("Searching for VSS file: ${vssDefinitionInputFile.absolutePath}") - val vssDefinitionBuildFile = File( - "$buildDirPath$fileSeparator" + - "$KSP_INPUT_BUILD_DIRECTORY$fileSeparator" + - vssDefinitionInputFile.name, - ) + fun provideFile(inputChanges: InputChanges) { + inputChanges.getFileChanges(inputDir).forEach { change -> + if (change.fileType == FileType.DIRECTORY) return@forEach - println("Found VSS input file: ${vssDefinitionInputFile.name}, copying to: $vssDefinitionBuildFile") + val targetFile = outputDir.file(change.normalizedPath).get().asFile + println("Found vss file change for: ${targetFile.name}, change: ${change.changeType}") - vssDefinitionInputFile.copyTo(vssDefinitionBuildFile, true) - } - } + when (change.changeType) { + ChangeType.ADDED, + ChangeType.MODIFIED, + -> change.file.copyTo(targetFile) - companion object { - private const val KSP_INPUT_BUILD_DIRECTORY = "kspInput" + else -> targetFile.delete() + } + } } } diff --git a/vss-processor/src/main/kotlin/org/eclipse/kuksa/vssprocessor/VssDefinitionProcessor.kt b/vss-processor/src/main/kotlin/org/eclipse/kuksa/vssprocessor/VssDefinitionProcessor.kt index 42ffd1e3..d8b566c8 100644 --- a/vss-processor/src/main/kotlin/org/eclipse/kuksa/vssprocessor/VssDefinitionProcessor.kt +++ b/vss-processor/src/main/kotlin/org/eclipse/kuksa/vssprocessor/VssDefinitionProcessor.kt @@ -22,7 +22,6 @@ package org.eclipse.kuksa.vssprocessor import com.google.devtools.ksp.KspExperimental -import com.google.devtools.ksp.getAnnotationsByType import com.google.devtools.ksp.processing.CodeGenerator import com.google.devtools.ksp.processing.Dependencies import com.google.devtools.ksp.processing.KSPLogger @@ -69,7 +68,6 @@ class VssDefinitionProcessor( } private inner class VssDefinitionVisitor : KSVisitorVoid() { - @OptIn(KspExperimental::class) override fun visitClassDeclaration(classDeclaration: KSClassDeclaration, data: Unit) { val containingFile = classDeclaration.containingFile ?: return @@ -81,30 +79,34 @@ class VssDefinitionProcessor( annotatedProcessorFileName, ) - val vssDefinition = classDeclaration.getAnnotationsByType(VssDefinition::class).firstOrNull() ?: return - val vssDefinitionPath = vssDefinition.vssDefinitionName - - val definitionFile = loadAssetFile(vssDefinitionPath) - if (definitionFile == null || !definitionFile.exists()) { - logger.error("No VSS definition file was found! Is the plugin correctly configured?") + val definitionFiles = loadVssDefinitionFiles() + if (definitionFiles.isEmpty()) { + logger.error("No VSS definition files were found! Is the plugin correctly configured?") return } - val simpleSpecificationElements = yamlParser.parseSpecifications(definitionFile) - val vssPathToSpecificationElement = simpleSpecificationElements.associateBy({ VssPath(it.vssPath) }, { it }) + definitionFiles.forEach { definitionFile -> + val simpleSpecificationElements = yamlParser.parseSpecifications(definitionFile) + val vssPathToSpecificationElement = simpleSpecificationElements + .associateBy({ VssPath(it.vssPath) }, { it }) - generateModelFiles(vssPathToSpecificationElement) + logger.info("Generating models for definition file: ${definitionFile.name}") + generateModelFiles(vssPathToSpecificationElement) + } } // Uses the default file path for generated files (from the code generator) and searches for the given file. - private fun loadAssetFile(fileName: String): File? { - val generatedFile = codeGenerator.generatedFile.firstOrNull() ?: return null + private fun loadVssDefinitionFiles(): Collection { + val generatedFile = codeGenerator.generatedFile.firstOrNull() ?: return emptySet() val generationPath = generatedFile.absolutePath val buildPath = generationPath.replaceAfterLast("$BUILD_FOLDER_NAME$fileSeparator", "") val kspInputFilePath = "$buildPath$fileSeparator$KSP_INPUT_BUILD_DIRECTORY" val kspInputFolder = File(kspInputFilePath) - return kspInputFolder.walk().firstOrNull { it.name == fileName } + return kspInputFolder + .walk() + .filter { it.isFile } + .toSet() } private fun generateModelFiles(vssPathToSpecification: Map) { diff --git a/app/src/main/assets/vss_rel_4.0.yaml b/vss/vss_rel_4.0.yaml similarity index 100% rename from app/src/main/assets/vss_rel_4.0.yaml rename to vss/vss_rel_4.0.yaml From eef025cbf5d7bc25b87fa0bd03d7b95ddb9eef90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Fri, 9 Feb 2024 12:22:48 +0100 Subject: [PATCH 10/29] chore: Enable Gradle configuration cache --- gradle.properties | 1 + .../eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index 7f31fd68..14bfa477 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,3 +9,4 @@ kotlin.daemon.jvmargs=-Xmx2048m # When using compose + ksp the incremental compiler should be disabled: https://issuetracker.google.com/issues/207185051 ksp.incremental=false +org.gradle.configuration-cache=true diff --git a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt index 3e02eecb..94fb061c 100644 --- a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt +++ b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt @@ -30,9 +30,7 @@ import org.gradle.api.tasks.OutputDirectory import org.gradle.api.tasks.PathSensitive import org.gradle.api.tasks.PathSensitivity import org.gradle.api.tasks.TaskAction -import org.gradle.kotlin.dsl.assign -import org.gradle.kotlin.dsl.create -import org.gradle.kotlin.dsl.register +import org.gradle.kotlin.dsl.* import org.gradle.work.ChangeType import org.gradle.work.Incremental import org.gradle.work.InputChanges From f08a5a9c5828db2933c41e341e98135d026da059 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Tue, 13 Feb 2024 15:52:24 +0100 Subject: [PATCH 11/29] chore: Add support for config caches --- .github/workflows/deploy-snapshot.yaml | 2 +- build.gradle.kts | 30 +++++++++------- settings.gradle.kts | 1 - vss-core/build.gradle.kts | 6 +++- .../vssprocessor/plugin/VssProcessorPlugin.kt | 35 ++++++++++++------- vss-processor/build.gradle.kts | 4 +++ 6 files changed, 49 insertions(+), 29 deletions(-) diff --git a/.github/workflows/deploy-snapshot.yaml b/.github/workflows/deploy-snapshot.yaml index e2288bb1..89c05d83 100644 --- a/.github/workflows/deploy-snapshot.yaml +++ b/.github/workflows/deploy-snapshot.yaml @@ -5,7 +5,7 @@ concurrency: snapshot on: push: branches: - - feature-45-work + - main jobs: deployment: diff --git a/build.gradle.kts b/build.gradle.kts index dee8ec5a..0b87f332 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -17,8 +17,13 @@ * */ +import org.eclipse.kuksa.version.VERSION_FILE_DEFAULT_NAME +import org.eclipse.kuksa.version.VERSION_FILE_DEFAULT_PATH_KEY import org.jetbrains.kotlin.incremental.createDirectory +val versionDefaultPath = "$rootDir/$VERSION_FILE_DEFAULT_NAME" +rootProject.ext[VERSION_FILE_DEFAULT_PATH_KEY] = versionDefaultPath + plugins { base detekt @@ -56,9 +61,19 @@ tasks.register("mergeDashFiles") { }, ) + val ossFolder = File("$rootDir/build/oss/all") + ossFolder.createDirectory() + + val ossDependenciesFile = File("$ossFolder/all-dependencies.txt") + if (ossDependenciesFile.exists()) { + ossDependenciesFile.delete() + } + ossDependenciesFile.createNewFile() + + val ossFiles = files("build/oss") doLast { val sortedLinesSet = sortedSetOf() - files("build/oss").asFileTree.forEach { file -> + ossFiles.asFileTree.forEach { file -> if (file.name != "dependencies.txt") return@forEach file.useLines { @@ -66,16 +81,7 @@ tasks.register("mergeDashFiles") { } } - val folder = File("$rootDir/build/oss/all") - folder.createDirectory() - - val file = File("$folder/all-dependencies.txt") - if (file.exists()) { - file.delete() - } - file.createNewFile() - - val bufferedWriter = file.bufferedWriter() + val bufferedWriter = ossDependenciesFile.bufferedWriter() bufferedWriter.use { writer -> sortedLinesSet.forEach { line -> writer.write(line + System.lineSeparator()) @@ -90,8 +96,6 @@ tasks.register("mergeDashFiles") { // We have to manually define the task names because the task() method of the included build throws an error for any // unknown task. val dependentCompositeTasks = setOf( - "setSnapshotVersion", - "setReleaseVersion", "publishToMavenLocal", "publishAllPublicationsToOSSRHReleaseRepository", ) diff --git a/settings.gradle.kts b/settings.gradle.kts index d0d432c5..da43b589 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -28,7 +28,6 @@ pluginManagement { plugins { id("com.google.devtools.ksp") version "1.9.0-1.0.11" - id("org.eclipse.kuksa.vss-processor-plugin") // Always take the newest version since it's locally included kotlin("jvm") version "1.9.0-1.0.11" kotlin("plugin.serialization") version "1.9.0" } diff --git a/vss-core/build.gradle.kts b/vss-core/build.gradle.kts index 8896e09a..2d68b494 100644 --- a/vss-core/build.gradle.kts +++ b/vss-core/build.gradle.kts @@ -56,10 +56,14 @@ publish { tasks.register("javadocJar", Jar::class) { dependsOn("dokkaHtml") - from("$buildDir/dokka/html") + from("${layout.buildDirectory}/dokka/html") archiveClassifier.set("javadoc") } +tasks.withType().configureEach { + notCompatibleWithConfigurationCache("https://github.com/Kotlin/dokka/issues/2231") +} + java { withJavadocJar() // needs to be called after tasks.register("javadocJar") withSourcesJar() diff --git a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt index 94fb061c..022a9f7a 100644 --- a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt +++ b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt @@ -35,6 +35,7 @@ import org.gradle.work.ChangeType import org.gradle.work.Incremental import org.gradle.work.InputChanges import java.io.File +import java.io.FileNotFoundException import javax.inject.Inject open class VssProcessorPluginExtension @@ -59,20 +60,28 @@ class VssProcessorPlugin : Plugin { // The extension variables are only available after the project has been evaluated project.afterEvaluate { + val buildDir = layout.buildDirectory.asFile.get() val buildDirPath = buildDir.absolutePath - val vssDirectory = "${rootDir}${fileSeparator}$VSS_FOLDER_NAME" + val vssDir = "${rootDir}${fileSeparator}$VSS_FOLDER_NAME" val provideVssDefinitionTask = project.tasks.register(PROVIDE_VSS_DEFINITION_TASK) { - val searchDirectory = extension.searchPath.get().ifEmpty { vssDirectory } - val vssDefinitionBuildFile = File( - "$buildDirPath$fileSeparator" + - "$KSP_INPUT_BUILD_DIRECTORY$fileSeparator", - ) - - println("Searching directory: $searchDirectory for vss definitions") - - inputDir = file(searchDirectory) + val searchPath = extension.searchPath.get().ifEmpty { vssDir } + val vssDefinitionFilePath = StringBuilder(buildDirPath) + .append(fileSeparator) + .append(KSP_INPUT_BUILD_DIRECTORY) + .append(fileSeparator) + .toString() + val vssDefinitionBuildFile = File(vssDefinitionFilePath) + + logger.info("Searching directory: $searchPath for VSS definitions") + + val searchDir = file(searchPath) + if (!searchDir.exists()) { + throw FileNotFoundException("Directory for VSS files not found!") + } + + inputDir = searchDir outputDir = vssDefinitionBuildFile } @@ -85,7 +94,7 @@ class VssProcessorPlugin : Plugin { companion object { private const val KSP_INPUT_BUILD_DIRECTORY = "kspInput" private const val EXTENSION_NAME = "vssProcessor" - private const val PROVIDE_VSS_DEFINITION_TASK = "ProvideVssDefinition" + private const val PROVIDE_VSS_DEFINITION_TASK = "provideVssDefinition" private const val VSS_FOLDER_NAME = "vss" } } @@ -109,12 +118,12 @@ private abstract class ProvideVssDefinitionTask : DefaultTask() { if (change.fileType == FileType.DIRECTORY) return@forEach val targetFile = outputDir.file(change.normalizedPath).get().asFile - println("Found vss file change for: ${targetFile.name}, change: ${change.changeType}") + logger.info("Found vss file change for: ${targetFile.name}, change: ${change.changeType}") when (change.changeType) { ChangeType.ADDED, ChangeType.MODIFIED, - -> change.file.copyTo(targetFile) + -> change.file.copyTo(targetFile, true) else -> targetFile.delete() } diff --git a/vss-processor/build.gradle.kts b/vss-processor/build.gradle.kts index 3b03b284..cc7bebaa 100644 --- a/vss-processor/build.gradle.kts +++ b/vss-processor/build.gradle.kts @@ -64,6 +64,10 @@ tasks.register("javadocJar", Jar::class) { archiveClassifier.set("javadoc") } +tasks.withType().configureEach { + notCompatibleWithConfigurationCache("https://github.com/Kotlin/dokka/issues/2231") +} + java { withJavadocJar() // needs to be called after tasks.register("javadocJar") withSourcesJar() From f4b38828548e907b6952071321f57c77313abf4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Tue, 13 Feb 2024 15:53:36 +0100 Subject: [PATCH 12/29] chore: Change SemanticVersion handling The storing inside the extra properties was removed in favour of just reading the version file. --- app/build.gradle.kts | 11 ++- .../eclipse/kuksa/version/SemanticVersion.kt | 17 ++++- buildSrc/src/main/kotlin/version.gradle.kts | 53 +++++++++++---- samples/build.gradle.kts | 11 ++- vss-core/build.gradle.kts | 9 ++- vss-processor-plugin/build.gradle.kts | 12 +++- .../plugin}/version/SemanticVersion.kt | 19 +++++- .../src/main/kotlin/version.gradle.kts | 68 ------------------- vss-processor/build.gradle.kts | 8 ++- 9 files changed, 112 insertions(+), 96 deletions(-) rename vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/{ => vssprocessor/plugin}/version/SemanticVersion.kt (77%) delete mode 100644 vss-processor-plugin/buildSrc/src/main/kotlin/version.gradle.kts diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7184b3bc..8c079183 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -20,11 +20,13 @@ @file:Suppress("UnstableApiUsage") import org.eclipse.kuksa.property.PropertiesLoader +import org.eclipse.kuksa.version.SemanticVersion +import org.eclipse.kuksa.version.VERSION_FILE_DEFAULT_PATH_KEY plugins { id("com.android.application") id("com.google.devtools.ksp") - id("org.eclipse.kuksa.vss-processor-plugin") + id("org.eclipse.kuksa.vss-processor-plugin") // Always take the newest version since it's locally included kotlin("plugin.serialization") kotlin("android") } @@ -58,11 +60,14 @@ android { applicationId = "org.eclipse.kuksa.testapp" minSdk = 27 targetSdk = 34 - versionCode = rootProject.extra["projectVersionCode"].toString().toInt() - versionName = rootProject.extra["projectVersion"].toString() vectorDrawables { useSupportLibrary = true } + + val versionPath = rootProject.ext[VERSION_FILE_DEFAULT_PATH_KEY] as String + val semanticVersion = SemanticVersion.create(versionPath) + versionCode = semanticVersion.versionCode + versionName = semanticVersion.versionName } signingConfigs { create("release") { diff --git a/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt b/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt index 6f50845d..c8adb013 100644 --- a/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt +++ b/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt @@ -18,15 +18,19 @@ package org.eclipse.kuksa.version +import java.io.File import java.util.Locale +const val VERSION_FILE_DEFAULT_PATH_KEY = "versionFilePathKey" +const val VERSION_FILE_DEFAULT_NAME = "version.txt" + class SemanticVersion(semanticVersion: String) { val major: Int val minor: Int val patch: Int var suffix: String = "" - val versionString: String + val versionName: String get() { var version = "$major.$minor.$patch" if (suffix.isNotEmpty()) { @@ -57,6 +61,15 @@ class SemanticVersion(semanticVersion: String) { patch = versions[2].toInt() this.suffix = suffix - print("Current SemanticVersion($versionString)\n") + println("Current SemanticVersion($versionName)\n") + } + + companion object { + fun create(versionFilePath: String): SemanticVersion { + val file = File(versionFilePath) + val fileContent = file.readText() + + return SemanticVersion(fileContent) + } } } diff --git a/buildSrc/src/main/kotlin/version.gradle.kts b/buildSrc/src/main/kotlin/version.gradle.kts index 81c9398c..779a4e10 100644 --- a/buildSrc/src/main/kotlin/version.gradle.kts +++ b/buildSrc/src/main/kotlin/version.gradle.kts @@ -25,31 +25,56 @@ val semanticVersion = SemanticVersion(fileContent) updateExtras() +abstract class SetVersionSuffixTask : DefaultTask() { + @get:Input + abstract val suffix: Property + + @get:InputFile + abstract val inputFile: RegularFileProperty + + @get:OutputFile + @get:Optional + abstract val outputFile: RegularFileProperty + + @TaskAction + fun addVersionSuffix() { + val newVersionFile = if (outputFile.isPresent) outputFile.asFile.get() else inputFile.asFile.get() + + val inputFilePath = inputFile.get().asFile.path + val newSemanticVersion = SemanticVersion.create(inputFilePath) + newSemanticVersion.suffix = suffix.get() + + val newVersionName = newSemanticVersion.versionName + val fileContent = newVersionFile.readText() + + logger.info("Version suffix changed - old: $fileContent <-> new: $newVersionName") + if (fileContent == newVersionName) return + + newVersionFile.writeText(newVersionName) + } +} + // Do not chain this command because it writes into a file which needs to be re-read inside the next gradle command -tasks.register("setReleaseVersion") { +tasks.register("setSnapshotVersion") { group = "version" - doLast { - semanticVersion.suffix = "" - updateVersion() - } + inputFile = file + suffix = "SNAPSHOT" } // Do not chain this command because it writes into a file which needs to be re-read inside the next gradle command -tasks.register("setSnapshotVersion") { +tasks.register("setReleaseVersion") { group = "version" - doLast { - semanticVersion.suffix = "SNAPSHOT" - updateVersion() - } + inputFile = file + suffix = "" } tasks.register("printVersion") { group = "version" - doLast { - val version = semanticVersion.versionString + val version = project.rootProject.extra["projectVersion"] + doLast { println("VERSION=$version") } @@ -57,12 +82,12 @@ tasks.register("printVersion") { } fun updateExtras() { - rootProject.extra["projectVersion"] = semanticVersion.versionString + rootProject.extra["projectVersion"] = semanticVersion.versionName rootProject.extra["projectVersionCode"] = semanticVersion.versionCode } fun updateVersion() { updateExtras() - file.writeText(semanticVersion.versionString) + file.writeText(semanticVersion.versionName) } diff --git a/samples/build.gradle.kts b/samples/build.gradle.kts index 1f021616..8845b51e 100644 --- a/samples/build.gradle.kts +++ b/samples/build.gradle.kts @@ -1,3 +1,6 @@ +import org.eclipse.kuksa.version.SemanticVersion +import org.eclipse.kuksa.version.VERSION_FILE_DEFAULT_PATH_KEY + /* * Copyright (c) 2023 Contributors to the Eclipse Foundation * @@ -32,8 +35,11 @@ android { applicationId = "org.eclipse.kuksa.samples" minSdk = 27 targetSdk = 34 - versionCode = 1 - versionName = "1.0" + + val versionPath = rootProject.ext[VERSION_FILE_DEFAULT_PATH_KEY] as String + val semanticVersion = SemanticVersion.create(versionPath) + versionCode = semanticVersion.versionCode + versionName = semanticVersion.versionName testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { @@ -56,6 +62,7 @@ android { } vssProcessor { + // Optional - See plugin documentation. Files inside the "$rootDir/vss" folder are used automatically. searchPath = "$rootDir/vss" } diff --git a/vss-core/build.gradle.kts b/vss-core/build.gradle.kts index 2d68b494..55d46995 100644 --- a/vss-core/build.gradle.kts +++ b/vss-core/build.gradle.kts @@ -19,14 +19,21 @@ @file:Suppress("UnstableApiUsage") +import org.eclipse.kuksa.version.SemanticVersion +import org.eclipse.kuksa.version.VERSION_FILE_DEFAULT_PATH_KEY +import org.jetbrains.dokka.gradle.DokkaTask + + plugins { kotlin("jvm") publish alias(libs.plugins.dokka) } +val versionPath = rootProject.ext[VERSION_FILE_DEFAULT_PATH_KEY] as String +val semanticVersion = SemanticVersion.create(versionPath) +version = semanticVersion.versionName group = "org.eclipse.kuksa" -version = rootProject.extra["projectVersion"].toString() dependencies { implementation(kotlin("stdlib")) diff --git a/vss-processor-plugin/build.gradle.kts b/vss-processor-plugin/build.gradle.kts index 4938a919..5608605a 100644 --- a/vss-processor-plugin/build.gradle.kts +++ b/vss-processor-plugin/build.gradle.kts @@ -1,3 +1,7 @@ +import org.eclipse.kuksa.vssprocessor.plugin.version.SemanticVersion +import org.eclipse.kuksa.vssprocessor.plugin.version.VERSION_FILE_DEFAULT_NAME +import org.eclipse.kuksa.vssprocessor.plugin.version.VERSION_FILE_DEFAULT_PATH_KEY + /* * Copyright (c) 2023 Contributors to the Eclipse Foundation * @@ -17,15 +21,19 @@ * */ +val versionDefaultPath = "$rootDir/../$VERSION_FILE_DEFAULT_NAME" +rootProject.ext[VERSION_FILE_DEFAULT_PATH_KEY] = versionDefaultPath + plugins { alias(libs.plugins.pluginPublishing) signing `kotlin-dsl` - version } +val versionPath = rootProject.ext[VERSION_FILE_DEFAULT_PATH_KEY] as String +val semanticVersion = SemanticVersion.create(versionPath) +version = semanticVersion.versionName group = "org.eclipse.kuksa" -version = rootProject.extra["projectVersion"].toString() gradlePlugin { website.set("https://github.com/eclipse-kuksa/kuksa-android-sdk") diff --git a/vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt b/vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/vssprocessor/plugin/version/SemanticVersion.kt similarity index 77% rename from vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt rename to vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/vssprocessor/plugin/version/SemanticVersion.kt index 6f50845d..ef51c70e 100644 --- a/vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt +++ b/vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/vssprocessor/plugin/version/SemanticVersion.kt @@ -16,17 +16,21 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.eclipse.kuksa.version +package org.eclipse.kuksa.vssprocessor.plugin.version +import java.io.File import java.util.Locale +const val VERSION_FILE_DEFAULT_PATH_KEY = "versionFilePathKey" +const val VERSION_FILE_DEFAULT_NAME = "version.txt" + class SemanticVersion(semanticVersion: String) { val major: Int val minor: Int val patch: Int var suffix: String = "" - val versionString: String + val versionName: String get() { var version = "$major.$minor.$patch" if (suffix.isNotEmpty()) { @@ -57,6 +61,15 @@ class SemanticVersion(semanticVersion: String) { patch = versions[2].toInt() this.suffix = suffix - print("Current SemanticVersion($versionString)\n") + print("Current SemanticVersion($versionName)\n") + } + + companion object { + fun create(versionFilePath: String): SemanticVersion { + val file = File(versionFilePath) + val fileContent = file.readText() + + return SemanticVersion(fileContent) + } } } diff --git a/vss-processor-plugin/buildSrc/src/main/kotlin/version.gradle.kts b/vss-processor-plugin/buildSrc/src/main/kotlin/version.gradle.kts deleted file mode 100644 index 6abd1df5..00000000 --- a/vss-processor-plugin/buildSrc/src/main/kotlin/version.gradle.kts +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2023 Contributors to the Eclipse Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ - -import org.eclipse.kuksa.version.SemanticVersion - -val file = File("$rootDir/../version.txt") -val fileContent = file.readText() -val semanticVersion = SemanticVersion(fileContent) - -updateExtras() - -// Do not chain this command because it writes into a file which needs to be re-read inside the next gradle command -tasks.register("setReleaseVersion") { - group = "version" - doLast { - semanticVersion.suffix = "" - - updateVersion() - } -} - -// Do not chain this command because it writes into a file which needs to be re-read inside the next gradle command -tasks.register("setSnapshotVersion") { - group = "version" - doLast { - semanticVersion.suffix = "SNAPSHOT" - - updateVersion() - } -} - -tasks.register("printVersion") { - group = "version" - doLast { - val version = semanticVersion.versionString - - println("VERSION=$version") - } - - mustRunAfter("setReleaseVersion", "setSnapshotVersion") -} - -fun updateExtras() { - rootProject.extra["projectVersion"] = semanticVersion.versionString - rootProject.extra["projectVersionCode"] = semanticVersion.versionCode -} - -fun updateVersion() { - updateExtras() - - file.writeText(semanticVersion.versionString) -} diff --git a/vss-processor/build.gradle.kts b/vss-processor/build.gradle.kts index cc7bebaa..3d73e1f4 100644 --- a/vss-processor/build.gradle.kts +++ b/vss-processor/build.gradle.kts @@ -1,3 +1,7 @@ +import org.eclipse.kuksa.version.SemanticVersion +import org.eclipse.kuksa.version.VERSION_FILE_DEFAULT_PATH_KEY +import org.jetbrains.dokka.gradle.DokkaTask + /* * Copyright (c) 2023 Contributors to the Eclipse Foundation * @@ -23,8 +27,10 @@ plugins { alias(libs.plugins.dokka) } +val versionPath = rootProject.ext[VERSION_FILE_DEFAULT_PATH_KEY] as String +val semanticVersion = SemanticVersion.create(versionPath) +version = semanticVersion.versionName group = "org.eclipse.kuksa" -version = rootProject.extra["projectVersion"].toString() dependencies { implementation(project(":vss-core")) From 25345adfba689d91b6ddfc2f5cf94b0110f389b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Tue, 13 Feb 2024 15:54:12 +0100 Subject: [PATCH 13/29] chore: Update dependencies Needed for compatibility with the config cache. --- gradle/libs.versions.toml | 23 ++++++++++++----------- gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle.kts | 7 ++++--- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8565a265..7bc3a432 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,16 +1,17 @@ [versions] -activityKtx = "1.8.0" +activityKtx = "1.8.2" androidGradlePlugin = "8.2.2" # Check with detekt table first: https://detekt.dev/docs/introduction/compatibility/ +detekt = "1.23.5" datastore = "1.0.0" constraintlayoutCompose = "1.0.1" datastorePreferences = "1.0.0" -kotlin = "1.9.0" -kotlinpoet = "1.14.2" -kotlinxSerializationJson = "1.6.0" -runtimeLivedata = "1.5.3" -symbolProcessingApi = "1.9.10-1.0.13" +dokka = "1.9.10" +kotlin = "1.9.22" +kotlinpoet = "1.16.0" +kotlinxSerializationJson = "1.6.1" +runtimeLivedata = "1.6.0" +symbolProcessingApi = "1.9.22-1.0.17" tomcatAnnotations = "6.0.53" -detekt = "1.23.1" ktlint = "0.0" # Maintained inside ktlint.gradle.kts androidxAppCompat = "1.6.1" grpc = "1.57.2" @@ -18,10 +19,10 @@ protobufGradlePlugin = "0.9.3" protobuf = "3.22.3" kotest = "5.7.2" mockk = "1.13.7" -androidxLifecycle = "2.6.2" +androidxLifecycle = "2.7.0" kotlinxCoroutines = "1.7.3" -kotlinCompilerExtension = "1.5.1" -composeBom = "2023.10.00" +kotlinCompilerExtension = "1.5.9" +composeBom = "2024.01.00" jvmTarget = "17" [libraries] @@ -70,5 +71,5 @@ detekt-formatting = { group = "io.gitlab.arturbosch.detekt", name = "detekt-form grpc-protoc-java-gen = { group = "io.grpc", name = "protoc-gen-grpc-java", version.ref = "grpc" } [plugins] -dokka = { id = "org.jetbrains.dokka", version.ref = "kotlin" } +dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } pluginPublishing = { id = "com.gradle.plugin-publish", version = "1.2.1" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 84a0b92f..17655d0e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle.kts b/settings.gradle.kts index da43b589..1ed12efd 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -26,10 +26,11 @@ pluginManagement { mavenCentral() } + // Version catalog can't be used here plugins { - id("com.google.devtools.ksp") version "1.9.0-1.0.11" - kotlin("jvm") version "1.9.0-1.0.11" - kotlin("plugin.serialization") version "1.9.0" + id("com.google.devtools.ksp") version "1.9.22-1.0.17" + kotlin("jvm") + kotlin("plugin.serialization") version "1.9.22" } } From 486b371c2d65704fc32c5205bef41215a698a985 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Wed, 14 Feb 2024 21:50:31 +0100 Subject: [PATCH 14/29] chore: Improve semantic version handling --- README.md | 2 +- app/build.gradle.kts | 2 +- .../eclipse/kuksa/version/SemanticVersion.kt | 16 +++--- buildSrc/src/main/kotlin/version.gradle.kts | 54 +++++++------------ docs/QUICKSTART.md | 4 +- kuksa-sdk/build.gradle.kts | 6 ++- samples/build.gradle.kts | 2 +- vss-core/build.gradle.kts | 2 +- .../kuksa/vsscore/annotation/VssDefinition.kt | 1 + vss-processor-plugin/build.gradle.kts | 2 +- .../plugin/version/SemanticVersion.kt | 18 +++---- vss-processor/build.gradle.kts | 4 +- 12 files changed, 48 insertions(+), 65 deletions(-) diff --git a/README.md b/README.md index eb9fa46c..b2a7b4df 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ within an Android App. The main functionality consists of fetching, updating and ## Integration -*build.gradle.kts* +*app/build.gradle.kts* ``` implementation("org.eclipse.kuksa:kuksa-sdk:") ``` diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 8c079183..13e6a391 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -65,7 +65,7 @@ android { } val versionPath = rootProject.ext[VERSION_FILE_DEFAULT_PATH_KEY] as String - val semanticVersion = SemanticVersion.create(versionPath) + val semanticVersion = SemanticVersion(versionPath) versionCode = semanticVersion.versionCode versionName = semanticVersion.versionName } diff --git a/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt b/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt index c8adb013..9bc0443d 100644 --- a/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt +++ b/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt @@ -24,12 +24,14 @@ import java.util.Locale const val VERSION_FILE_DEFAULT_PATH_KEY = "versionFilePathKey" const val VERSION_FILE_DEFAULT_NAME = "version.txt" -class SemanticVersion(semanticVersion: String) { +class SemanticVersion(versionFilePath: String) { val major: Int val minor: Int val patch: Int var suffix: String = "" + val versionFile: File + val versionName: String get() { var version = "$major.$minor.$patch" @@ -51,6 +53,9 @@ class SemanticVersion(semanticVersion: String) { } init { + versionFile = File(versionFilePath) + + val semanticVersion = versionFile.readText() val versions = semanticVersion.trim() .substringBefore("-") // Ignore suffixes like -SNAPSHOT .split(".") @@ -63,13 +68,4 @@ class SemanticVersion(semanticVersion: String) { println("Current SemanticVersion($versionName)\n") } - - companion object { - fun create(versionFilePath: String): SemanticVersion { - val file = File(versionFilePath) - val fileContent = file.readText() - - return SemanticVersion(fileContent) - } - } } diff --git a/buildSrc/src/main/kotlin/version.gradle.kts b/buildSrc/src/main/kotlin/version.gradle.kts index 779a4e10..8ebceb04 100644 --- a/buildSrc/src/main/kotlin/version.gradle.kts +++ b/buildSrc/src/main/kotlin/version.gradle.kts @@ -18,39 +18,33 @@ */ import org.eclipse.kuksa.version.SemanticVersion +import org.eclipse.kuksa.version.VERSION_FILE_DEFAULT_NAME -val file = File("$rootDir/version.txt") -val fileContent = file.readText() -val semanticVersion = SemanticVersion(fileContent) - -updateExtras() +private val versionPath = "$rootDir/$VERSION_FILE_DEFAULT_NAME" +private val semanticVersion = SemanticVersion(versionPath) +/** + * Writes the given [suffix] into the given [inputFileProperty] while keeping the semantic version intact. + * E.g. 1.2.3 -> 1.2.3-SNAPSHOT (suffix = SNAPSHOT). Leave the suffix empty to restore the initial version. + */ abstract class SetVersionSuffixTask : DefaultTask() { @get:Input abstract val suffix: Property + @get:Incremental @get:InputFile - abstract val inputFile: RegularFileProperty - - @get:OutputFile - @get:Optional - abstract val outputFile: RegularFileProperty + abstract val inputFileProperty: RegularFileProperty @TaskAction fun addVersionSuffix() { - val newVersionFile = if (outputFile.isPresent) outputFile.asFile.get() else inputFile.asFile.get() + val inputFile = inputFileProperty.asFile.get() - val inputFilePath = inputFile.get().asFile.path - val newSemanticVersion = SemanticVersion.create(inputFilePath) + val newSemanticVersion = SemanticVersion(inputFile.path) newSemanticVersion.suffix = suffix.get() - val newVersionName = newSemanticVersion.versionName - val fileContent = newVersionFile.readText() + println("Applying version suffix: ${suffix.get()}") - logger.info("Version suffix changed - old: $fileContent <-> new: $newVersionName") - if (fileContent == newVersionName) return - - newVersionFile.writeText(newVersionName) + inputFile.writeText(newSemanticVersion.versionName) } } @@ -58,7 +52,7 @@ abstract class SetVersionSuffixTask : DefaultTask() { tasks.register("setSnapshotVersion") { group = "version" - inputFile = file + inputFileProperty = semanticVersion.versionFile suffix = "SNAPSHOT" } @@ -66,28 +60,18 @@ tasks.register("setSnapshotVersion") { tasks.register("setReleaseVersion") { group = "version" - inputFile = file + inputFileProperty = semanticVersion.versionFile suffix = "" } tasks.register("printVersion") { group = "version" - val version = project.rootProject.extra["projectVersion"] - doLast { - println("VERSION=$version") + val versionFilePath = versionPath + doLast { // Prints the correct version if chained with SetVersionSuffix tasks + val currentSemanticVersion = SemanticVersion(versionFilePath) + println("Current version: ${currentSemanticVersion.versionName}") } mustRunAfter("setReleaseVersion", "setSnapshotVersion") } - -fun updateExtras() { - rootProject.extra["projectVersion"] = semanticVersion.versionName - rootProject.extra["projectVersionCode"] = semanticVersion.versionCode -} - -fun updateVersion() { - updateExtras() - - file.writeText(semanticVersion.versionName) -} diff --git a/docs/QUICKSTART.md b/docs/QUICKSTART.md index a3e5e2c0..65472888 100644 --- a/docs/QUICKSTART.md +++ b/docs/QUICKSTART.md @@ -4,7 +4,7 @@ Get instantly bootstrapped into the world of the KUKSA SDK with the following co ## Integration -*build.gradle.kts* +*app/build.gradle.kts* ``` implementation("org.eclipse.kuksa:kuksa-sdk:") ``` @@ -153,7 +153,7 @@ For a more convenient usage you can opt in to auto generate Kotlin models via [S of the same specification the Databroker uses. For starters you can retrieve an extensive default specification from the release page of the [COVESA Vehicle Signal Specification GitHub repository](https://github.com/COVESA/vehicle_signal_specification/releases). -*build.gradle.kts* +*app/build.gradle.kts* ``` plugins { id("org.eclipse.kuksa.vss-processor-plugin") diff --git a/kuksa-sdk/build.gradle.kts b/kuksa-sdk/build.gradle.kts index dbfe1be4..be14acbb 100644 --- a/kuksa-sdk/build.gradle.kts +++ b/kuksa-sdk/build.gradle.kts @@ -20,6 +20,8 @@ @file:Suppress("UnstableApiUsage") import com.google.protobuf.gradle.id +import org.eclipse.kuksa.version.SemanticVersion +import org.eclipse.kuksa.version.VERSION_FILE_DEFAULT_PATH_KEY plugins { id("com.android.library") @@ -28,8 +30,10 @@ plugins { publish } +val versionPath = rootProject.ext[VERSION_FILE_DEFAULT_PATH_KEY] as String +val semanticVersion = SemanticVersion(versionPath) +version = semanticVersion.versionName group = "org.eclipse.kuksa" -version = rootProject.extra["projectVersion"].toString() android { namespace = "org.eclipse.kuksa" diff --git a/samples/build.gradle.kts b/samples/build.gradle.kts index 8845b51e..1245e7dc 100644 --- a/samples/build.gradle.kts +++ b/samples/build.gradle.kts @@ -37,7 +37,7 @@ android { targetSdk = 34 val versionPath = rootProject.ext[VERSION_FILE_DEFAULT_PATH_KEY] as String - val semanticVersion = SemanticVersion.create(versionPath) + val semanticVersion = SemanticVersion(versionPath) versionCode = semanticVersion.versionCode versionName = semanticVersion.versionName diff --git a/vss-core/build.gradle.kts b/vss-core/build.gradle.kts index 55d46995..d9871a88 100644 --- a/vss-core/build.gradle.kts +++ b/vss-core/build.gradle.kts @@ -31,7 +31,7 @@ plugins { } val versionPath = rootProject.ext[VERSION_FILE_DEFAULT_PATH_KEY] as String -val semanticVersion = SemanticVersion.create(versionPath) +val semanticVersion = SemanticVersion(versionPath) version = semanticVersion.versionName group = "org.eclipse.kuksa" diff --git a/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt b/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt index d1661144..1098bb86 100644 --- a/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt +++ b/vss-core/src/main/java/org/eclipse/kuksa/vsscore/annotation/VssDefinition.kt @@ -27,6 +27,7 @@ package org.eclipse.kuksa.vsscore.annotation * ### Plugin Example * * ``` + * // app/build.gradle.kts * plugins { * id("org.eclipse.kuksa.vss-processor-plugin") version "" * } diff --git a/vss-processor-plugin/build.gradle.kts b/vss-processor-plugin/build.gradle.kts index 5608605a..160ebe53 100644 --- a/vss-processor-plugin/build.gradle.kts +++ b/vss-processor-plugin/build.gradle.kts @@ -31,7 +31,7 @@ plugins { } val versionPath = rootProject.ext[VERSION_FILE_DEFAULT_PATH_KEY] as String -val semanticVersion = SemanticVersion.create(versionPath) +val semanticVersion = SemanticVersion(versionPath) version = semanticVersion.versionName group = "org.eclipse.kuksa" diff --git a/vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/vssprocessor/plugin/version/SemanticVersion.kt b/vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/vssprocessor/plugin/version/SemanticVersion.kt index ef51c70e..482861c1 100644 --- a/vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/vssprocessor/plugin/version/SemanticVersion.kt +++ b/vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/vssprocessor/plugin/version/SemanticVersion.kt @@ -24,12 +24,14 @@ import java.util.Locale const val VERSION_FILE_DEFAULT_PATH_KEY = "versionFilePathKey" const val VERSION_FILE_DEFAULT_NAME = "version.txt" -class SemanticVersion(semanticVersion: String) { +class SemanticVersion(versionFilePath: String) { val major: Int val minor: Int val patch: Int var suffix: String = "" + val versionFile: File + val versionName: String get() { var version = "$major.$minor.$patch" @@ -51,6 +53,9 @@ class SemanticVersion(semanticVersion: String) { } init { + versionFile = File(versionFilePath) + + val semanticVersion = versionFile.readText() val versions = semanticVersion.trim() .substringBefore("-") // Ignore suffixes like -SNAPSHOT .split(".") @@ -61,15 +66,6 @@ class SemanticVersion(semanticVersion: String) { patch = versions[2].toInt() this.suffix = suffix - print("Current SemanticVersion($versionName)\n") - } - - companion object { - fun create(versionFilePath: String): SemanticVersion { - val file = File(versionFilePath) - val fileContent = file.readText() - - return SemanticVersion(fileContent) - } + println("Current SemanticVersion($versionName)\n") } } diff --git a/vss-processor/build.gradle.kts b/vss-processor/build.gradle.kts index 3d73e1f4..0d281fee 100644 --- a/vss-processor/build.gradle.kts +++ b/vss-processor/build.gradle.kts @@ -28,7 +28,7 @@ plugins { } val versionPath = rootProject.ext[VERSION_FILE_DEFAULT_PATH_KEY] as String -val semanticVersion = SemanticVersion.create(versionPath) +val semanticVersion = SemanticVersion(versionPath) version = semanticVersion.versionName group = "org.eclipse.kuksa" @@ -66,6 +66,8 @@ publish { tasks.register("javadocJar", Jar::class) { dependsOn("dokkaHtml") + + val buildDir = layout.buildDirectory.asFile.get() from("$buildDir/dokka/html") archiveClassifier.set("javadoc") } From 6b5c34ac5cd82e97262981f8600304311d0276bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Wed, 14 Feb 2024 21:51:43 +0100 Subject: [PATCH 15/29] chore: Fix clean builds for VSS Plugin - Improves error handling --- .../vssprocessor/plugin/VssProcessorPlugin.kt | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt index 022a9f7a..8dd8cfa9 100644 --- a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt +++ b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt @@ -25,6 +25,7 @@ import org.gradle.api.file.DirectoryProperty import org.gradle.api.file.FileType import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property +import org.gradle.api.tasks.CacheableTask import org.gradle.api.tasks.InputDirectory import org.gradle.api.tasks.OutputDirectory import org.gradle.api.tasks.PathSensitive @@ -74,18 +75,22 @@ class VssProcessorPlugin : Plugin { .toString() val vssDefinitionBuildFile = File(vssDefinitionFilePath) - logger.info("Searching directory: $searchPath for VSS definitions") + logger.info("Searching directory $searchPath for VSS definitions") val searchDir = file(searchPath) if (!searchDir.exists()) { - throw FileNotFoundException("Directory for VSS files not found!") + throw FileNotFoundException( + "Directory $searchPath for VSS files not found! Consider creating the default folder" + + " ($VSS_FOLDER_NAME) inside your project root or use the plugin" + + " configuration:searchPath option.", + ) } inputDir = searchDir outputDir = vssDefinitionBuildFile } - tasks.getByName("preBuild").finalizedBy( + tasks.getByName("preBuild").dependsOn( provideVssDefinitionTask.get(), ) } @@ -103,6 +108,7 @@ class VssProcessorPlugin : Plugin { * This task takes an input directory [inputDir] which should contain all available VSS definition files and an * output directory [outputDir] where all files are copied to so the VSSProcessor can work with them. */ +@CacheableTask private abstract class ProvideVssDefinitionTask : DefaultTask() { @get:Incremental @get:PathSensitive(PathSensitivity.NAME_ONLY) @@ -117,16 +123,28 @@ private abstract class ProvideVssDefinitionTask : DefaultTask() { inputChanges.getFileChanges(inputDir).forEach { change -> if (change.fileType == FileType.DIRECTORY) return@forEach + val file = change.file + val extension = file.extension + if (!validVssExtension.contains(extension)) { + logger.warn("Found incompatible file VSS file: ${file.name} - Consider removing it") + return@forEach + } + val targetFile = outputDir.file(change.normalizedPath).get().asFile logger.info("Found vss file change for: ${targetFile.name}, change: ${change.changeType}") when (change.changeType) { ChangeType.ADDED, ChangeType.MODIFIED, - -> change.file.copyTo(targetFile, true) + -> file.copyTo(targetFile, true) - else -> targetFile.delete() + ChangeType.REMOVED -> targetFile.delete() + else -> logger.warn("Could not determine file change type: ${change.changeType}") } } } + + companion object { + private val validVssExtension = setOf("yml", "yaml") + } } From 49729c40790ce324cb6756e43e10d6a2a9d4fa53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Thu, 15 Feb 2024 18:15:15 +0100 Subject: [PATCH 16/29] chore: Fix buildDir for javadocJar task BREAKING CHANGE: - A new Gradle plugin(VssProcessorPlugin) was introduced to improve the input (VSS files) handling of the VSS KSP generation. This plugin is now mandatory if the VssProcessor KSP module is used in the project. --- vss-core/build.gradle.kts | 4 +++- vss-processor-plugin/build.gradle.kts | 4 ++-- .../vssprocessor/plugin/VssProcessorPlugin.kt | 16 +++++++++------- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/vss-core/build.gradle.kts b/vss-core/build.gradle.kts index d9871a88..358d0d89 100644 --- a/vss-core/build.gradle.kts +++ b/vss-core/build.gradle.kts @@ -63,7 +63,9 @@ publish { tasks.register("javadocJar", Jar::class) { dependsOn("dokkaHtml") - from("${layout.buildDirectory}/dokka/html") + + val buildDir = layout.buildDirectory.asFile.get() + from("$buildDir/dokka/html") archiveClassifier.set("javadoc") } diff --git a/vss-processor-plugin/build.gradle.kts b/vss-processor-plugin/build.gradle.kts index 160ebe53..401b2a3f 100644 --- a/vss-processor-plugin/build.gradle.kts +++ b/vss-processor-plugin/build.gradle.kts @@ -42,8 +42,8 @@ gradlePlugin { create("VssProcessorPlugin") { id = "org.eclipse.kuksa.vss-processor-plugin" implementationClass = "org.eclipse.kuksa.vssprocessor.plugin.VssProcessorPlugin" - displayName = "Vss Processor Plugin" - tags.set(listOf("KUKSA", "Vehicle Signal Specification", "VSS", "android", "kotlin")) + displayName = "VSS Processor Plugin" + tags.set(listOf("KUKSA", "Vehicle Signal Specification", "VSS", "Android", "Kotlin")) description = "Vehicle Signal Specification (VSS) Plugin of the KUKSA SDK. This is used in combination " + "with the KSP processor component 'KUKSA VSS Processor'. The plugin is configured to provide " + "VSS Files to KSP processor. This is mandatory to use the 'KUKSA VSS Processor' component." diff --git a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt index 8dd8cfa9..517f81a4 100644 --- a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt +++ b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt @@ -26,12 +26,15 @@ import org.gradle.api.file.FileType import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.CacheableTask +import org.gradle.api.tasks.IgnoreEmptyDirectories import org.gradle.api.tasks.InputDirectory import org.gradle.api.tasks.OutputDirectory import org.gradle.api.tasks.PathSensitive import org.gradle.api.tasks.PathSensitivity import org.gradle.api.tasks.TaskAction -import org.gradle.kotlin.dsl.* +import org.gradle.kotlin.dsl.assign +import org.gradle.kotlin.dsl.create +import org.gradle.kotlin.dsl.register import org.gradle.work.ChangeType import org.gradle.work.Incremental import org.gradle.work.InputChanges @@ -66,7 +69,7 @@ class VssProcessorPlugin : Plugin { val vssDir = "${rootDir}${fileSeparator}$VSS_FOLDER_NAME" val provideVssDefinitionTask = - project.tasks.register(PROVIDE_VSS_DEFINITION_TASK) { + project.tasks.register(PROVIDE_VSS_DEFINITION_TASK_NAME) { val searchPath = extension.searchPath.get().ifEmpty { vssDir } val vssDefinitionFilePath = StringBuilder(buildDirPath) .append(fileSeparator) @@ -80,9 +83,7 @@ class VssProcessorPlugin : Plugin { val searchDir = file(searchPath) if (!searchDir.exists()) { throw FileNotFoundException( - "Directory $searchPath for VSS files not found! Consider creating the default folder" + - " ($VSS_FOLDER_NAME) inside your project root or use the plugin" + - " configuration:searchPath option.", + "Directory '$searchPath' for VSS files not found! Please create the folder." ) } @@ -99,7 +100,7 @@ class VssProcessorPlugin : Plugin { companion object { private const val KSP_INPUT_BUILD_DIRECTORY = "kspInput" private const val EXTENSION_NAME = "vssProcessor" - private const val PROVIDE_VSS_DEFINITION_TASK = "provideVssDefinition" + private const val PROVIDE_VSS_DEFINITION_TASK_NAME = "provideVssDefinition" private const val VSS_FOLDER_NAME = "vss" } } @@ -111,6 +112,7 @@ class VssProcessorPlugin : Plugin { @CacheableTask private abstract class ProvideVssDefinitionTask : DefaultTask() { @get:Incremental + @get:IgnoreEmptyDirectories @get:PathSensitive(PathSensitivity.NAME_ONLY) @get:InputDirectory abstract val inputDir: DirectoryProperty @@ -126,7 +128,7 @@ private abstract class ProvideVssDefinitionTask : DefaultTask() { val file = change.file val extension = file.extension if (!validVssExtension.contains(extension)) { - logger.warn("Found incompatible file VSS file: ${file.name} - Consider removing it") + logger.warn("Found incompatible VSS file: ${file.name} - Consider removing it") return@forEach } From ac9d61a1d6d9dc451935b30ac962982ff6952262 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Wed, 21 Feb 2024 12:03:24 +0100 Subject: [PATCH 17/29] chore: Link composite plugin build only to vss-processor - Added a filter for the composite build so if more composite builds were available it does not automatically link against them too. --- ...s-processor-Plugin_FunctionalTests.run.xml | 23 +++++++++++++ build.gradle.kts | 25 -------------- vss-core/build.gradle.kts | 2 +- .../vssprocessor/plugin/VssProcessorPlugin.kt | 7 ++-- vss-processor/build.gradle.kts | 33 ++++++++++++++++++- 5 files changed, 59 insertions(+), 31 deletions(-) create mode 100644 .run/kuksa-vss-processor-Plugin_FunctionalTests.run.xml diff --git a/.run/kuksa-vss-processor-Plugin_FunctionalTests.run.xml b/.run/kuksa-vss-processor-Plugin_FunctionalTests.run.xml new file mode 100644 index 00000000..777d8402 --- /dev/null +++ b/.run/kuksa-vss-processor-Plugin_FunctionalTests.run.xml @@ -0,0 +1,23 @@ + + + + + + + true + true + false + + + \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 0b87f332..8ef60112 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -90,29 +90,4 @@ tasks.register("mergeDashFiles") { } } -// Tasks for included composite builds need to be called separately. For convenience sake we depend on the most used -// tasks. Every task execution of the main project will then be forwarded to the included build project. -// -// We have to manually define the task names because the task() method of the included build throws an error for any -// unknown task. -val dependentCompositeTasks = setOf( - "publishToMavenLocal", - "publishAllPublicationsToOSSRHReleaseRepository", -) -gradle.projectsEvaluated { - val subProjectTasks = tasks + subprojects.flatMap { it.tasks } - - subProjectTasks - .filter { dependentCompositeTasks.contains(it.name) } - .forEach { task -> - val compositeTask = gradle.includedBuilds.map { compositeBuild -> - val compositeTaskPath = task.path.substringAfterLast(":") - println("Linking composite task - ${compositeBuild.name} <-> ${task.project}:${task.name}") - - compositeBuild.task(":$compositeTaskPath") - } - - task.dependsOn(compositeTask) - } -} diff --git a/vss-core/build.gradle.kts b/vss-core/build.gradle.kts index 358d0d89..cde7e734 100644 --- a/vss-core/build.gradle.kts +++ b/vss-core/build.gradle.kts @@ -64,7 +64,7 @@ publish { tasks.register("javadocJar", Jar::class) { dependsOn("dokkaHtml") - val buildDir = layout.buildDirectory.asFile.get() + val buildDir = layout.buildDirectory.get() from("$buildDir/dokka/html") archiveClassifier.set("javadoc") } diff --git a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt index 517f81a4..d4ed407f 100644 --- a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt +++ b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt @@ -32,7 +32,6 @@ import org.gradle.api.tasks.OutputDirectory import org.gradle.api.tasks.PathSensitive import org.gradle.api.tasks.PathSensitivity import org.gradle.api.tasks.TaskAction -import org.gradle.kotlin.dsl.assign import org.gradle.kotlin.dsl.create import org.gradle.kotlin.dsl.register import org.gradle.work.ChangeType @@ -83,12 +82,12 @@ class VssProcessorPlugin : Plugin { val searchDir = file(searchPath) if (!searchDir.exists()) { throw FileNotFoundException( - "Directory '$searchPath' for VSS files not found! Please create the folder." + "Directory '$searchPath' for VSS files not found! Please create the folder.", ) } - inputDir = searchDir - outputDir = vssDefinitionBuildFile + inputDir.set(searchDir) + outputDir.set(vssDefinitionBuildFile) } tasks.getByName("preBuild").dependsOn( diff --git a/vss-processor/build.gradle.kts b/vss-processor/build.gradle.kts index 0d281fee..6fcf03fa 100644 --- a/vss-processor/build.gradle.kts +++ b/vss-processor/build.gradle.kts @@ -67,7 +67,7 @@ publish { tasks.register("javadocJar", Jar::class) { dependsOn("dokkaHtml") - val buildDir = layout.buildDirectory.asFile.get() + val buildDir = layout.buildDirectory.get() from("$buildDir/dokka/html") archiveClassifier.set("javadoc") } @@ -80,3 +80,34 @@ java { withJavadocJar() // needs to be called after tasks.register("javadocJar") withSourcesJar() } + +// Tasks for included composite builds need to be called separately. For convenience sake we depend on the most used +// tasks. Every task execution of this project will then be forwarded to the included build project. Since this module +// is hard coupled to the +// +// We have to manually define the task names because the task() method of the included build throws an error for any +// unknown task. +val dependentCompositeTasks = setOf( + "publishToMavenLocal", + "publishAllPublicationsToOSSRHReleaseRepository", +) +val dependentCompositeBuilds = setOf("vss-processor-plugin") + +gradle.projectsEvaluated { + val subProjectTasks = tasks + subprojects.flatMap { it.tasks } + + subProjectTasks + .filter { dependentCompositeTasks.contains(it.name) } + .forEach { task -> + val compositeTask = gradle.includedBuilds + .filter { dependentCompositeBuilds.contains(it.name) } + .map { compositeBuild -> + val compositeTaskPath = task.path.substringAfterLast(":") + println("Linking composite task - ${compositeBuild.name} <-> ${task.project}:${task.name}") + + compositeBuild.task(":$compositeTaskPath") + } + + task.dependsOn(compositeTask) + } +} From 3a03c0fa4451bf7e408882d89837c94b9130f370 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Wed, 21 Feb 2024 12:20:24 +0100 Subject: [PATCH 18/29] test: Add VSS Processor Plugin tests I tried to decouple the gradle kts generation from the tests so new tests can just reuse the generator classes. --- build.gradle.kts | 2 - vss-processor-plugin/build.gradle.kts | 35 +- .../eclipse/kuksa/vssprocessor/plugin/Tag.kt | 23 + .../plugin/VssProcessorPluginTest.kt | 145 + .../generator/project/AndroidLibProject.kt | 71 + .../plugin/generator/project/GradleProject.kt | 44 + .../generator/project/RootGradleProject.kt | 47 + .../project/VssProcessorLibProject.kt | 47 + .../project/VssProcessorPluginProject.kt | 85 + .../src/test/resources/vss_rel_4.0_test.yaml | 8197 +++++++++++++++++ vss-processor/build.gradle.kts | 1 + 11 files changed, 8683 insertions(+), 14 deletions(-) create mode 100644 vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/Tag.kt create mode 100644 vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPluginTest.kt create mode 100644 vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/AndroidLibProject.kt create mode 100644 vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/GradleProject.kt create mode 100644 vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/RootGradleProject.kt create mode 100644 vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/VssProcessorLibProject.kt create mode 100644 vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/VssProcessorPluginProject.kt create mode 100644 vss-processor-plugin/src/test/resources/vss_rel_4.0_test.yaml diff --git a/build.gradle.kts b/build.gradle.kts index 8ef60112..b56939ab 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -89,5 +89,3 @@ tasks.register("mergeDashFiles") { } } } - - diff --git a/vss-processor-plugin/build.gradle.kts b/vss-processor-plugin/build.gradle.kts index 401b2a3f..5d0789a1 100644 --- a/vss-processor-plugin/build.gradle.kts +++ b/vss-processor-plugin/build.gradle.kts @@ -51,6 +51,8 @@ gradlePlugin { } } +// .set calls need to be done instead of "=" because of a IDEA bug. +// https://youtrack.jetbrains.com/issue/KTIJ-17783/False-positive-Val-cannot-be-reassigned-in-build.gradle.kts afterEvaluate { publishing { repositories { @@ -77,22 +79,22 @@ afterEvaluate { } developers { developer { - name = "Mark Hüsers" - email = "mark.huesers@etas.com" - organization = "ETAS GmbH" - organizationUrl = "https://www.etas.com" + name.set("Mark Hüsers") + email.set("mark.huesers@etas.com") + organization.set("ETAS GmbH") + organizationUrl.set("https://www.etas.com") } developer { - name = "Sebastian Schildt" - email = "sebastian.schildt@etas.com" - organization = "ETAS GmbH" - organizationUrl = "https://www.etas.com" + name.set("Sebastian Schildt") + email.set("sebastian.schildt@etas.com") + organization.set("ETAS GmbH") + organizationUrl.set("https://www.etas.com") } developer { - name = "Andre Weber" - email = "andre.weber3@etas.com" - organization = "ETAS GmbH" - organizationUrl = "https://www.etas.com" + name.set("Andre Weber") + email.set("andre.weber3@etas.com") + organization.set("ETAS GmbH") + organizationUrl.set("https://www.etas.com") } } scm { @@ -130,6 +132,15 @@ afterEvaluate { } } +tasks.withType().configureEach { + useJUnitPlatform() + testLogging.showStandardStreams = true +} + dependencies { implementation(kotlin("stdlib")) + + testImplementation(gradleTestKit()) + testImplementation(libs.kotest) + testImplementation(libs.mockk) } diff --git a/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/Tag.kt b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/Tag.kt new file mode 100644 index 00000000..1e32633b --- /dev/null +++ b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/Tag.kt @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.eclipse.kuksa.vssprocessor.plugin + +import io.kotest.core.NamedTag + +val Functional = NamedTag("Functional") diff --git a/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPluginTest.kt b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPluginTest.kt new file mode 100644 index 00000000..803c1df4 --- /dev/null +++ b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPluginTest.kt @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.eclipse.kuksa.vssprocessor.plugin + +import io.kotest.core.spec.style.BehaviorSpec +import io.kotest.matchers.shouldBe +import io.kotest.matchers.string.shouldContain +import org.eclipse.kuksa.vssprocessor.plugin.generator.project.AndroidLibProject +import org.eclipse.kuksa.vssprocessor.plugin.generator.project.VssProcessorLibProject +import org.eclipse.kuksa.vssprocessor.plugin.generator.project.VssProcessorLibProject.Companion.VSS_TEST_FILE +import org.eclipse.kuksa.vssprocessor.plugin.generator.project.VssProcessorPluginProject +import org.gradle.testkit.runner.GradleRunner +import org.gradle.testkit.runner.TaskOutcome +import kotlin.io.path.ExperimentalPathApi +import kotlin.io.path.deleteRecursively +import kotlin.io.path.exists + +@OptIn(ExperimentalPathApi::class) +class VssProcessorPluginTest : BehaviorSpec({ + tags(Functional) + + given("A VSSProcessorPlugin project") { + val pluginProject = VssProcessorPluginProject() + val rootProjectDir = pluginProject.rootProjectDir.toFile() + val gradleRunner = GradleRunner.create() + .forwardOutput() + .withGradleVersion(GRADLE_VERSION_TEST) + .withPluginClasspath() + .withProjectDir(rootProjectDir) + + afterSpec { + pluginProject.close() + } + + `when`("the plugin is applied") { + pluginProject.generate() + + val pluginResult = gradleRunner.build() + + then("it should build successfully") { + pluginResult.output shouldContain "BUILD SUCCESSFUL" + } + + and("an Android library project is added") { + val androidLibProject = AndroidLibProject("lib") + androidLibProject.generate() + + pluginProject.add(androidLibProject) + + afterContainer { + pluginProject.refresh() // So the plugin project does not have 2 :lib includes + } + + `when`("the ProvideVssDefinitionTask is executed without correct input") { + val result = gradleRunner + .withArguments("provideVssDefinition") + .buildAndFail() + + then("it should throw an Exception") { + result.output shouldContain "Could not create task ':lib:provideVssDefinition'" + } + } + } + + and("a VSS compatible Android library project is added") { + val vssProcessorProject = VssProcessorLibProject("lib") + vssProcessorProject.generate() + + pluginProject.add(vssProcessorProject) + + `when`("the ProvideVssDefinitionTask is executed with build cache the #1 time") { + pluginProject.localCacheFolder.deleteRecursively() + + val result = gradleRunner + .withArguments("clean", "--build-cache", "provideVssDefinition") + .build() + + println("ProvideVssDefinitionTask + Build Cache #1 output: ${result.output}") + + then("it should build successfully") { + val outcome = result.task(":lib:provideVssDefinition")?.outcome + + outcome shouldBe TaskOutcome.SUCCESS + } + } + + `when`("the ProvideVssDefinitionTask is executed with build cache the #2 time") { + val result = gradleRunner + .withArguments("clean", "--build-cache", "provideVssDefinition") + .build() + + println("ProvideVssDefinitionTask + Build Cache #2 output: ${result.output}") + + then("it should build from cache") { + val outcome = result.task(":lib:provideVssDefinition")?.outcome + + outcome shouldBe TaskOutcome.FROM_CACHE + } + } + + `when`("the ProvideVssDefinitionTask is executed with build cache the #3 time") { + val kspInputDir = vssProcessorProject.buildDir.resolve(KSP_INPUT_BUILD_DIRECTORY) + val result = gradleRunner + .withArguments("--build-cache", "provideVssDefinition") + .build() + + println("ProvideVssDefinitionTask + Build Cache #3 output: ${result.output}") + + then("it should be up to date") { + val outcome = result.task(":lib:provideVssDefinition")?.outcome + + outcome shouldBe TaskOutcome.UP_TO_DATE + } + + then("it should copy all vss files") { + val vssFile = kspInputDir.resolve(VSS_TEST_FILE) + + vssFile.exists() shouldBe true + } + } + } + } + } +}) { + companion object { + private const val GRADLE_VERSION_TEST = "8.6" + private const val KSP_INPUT_BUILD_DIRECTORY = "kspInput" + } +} diff --git a/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/AndroidLibProject.kt b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/AndroidLibProject.kt new file mode 100644 index 00000000..9b95decd --- /dev/null +++ b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/AndroidLibProject.kt @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.eclipse.kuksa.vssprocessor.plugin.generator.project + +import kotlin.io.path.createDirectories +import kotlin.io.path.writeText + +open class AndroidLibProject(name: String) : GradleProject(name) { + final override val projectDir = rootProjectDir.resolve(name).createDirectories() + + private val buildFile = projectDir.resolve("build.gradle.kts") + private val mainDir = projectDir.resolve("src/main").createDirectories() + private val androidManifestFile = mainDir.resolve("AndroidManifest.xml") + + override fun generate() { + androidManifestFile.writeText( + """ + + + + """.trimIndent(), + ) + + buildFile.writeText( + """ + plugins { + id("com.android.library") + id("org.eclipse.kuksa.vss-processor-plugin") + } + + android { + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + namespace = "org.eclipse.kuksa.vssProcessorPluginTest" + compileSdk = $COMPILE_SDK + + defaultConfig { + minSdk = $MIN_SDK + } + } + + dependencies { + } + """.trimIndent(), + ) + } + + companion object { + private const val COMPILE_SDK = 34 + private const val MIN_SDK = 27 + } +} diff --git a/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/GradleProject.kt b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/GradleProject.kt new file mode 100644 index 00000000..be0ff7c4 --- /dev/null +++ b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/GradleProject.kt @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.eclipse.kuksa.vssprocessor.plugin.generator.project + +import java.nio.file.Path +import kotlin.io.path.createDirectories + +abstract class GradleProject(val name: String, testFolder: String = TEST_FOLDER_NAME_DEFAULT) : AutoCloseable { + val rootProjectDir = Path.of(testFolder).createDirectories() + open val projectDir: Path = rootProjectDir + + val buildDir: Path + get() = projectDir.resolve("build") + + abstract fun generate() + + open fun refresh() { + generate() + } + + override fun close() { + rootProjectDir.toFile().deleteRecursively() + } + + companion object { + private const val TEST_FOLDER_NAME_DEFAULT = "build/functionalTest/" + } +} diff --git a/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/RootGradleProject.kt b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/RootGradleProject.kt new file mode 100644 index 00000000..8d9a53b0 --- /dev/null +++ b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/RootGradleProject.kt @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.eclipse.kuksa.vssprocessor.plugin.generator.project + +import kotlin.io.path.appendLines + +abstract class RootGradleProject(name: String) : GradleProject(name) { + protected val settingsFile = rootProjectDir.resolve("settings.gradle.kts") + protected val rootBuildFile = rootProjectDir.resolve("build.gradle.kts") + + private val addedProjects = mutableListOf() + + fun add(project: GradleProject) { + if (addedProjects.isEmpty()) settingsFile.appendLines(setOf("")) + + val addedProject = setOf( + """ + include(":${project.name}") + """.trimIndent(), + ) + settingsFile.appendLines(addedProject) + + addedProjects.add(project) + } + + override fun refresh() { + super.refresh() + + addedProjects.clear() + } +} diff --git a/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/VssProcessorLibProject.kt b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/VssProcessorLibProject.kt new file mode 100644 index 00000000..b88303fa --- /dev/null +++ b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/VssProcessorLibProject.kt @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.eclipse.kuksa.vssprocessor.plugin.generator.project + +import java.io.File +import kotlin.io.path.createDirectories + +class VssProcessorLibProject(name: String) : AndroidLibProject(name) { + private val vssDir = rootProjectDir.resolve(VSS_DIR_NAME).createDirectories() + + override fun generate() { + super.generate() + + copyVssFiles(VSS_TEST_FILE) + } + + private fun copyVssFiles(vararg files: String) { + files.forEach { file -> + val certificateUrl = VssProcessorLibProject::class.java.classLoader?.getResource(file)!! + val certificateFile = File(certificateUrl.toURI()) + + val targetLocation = vssDir.resolve(certificateFile.name).toFile() + certificateFile.copyTo(targetLocation, true) + } + } + + companion object { + const val VSS_DIR_NAME = "vss" + const val VSS_TEST_FILE = "vss_rel_4.0_test.yaml" + } +} diff --git a/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/VssProcessorPluginProject.kt b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/VssProcessorPluginProject.kt new file mode 100644 index 00000000..00bae2b7 --- /dev/null +++ b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/VssProcessorPluginProject.kt @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.eclipse.kuksa.vssprocessor.plugin.generator.project + +import kotlin.io.path.createDirectories +import kotlin.io.path.writeText + +class VssProcessorPluginProject : RootGradleProject("VssProcessorPlugin") { + val localCacheFolder = projectDir.resolve("local-cache").createDirectories() + + override fun generate() { + settingsFile.writeText( + """ + pluginManagement { + includeBuild("../../../vss-processor-plugin") + + repositories { + gradlePluginPortal() + google() + mavenCentral() + } + } + + dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + mavenLocal() + google() + mavenCentral() + } + versionCatalogs { + create("libs") { + from(files("../../../gradle/libs.versions.toml")) + } + } + } + + buildCache { + local { + directory = "${localCacheFolder.toFile().toURI()}" + } + } + + rootProject.name = "${this::class.simpleName}Test" + """.trimIndent(), + ) + + rootBuildFile.writeText( + """ + buildscript { + repositories { + google() + mavenCentral() + } + + dependencies { + classpath("com.android.tools.build:gradle:$AGP_VERSION") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$KOTLIN_VERSION") + } + } + """.trimIndent(), + ) + } + + companion object { + private const val AGP_VERSION = "8.2.2" + private const val KOTLIN_VERSION = "1.9.22" + } +} diff --git a/vss-processor-plugin/src/test/resources/vss_rel_4.0_test.yaml b/vss-processor-plugin/src/test/resources/vss_rel_4.0_test.yaml new file mode 100644 index 00000000..5f2f05a5 --- /dev/null +++ b/vss-processor-plugin/src/test/resources/vss_rel_4.0_test.yaml @@ -0,0 +1,8197 @@ +Vehicle: + description: High-level vehicle data. + type: branch + uuid: ccc825f94139544dbb5f4bfd033bece6 + +Vehicle.ADAS: + description: All Advanced Driver Assist Systems data. + type: branch + uuid: 14c2b2e1297b513197d320a5ce58f42e + +Vehicle.ADAS.ABS: + description: Antilock Braking System signals. + type: branch + uuid: 219270ef27c4531f874bbda63743b330 + +Vehicle.ADAS.ABS.IsEnabled: + datatype: boolean + description: Indicates if ABS is enabled. True = Enabled. False = Disabled. + type: actuator + uuid: cad374fbfdc65df9b777508f04d5b073 + +Vehicle.ADAS.ABS.IsEngaged: + datatype: boolean + description: Indicates if ABS is currently regulating brake pressure. True = Engaged. False = Not Engaged. + type: sensor + uuid: 6dd21979a2225e31940dc2ece1aa9a04 + +Vehicle.ADAS.ABS.IsError: + datatype: boolean + description: Indicates if ABS incurred an error condition. True = Error. False = No Error. + type: sensor + uuid: 13cfabb3122254128234f9a696f14678 + +Vehicle.ADAS.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 + uuid: b101c6928fc55948b1cc485e568ecd8d + +Vehicle.ADAS.CruiseControl: + description: Signals from Cruise Control system. + type: branch + uuid: c4d751cf74f9576dbba3cc820991c1fb + +Vehicle.ADAS.CruiseControl.IsActive: + datatype: boolean + description: Indicates if cruise control system is active (i.e. actively controls speed). True = Active. False = Inactive. + type: actuator + uuid: 78ab5ce923dc5aa1a6622bcb948e1561 + +Vehicle.ADAS.CruiseControl.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 + uuid: 018417f6c8535315895d0f54d209035a + +Vehicle.ADAS.CruiseControl.IsError: + datatype: boolean + description: Indicates if cruise control system incurred an error condition. True = Error. False = No Error. + type: sensor + uuid: 22923d4a36bc5192a08e40fe9e5ed458 + +Vehicle.ADAS.CruiseControl.SpeedSet: + datatype: float + description: Set cruise control speed in kilometers per hour. + type: actuator + unit: km/h + uuid: b3f3a53ccd825e4da5cb1226f94dc005 + +Vehicle.ADAS.DMS: + description: Driver Monitoring System signals. + type: branch + uuid: 1cd72c7fc7fe5269a93c9954f46a4f60 + +Vehicle.ADAS.DMS.IsEnabled: + datatype: boolean + description: Indicates if DMS is enabled. True = Enabled. False = Disabled. + type: actuator + uuid: 63e6d3803ce35fd79afc728c65295804 + +Vehicle.ADAS.DMS.IsError: + datatype: boolean + description: Indicates if DMS incurred an error condition. True = Error. False = No Error. + type: sensor + uuid: d5213c8cb5d5575994b2c8ee1ad8eccf + +Vehicle.ADAS.DMS.IsWarning: + datatype: boolean + description: Indicates if DMS has registered a driver alert condition. + type: sensor + uuid: 2c86cd0363cd55ffb175a9e07cc32e4d + +Vehicle.ADAS.EBA: + description: Emergency Brake Assist (EBA) System signals. + type: branch + uuid: 51ec0930d0af5b91b84a0775c6e87a97 + +Vehicle.ADAS.EBA.IsEnabled: + datatype: boolean + description: Indicates if EBA is enabled. True = Enabled. False = Disabled. + type: actuator + uuid: 3ae9171b69555fb08855054ab38e9b17 + +Vehicle.ADAS.EBA.IsEngaged: + datatype: boolean + description: Indicates if EBA is currently regulating brake pressure. True = Engaged. False = Not Engaged. + type: sensor + uuid: 86360c44ead354d18af7ff14176151f6 + +Vehicle.ADAS.EBA.IsError: + datatype: boolean + description: Indicates if EBA incurred an error condition. True = Error. False = No Error. + type: sensor + uuid: bae0fe856398502ba4a09283867c6c81 + +Vehicle.ADAS.EBD: + description: Electronic Brakeforce Distribution (EBD) System signals. + type: branch + uuid: 3f4c74a588735b10ac9fe918d305cd5a + +Vehicle.ADAS.EBD.IsEnabled: + datatype: boolean + description: Indicates if EBD is enabled. True = Enabled. False = Disabled. + type: actuator + uuid: 30f88d3e68575b67853b14ce5f7a08e5 + +Vehicle.ADAS.EBD.IsEngaged: + datatype: boolean + description: Indicates if EBD is currently regulating vehicle brakeforce distribution. True = Engaged. False = Not Engaged. + type: sensor + uuid: 67aa2a598f635edda6eb944af99b06db + +Vehicle.ADAS.EBD.IsError: + datatype: boolean + description: Indicates if EBD incurred an error condition. True = Error. False = No Error. + type: sensor + uuid: 918157073be95015ae38913cd7a9796a + +Vehicle.ADAS.ESC: + description: Electronic Stability Control System signals. + type: branch + uuid: 636b4586ce7854b4b270a2f3b6c0af4f + +Vehicle.ADAS.ESC.IsEnabled: + datatype: boolean + description: Indicates if ESC is enabled. True = Enabled. False = Disabled. + type: actuator + uuid: 3f4f39b8d8c05c97a6de685282ba74b7 + +Vehicle.ADAS.ESC.IsEngaged: + datatype: boolean + description: Indicates if ESC is currently regulating vehicle stability. True = Engaged. False = Not Engaged. + type: sensor + uuid: 2088953a28385353a9d46b3a3dc11cac + +Vehicle.ADAS.ESC.IsError: + datatype: boolean + description: Indicates if ESC incurred an error condition. True = Error. False = No Error. + type: sensor + uuid: 6c237535654b5bc7a70f6a70c760b9d4 + +Vehicle.ADAS.ESC.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 + uuid: ebfd609531345c37914b89e553df80cb + +Vehicle.ADAS.ESC.RoadFriction: + description: Road friction values reported by the ESC system. + type: branch + uuid: 71a32e4eb131532c82195508d93807ed + +Vehicle.ADAS.ESC.RoadFriction.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 + uuid: 634289f58b5d511ea9979f04a9d0f2ab + +Vehicle.ADAS.ESC.RoadFriction.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 + uuid: b0eb72430cd95bfbba0d187fcb6e2a62 + +Vehicle.ADAS.ESC.RoadFriction.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 + uuid: ad0415a799575fcd8d1f49bed9a2baeb + +Vehicle.ADAS.LaneDepartureDetection: + description: Signals from Lane Departure Detection System. + type: branch + uuid: e45f33fdcf245f11981b2f201ee8281a + +Vehicle.ADAS.LaneDepartureDetection.IsEnabled: + datatype: boolean + description: Indicates if lane departure detection system is enabled. True = Enabled. False = Disabled. + type: actuator + uuid: c099ae97260f5c418977cd14631e95be + +Vehicle.ADAS.LaneDepartureDetection.IsError: + datatype: boolean + description: Indicates if lane departure system incurred an error condition. True = Error. False = No Error. + type: sensor + uuid: 73b2fc4f6a4952e4b7886671450e7798 + +Vehicle.ADAS.LaneDepartureDetection.IsWarning: + datatype: boolean + description: Indicates if lane departure detection registered a lane departure. + type: sensor + uuid: c32fcd1d56035cb08acfd380be224c6a + +Vehicle.ADAS.ObstacleDetection: + description: Signals form Obstacle Sensor System. + type: branch + uuid: e7b6d81631cc5ac584d027d4c1a66cb5 + +Vehicle.ADAS.ObstacleDetection.IsEnabled: + datatype: boolean + description: Indicates if obstacle sensor system is enabled (i.e. monitoring for obstacles). True = Enabled. False = Disabled. + type: actuator + uuid: cc0cd497285e5034a1cccb25f02e9db9 + +Vehicle.ADAS.ObstacleDetection.IsError: + datatype: boolean + description: Indicates if obstacle sensor system incurred an error condition. True = Error. False = No Error. + type: sensor + uuid: 368b74e2468d5217925a478ed6e34f9f + +Vehicle.ADAS.ObstacleDetection.IsWarning: + datatype: boolean + description: Indicates if obstacle sensor system registered an obstacle. + type: sensor + uuid: b0b1eab51f135ffcb2a17a7603415fec + +Vehicle.ADAS.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 + uuid: 044ad42893e65993bfc439455fb08faa + +Vehicle.ADAS.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 + uuid: 020410189ab4517cb85ceda268b40f51 + +Vehicle.ADAS.TCS: + description: Traction Control System signals. + type: branch + uuid: 0572e9f6b1aa5fb5b2f68086aff05073 + +Vehicle.ADAS.TCS.IsEnabled: + datatype: boolean + description: Indicates if TCS is enabled. True = Enabled. False = Disabled. + type: actuator + uuid: 1d2dda19b11758a19ba7c1d5cd2d7956 + +Vehicle.ADAS.TCS.IsEngaged: + datatype: boolean + description: Indicates if TCS is currently regulating traction. True = Engaged. False = Not Engaged. + type: sensor + uuid: b33d70009ad5589fbffe17fa7e827242 + +Vehicle.ADAS.TCS.IsError: + datatype: boolean + description: Indicates if TCS incurred an error condition. True = Error. False = No Error. + type: sensor + uuid: 08f88723ba63558b8c804b8fe8e3f149 + +Vehicle.Acceleration: + description: Spatial acceleration. Axis definitions according to ISO 8855. + type: branch + uuid: 6c490e6a798c5abc8f0178ed6deae0a8 + +Vehicle.Acceleration.Lateral: + datatype: float + description: Vehicle acceleration in Y (lateral acceleration). + type: sensor + unit: m/s^2 + uuid: 7522c5d6b7665b16a099643b2700e93c + +Vehicle.Acceleration.Longitudinal: + datatype: float + description: Vehicle acceleration in X (longitudinal acceleration). + type: sensor + unit: m/s^2 + uuid: 3d511fe7232b5841be311b37f322de5a + +Vehicle.Acceleration.Vertical: + datatype: float + description: Vehicle acceleration in Z (vertical acceleration). + type: sensor + unit: m/s^2 + uuid: a4a8a7c4ac5b52deb0b3ee4ed8787c59 + +Vehicle.AngularVelocity: + description: Spatial rotation. Axis definitions according to ISO 8855. + type: branch + uuid: 1eef530a43de56aab665d2766483cde2 + +Vehicle.AngularVelocity.Pitch: + datatype: float + description: Vehicle rotation rate along Y (lateral). + type: sensor + unit: degrees/s + uuid: 42236f4a01f45313a97fdd9b6848ce4f + +Vehicle.AngularVelocity.Roll: + datatype: float + description: Vehicle rotation rate along X (longitudinal). + type: sensor + unit: degrees/s + uuid: 221e6b93881e5771bcbd03e0849e0075 + +Vehicle.AngularVelocity.Yaw: + datatype: float + description: Vehicle rotation rate along Z (vertical). + type: sensor + unit: degrees/s + uuid: 4114c41552565c1f9035670cabe2a611 + +Vehicle.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 + uuid: 43a489636a665c3abb99b63174eb552b + +Vehicle.Body: + description: All body components. + type: branch + uuid: bd2854e6a9165c5698ce8dd9f0438ecc + +Vehicle.Body.BodyType: + datatype: string + description: Body type code as defined by ISO 3779. + type: attribute + uuid: 6253412513105deea63b1d424117fd88 + +Vehicle.Body.Hood: + 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 + uuid: 84510652bf915bbe8bf5f477aab2b44a + +Vehicle.Body.Hood.IsOpen: + datatype: boolean + description: Hood open or closed. True = Open. False = Closed. + type: actuator + uuid: 890aa3359e1a579288af1cf8e6b5b71f + +Vehicle.Body.Horn: + description: Horn signals. + type: branch + uuid: 09c76633887f52268b960740eb969c89 + +Vehicle.Body.Horn.IsActive: + datatype: boolean + description: Horn active or inactive. True = Active. False = Inactive. + type: actuator + uuid: ba20deed9314525bb9d552a2b787fb20 + +Vehicle.Body.Lights: + description: Exterior lights. + type: branch + uuid: 399d1ec14d6f55bb825e078a801bde55 + +Vehicle.Body.Lights.Backup: + description: Backup lights. + type: branch + uuid: 4fe2cb68fc77506686eced7225aeff9a + +Vehicle.Body.Lights.Backup.IsDefect: + datatype: boolean + description: Indicates if light is defect. True = Light is defect. False = Light has no defect. + type: sensor + uuid: b907c4ac4ee459faa987c64a6da424c3 + +Vehicle.Body.Lights.Backup.IsOn: + datatype: boolean + description: Indicates if light is on or off. True = On. False = Off. + type: actuator + uuid: ef23a3fa6106564195a66e21d8cf69b4 + +Vehicle.Body.Lights.Beam: + description: Beam lights. + type: branch + uuid: 6685308a9d955ecdad92a7cc68666a12 + +Vehicle.Body.Lights.Beam.High: + description: Beam lights. + type: branch + uuid: 306b51d2e1ec572fa80172aad6727da0 + +Vehicle.Body.Lights.Beam.High.IsDefect: + datatype: boolean + description: Indicates if light is defect. True = Light is defect. False = Light has no defect. + type: sensor + uuid: 83561d8c9a025cfdad6c4b325829fa00 + +Vehicle.Body.Lights.Beam.High.IsOn: + datatype: boolean + description: Indicates if light is on or off. True = On. False = Off. + type: actuator + uuid: 24d1346519b05697b872c06556a09fb4 + +Vehicle.Body.Lights.Beam.Low: + description: Beam lights. + type: branch + uuid: f6f21ea5b263545297f4411b2e15037f + +Vehicle.Body.Lights.Beam.Low.IsDefect: + datatype: boolean + description: Indicates if light is defect. True = Light is defect. False = Light has no defect. + type: sensor + uuid: 3a135f1267ea5b2a80aa9a17fc8072db + +Vehicle.Body.Lights.Beam.Low.IsOn: + datatype: boolean + description: Indicates if light is on or off. True = On. False = Off. + type: actuator + uuid: 8b4d4855b0c95963a25dc564c9758610 + +Vehicle.Body.Lights.Brake: + description: Brake lights. + type: branch + uuid: 30eabe704102501cb299d03696fad92a + +Vehicle.Body.Lights.Brake.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 + uuid: 65eb84d61ea95313985054f626b85b59 + +Vehicle.Body.Lights.Brake.IsDefect: + datatype: boolean + description: Indicates if light is defect. True = Light is defect. False = Light has no defect. + type: sensor + uuid: 1db542c5ba715e09b948527418966728 + +Vehicle.Body.Lights.DirectionIndicator: + description: Indicator lights. + type: branch + uuid: 0566cb97d05c554eb88a07142f2475ac + +Vehicle.Body.Lights.DirectionIndicator.Left: + description: Indicator lights. + type: branch + uuid: 446dea42b8e95d87b45e5e51c881bf98 + +Vehicle.Body.Lights.DirectionIndicator.Left.IsDefect: + datatype: boolean + description: Indicates if light is defect. True = Light is defect. False = Light has no defect. + type: sensor + uuid: 32a092936fb65165ba1dd8dfa38bf77d + +Vehicle.Body.Lights.DirectionIndicator.Left.IsSignaling: + datatype: boolean + description: Indicates if light is signaling or off. True = signaling. False = Off. + type: actuator + uuid: 33ac6ec5e4d9550aac6ae0ce97dae259 + +Vehicle.Body.Lights.DirectionIndicator.Right: + description: Indicator lights. + type: branch + uuid: 9922f6b417e95f1c945ef9f414bcdf78 + +Vehicle.Body.Lights.DirectionIndicator.Right.IsDefect: + datatype: boolean + description: Indicates if light is defect. True = Light is defect. False = Light has no defect. + type: sensor + uuid: db70c2d885725583a7ed95b215a8ec6c + +Vehicle.Body.Lights.DirectionIndicator.Right.IsSignaling: + datatype: boolean + description: Indicates if light is signaling or off. True = signaling. False = Off. + type: actuator + uuid: 9b0a1dab153f5dcda8df2116c3b6d487 + +Vehicle.Body.Lights.Fog: + description: Fog lights. + type: branch + uuid: 1e90cf42bb825217b283c7285a606953 + +Vehicle.Body.Lights.Fog.Front: + description: Fog lights. + type: branch + uuid: 230cc65abaaf500c9085c29d48107552 + +Vehicle.Body.Lights.Fog.Front.IsDefect: + datatype: boolean + description: Indicates if light is defect. True = Light is defect. False = Light has no defect. + type: sensor + uuid: f9238f15d2615a22802ce9ec9f1d72e9 + +Vehicle.Body.Lights.Fog.Front.IsOn: + datatype: boolean + description: Indicates if light is on or off. True = On. False = Off. + type: actuator + uuid: 0ec10846d20a5d1b9b8a286303ecb844 + +Vehicle.Body.Lights.Fog.Rear: + description: Fog lights. + type: branch + uuid: 38359f258135516cb49c0fa1f093d478 + +Vehicle.Body.Lights.Fog.Rear.IsDefect: + datatype: boolean + description: Indicates if light is defect. True = Light is defect. False = Light has no defect. + type: sensor + uuid: 1d44e594ffa35d73a6f620f479eeef4c + +Vehicle.Body.Lights.Fog.Rear.IsOn: + datatype: boolean + description: Indicates if light is on or off. True = On. False = Off. + type: actuator + uuid: 1fe08a2f687c5c2880adef26cc7de746 + +Vehicle.Body.Lights.Hazard: + description: Hazard lights. + type: branch + uuid: 803498c3be6253dfb074c0e0294be758 + +Vehicle.Body.Lights.Hazard.IsDefect: + datatype: boolean + description: Indicates if light is defect. True = Light is defect. False = Light has no defect. + type: sensor + uuid: 25cd3475beb6543a8538974b67544c43 + +Vehicle.Body.Lights.Hazard.IsSignaling: + datatype: boolean + description: Indicates if light is signaling or off. True = signaling. False = Off. + type: actuator + uuid: c53950205aa15dffa304390dcb761cc3 + +Vehicle.Body.Lights.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 + uuid: ac7db3cd30f55650bc6939df504f1a79 + +Vehicle.Body.Lights.LicensePlate: + description: License plate lights. + type: branch + uuid: 7bb12e42a8c45c198f83bf41b19131fa + +Vehicle.Body.Lights.LicensePlate.IsDefect: + datatype: boolean + description: Indicates if light is defect. True = Light is defect. False = Light has no defect. + type: sensor + uuid: 4de6594de7815cec97e5b851d70e239b + +Vehicle.Body.Lights.LicensePlate.IsOn: + datatype: boolean + description: Indicates if light is on or off. True = On. False = Off. + type: actuator + uuid: afeace5d76ed53f989ae4251090ba069 + +Vehicle.Body.Lights.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 + uuid: 2feb14a3558256339442413783969f4f + +Vehicle.Body.Lights.Parking: + description: Parking lights. + type: branch + uuid: dfb819be5cec5be09b9fb743829301c3 + +Vehicle.Body.Lights.Parking.IsDefect: + datatype: boolean + description: Indicates if light is defect. True = Light is defect. False = Light has no defect. + type: sensor + uuid: 56761305eae559c7931f6ff5fee0dfa8 + +Vehicle.Body.Lights.Parking.IsOn: + datatype: boolean + description: Indicates if light is on or off. True = On. False = Off. + type: actuator + uuid: 6ba0825427335408ad7d0f148d6250ea + +Vehicle.Body.Lights.Running: + description: Running lights. + type: branch + uuid: 38868a9f1bda573595501302c1f0a1db + +Vehicle.Body.Lights.Running.IsDefect: + datatype: boolean + description: Indicates if light is defect. True = Light is defect. False = Light has no defect. + type: sensor + uuid: 7cda127e6d45547681757e789c0b7a87 + +Vehicle.Body.Lights.Running.IsOn: + datatype: boolean + description: Indicates if light is on or off. True = On. False = Off. + type: actuator + uuid: 1c4e44f1e0275965b466ac674a5b8cac + +Vehicle.Body.Mirrors: + description: All mirrors. + type: branch + uuid: a4ea618914885a239ef5fa62c671a800 + +Vehicle.Body.Mirrors.DriverSide: + description: All mirrors. + type: branch + uuid: 3c62705bbcf654489c8179b63118829f + +Vehicle.Body.Mirrors.DriverSide.IsHeatingOn: + datatype: boolean + description: Mirror Heater on or off. True = Heater On. False = Heater Off. + type: actuator + uuid: 21262ce775a85abe9f6354f9c3ac9988 + +Vehicle.Body.Mirrors.DriverSide.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 + uuid: 4749ae14c526547c9b511f66a67b3d27 + +Vehicle.Body.Mirrors.DriverSide.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 + uuid: eafa81963c315aa78eda11eec8012d34 + +Vehicle.Body.Mirrors.PassengerSide: + description: All mirrors. + type: branch + uuid: 8025a1e06e9d5ddb96405cce1f1f38cb + +Vehicle.Body.Mirrors.PassengerSide.IsHeatingOn: + datatype: boolean + description: Mirror Heater on or off. True = Heater On. False = Heater Off. + type: actuator + uuid: 9d64ad38532658298e5f59a2f999ef57 + +Vehicle.Body.Mirrors.PassengerSide.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 + uuid: d3dc2e11874f528fa0987e596993bde8 + +Vehicle.Body.Mirrors.PassengerSide.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 + uuid: 0f3734b090065873a7feb40931c72a28 + +Vehicle.Body.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 + uuid: 2fe44a1c3bb155aca782b017efeb6175 + +Vehicle.Body.Raindetection: + description: Rain sensor signals. + type: branch + uuid: f16759f3dcfb5be4832e962da29ebd6c + +Vehicle.Body.Raindetection.Intensity: + datatype: uint8 + description: Rain intensity. 0 = Dry, No Rain. 100 = Covered. + max: 100 + type: sensor + unit: percent + uuid: 1ee0a2f22e8257d299425a4ff2652555 + +Vehicle.Body.RearMainSpoilerPosition: + datatype: float + description: Rear spoiler position, 0% = Spoiler fully stowed. 100% = Spoiler fully exposed. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 6209a82390585b869cc3d00d069eade2 + +Vehicle.Body.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 + uuid: 53ef90a851fa57f0810d50238e852f02 + +Vehicle.Body.Trunk: + 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 + uuid: a584c6a5aa235cb88ac686f8d72a1dff + +Vehicle.Body.Trunk.Front: + 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 + uuid: a455aca5bae55c22b7949fd31a765a6c + +Vehicle.Body.Trunk.Front.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 + uuid: 43d7844934a45890bf2a287b676a994b + +Vehicle.Body.Trunk.Front.IsLocked: + datatype: boolean + description: Is trunk locked or unlocked. True = Locked. False = Unlocked. + type: actuator + uuid: e0eabc210f07505fa1b66b67729d681b + +Vehicle.Body.Trunk.Front.IsOpen: + datatype: boolean + description: Trunk open or closed. True = Open. False = Closed. + type: actuator + uuid: 2047de0896a352fcaf02baa06819a023 + +Vehicle.Body.Trunk.Rear: + 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 + uuid: a6170ff5e4325f38b5d57402e1d95e5a + +Vehicle.Body.Trunk.Rear.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 + uuid: a1065214515c5f7aa86f51eb7bf36664 + +Vehicle.Body.Trunk.Rear.IsLocked: + datatype: boolean + description: Is trunk locked or unlocked. True = Locked. False = Unlocked. + type: actuator + uuid: 8f9b55b002ed59d3ac2ef0b014abf4aa + +Vehicle.Body.Trunk.Rear.IsOpen: + datatype: boolean + description: Trunk open or closed. True = Open. False = Closed. + type: actuator + uuid: 3d3249e59306594698367b839b12c938 + +Vehicle.Body.Windshield: + description: Windshield signals. + type: branch + uuid: 73efba535dcb5032b9edc43406b050b8 + +Vehicle.Body.Windshield.Front: + description: Windshield signals. + type: branch + uuid: 8f0c61e4e4f557d98729210fc3c74f72 + +Vehicle.Body.Windshield.Front.IsHeatingOn: + datatype: boolean + description: Windshield heater status. False - off, True - on. + type: actuator + uuid: 26e6a3b7e9bb58bebba29258faa6e300 + +Vehicle.Body.Windshield.Front.WasherFluid: + description: Windshield washer fluid signals + type: branch + uuid: 2de24016515353289953de5ea81efd3c + +Vehicle.Body.Windshield.Front.WasherFluid.IsLevelLow: + datatype: boolean + description: Low level indication for washer fluid. True = Level Low. False = Level OK. + type: sensor + uuid: 8ca54695ad115f9bb6f56d7c450781a7 + +Vehicle.Body.Windshield.Front.WasherFluid.Level: + datatype: uint8 + description: Washer fluid level as a percent. 0 = Empty. 100 = Full. + max: 100 + type: sensor + unit: percent + uuid: a36dfb91414f5792bd01d193dceff1f4 + +Vehicle.Body.Windshield.Front.Wiping: + description: Windshield wiper signals. + type: branch + uuid: 2cffeccdc19a587cbe2264f426c6881a + +Vehicle.Body.Windshield.Front.Wiping.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 + uuid: 7cdd36d1cc8f5f9a9f079f663190b588 + +Vehicle.Body.Windshield.Front.Wiping.IsWipersWorn: + datatype: boolean + description: Wiper wear status. True = Worn, Replacement recommended or required. False = Not Worn. + type: sensor + uuid: b04ccc7daedb559c9bcdda6b00332be5 + +Vehicle.Body.Windshield.Front.Wiping.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 + uuid: 3ee6552c96e551c5b06b79ad30226767 + +Vehicle.Body.Windshield.Front.Wiping.System: + 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 + uuid: 9002ff76166950e0aa3b7c9df3b53468 + +Vehicle.Body.Windshield.Front.Wiping.System.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 + uuid: 026307b591465a8a99ffc0ebf262b393 + +Vehicle.Body.Windshield.Front.Wiping.System.DriveCurrent: + comment: May be negative in special situations. + datatype: float + description: Actual current used by wiper drive. + type: sensor + unit: A + uuid: 251e695821b758e7b7d459d5e2ab6ca4 + +Vehicle.Body.Windshield.Front.Wiping.System.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 + uuid: 7394c8b8d20d52638881161ec1b41fc0 + +Vehicle.Body.Windshield.Front.Wiping.System.IsBlocked: + datatype: boolean + description: Indicates if wiper movement is blocked. True = Movement blocked. False = Movement not blocked. + type: sensor + uuid: 4b526a2c781e56e386c82df226061f9e + +Vehicle.Body.Windshield.Front.Wiping.System.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 + uuid: 5000f7f0c39e5fed9a95413ae4166482 + +Vehicle.Body.Windshield.Front.Wiping.System.IsOverheated: + datatype: boolean + description: Indicates if wiper system is overheated. True = Wiper system overheated. False = Wiper system not overheated. + type: sensor + uuid: e05d376ec2525ba2b61039d55f93760f + +Vehicle.Body.Windshield.Front.Wiping.System.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 + uuid: d42149fa8982593991aa5cd13a1cdee9 + +Vehicle.Body.Windshield.Front.Wiping.System.IsWiperError: + datatype: boolean + description: Indicates system failure. True if wiping is disabled due to system failure. + type: sensor + uuid: 5276055d973f57998e1b8d6e536de735 + +Vehicle.Body.Windshield.Front.Wiping.System.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 + uuid: 2015a4610d7a5fbdbb63b260640838e6 + +Vehicle.Body.Windshield.Front.Wiping.System.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 + uuid: d15518f5d1bc54a38718f43ef749dd34 + +Vehicle.Body.Windshield.Front.Wiping.System.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 + uuid: 7a4a3fdd2947596dbada6980c142f090 + +Vehicle.Body.Windshield.Front.Wiping.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 + uuid: 92c879c11bc65e6da30d582a3928caac + +Vehicle.Body.Windshield.Rear: + description: Windshield signals. + type: branch + uuid: 095ff58459b854aaa742e56447fe7a93 + +Vehicle.Body.Windshield.Rear.IsHeatingOn: + datatype: boolean + description: Windshield heater status. False - off, True - on. + type: actuator + uuid: 76d811b4c4c356f4898dd6383e28bc6f + +Vehicle.Body.Windshield.Rear.WasherFluid: + description: Windshield washer fluid signals + type: branch + uuid: 1ea4ac2370e1567b9b812c1e3020ddfb + +Vehicle.Body.Windshield.Rear.WasherFluid.IsLevelLow: + datatype: boolean + description: Low level indication for washer fluid. True = Level Low. False = Level OK. + type: sensor + uuid: 8ca0356548ae54e8af3aeace49e5ed71 + +Vehicle.Body.Windshield.Rear.WasherFluid.Level: + datatype: uint8 + description: Washer fluid level as a percent. 0 = Empty. 100 = Full. + max: 100 + type: sensor + unit: percent + uuid: c167e5b265895c108da1b9582de2dd91 + +Vehicle.Body.Windshield.Rear.Wiping: + description: Windshield wiper signals. + type: branch + uuid: f56e80a50fd75dbca48581aea4f012b7 + +Vehicle.Body.Windshield.Rear.Wiping.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 + uuid: f18b13b9d96b51c492c031d3d86d22da + +Vehicle.Body.Windshield.Rear.Wiping.IsWipersWorn: + datatype: boolean + description: Wiper wear status. True = Worn, Replacement recommended or required. False = Not Worn. + type: sensor + uuid: 0e8d5f7cb6295b908be3a03e8792cca8 + +Vehicle.Body.Windshield.Rear.Wiping.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 + uuid: 8cc0b88ac8b45f5fa30bb7755ce22648 + +Vehicle.Body.Windshield.Rear.Wiping.System: + 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 + uuid: a00826f6ecc25c3fae7ad164361bdb33 + +Vehicle.Body.Windshield.Rear.Wiping.System.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 + uuid: eddee2607a135582bbcf3d3afc845892 + +Vehicle.Body.Windshield.Rear.Wiping.System.DriveCurrent: + comment: May be negative in special situations. + datatype: float + description: Actual current used by wiper drive. + type: sensor + unit: A + uuid: 7a254692329055dfb4089e2dcc1d4ef3 + +Vehicle.Body.Windshield.Rear.Wiping.System.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 + uuid: 371171d971995c999585b028e19be461 + +Vehicle.Body.Windshield.Rear.Wiping.System.IsBlocked: + datatype: boolean + description: Indicates if wiper movement is blocked. True = Movement blocked. False = Movement not blocked. + type: sensor + uuid: 046e818b4dd9595a8301503e9afe028b + +Vehicle.Body.Windshield.Rear.Wiping.System.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 + uuid: c1357156d87c58f49d4c43c2a6e97c03 + +Vehicle.Body.Windshield.Rear.Wiping.System.IsOverheated: + datatype: boolean + description: Indicates if wiper system is overheated. True = Wiper system overheated. False = Wiper system not overheated. + type: sensor + uuid: d30bc6f33b995ef491c252980a559ee2 + +Vehicle.Body.Windshield.Rear.Wiping.System.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 + uuid: ad35e8d17cd95273b1091dcef2104ea1 + +Vehicle.Body.Windshield.Rear.Wiping.System.IsWiperError: + datatype: boolean + description: Indicates system failure. True if wiping is disabled due to system failure. + type: sensor + uuid: ac5983deacbe59d7ba1312d44bfd9cd4 + +Vehicle.Body.Windshield.Rear.Wiping.System.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 + uuid: 4e001bf679e85c9aa7319bafc3a86e75 + +Vehicle.Body.Windshield.Rear.Wiping.System.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 + uuid: f2f47522466d570baa7618fac5b0359c + +Vehicle.Body.Windshield.Rear.Wiping.System.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 + uuid: c39bef0760185555904a92a305392080 + +Vehicle.Body.Windshield.Rear.Wiping.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 + uuid: afd6a352230f5eeaa8ac5f1f188bfd33 + +Vehicle.Cabin: + description: All in-cabin components, including doors. + type: branch + uuid: 1a94457b237f5e8eb3c77c0532ac88d7 + +Vehicle.Cabin.Convertible: + description: Convertible roof. + type: branch + uuid: 2aece85d39d6569e93cf842387a645d9 + +Vehicle.Cabin.Convertible.Status: + allowed: + - UNDEFINED + - CLOSED + - OPEN + - CLOSING + - OPENING + - STALLED + datatype: string + description: Roof status on convertible vehicles. + type: sensor + uuid: c8812698198a56d7a1adcc8bbe87845f + +Vehicle.Cabin.Door: + description: All doors, including windows and switches. + type: branch + uuid: fd7f4d16f8965419a9a69fd66b40c1d7 + +Vehicle.Cabin.Door.Row1: + description: All doors, including windows and switches. + type: branch + uuid: fd3fcb481cb953dc9a853125c6ca0453 + +Vehicle.Cabin.Door.Row1.DriverSide: + description: All doors, including windows and switches. + type: branch + uuid: 0fe04659010a505a9816a3a9457b3540 + +Vehicle.Cabin.Door.Row1.DriverSide.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 + uuid: 62a265895be0566694358eecab381a4c + +Vehicle.Cabin.Door.Row1.DriverSide.IsLocked: + datatype: boolean + description: Is door locked or unlocked. True = Locked. False = Unlocked. + type: actuator + uuid: 9080712219dc57eaacf85d6630e01ca0 + +Vehicle.Cabin.Door.Row1.DriverSide.IsOpen: + datatype: boolean + description: Is door open or closed + type: actuator + uuid: da3dccb4ab085fcabca24efd99435d87 + +Vehicle.Cabin.Door.Row1.DriverSide.Shade: + description: Side window shade + type: branch + uuid: 7220d013b9205e1b9e7ca6b95cb14058 + +Vehicle.Cabin.Door.Row1.DriverSide.Shade.Position: + datatype: uint8 + description: Position of window blind. 0 = Fully retracted. 100 = Fully deployed. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 7ec218dfc5855bfa88af947d7b06b1f4 + +Vehicle.Cabin.Door.Row1.DriverSide.Shade.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 + uuid: fea7f9577a8456128c548daf3c548ea4 + +Vehicle.Cabin.Door.Row1.DriverSide.Window: + description: Door window status + type: branch + uuid: 6ab9b77468d45cdfadebe124256aa910 + +Vehicle.Cabin.Door.Row1.DriverSide.Window.IsOpen: + datatype: boolean + description: Is window open or closed? + type: sensor + uuid: ff58aae512475431bec02b5c4a36b6f9 + +Vehicle.Cabin.Door.Row1.DriverSide.Window.Position: + datatype: uint8 + description: Window position. 0 = Fully closed 100 = Fully opened. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 83da2e0448465874bf2bff9aeff91793 + +Vehicle.Cabin.Door.Row1.DriverSide.Window.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 + uuid: 5d3f802110a95653b4518b8f21836113 + +Vehicle.Cabin.Door.Row1.PassengerSide: + description: All doors, including windows and switches. + type: branch + uuid: 9ea0425fb2085ded9a393d4e999ae90a + +Vehicle.Cabin.Door.Row1.PassengerSide.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 + uuid: 74a842786a73553ba3491975c2077ac7 + +Vehicle.Cabin.Door.Row1.PassengerSide.IsLocked: + datatype: boolean + description: Is door locked or unlocked. True = Locked. False = Unlocked. + type: actuator + uuid: 48d4388ec67b519ab500ee424ce4b6cb + +Vehicle.Cabin.Door.Row1.PassengerSide.IsOpen: + datatype: boolean + description: Is door open or closed + type: actuator + uuid: 80aca3884840557db10f1314a27a5eeb + +Vehicle.Cabin.Door.Row1.PassengerSide.Shade: + description: Side window shade + type: branch + uuid: dfe64259f26a54bda64b9aa24362c7eb + +Vehicle.Cabin.Door.Row1.PassengerSide.Shade.Position: + datatype: uint8 + description: Position of window blind. 0 = Fully retracted. 100 = Fully deployed. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 8f583d09021e51319aa6bdd0e29aefc8 + +Vehicle.Cabin.Door.Row1.PassengerSide.Shade.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 + uuid: c700d6a13a16522ead84b81314fd452b + +Vehicle.Cabin.Door.Row1.PassengerSide.Window: + description: Door window status + type: branch + uuid: c588ac43d3945dc0a45994c4d298d9b0 + +Vehicle.Cabin.Door.Row1.PassengerSide.Window.IsOpen: + datatype: boolean + description: Is window open or closed? + type: sensor + uuid: 120e3b950fd657fabd90069e6e01f44e + +Vehicle.Cabin.Door.Row1.PassengerSide.Window.Position: + datatype: uint8 + description: Window position. 0 = Fully closed 100 = Fully opened. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: ec293d2eb9e052e88d01927c811711ef + +Vehicle.Cabin.Door.Row1.PassengerSide.Window.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 + uuid: 36efa23a161a5fe1b65e36f5656738fb + +Vehicle.Cabin.Door.Row2: + description: All doors, including windows and switches. + type: branch + uuid: 74c8a76ad2545ceba474a85ae84eec8e + +Vehicle.Cabin.Door.Row2.DriverSide: + description: All doors, including windows and switches. + type: branch + uuid: 996c7ede1ac453ae9aed508c2835ae56 + +Vehicle.Cabin.Door.Row2.DriverSide.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 + uuid: 707facc3d89052d8ae66675ffd8755a8 + +Vehicle.Cabin.Door.Row2.DriverSide.IsLocked: + datatype: boolean + description: Is door locked or unlocked. True = Locked. False = Unlocked. + type: actuator + uuid: df98641aae1553a68b741826496d9d42 + +Vehicle.Cabin.Door.Row2.DriverSide.IsOpen: + datatype: boolean + description: Is door open or closed + type: actuator + uuid: 49c55921d1825bc1a82334a40eeb45f9 + +Vehicle.Cabin.Door.Row2.DriverSide.Shade: + description: Side window shade + type: branch + uuid: 9b08a5dc400253b8bf31776582f275fd + +Vehicle.Cabin.Door.Row2.DriverSide.Shade.Position: + datatype: uint8 + description: Position of window blind. 0 = Fully retracted. 100 = Fully deployed. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 96227261fc205735adb031fb549de6bf + +Vehicle.Cabin.Door.Row2.DriverSide.Shade.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 + uuid: 81f6196e909d590d858fe4da18c60590 + +Vehicle.Cabin.Door.Row2.DriverSide.Window: + description: Door window status + type: branch + uuid: bb6ac206a45b507f9f1fe5fdfcf82b31 + +Vehicle.Cabin.Door.Row2.DriverSide.Window.IsOpen: + datatype: boolean + description: Is window open or closed? + type: sensor + uuid: 1fa3b2f43118575aa2f136fdd15ff61f + +Vehicle.Cabin.Door.Row2.DriverSide.Window.Position: + datatype: uint8 + description: Window position. 0 = Fully closed 100 = Fully opened. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 8a097ade895c5cd8afe9efeef79532fc + +Vehicle.Cabin.Door.Row2.DriverSide.Window.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 + uuid: 4dd1a3858c1b54cc94a8dc4d011ea307 + +Vehicle.Cabin.Door.Row2.PassengerSide: + description: All doors, including windows and switches. + type: branch + uuid: 16bc38dcd8055f50b54f87478f72f776 + +Vehicle.Cabin.Door.Row2.PassengerSide.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 + uuid: 082f7e3633ab56d4a48817329cf46ef9 + +Vehicle.Cabin.Door.Row2.PassengerSide.IsLocked: + datatype: boolean + description: Is door locked or unlocked. True = Locked. False = Unlocked. + type: actuator + uuid: 32fa3a8c0b2d5451a4a1976438417305 + +Vehicle.Cabin.Door.Row2.PassengerSide.IsOpen: + datatype: boolean + description: Is door open or closed + type: actuator + uuid: 84cab77c9c1d59aba1565b3484c5e01f + +Vehicle.Cabin.Door.Row2.PassengerSide.Shade: + description: Side window shade + type: branch + uuid: 8dc8133322a65057844f9b7eceee6ef9 + +Vehicle.Cabin.Door.Row2.PassengerSide.Shade.Position: + datatype: uint8 + description: Position of window blind. 0 = Fully retracted. 100 = Fully deployed. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: aa5627291c29505b8d2f7d652cc4800d + +Vehicle.Cabin.Door.Row2.PassengerSide.Shade.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 + uuid: 0c33dd31375452d6ad0c531eac1637c6 + +Vehicle.Cabin.Door.Row2.PassengerSide.Window: + description: Door window status + type: branch + uuid: b64ba696bf7b5fdc8dba79ae5cb119d1 + +Vehicle.Cabin.Door.Row2.PassengerSide.Window.IsOpen: + datatype: boolean + description: Is window open or closed? + type: sensor + uuid: 13e37e2924115c73a36df78f09fad493 + +Vehicle.Cabin.Door.Row2.PassengerSide.Window.Position: + datatype: uint8 + description: Window position. 0 = Fully closed 100 = Fully opened. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: e3e3fa03f4e357ae8ac8f43799a99350 + +Vehicle.Cabin.Door.Row2.PassengerSide.Window.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 + uuid: 174b3bc145625a22b23a283c424c28b4 + +Vehicle.Cabin.DoorCount: + datatype: uint8 + default: 4 + description: Number of doors in vehicle. + type: attribute + uuid: c293fbef75725c57a9918dd5a34055c4 + +Vehicle.Cabin.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 + uuid: bca9ccd50358584d8d20865694b0d15f + +Vehicle.Cabin.HVAC: + description: Climate control + type: branch + uuid: f8ff34337cdf568e91ab406a365c3249 + +Vehicle.Cabin.HVAC.AmbientAirTemperature: + datatype: float + description: Ambient air temperature inside the vehicle. + type: sensor + unit: celsius + uuid: 611868a24bc25eb9a837208c235e9491 + +Vehicle.Cabin.HVAC.IsAirConditioningActive: + datatype: boolean + description: Is Air conditioning active. + type: actuator + uuid: dc4f79e4211c54a6b4eed0236aae84a6 + +Vehicle.Cabin.HVAC.IsFrontDefrosterActive: + datatype: boolean + description: Is front defroster active. + type: actuator + uuid: afa678c87182544bb6ab81fa6a770791 + +Vehicle.Cabin.HVAC.IsRearDefrosterActive: + datatype: boolean + description: Is rear defroster active. + type: actuator + uuid: d342a7939f2e5adeaeb5e68e3a314445 + +Vehicle.Cabin.HVAC.IsRecirculationActive: + datatype: boolean + description: Is recirculation active. + type: actuator + uuid: 7b80c41c63b35c9299a410166cd33c81 + +Vehicle.Cabin.HVAC.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 + uuid: ee011a09ebc6519183177b05d7302ce8 + +Vehicle.Cabin.HVAC.Station: + description: HVAC for single station in the vehicle + type: branch + uuid: 253e683e6f135b83b6302a30b6c0ec8d + +Vehicle.Cabin.HVAC.Station.Row1: + description: HVAC for single station in the vehicle + type: branch + uuid: 80860491fba75babaf3c439d1d471a6d + +Vehicle.Cabin.HVAC.Station.Row1.Driver: + description: HVAC for single station in the vehicle + type: branch + uuid: 7480dcf1e7375c7491a4dc083a8a7d15 + +Vehicle.Cabin.HVAC.Station.Row1.Driver.AirDistribution: + allowed: + - UP + - MIDDLE + - DOWN + datatype: string + description: Direction of airstream + type: actuator + uuid: 8b7412018a6f5c0a8467bdddb53e76f7 + +Vehicle.Cabin.HVAC.Station.Row1.Driver.FanSpeed: + datatype: uint8 + description: Fan Speed, 0 = off. 100 = max + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 3db004f9a2ee528099499d660bfa715f + +Vehicle.Cabin.HVAC.Station.Row1.Driver.Temperature: + datatype: int8 + description: Temperature + type: actuator + unit: celsius + uuid: 1eae45dbda85581ca794b6b4513376cd + +Vehicle.Cabin.HVAC.Station.Row1.Passenger: + description: HVAC for single station in the vehicle + type: branch + uuid: e536a7f5f6a05ff48f26f96ef5772455 + +Vehicle.Cabin.HVAC.Station.Row1.Passenger.AirDistribution: + allowed: + - UP + - MIDDLE + - DOWN + datatype: string + description: Direction of airstream + type: actuator + uuid: 610facc5829f5d52a40e8b1e9706866c + +Vehicle.Cabin.HVAC.Station.Row1.Passenger.FanSpeed: + datatype: uint8 + description: Fan Speed, 0 = off. 100 = max + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 2d00c3cf2f735a37b646d9a51e77ef9e + +Vehicle.Cabin.HVAC.Station.Row1.Passenger.Temperature: + datatype: int8 + description: Temperature + type: actuator + unit: celsius + uuid: 3a7a6b5f8c4756d4bcf540ee41c781e1 + +Vehicle.Cabin.HVAC.Station.Row2: + description: HVAC for single station in the vehicle + type: branch + uuid: d98e8f5f94da5acfbf428c635a8bcc0c + +Vehicle.Cabin.HVAC.Station.Row2.Driver: + description: HVAC for single station in the vehicle + type: branch + uuid: d1dd7712867d51ec847afa67e6dd3c92 + +Vehicle.Cabin.HVAC.Station.Row2.Driver.AirDistribution: + allowed: + - UP + - MIDDLE + - DOWN + datatype: string + description: Direction of airstream + type: actuator + uuid: 8a021c3941ee5fed99efb5b8c7e6882a + +Vehicle.Cabin.HVAC.Station.Row2.Driver.FanSpeed: + datatype: uint8 + description: Fan Speed, 0 = off. 100 = max + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 873e0193650f5f4a88bdb9777ead4df7 + +Vehicle.Cabin.HVAC.Station.Row2.Driver.Temperature: + datatype: int8 + description: Temperature + type: actuator + unit: celsius + uuid: 50d268809c555b82b275884f8c170825 + +Vehicle.Cabin.HVAC.Station.Row2.Passenger: + description: HVAC for single station in the vehicle + type: branch + uuid: ed9c94346bd8511584c4d9a8e2d49ec0 + +Vehicle.Cabin.HVAC.Station.Row2.Passenger.AirDistribution: + allowed: + - UP + - MIDDLE + - DOWN + datatype: string + description: Direction of airstream + type: actuator + uuid: 06105fb9e69755f38a02132b4b432351 + +Vehicle.Cabin.HVAC.Station.Row2.Passenger.FanSpeed: + datatype: uint8 + description: Fan Speed, 0 = off. 100 = max + max: 100 + min: 0 + type: actuator + unit: percent + uuid: a9d1c8e5a9e35e7ca924ec4871364de8 + +Vehicle.Cabin.HVAC.Station.Row2.Passenger.Temperature: + datatype: int8 + description: Temperature + type: actuator + unit: celsius + uuid: a83b6548c3c95d288072caa1a7dc2904 + +Vehicle.Cabin.HVAC.Station.Row3: + description: HVAC for single station in the vehicle + type: branch + uuid: 6eb8d63b66c859d5b36ef52d264aed2b + +Vehicle.Cabin.HVAC.Station.Row3.Driver: + description: HVAC for single station in the vehicle + type: branch + uuid: 299b787af2fe56ab9721086824692e10 + +Vehicle.Cabin.HVAC.Station.Row3.Driver.AirDistribution: + allowed: + - UP + - MIDDLE + - DOWN + datatype: string + description: Direction of airstream + type: actuator + uuid: ec927fbdee9e51c89ccba5c3752189cb + +Vehicle.Cabin.HVAC.Station.Row3.Driver.FanSpeed: + datatype: uint8 + description: Fan Speed, 0 = off. 100 = max + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 9c111ac7582752228e43bda739c0a26a + +Vehicle.Cabin.HVAC.Station.Row3.Driver.Temperature: + datatype: int8 + description: Temperature + type: actuator + unit: celsius + uuid: d16ac539f8035e209831c1f4c7c39c83 + +Vehicle.Cabin.HVAC.Station.Row3.Passenger: + description: HVAC for single station in the vehicle + type: branch + uuid: 810eed3a9836574a886923f2ddf67dfd + +Vehicle.Cabin.HVAC.Station.Row3.Passenger.AirDistribution: + allowed: + - UP + - MIDDLE + - DOWN + datatype: string + description: Direction of airstream + type: actuator + uuid: 5cf67ab3c7d1500ab306c397b7dddb12 + +Vehicle.Cabin.HVAC.Station.Row3.Passenger.FanSpeed: + datatype: uint8 + description: Fan Speed, 0 = off. 100 = max + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 71f5693b021f52ca888335848535db51 + +Vehicle.Cabin.HVAC.Station.Row3.Passenger.Temperature: + datatype: int8 + description: Temperature + type: actuator + unit: celsius + uuid: 1499ad96881c551886081c52d404d3e3 + +Vehicle.Cabin.HVAC.Station.Row4: + description: HVAC for single station in the vehicle + type: branch + uuid: ff0c0fa26de7508dbe92a83bc087dff6 + +Vehicle.Cabin.HVAC.Station.Row4.Driver: + description: HVAC for single station in the vehicle + type: branch + uuid: 7211e138449252378f1a6ffbece35753 + +Vehicle.Cabin.HVAC.Station.Row4.Driver.AirDistribution: + allowed: + - UP + - MIDDLE + - DOWN + datatype: string + description: Direction of airstream + type: actuator + uuid: 984add0704f850f2bb06a748c43211fb + +Vehicle.Cabin.HVAC.Station.Row4.Driver.FanSpeed: + datatype: uint8 + description: Fan Speed, 0 = off. 100 = max + max: 100 + min: 0 + type: actuator + unit: percent + uuid: fbd6ca78cdc557078f91b3d649866ec2 + +Vehicle.Cabin.HVAC.Station.Row4.Driver.Temperature: + datatype: int8 + description: Temperature + type: actuator + unit: celsius + uuid: 9db31f66a7575255864758d62a4e0185 + +Vehicle.Cabin.HVAC.Station.Row4.Passenger: + description: HVAC for single station in the vehicle + type: branch + uuid: 30fac3fdc3785d7fa8eb4298da45e95b + +Vehicle.Cabin.HVAC.Station.Row4.Passenger.AirDistribution: + allowed: + - UP + - MIDDLE + - DOWN + datatype: string + description: Direction of airstream + type: actuator + uuid: 2c829297b81e54cf85a04bde79f31f34 + +Vehicle.Cabin.HVAC.Station.Row4.Passenger.FanSpeed: + datatype: uint8 + description: Fan Speed, 0 = off. 100 = max + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 580538988d3f513c88612665621bba09 + +Vehicle.Cabin.HVAC.Station.Row4.Passenger.Temperature: + datatype: int8 + description: Temperature + type: actuator + unit: celsius + uuid: 06b974ba5325558793b8a7dccb560bde + +Vehicle.Cabin.Infotainment: + description: Infotainment system. + type: branch + uuid: d88f92fbdda35012a2443b5e130d5eff + +Vehicle.Cabin.Infotainment.HMI: + description: HMI related signals + type: branch + uuid: 271e3d9202825f37bd054820e5ea8141 + +Vehicle.Cabin.Infotainment.HMI.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 + uuid: 44147980dabd56b883ae4d2491383a17 + +Vehicle.Cabin.Infotainment.HMI.CurrentLanguage: + datatype: string + description: ISO 639-1 standard language code for the current HMI + type: sensor + uuid: dc29ee5b7f7154b4ab05a9771fe930b3 + +Vehicle.Cabin.Infotainment.HMI.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 + uuid: 0f03c3955fe953e9893a1f52e964919e + +Vehicle.Cabin.Infotainment.HMI.DayNightMode: + allowed: + - DAY + - NIGHT + datatype: string + description: Current display theme + type: actuator + uuid: a892039ba136588fa26b2670f839c0cc + +Vehicle.Cabin.Infotainment.HMI.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 + uuid: 130114ebf81f59718cf257e198b90e01 + +Vehicle.Cabin.Infotainment.HMI.DistanceUnit: + allowed: + - MILES + - KILOMETERS + datatype: string + description: Distance unit used in the current HMI + type: actuator + uuid: 4b40e8bdb1a053ee9ee35338d8804e7b + +Vehicle.Cabin.Infotainment.HMI.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 + uuid: 914846f6804757ba81ca6bcfac8d2c48 + +Vehicle.Cabin.Infotainment.HMI.FontSize: + allowed: + - STANDARD + - LARGE + - EXTRA_LARGE + datatype: string + description: Font size used in the current HMI + type: actuator + uuid: 630bf4a73340503799e8d86889ffd863 + +Vehicle.Cabin.Infotainment.HMI.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 + uuid: 0e6a43ce1aa45243b753545ffa1f0f8c + +Vehicle.Cabin.Infotainment.HMI.FuelVolumeUnit: + allowed: + - LITER + - GALLON_US + - GALLON_UK + datatype: string + description: Fuel volume unit used in the current HMI + type: actuator + uuid: aef80d0bd01d593082e41abf072dab9b + +Vehicle.Cabin.Infotainment.HMI.IsScreenAlwaysOn: + datatype: boolean + description: Used to prevent the screen going black if no action placed. + type: actuator + uuid: f6f2bffbad7e5e9098b351bf99b71624 + +Vehicle.Cabin.Infotainment.HMI.LastActionTime: + datatype: string + description: Time for last hmi action, formatted according to ISO 8601 with UTC time zone. + type: sensor + uuid: 19b4f7e950bc526f8c263b4cc5954960 + +Vehicle.Cabin.Infotainment.HMI.TemperatureUnit: + allowed: + - C + - F + datatype: string + description: Temperature unit used in the current HMI + type: actuator + uuid: a7d1533490bb52b6b4f650280e72543d + +Vehicle.Cabin.Infotainment.HMI.TimeFormat: + allowed: + - HR_12 + - HR_24 + datatype: string + description: Time format used in the current HMI + type: actuator + uuid: 73083b87a4e25c02aee672ea32e40005 + +Vehicle.Cabin.Infotainment.HMI.TirePressureUnit: + allowed: + - PSI + - KPA + - BAR + datatype: string + description: Tire pressure unit used in the current HMI + type: actuator + uuid: e5ffaf58cc10523fa0858deafb61a8ce + +Vehicle.Cabin.Infotainment.Media: + description: All Media actions + type: branch + uuid: 3f324d13873e501a84daf2cfade24d0f + +Vehicle.Cabin.Infotainment.Media.Action: + allowed: + - UNKNOWN + - STOP + - PLAY + - FAST_FORWARD + - FAST_BACKWARD + - SKIP_FORWARD + - SKIP_BACKWARD + datatype: string + description: Tells if the media was + type: actuator + uuid: 0357aea525bf505981a14e4fc720094e + +Vehicle.Cabin.Infotainment.Media.DeclinedURI: + datatype: string + description: URI of suggested media that was declined + type: sensor + uuid: 51b0d6227db55b92bc35eedd8277f4c4 + +Vehicle.Cabin.Infotainment.Media.Played: + description: Collection of signals updated in concert when a new media is played + type: branch + uuid: 6585e9d3b6ff596da72a5f8c98d2d47a + +Vehicle.Cabin.Infotainment.Media.Played.Album: + datatype: string + description: Name of album being played + type: sensor + uuid: 1d80b1e2c1085def92b3548b5db2786e + +Vehicle.Cabin.Infotainment.Media.Played.Artist: + datatype: string + description: Name of artist being played + type: sensor + uuid: 076af7ad8aff5110ab5a64d1f58ccdcb + +Vehicle.Cabin.Infotainment.Media.Played.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 + uuid: f5e58f66f21f560fbd0124ab5b17460e + +Vehicle.Cabin.Infotainment.Media.Played.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 + uuid: 54fb88a7d7cf5e3aab63e8f52415c187 + +Vehicle.Cabin.Infotainment.Media.Played.Track: + datatype: string + description: Name of track being played + type: sensor + uuid: ee800d62a40351e6934649ca75927d69 + +Vehicle.Cabin.Infotainment.Media.Played.URI: + datatype: string + description: User Resource associated with the media + type: sensor + uuid: 1ed22b9925c3502d8d1389c8e02d0f07 + +Vehicle.Cabin.Infotainment.Media.SelectedURI: + datatype: string + description: URI of suggested media that was selected + type: actuator + uuid: 4820f7a961c25e91af12d3417a145d32 + +Vehicle.Cabin.Infotainment.Media.Volume: + datatype: uint8 + description: Current Media Volume + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 8b344688816f5844ae5812bb136c8006 + +Vehicle.Cabin.Infotainment.Navigation: + description: All navigation actions + type: branch + uuid: 79bb0cc4acae5d1eb34fb214352d7863 + +Vehicle.Cabin.Infotainment.Navigation.DestinationSet: + description: A navigation has been selected. + type: branch + uuid: f51ce253dc5b58168ecca99297139455 + +Vehicle.Cabin.Infotainment.Navigation.DestinationSet.Latitude: + datatype: double + description: Latitude of destination in WGS 84 geodetic coordinates. + max: 90 + min: -90 + type: actuator + unit: degrees + uuid: 3e33f3252934565d86de5409c761262b + +Vehicle.Cabin.Infotainment.Navigation.DestinationSet.Longitude: + datatype: double + description: Longitude of destination in WGS 84 geodetic coordinates. + max: 180 + min: -180 + type: actuator + unit: degrees + uuid: e9bd511146ca51639c8d42c0702e22ee + +Vehicle.Cabin.Infotainment.Navigation.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 + uuid: f5404f515db05e518d7b74460cf83eee + +Vehicle.Cabin.Infotainment.Navigation.Mute: + allowed: + - MUTED + - ALERT_ONLY + - UNMUTED + datatype: string + description: Navigation mute state that was selected. + type: actuator + uuid: d7ab68ec65aa5bafa95f042a60c91639 + +Vehicle.Cabin.Infotainment.Navigation.Volume: + datatype: uint8 + description: Current navigation volume + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 3609ff09d29d54d596068f978cbc0777 + +Vehicle.Cabin.Infotainment.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 + uuid: 7be907e3d9fd5c46a516f7cd07f050a3 + +Vehicle.Cabin.Infotainment.SmartphoneProjection: + description: All smartphone projection actions. + type: branch + uuid: fd47f73b4d6b51679f4bed75f6d63518 + +Vehicle.Cabin.Infotainment.SmartphoneProjection.Active: + allowed: + - NONE + - ACTIVE + - INACTIVE + comment: NONE indicates that projection is not supported. + datatype: string + description: Projection activation info. + type: actuator + uuid: 7156b00b47a8513c8e86f50f7d152614 + +Vehicle.Cabin.Infotainment.SmartphoneProjection.Source: + allowed: + - USB + - BLUETOOTH + - WIFI + datatype: string + description: Connectivity source selected for projection. + type: actuator + uuid: 1c2d1f379f5752ac802456a992b88156 + +Vehicle.Cabin.Infotainment.SmartphoneProjection.SupportedMode: + allowed: + - ANDROID_AUTO + - APPLE_CARPLAY + - MIRROR_LINK + - OTHER + datatype: string[] + description: Supportable list for projection. + type: attribute + uuid: 80fa132703655d989386bc6711afed49 + +Vehicle.Cabin.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 + uuid: 23d94405d1035201ae2866f911f02063 + +Vehicle.Cabin.Light: + 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 + uuid: 2fc2ad48d5315cc4aa1e4638a6985585 + +Vehicle.Cabin.Light.AmbientLight: + description: Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc. + type: branch + uuid: c3983df208565cb78c8af970a57351fd + +Vehicle.Cabin.Light.AmbientLight.Row1: + description: Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc. + type: branch + uuid: b3447dca710f51e39ed1af3d240f8851 + +Vehicle.Cabin.Light.AmbientLight.Row1.DriverSide: + description: Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc. + type: branch + uuid: e42bfc0abac857f0a40f579cc0ced424 + +Vehicle.Cabin.Light.AmbientLight.Row1.DriverSide.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 + uuid: c5717a5df33359959d1df3ae75dd687e + +Vehicle.Cabin.Light.AmbientLight.Row1.DriverSide.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 + uuid: a9ddbecc501e5ad4b95b7197cd4d6edf + +Vehicle.Cabin.Light.AmbientLight.Row1.DriverSide.IsLightOn: + datatype: boolean + description: Indicates whether the light is turned on. True = On, False = Off. + type: actuator + uuid: 3b6d9d8d6acb55bc81022522cf2499a3 + +Vehicle.Cabin.Light.AmbientLight.Row1.PassengerSide: + description: Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc. + type: branch + uuid: 05a04fb5fb025049b9e9fbb109fef22a + +Vehicle.Cabin.Light.AmbientLight.Row1.PassengerSide.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 + uuid: a58681f838a75596b6b64623803479cc + +Vehicle.Cabin.Light.AmbientLight.Row1.PassengerSide.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 + uuid: 9d9096fdd737597b8423214633a97063 + +Vehicle.Cabin.Light.AmbientLight.Row1.PassengerSide.IsLightOn: + datatype: boolean + description: Indicates whether the light is turned on. True = On, False = Off. + type: actuator + uuid: a52466424a9550868a5f6a1aa83f3dce + +Vehicle.Cabin.Light.AmbientLight.Row2: + description: Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc. + type: branch + uuid: f4462f76907e529fbcc7cc6761ca5cbe + +Vehicle.Cabin.Light.AmbientLight.Row2.DriverSide: + description: Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc. + type: branch + uuid: ddf477f1910e595f8c8055508cbdd808 + +Vehicle.Cabin.Light.AmbientLight.Row2.DriverSide.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 + uuid: 8eb7ad17cb3f546c96fb8f76a7ac09f6 + +Vehicle.Cabin.Light.AmbientLight.Row2.DriverSide.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 + uuid: 93c3bf189e045a52b2134aa20cfcf2b2 + +Vehicle.Cabin.Light.AmbientLight.Row2.DriverSide.IsLightOn: + datatype: boolean + description: Indicates whether the light is turned on. True = On, False = Off. + type: actuator + uuid: c95376e9f63f5ae996907ab83fa40a0b + +Vehicle.Cabin.Light.AmbientLight.Row2.PassengerSide: + description: Decorative coloured light inside the cabin, usually mounted on the door, ceiling, etc. + type: branch + uuid: b9a621db27d75d56b377890d98222d53 + +Vehicle.Cabin.Light.AmbientLight.Row2.PassengerSide.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 + uuid: 6ed1d61f74155275bde970d8233f0f51 + +Vehicle.Cabin.Light.AmbientLight.Row2.PassengerSide.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 + uuid: 1e9bcef987795ad3a38bc76de810df19 + +Vehicle.Cabin.Light.AmbientLight.Row2.PassengerSide.IsLightOn: + datatype: boolean + description: Indicates whether the light is turned on. True = On, False = Off. + type: actuator + uuid: e61968ff0fb15adf891efadc9181f78c + +Vehicle.Cabin.Light.InteractiveLightBar: + description: Decorative coloured light bar that supports effects, usually mounted on the dashboard (e.g. BMW i7 Interactive bar). + type: branch + uuid: de6062a1a9c05ff687128f748307e331 + +Vehicle.Cabin.Light.InteractiveLightBar.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 + uuid: 099955ec87a0528ba1a89cc3e439c806 + +Vehicle.Cabin.Light.InteractiveLightBar.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 + uuid: c0167026c1575ec8a2de0901a71d0d8d + +Vehicle.Cabin.Light.InteractiveLightBar.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 + uuid: 9c73159ff0db5341af2bd3aaffc183c5 + +Vehicle.Cabin.Light.InteractiveLightBar.IsLightOn: + datatype: boolean + description: Indicates whether the light is turned on. True = On, False = Off. + type: actuator + uuid: 7c858ba899585fd6bb65a981db056fd7 + +Vehicle.Cabin.Light.IsDomeOn: + datatype: boolean + description: Is central dome light on + type: actuator + uuid: 0dcbdddcc3bb59d292bd7a0cf3747c83 + +Vehicle.Cabin.Light.IsGloveBoxOn: + datatype: boolean + description: Is glove box light on + type: actuator + uuid: 9b4db6bf8cc95c7a855442b95e1e0e18 + +Vehicle.Cabin.Light.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 + uuid: 4d605e0e591a510d9613bdb412175729 + +Vehicle.Cabin.Light.Spotlight: + description: Spotlight for a specific area in the vehicle. + type: branch + uuid: a03cd35849a05136ac8e16f4e96d866b + +Vehicle.Cabin.Light.Spotlight.Row1: + description: Spotlight for a specific area in the vehicle. + type: branch + uuid: 35f4c5574dbb5c5bafe82107b55377ec + +Vehicle.Cabin.Light.Spotlight.Row1.DriverSide: + description: Spotlight for a specific area in the vehicle. + type: branch + uuid: 39ac4414f40754e2ab28a6bb10b397bb + +Vehicle.Cabin.Light.Spotlight.Row1.DriverSide.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 + uuid: 838b3bc619d153d993ddfad96918ad7e + +Vehicle.Cabin.Light.Spotlight.Row1.DriverSide.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 + uuid: 497ba6de557452829f1c3bbcad2c1386 + +Vehicle.Cabin.Light.Spotlight.Row1.DriverSide.IsLightOn: + datatype: boolean + description: Indicates whether the light is turned on. True = On, False = Off. + type: actuator + uuid: dff99845cbdf54239f1cc36834434a91 + +Vehicle.Cabin.Light.Spotlight.Row1.PassengerSide: + description: Spotlight for a specific area in the vehicle. + type: branch + uuid: 669fe375bd1151b497eab93492e41597 + +Vehicle.Cabin.Light.Spotlight.Row1.PassengerSide.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 + uuid: 7643021f0af15edeba9e35f7e87a7bd5 + +Vehicle.Cabin.Light.Spotlight.Row1.PassengerSide.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 + uuid: a2d72853978f54379cd66a2c82cd63fa + +Vehicle.Cabin.Light.Spotlight.Row1.PassengerSide.IsLightOn: + datatype: boolean + description: Indicates whether the light is turned on. True = On, False = Off. + type: actuator + uuid: 834df09382ee509b898b2ff2652a3ea2 + +Vehicle.Cabin.Light.Spotlight.Row2: + description: Spotlight for a specific area in the vehicle. + type: branch + uuid: 259f6228620a532abbac5548c72b3c35 + +Vehicle.Cabin.Light.Spotlight.Row2.DriverSide: + description: Spotlight for a specific area in the vehicle. + type: branch + uuid: 92fe0ca17e39548d8681a0fdd4f2a035 + +Vehicle.Cabin.Light.Spotlight.Row2.DriverSide.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 + uuid: fddcfd397c63530b8b7e6f3c5fd98b20 + +Vehicle.Cabin.Light.Spotlight.Row2.DriverSide.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 + uuid: 054dfd5255675357b090663df26c6370 + +Vehicle.Cabin.Light.Spotlight.Row2.DriverSide.IsLightOn: + datatype: boolean + description: Indicates whether the light is turned on. True = On, False = Off. + type: actuator + uuid: d7cdb8c7fe305b99a482ac7f8025519b + +Vehicle.Cabin.Light.Spotlight.Row2.PassengerSide: + description: Spotlight for a specific area in the vehicle. + type: branch + uuid: 1e9617c06a0b53eca745dcf96f8d5d70 + +Vehicle.Cabin.Light.Spotlight.Row2.PassengerSide.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 + uuid: bdc48b556b565f0e9fd4e68b814ee934 + +Vehicle.Cabin.Light.Spotlight.Row2.PassengerSide.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 + uuid: b5e5c87ee11c5f84a7d92dc7871f3241 + +Vehicle.Cabin.Light.Spotlight.Row2.PassengerSide.IsLightOn: + datatype: boolean + description: Indicates whether the light is turned on. True = On, False = Off. + type: actuator + uuid: ded8281b9520524ead6bc1a5c3cccd5d + +Vehicle.Cabin.Light.Spotlight.Row3: + description: Spotlight for a specific area in the vehicle. + type: branch + uuid: 7b6666a198e8514582f8c85525dccceb + +Vehicle.Cabin.Light.Spotlight.Row3.DriverSide: + description: Spotlight for a specific area in the vehicle. + type: branch + uuid: 36bd0e114ba652b0919db771e3a0d946 + +Vehicle.Cabin.Light.Spotlight.Row3.DriverSide.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 + uuid: 5394e601144f5d75ae66a1566d182c68 + +Vehicle.Cabin.Light.Spotlight.Row3.DriverSide.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 + uuid: 50376cb5f02750d599f3ae5932520952 + +Vehicle.Cabin.Light.Spotlight.Row3.DriverSide.IsLightOn: + datatype: boolean + description: Indicates whether the light is turned on. True = On, False = Off. + type: actuator + uuid: fa58686f4c925907a17f40aded066a01 + +Vehicle.Cabin.Light.Spotlight.Row3.PassengerSide: + description: Spotlight for a specific area in the vehicle. + type: branch + uuid: 69b6df651e9b5154b46c5709ce167fb6 + +Vehicle.Cabin.Light.Spotlight.Row3.PassengerSide.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 + uuid: b50787e8b3bf56ebb3e007ee21aa1f30 + +Vehicle.Cabin.Light.Spotlight.Row3.PassengerSide.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 + uuid: b8e1a7326abe538199f595555c4c0ca0 + +Vehicle.Cabin.Light.Spotlight.Row3.PassengerSide.IsLightOn: + datatype: boolean + description: Indicates whether the light is turned on. True = On, False = Off. + type: actuator + uuid: 68eacf65617c56489f0c1f475576eaaa + +Vehicle.Cabin.Light.Spotlight.Row4: + description: Spotlight for a specific area in the vehicle. + type: branch + uuid: 41b0adb2cba85665824d3ad497b593a8 + +Vehicle.Cabin.Light.Spotlight.Row4.DriverSide: + description: Spotlight for a specific area in the vehicle. + type: branch + uuid: 661dcc2f512159329fc272128a054b0b + +Vehicle.Cabin.Light.Spotlight.Row4.DriverSide.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 + uuid: 6cc3fc21887c593a90d799209dcc40c0 + +Vehicle.Cabin.Light.Spotlight.Row4.DriverSide.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 + uuid: 5459910482cb507db1583252b26e62c7 + +Vehicle.Cabin.Light.Spotlight.Row4.DriverSide.IsLightOn: + datatype: boolean + description: Indicates whether the light is turned on. True = On, False = Off. + type: actuator + uuid: ca9e9652c52757ce98744209c0d2344f + +Vehicle.Cabin.Light.Spotlight.Row4.PassengerSide: + description: Spotlight for a specific area in the vehicle. + type: branch + uuid: fbffb10dc86a523bb40f624c1ad385e7 + +Vehicle.Cabin.Light.Spotlight.Row4.PassengerSide.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 + uuid: fde4be32cd6f5fcf8997b01564eaadaf + +Vehicle.Cabin.Light.Spotlight.Row4.PassengerSide.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 + uuid: 8be53f681198503bb8f93d331e2315cd + +Vehicle.Cabin.Light.Spotlight.Row4.PassengerSide.IsLightOn: + datatype: boolean + description: Indicates whether the light is turned on. True = On, False = Off. + type: actuator + uuid: c35925e7af4d5a929b153cb7f587ca5b + +Vehicle.Cabin.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 + uuid: 728b62b170055bd8b1530ec423dd5a9a + +Vehicle.Cabin.RearShade: + description: Rear window shade. + type: branch + uuid: 8a0c86f4fc6f5ea8ac8cf8f327969dcc + +Vehicle.Cabin.RearShade.Position: + datatype: uint8 + description: Position of window blind. 0 = Fully retracted. 100 = Fully deployed. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 9e16fc53f2ec575dbf66c79f969949a9 + +Vehicle.Cabin.RearShade.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 + uuid: da9f01e9baf35544842f1a7674c5172a + +Vehicle.Cabin.RearviewMirror: + description: Rear-view mirror. + type: branch + uuid: e655b654ab9f55bbb04952a99755efae + +Vehicle.Cabin.RearviewMirror.DimmingLevel: + datatype: uint8 + description: Dimming level of rear-view mirror. 0 = Undimmed. 100 = Fully dimmed. + max: 100 + type: actuator + unit: percent + uuid: 4e2bcbaa6dc1586d8282324b475e5dee + +Vehicle.Cabin.Seat: + description: All seats. + type: branch + uuid: b0b253106b2851e3bb5c71ae3b09f09d + +Vehicle.Cabin.Seat.Row1: + description: All seats. + type: branch + uuid: 7a420ddeac6f538eb3939bb4a242d136 + +Vehicle.Cabin.Seat.Row1.DriverSide: + description: All seats. + type: branch + uuid: a8dd9e808a765a04874c2853c7926ed4 + +Vehicle.Cabin.Seat.Row1.DriverSide.Airbag: + description: Airbag signals. + type: branch + uuid: cf3eca19b11e5e3ea66a078bed805968 + +Vehicle.Cabin.Seat.Row1.DriverSide.Airbag.IsDeployed: + datatype: boolean + description: Airbag deployment status. True = Airbag deployed. False = Airbag not deployed. + type: sensor + uuid: 7308c4cd91025db3aad6dee3e4f9d2a1 + +Vehicle.Cabin.Seat.Row1.DriverSide.Backrest: + description: Describes signals related to the backrest of the seat. + type: branch + uuid: 876fb7f9209155749108c95bb268836b + +Vehicle.Cabin.Seat.Row1.DriverSide.Backrest.Lumbar: + description: Adjustable lumbar support mechanisms in seats allow the user to change the seat back shape. + type: branch + uuid: 2112602ef7ab5470b3e57b85d6ff903f + +Vehicle.Cabin.Seat.Row1.DriverSide.Backrest.Lumbar.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 + uuid: 637adce522d45075a064f3f94dc568ce + +Vehicle.Cabin.Seat.Row1.DriverSide.Backrest.Lumbar.Support: + datatype: float + description: Lumbar support (in/out position). 0 = Innermost position. 100 = Outermost position. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: dc2da05595a151ada19e6d86037abaf0 + +Vehicle.Cabin.Seat.Row1.DriverSide.Backrest.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 + uuid: c58f21ae6ce150bc8f0b2cdd4698f958 + +Vehicle.Cabin.Seat.Row1.DriverSide.Backrest.SideBolster: + description: Backrest side bolster (lumbar side support) settings. + type: branch + uuid: bd36af767f2e582bae11c7a62b635789 + +Vehicle.Cabin.Seat.Row1.DriverSide.Backrest.SideBolster.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 + uuid: c3bcf9587aac58af827a41364bc91b55 + +Vehicle.Cabin.Seat.Row1.DriverSide.Headrest: + description: Headrest settings. + type: branch + uuid: 4b193a02bffe52819b69d422d5e50042 + +Vehicle.Cabin.Seat.Row1.DriverSide.Headrest.Angle: + datatype: float + description: Headrest angle, relative to backrest, 0 degrees if parallel to backrest, Positive degrees = tilted forward. + type: actuator + unit: degrees + uuid: 55cf95c00d2056be859d330d0060a363 + +Vehicle.Cabin.Seat.Row1.DriverSide.Headrest.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 + uuid: 51de4b90534a5f089a9d81d53a663704 + +Vehicle.Cabin.Seat.Row1.DriverSide.Heating: + datatype: int8 + description: Seat cooling / heating. 0 = off. -100 = max cold. +100 = max heat. + max: 100 + min: -100 + type: actuator + unit: percent + uuid: efeb2be118bb5f5eb796a81d298ab560 + +Vehicle.Cabin.Seat.Row1.DriverSide.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 + uuid: f44c52884b5c58e4ae462656832c888b + +Vehicle.Cabin.Seat.Row1.DriverSide.IsBelted: + datatype: boolean + description: Is the belt engaged. + type: sensor + uuid: db477d45def05e11a90689c9e655cad9 + +Vehicle.Cabin.Seat.Row1.DriverSide.IsOccupied: + datatype: boolean + description: Does the seat have a passenger in it. + type: sensor + uuid: e8b805d0bd3e56be9258685f390a7a9c + +Vehicle.Cabin.Seat.Row1.DriverSide.Massage: + datatype: uint8 + description: Seat massage level. 0 = off. 100 = max massage. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 6d333404bc155fd2afa57a6380ecfd5c + +Vehicle.Cabin.Seat.Row1.DriverSide.Occupant: + description: Occupant data. + type: branch + uuid: 936f0c2fad4855d382e92393ec6223d7 + +Vehicle.Cabin.Seat.Row1.DriverSide.Occupant.Identifier: + description: Identifier attributes based on OAuth 2.0. + type: branch + uuid: 972f188af9425bc186a075224bbc3630 + +Vehicle.Cabin.Seat.Row1.DriverSide.Occupant.Identifier.Issuer: + datatype: string + description: Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com. + type: sensor + uuid: a48e731c91b55a2c9022b21774923b73 + +Vehicle.Cabin.Seat.Row1.DriverSide.Occupant.Identifier.Subject: + datatype: string + description: Subject for the authentication of the occupant e.g. UserID 7331677. + type: sensor + uuid: c4bb8a01fe8a5335b1c7c9288b9863c9 + +Vehicle.Cabin.Seat.Row1.DriverSide.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 + uuid: b9587caa89dd50d2af7167c99c13bc85 + +Vehicle.Cabin.Seat.Row1.DriverSide.Seating: + 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 + uuid: 1e49fb9d59d85494b290e53b7753dd72 + +Vehicle.Cabin.Seat.Row1.DriverSide.Seating.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 + uuid: b030abb632dc503aa313ba5c75ba36f1 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch: + description: Seat switch signals + type: branch + uuid: 3eb5fc8b515e5a90baaeb10bed7d68ca + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest: + description: Describes switches related to the backrest of the seat. + type: branch + uuid: 27ef6aedeefb5b288d191ca8e5306f55 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.IsReclineBackwardEngaged: + datatype: boolean + description: Backrest recline backward switch engaged (SingleSeat.Backrest.Recline). + type: actuator + uuid: 7cc9aaaa51085baaa45be2ee7c7330bf + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.IsReclineForwardEngaged: + datatype: boolean + description: Backrest recline forward switch engaged (SingleSeat.Backrest.Recline). + type: actuator + uuid: 794645c172745cb0ba6b081d9903be78 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.Lumbar: + description: Switches for SingleSeat.Backrest.Lumbar. + type: branch + uuid: e69977f72c375925ac2817d8313a78e6 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.Lumbar.IsDownEngaged: + datatype: boolean + description: Lumbar down switch engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: e34e3c3330ac503a962eb076c7a05209 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.Lumbar.IsLessSupportEngaged: + datatype: boolean + description: Is switch for less lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: 30ac7b216df9562abc6b7a2c6e0f665c + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.Lumbar.IsMoreSupportEngaged: + datatype: boolean + description: Is switch for more lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: 9645281792d65ada94160182c5ef2722 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.Lumbar.IsUpEngaged: + datatype: boolean + description: Lumbar up switch engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: 07e098c9c24c5500ac7054a75529187d + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.SideBolster: + description: Switches for SingleSeat.Backrest.SideBolster. + type: branch + uuid: 2702b44037a05092987a5da7a1b4e582 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.SideBolster.IsLessSupportEngaged: + datatype: boolean + description: Is switch for less side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). + type: actuator + uuid: 381639fd2a2751a9bb1429be5e0d5a99 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Backrest.SideBolster.IsMoreSupportEngaged: + datatype: boolean + description: Is switch for more side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). + type: actuator + uuid: 056e7fa78a095b3e8c4e025ac7f69893 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Headrest: + description: Switches for SingleSeat.Headrest. + type: branch + uuid: 2839bf77f2e95c17afd1a63e2d85249c + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Headrest.IsBackwardEngaged: + datatype: boolean + description: Head rest backward switch engaged (SingleSeat.Headrest.Angle). + type: actuator + uuid: 5d2d997eaadc510fa7a0ff4f0422aa7e + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Headrest.IsDownEngaged: + datatype: boolean + description: Head rest down switch engaged (SingleSeat.Headrest.Height). + type: actuator + uuid: 14783a76b08953bca5d24ebc8d59b824 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Headrest.IsForwardEngaged: + datatype: boolean + description: Head rest forward switch engaged (SingleSeat.Headrest.Angle). + type: actuator + uuid: fe246f08a3ba5fe89703bf807c479528 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Headrest.IsUpEngaged: + datatype: boolean + description: Head rest up switch engaged (SingleSeat.Headrest.Height). + type: actuator + uuid: 31d5f0a7c65f51c4b7e67d1c8b45b9b8 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.IsBackwardEngaged: + datatype: boolean + description: Seat backward switch engaged (SingleSeat.Position). + type: actuator + uuid: 242ef7b872b25d9b94db1553e7f0cb0e + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.IsCoolerEngaged: + datatype: boolean + description: Cooler switch for Seat heater (SingleSeat.Heating). + type: actuator + uuid: 5e450517dd065464ac9a4927abc936a7 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.IsDownEngaged: + datatype: boolean + description: Seat down switch engaged (SingleSeat.Height). + type: actuator + uuid: d982ff943e5e5e06a7984a2e7bfe2f45 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.IsForwardEngaged: + datatype: boolean + description: Seat forward switch engaged (SingleSeat.Position). + type: actuator + uuid: 3414b4d1e0ea5887b900171cb52e13b5 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.IsTiltBackwardEngaged: + datatype: boolean + description: Tilt backward switch engaged (SingleSeat.Tilt). + type: actuator + uuid: b3862480ad00587598d3f3f7c3468443 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.IsTiltForwardEngaged: + datatype: boolean + description: Tilt forward switch engaged (SingleSeat.Tilt). + type: actuator + uuid: abef0f196c08580f8b5e610071167e41 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.IsUpEngaged: + datatype: boolean + description: Seat up switch engaged (SingleSeat.Height). + type: actuator + uuid: baef531919455c159b068c8ac8e2bca2 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.IsWarmerEngaged: + datatype: boolean + description: Warmer switch for Seat heater (SingleSeat.Heating). + type: actuator + uuid: c7bd527be0fc59208eae631000d0ecf8 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Massage: + description: Switches for SingleSeat.Massage. + type: branch + uuid: 6d9d54a7a13e57769cf6ec91e63b4190 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Massage.IsDecreaseEngaged: + datatype: boolean + description: Decrease massage level switch engaged (SingleSeat.Massage). + type: actuator + uuid: dfcf5fbc84955377b1024600afdb6128 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Massage.IsIncreaseEngaged: + datatype: boolean + description: Increase massage level switch engaged (SingleSeat.Massage). + type: actuator + uuid: f321c48d000a5cf88d144e6c8aaebf64 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Seating: + description: Describes switches related to the seating of the seat. + type: branch + uuid: d71f5acd57365612bf06f4c372bcbc13 + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Seating.IsBackwardEngaged: + datatype: boolean + description: Is switch to decrease seating length engaged (SingleSeat.Seating.Length). + type: actuator + uuid: 7f35a13f8af55631bc280df0fedf00be + +Vehicle.Cabin.Seat.Row1.DriverSide.Switch.Seating.IsForwardEngaged: + datatype: boolean + description: Is switch to increase seating length engaged (SingleSeat.Seating.Length). + type: actuator + uuid: ea6bcaed18645c6fa9110c68b0dcc8b1 + +Vehicle.Cabin.Seat.Row1.DriverSide.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 + uuid: c4d3fb129999531a9b59ecff95cfc1c2 + +Vehicle.Cabin.Seat.Row1.Middle: + description: All seats. + type: branch + uuid: bb6213be75be5b33adf6ad5957bb64e9 + +Vehicle.Cabin.Seat.Row1.Middle.Airbag: + description: Airbag signals. + type: branch + uuid: 278a7e2126435a46a04dec92fd50ff8a + +Vehicle.Cabin.Seat.Row1.Middle.Airbag.IsDeployed: + datatype: boolean + description: Airbag deployment status. True = Airbag deployed. False = Airbag not deployed. + type: sensor + uuid: 41909de6e59a56f8b4d3d3a4296c4cb5 + +Vehicle.Cabin.Seat.Row1.Middle.Backrest: + description: Describes signals related to the backrest of the seat. + type: branch + uuid: 5bef9412aeaf582284dc8f9cca5a5129 + +Vehicle.Cabin.Seat.Row1.Middle.Backrest.Lumbar: + description: Adjustable lumbar support mechanisms in seats allow the user to change the seat back shape. + type: branch + uuid: 03d5b5e01dcb54e5a3f3ce890cd27cee + +Vehicle.Cabin.Seat.Row1.Middle.Backrest.Lumbar.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 + uuid: 32c42eb692605c0c8c2dc7df74a65f4e + +Vehicle.Cabin.Seat.Row1.Middle.Backrest.Lumbar.Support: + datatype: float + description: Lumbar support (in/out position). 0 = Innermost position. 100 = Outermost position. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 22125fcec8aa5bc99fca8b86edbed2f0 + +Vehicle.Cabin.Seat.Row1.Middle.Backrest.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 + uuid: f16a244ea7e2560db3991cb581149683 + +Vehicle.Cabin.Seat.Row1.Middle.Backrest.SideBolster: + description: Backrest side bolster (lumbar side support) settings. + type: branch + uuid: 0c0b84957f8158d98f5a8c6d4f3265e5 + +Vehicle.Cabin.Seat.Row1.Middle.Backrest.SideBolster.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 + uuid: 94e5f2630b7355c7b1b3ac75785bc5c6 + +Vehicle.Cabin.Seat.Row1.Middle.Headrest: + description: Headrest settings. + type: branch + uuid: a183fc37f47d55de8c5d2f2f27c779e0 + +Vehicle.Cabin.Seat.Row1.Middle.Headrest.Angle: + datatype: float + description: Headrest angle, relative to backrest, 0 degrees if parallel to backrest, Positive degrees = tilted forward. + type: actuator + unit: degrees + uuid: d5cc4a79f94f515aa8f5fa59184a5c35 + +Vehicle.Cabin.Seat.Row1.Middle.Headrest.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 + uuid: 520ec12b50515918a664ae6f2ac6b702 + +Vehicle.Cabin.Seat.Row1.Middle.Heating: + datatype: int8 + description: Seat cooling / heating. 0 = off. -100 = max cold. +100 = max heat. + max: 100 + min: -100 + type: actuator + unit: percent + uuid: 85e4a1400e1455149687f608cd4a4d08 + +Vehicle.Cabin.Seat.Row1.Middle.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 + uuid: e9ada64ce4b454928de166adaa4344da + +Vehicle.Cabin.Seat.Row1.Middle.IsBelted: + datatype: boolean + description: Is the belt engaged. + type: sensor + uuid: 42a9c6f57d75550180138950e91e096e + +Vehicle.Cabin.Seat.Row1.Middle.IsOccupied: + datatype: boolean + description: Does the seat have a passenger in it. + type: sensor + uuid: decf460a32ce5f1a9f2d4b68329707eb + +Vehicle.Cabin.Seat.Row1.Middle.Massage: + datatype: uint8 + description: Seat massage level. 0 = off. 100 = max massage. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 17936943738e57888f4c11a38570f25c + +Vehicle.Cabin.Seat.Row1.Middle.Occupant: + description: Occupant data. + type: branch + uuid: cd842b8d4e7359d3ac47e8b39ab25ea9 + +Vehicle.Cabin.Seat.Row1.Middle.Occupant.Identifier: + description: Identifier attributes based on OAuth 2.0. + type: branch + uuid: acfb210c54605ebeb1d231aa09d98575 + +Vehicle.Cabin.Seat.Row1.Middle.Occupant.Identifier.Issuer: + datatype: string + description: Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com. + type: sensor + uuid: a22655ee843f5faf8c86daf55abad5f4 + +Vehicle.Cabin.Seat.Row1.Middle.Occupant.Identifier.Subject: + datatype: string + description: Subject for the authentication of the occupant e.g. UserID 7331677. + type: sensor + uuid: d3fda2f366ea5b60a284b945c21aeb17 + +Vehicle.Cabin.Seat.Row1.Middle.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 + uuid: a9c61deb42ac5bb1b2c92fb5ee222db9 + +Vehicle.Cabin.Seat.Row1.Middle.Seating: + 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 + uuid: 46a99e1f2b3553099fbb046a6b7dd86d + +Vehicle.Cabin.Seat.Row1.Middle.Seating.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 + uuid: 6fcbf711e9c852ba91f7d846f6066978 + +Vehicle.Cabin.Seat.Row1.Middle.Switch: + description: Seat switch signals + type: branch + uuid: 85bc5781995852329c3f56ab07a00a39 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest: + description: Describes switches related to the backrest of the seat. + type: branch + uuid: d386d2b7ca955caf8a4d2467d4c7603e + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.IsReclineBackwardEngaged: + datatype: boolean + description: Backrest recline backward switch engaged (SingleSeat.Backrest.Recline). + type: actuator + uuid: a1b764756af559c0b850ee370d859c86 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.IsReclineForwardEngaged: + datatype: boolean + description: Backrest recline forward switch engaged (SingleSeat.Backrest.Recline). + type: actuator + uuid: 8bd7805b426b5e439abd732e9b503bb3 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.Lumbar: + description: Switches for SingleSeat.Backrest.Lumbar. + type: branch + uuid: acb8e84f703d518dbf6c9c8b899766b0 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.Lumbar.IsDownEngaged: + datatype: boolean + description: Lumbar down switch engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: 7f7face91df2506f9351f8c27915bc18 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.Lumbar.IsLessSupportEngaged: + datatype: boolean + description: Is switch for less lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: 0f54dcace731576785322d02b68d2068 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.Lumbar.IsMoreSupportEngaged: + datatype: boolean + description: Is switch for more lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: 44923c7fe53c5fa39b632f999a6a951e + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.Lumbar.IsUpEngaged: + datatype: boolean + description: Lumbar up switch engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: a947a1e52c3850e8ae81e12ef503c472 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.SideBolster: + description: Switches for SingleSeat.Backrest.SideBolster. + type: branch + uuid: b2617422a80e5d409d5e327bec8a5895 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.SideBolster.IsLessSupportEngaged: + datatype: boolean + description: Is switch for less side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). + type: actuator + uuid: a7d928b58dc152408e38fc7b6fdf6851 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Backrest.SideBolster.IsMoreSupportEngaged: + datatype: boolean + description: Is switch for more side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). + type: actuator + uuid: 34016708d65655708157e432fad53f1f + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Headrest: + description: Switches for SingleSeat.Headrest. + type: branch + uuid: ec7f8f340e005006bc966a96829f886d + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Headrest.IsBackwardEngaged: + datatype: boolean + description: Head rest backward switch engaged (SingleSeat.Headrest.Angle). + type: actuator + uuid: a7eee2a690c75ab7b7143d95b89d0678 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Headrest.IsDownEngaged: + datatype: boolean + description: Head rest down switch engaged (SingleSeat.Headrest.Height). + type: actuator + uuid: 90d5bb0917875c009a7ee80b61a00e24 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Headrest.IsForwardEngaged: + datatype: boolean + description: Head rest forward switch engaged (SingleSeat.Headrest.Angle). + type: actuator + uuid: cbecebd77ff953c5830fbab699a3e0b8 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Headrest.IsUpEngaged: + datatype: boolean + description: Head rest up switch engaged (SingleSeat.Headrest.Height). + type: actuator + uuid: 4abfea463f0359fcb387aa1538f12d52 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.IsBackwardEngaged: + datatype: boolean + description: Seat backward switch engaged (SingleSeat.Position). + type: actuator + uuid: 3fdbbe5de45356d383be845b5deeceb8 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.IsCoolerEngaged: + datatype: boolean + description: Cooler switch for Seat heater (SingleSeat.Heating). + type: actuator + uuid: 4ad9208a44b555d5a80b819aaf97b2c8 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.IsDownEngaged: + datatype: boolean + description: Seat down switch engaged (SingleSeat.Height). + type: actuator + uuid: f108af06fb3954d5a87fb97cfadba808 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.IsForwardEngaged: + datatype: boolean + description: Seat forward switch engaged (SingleSeat.Position). + type: actuator + uuid: 6ebb2556d17959ec9bfc1d796e1f34c6 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.IsTiltBackwardEngaged: + datatype: boolean + description: Tilt backward switch engaged (SingleSeat.Tilt). + type: actuator + uuid: c7ece3b4d7435fed910b23f7ea5360d1 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.IsTiltForwardEngaged: + datatype: boolean + description: Tilt forward switch engaged (SingleSeat.Tilt). + type: actuator + uuid: 77dca23345a358fa99636c734b4de8ac + +Vehicle.Cabin.Seat.Row1.Middle.Switch.IsUpEngaged: + datatype: boolean + description: Seat up switch engaged (SingleSeat.Height). + type: actuator + uuid: a5628090d3465668adb6f1bc32bd2329 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.IsWarmerEngaged: + datatype: boolean + description: Warmer switch for Seat heater (SingleSeat.Heating). + type: actuator + uuid: 874c7f1345975e67b6a691d541cf46f1 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Massage: + description: Switches for SingleSeat.Massage. + type: branch + uuid: d51481c8a5e05a1ca9481cd8fbaa6844 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Massage.IsDecreaseEngaged: + datatype: boolean + description: Decrease massage level switch engaged (SingleSeat.Massage). + type: actuator + uuid: cd3226582b7a5f6590d983a6ed661a7b + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Massage.IsIncreaseEngaged: + datatype: boolean + description: Increase massage level switch engaged (SingleSeat.Massage). + type: actuator + uuid: 932e55cb1ea154a0ac35170f8c63cf01 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Seating: + description: Describes switches related to the seating of the seat. + type: branch + uuid: 965137f2801f50e292cfc673a3e145ed + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Seating.IsBackwardEngaged: + datatype: boolean + description: Is switch to decrease seating length engaged (SingleSeat.Seating.Length). + type: actuator + uuid: c47a888b0ff85426a98fdcc6763abe10 + +Vehicle.Cabin.Seat.Row1.Middle.Switch.Seating.IsForwardEngaged: + datatype: boolean + description: Is switch to increase seating length engaged (SingleSeat.Seating.Length). + type: actuator + uuid: e262f30a38285d7da365a42960f440e2 + +Vehicle.Cabin.Seat.Row1.Middle.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 + uuid: a9931f9f76cd5c9aa7cac23c43d09e38 + +Vehicle.Cabin.Seat.Row1.PassengerSide: + description: All seats. + type: branch + uuid: c9eef94c5e075ce088020f8a568c0183 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Airbag: + description: Airbag signals. + type: branch + uuid: c931d21b21005b5c9f0eb9a732f9b2ef + +Vehicle.Cabin.Seat.Row1.PassengerSide.Airbag.IsDeployed: + datatype: boolean + description: Airbag deployment status. True = Airbag deployed. False = Airbag not deployed. + type: sensor + uuid: 31e4cea8ba6a5254bf1d1471402d0700 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Backrest: + description: Describes signals related to the backrest of the seat. + type: branch + uuid: 999c7466ce1f5354b4695626f3a2e935 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Backrest.Lumbar: + description: Adjustable lumbar support mechanisms in seats allow the user to change the seat back shape. + type: branch + uuid: c2fbe0340f245b4ab3b1269de65b4c2d + +Vehicle.Cabin.Seat.Row1.PassengerSide.Backrest.Lumbar.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 + uuid: 0df596249cce5c77955e6938c0c9bea6 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Backrest.Lumbar.Support: + datatype: float + description: Lumbar support (in/out position). 0 = Innermost position. 100 = Outermost position. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: e8b52c64f1e957cbbbaf63b03c3dd9ef + +Vehicle.Cabin.Seat.Row1.PassengerSide.Backrest.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 + uuid: 089f2ca3258e5f94871953539fe5acbc + +Vehicle.Cabin.Seat.Row1.PassengerSide.Backrest.SideBolster: + description: Backrest side bolster (lumbar side support) settings. + type: branch + uuid: 4c48af687fd15c7785b9c4c075dc457c + +Vehicle.Cabin.Seat.Row1.PassengerSide.Backrest.SideBolster.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 + uuid: bd9dfba052ab5b24aa0eaa35fa47914f + +Vehicle.Cabin.Seat.Row1.PassengerSide.Headrest: + description: Headrest settings. + type: branch + uuid: f13eb4ad4b7a51bbad88db50dae636d3 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Headrest.Angle: + datatype: float + description: Headrest angle, relative to backrest, 0 degrees if parallel to backrest, Positive degrees = tilted forward. + type: actuator + unit: degrees + uuid: 5456d8e86ecb5cdf91b2bc08fe696d19 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Headrest.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 + uuid: 2701bc81fcc059b2b4ddc938407a503a + +Vehicle.Cabin.Seat.Row1.PassengerSide.Heating: + datatype: int8 + description: Seat cooling / heating. 0 = off. -100 = max cold. +100 = max heat. + max: 100 + min: -100 + type: actuator + unit: percent + uuid: f62e56245db158508c9535a07474eed7 + +Vehicle.Cabin.Seat.Row1.PassengerSide.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 + uuid: ae6a103cb748510e9383e2b72d6f2a00 + +Vehicle.Cabin.Seat.Row1.PassengerSide.IsBelted: + datatype: boolean + description: Is the belt engaged. + type: sensor + uuid: ed71588a6ea1511cbd4578967a94f963 + +Vehicle.Cabin.Seat.Row1.PassengerSide.IsOccupied: + datatype: boolean + description: Does the seat have a passenger in it. + type: sensor + uuid: 05a31ee58c97506485a19a2e0c213244 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Massage: + datatype: uint8 + description: Seat massage level. 0 = off. 100 = max massage. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 89f7a63fc4f65f05b7df4b74b232cc9f + +Vehicle.Cabin.Seat.Row1.PassengerSide.Occupant: + description: Occupant data. + type: branch + uuid: fd753377a2335b9fbda2cc2d29f826a6 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Occupant.Identifier: + description: Identifier attributes based on OAuth 2.0. + type: branch + uuid: c7156b61e1b45698ae98b5d30c31ade3 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Occupant.Identifier.Issuer: + datatype: string + description: Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com. + type: sensor + uuid: bab527a608bd55d4b8a9d4b7d46c7037 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Occupant.Identifier.Subject: + datatype: string + description: Subject for the authentication of the occupant e.g. UserID 7331677. + type: sensor + uuid: 121cb6ae3f4451df848f7809b313c392 + +Vehicle.Cabin.Seat.Row1.PassengerSide.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 + uuid: 3d09265704af56d59e5d80f92be3d66f + +Vehicle.Cabin.Seat.Row1.PassengerSide.Seating: + 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 + uuid: 4ae8093ea56d5613a782b97c8b1be915 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Seating.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 + uuid: c4dfd494ffc95c4abdc49716a3b73c53 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch: + description: Seat switch signals + type: branch + uuid: d7c6f91f09425d619cb93542ea55bed4 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest: + description: Describes switches related to the backrest of the seat. + type: branch + uuid: d035fd8a2e855edfb90e7955b3bd8065 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.IsReclineBackwardEngaged: + datatype: boolean + description: Backrest recline backward switch engaged (SingleSeat.Backrest.Recline). + type: actuator + uuid: 8e0c8a7fbb8a5cee933b3b1b50d4cbf1 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.IsReclineForwardEngaged: + datatype: boolean + description: Backrest recline forward switch engaged (SingleSeat.Backrest.Recline). + type: actuator + uuid: 2a19419f5c355aff9a41ee8c8ec434a0 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.Lumbar: + description: Switches for SingleSeat.Backrest.Lumbar. + type: branch + uuid: 73c59cba46725637bfa725a042713d0b + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.Lumbar.IsDownEngaged: + datatype: boolean + description: Lumbar down switch engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: 5e8dd9ae1001569388bb4da677bdb377 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.Lumbar.IsLessSupportEngaged: + datatype: boolean + description: Is switch for less lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: cb08d335fa245f34b616f9c56fc529e0 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.Lumbar.IsMoreSupportEngaged: + datatype: boolean + description: Is switch for more lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: c688f60d0f0650868ac32cba3d0c526e + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.Lumbar.IsUpEngaged: + datatype: boolean + description: Lumbar up switch engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: 10c691cb05f0581b8a6c4e764d81404d + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.SideBolster: + description: Switches for SingleSeat.Backrest.SideBolster. + type: branch + uuid: 8dfa254cccc059e881af97bce032cea9 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.SideBolster.IsLessSupportEngaged: + datatype: boolean + description: Is switch for less side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). + type: actuator + uuid: 0ef641f1e4e75200879330a5de3d3315 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Backrest.SideBolster.IsMoreSupportEngaged: + datatype: boolean + description: Is switch for more side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). + type: actuator + uuid: 811d841212295f92a7d070dac262ef84 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Headrest: + description: Switches for SingleSeat.Headrest. + type: branch + uuid: 3d328ade9dbf52e1bf8002caed74253f + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Headrest.IsBackwardEngaged: + datatype: boolean + description: Head rest backward switch engaged (SingleSeat.Headrest.Angle). + type: actuator + uuid: e5b1e2a73c1d530298be5aa2b92ceb6a + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Headrest.IsDownEngaged: + datatype: boolean + description: Head rest down switch engaged (SingleSeat.Headrest.Height). + type: actuator + uuid: 2bd34fa3b02d54b0822890750a57eaae + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Headrest.IsForwardEngaged: + datatype: boolean + description: Head rest forward switch engaged (SingleSeat.Headrest.Angle). + type: actuator + uuid: 5486d882309558cd95a5d0742d9eea2a + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Headrest.IsUpEngaged: + datatype: boolean + description: Head rest up switch engaged (SingleSeat.Headrest.Height). + type: actuator + uuid: 90a53f3c0a585c7cb5b1565092e62539 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.IsBackwardEngaged: + datatype: boolean + description: Seat backward switch engaged (SingleSeat.Position). + type: actuator + uuid: d1a57d3e62725e51871433889877eb3e + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.IsCoolerEngaged: + datatype: boolean + description: Cooler switch for Seat heater (SingleSeat.Heating). + type: actuator + uuid: 5861078e66285792a4c5caa3158c3b93 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.IsDownEngaged: + datatype: boolean + description: Seat down switch engaged (SingleSeat.Height). + type: actuator + uuid: ec27034136cd5e728c88c7ac0b87cf04 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.IsForwardEngaged: + datatype: boolean + description: Seat forward switch engaged (SingleSeat.Position). + type: actuator + uuid: 012004eeaa2250758c2fea329aec9dc2 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.IsTiltBackwardEngaged: + datatype: boolean + description: Tilt backward switch engaged (SingleSeat.Tilt). + type: actuator + uuid: a49e3b4e3047525ab1034e04896f7a73 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.IsTiltForwardEngaged: + datatype: boolean + description: Tilt forward switch engaged (SingleSeat.Tilt). + type: actuator + uuid: 1abb80c7ce615f73a2e0fb6583b09431 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.IsUpEngaged: + datatype: boolean + description: Seat up switch engaged (SingleSeat.Height). + type: actuator + uuid: d4d0df3f6b5b51039847f748282d77ab + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.IsWarmerEngaged: + datatype: boolean + description: Warmer switch for Seat heater (SingleSeat.Heating). + type: actuator + uuid: 597dd13468fd5b57858c6bbbc911392e + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Massage: + description: Switches for SingleSeat.Massage. + type: branch + uuid: 3739036112535b9cbdad726a5f6e17a4 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Massage.IsDecreaseEngaged: + datatype: boolean + description: Decrease massage level switch engaged (SingleSeat.Massage). + type: actuator + uuid: 8044c9338f5e5df1a036c91cc4d91423 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Massage.IsIncreaseEngaged: + datatype: boolean + description: Increase massage level switch engaged (SingleSeat.Massage). + type: actuator + uuid: 1d7d951e97b45aa5824f4e959c68737b + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Seating: + description: Describes switches related to the seating of the seat. + type: branch + uuid: 12458c0216335477882e669e98330a1a + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Seating.IsBackwardEngaged: + datatype: boolean + description: Is switch to decrease seating length engaged (SingleSeat.Seating.Length). + type: actuator + uuid: 87edf3b9896659f6a87d05531c260a36 + +Vehicle.Cabin.Seat.Row1.PassengerSide.Switch.Seating.IsForwardEngaged: + datatype: boolean + description: Is switch to increase seating length engaged (SingleSeat.Seating.Length). + type: actuator + uuid: aaf6db1585b15365be9ac729c11688e3 + +Vehicle.Cabin.Seat.Row1.PassengerSide.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 + uuid: 086f231720875bb5b4d5e2b8ed0092df + +Vehicle.Cabin.Seat.Row2: + description: All seats. + type: branch + uuid: 8c3aaf015ef8595cb45d9461a9c1195f + +Vehicle.Cabin.Seat.Row2.DriverSide: + description: All seats. + type: branch + uuid: a3956dd19f73577a9e118e5ee6f5a180 + +Vehicle.Cabin.Seat.Row2.DriverSide.Airbag: + description: Airbag signals. + type: branch + uuid: 215134942dea5de0bf542dc6b1f7aeb3 + +Vehicle.Cabin.Seat.Row2.DriverSide.Airbag.IsDeployed: + datatype: boolean + description: Airbag deployment status. True = Airbag deployed. False = Airbag not deployed. + type: sensor + uuid: 1ec1956a54ae5107a802b9ec2b215b41 + +Vehicle.Cabin.Seat.Row2.DriverSide.Backrest: + description: Describes signals related to the backrest of the seat. + type: branch + uuid: 1b7a7b3e344d50cca118327668f35be5 + +Vehicle.Cabin.Seat.Row2.DriverSide.Backrest.Lumbar: + description: Adjustable lumbar support mechanisms in seats allow the user to change the seat back shape. + type: branch + uuid: 5eb73ac74d6a56ba9155cf16e145b9b4 + +Vehicle.Cabin.Seat.Row2.DriverSide.Backrest.Lumbar.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 + uuid: eb67d32eadf15c0085f6314546e86e20 + +Vehicle.Cabin.Seat.Row2.DriverSide.Backrest.Lumbar.Support: + datatype: float + description: Lumbar support (in/out position). 0 = Innermost position. 100 = Outermost position. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: c8fec973719351b3b17f3824653d685a + +Vehicle.Cabin.Seat.Row2.DriverSide.Backrest.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 + uuid: 65cf20c7effb5d159fd1099869cd0ebe + +Vehicle.Cabin.Seat.Row2.DriverSide.Backrest.SideBolster: + description: Backrest side bolster (lumbar side support) settings. + type: branch + uuid: 2e06cc24d15651a1a1616fc77a5ba23b + +Vehicle.Cabin.Seat.Row2.DriverSide.Backrest.SideBolster.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 + uuid: 04cc8929b0f0509495b512a77b48afef + +Vehicle.Cabin.Seat.Row2.DriverSide.Headrest: + description: Headrest settings. + type: branch + uuid: 67f772d705af5fac95ec768cf2bfe557 + +Vehicle.Cabin.Seat.Row2.DriverSide.Headrest.Angle: + datatype: float + description: Headrest angle, relative to backrest, 0 degrees if parallel to backrest, Positive degrees = tilted forward. + type: actuator + unit: degrees + uuid: b7ee83ec92ac5595b56557cecbce7fd2 + +Vehicle.Cabin.Seat.Row2.DriverSide.Headrest.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 + uuid: 916740f753715f3ea6c55b5284613f8e + +Vehicle.Cabin.Seat.Row2.DriverSide.Heating: + datatype: int8 + description: Seat cooling / heating. 0 = off. -100 = max cold. +100 = max heat. + max: 100 + min: -100 + type: actuator + unit: percent + uuid: 7ae50ab2fea25798adc27814579bd33b + +Vehicle.Cabin.Seat.Row2.DriverSide.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 + uuid: 2bd4b50c13d7541db0a86a945c728849 + +Vehicle.Cabin.Seat.Row2.DriverSide.IsBelted: + datatype: boolean + description: Is the belt engaged. + type: sensor + uuid: ec3dc746a34752a1b55ac428579c3dfc + +Vehicle.Cabin.Seat.Row2.DriverSide.IsOccupied: + datatype: boolean + description: Does the seat have a passenger in it. + type: sensor + uuid: 3752de2ef1d85781a6e0a20a6812b9fc + +Vehicle.Cabin.Seat.Row2.DriverSide.Massage: + datatype: uint8 + description: Seat massage level. 0 = off. 100 = max massage. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: d7428179c70d576fb626a9a4bae4299e + +Vehicle.Cabin.Seat.Row2.DriverSide.Occupant: + description: Occupant data. + type: branch + uuid: e4a46503b2945ab18ac1ad96f0517151 + +Vehicle.Cabin.Seat.Row2.DriverSide.Occupant.Identifier: + description: Identifier attributes based on OAuth 2.0. + type: branch + uuid: a12121bc096c5224a14c2d8ab10ae88b + +Vehicle.Cabin.Seat.Row2.DriverSide.Occupant.Identifier.Issuer: + datatype: string + description: Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com. + type: sensor + uuid: a6b6158bc96c5ac98ad206193ff8b358 + +Vehicle.Cabin.Seat.Row2.DriverSide.Occupant.Identifier.Subject: + datatype: string + description: Subject for the authentication of the occupant e.g. UserID 7331677. + type: sensor + uuid: dfc0fb66d7c058b7925970667b284bea + +Vehicle.Cabin.Seat.Row2.DriverSide.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 + uuid: 71b34d4141225b77bc232bd3a2efa86f + +Vehicle.Cabin.Seat.Row2.DriverSide.Seating: + 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 + uuid: 5e581a713efc5867b769f38e64a2f320 + +Vehicle.Cabin.Seat.Row2.DriverSide.Seating.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 + uuid: 4a5bd16967c65dd88eacf3e4ef8c071f + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch: + description: Seat switch signals + type: branch + uuid: 7a5a1ffb9ab65c6a9ee4cb581077f015 + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest: + description: Describes switches related to the backrest of the seat. + type: branch + uuid: 55b0756c450a5df2b1a4b0e54b27804b + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.IsReclineBackwardEngaged: + datatype: boolean + description: Backrest recline backward switch engaged (SingleSeat.Backrest.Recline). + type: actuator + uuid: d45a563848b15928885bc7abb88a2d29 + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.IsReclineForwardEngaged: + datatype: boolean + description: Backrest recline forward switch engaged (SingleSeat.Backrest.Recline). + type: actuator + uuid: 838457df1a415fd1a9575eda730a3fa0 + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.Lumbar: + description: Switches for SingleSeat.Backrest.Lumbar. + type: branch + uuid: 7789f295ccf75ab2aa899d2b095bafd4 + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.Lumbar.IsDownEngaged: + datatype: boolean + description: Lumbar down switch engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: 802ef996df3850c299f5c88dff83ab13 + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.Lumbar.IsLessSupportEngaged: + datatype: boolean + description: Is switch for less lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: 9c6786e620f151a3a5eeb4b54395d2d8 + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.Lumbar.IsMoreSupportEngaged: + datatype: boolean + description: Is switch for more lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: eeaa79b8443c59c28ba4eed3d2cc1aa1 + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.Lumbar.IsUpEngaged: + datatype: boolean + description: Lumbar up switch engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: ebf3534d31615c55803dc8b48d92ca6f + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.SideBolster: + description: Switches for SingleSeat.Backrest.SideBolster. + type: branch + uuid: a5e3d845386b51c7bd2b054b81025112 + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.SideBolster.IsLessSupportEngaged: + datatype: boolean + description: Is switch for less side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). + type: actuator + uuid: ed76c57d2d0c5a1d851a708fbc750a29 + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Backrest.SideBolster.IsMoreSupportEngaged: + datatype: boolean + description: Is switch for more side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). + type: actuator + uuid: a5bcb578170d5442aad65c116302557c + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Headrest: + description: Switches for SingleSeat.Headrest. + type: branch + uuid: bb516988089154dfaff8b5b376778d76 + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Headrest.IsBackwardEngaged: + datatype: boolean + description: Head rest backward switch engaged (SingleSeat.Headrest.Angle). + type: actuator + uuid: c2654d9579905679b73ab44b6028b664 + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Headrest.IsDownEngaged: + datatype: boolean + description: Head rest down switch engaged (SingleSeat.Headrest.Height). + type: actuator + uuid: 10092cdf11165ffdb1e5b616fa5f841a + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Headrest.IsForwardEngaged: + datatype: boolean + description: Head rest forward switch engaged (SingleSeat.Headrest.Angle). + type: actuator + uuid: aa341f93f6095298ba328a8f164452cd + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Headrest.IsUpEngaged: + datatype: boolean + description: Head rest up switch engaged (SingleSeat.Headrest.Height). + type: actuator + uuid: bf7acae10ed55aa49a9579f7dd028a8d + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.IsBackwardEngaged: + datatype: boolean + description: Seat backward switch engaged (SingleSeat.Position). + type: actuator + uuid: a313045c29195b9ab11141155dd7ce17 + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.IsCoolerEngaged: + datatype: boolean + description: Cooler switch for Seat heater (SingleSeat.Heating). + type: actuator + uuid: 05e311e0669d5c128757475c8a83dc51 + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.IsDownEngaged: + datatype: boolean + description: Seat down switch engaged (SingleSeat.Height). + type: actuator + uuid: 192b6f898aa35459baa670b58c59c48f + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.IsForwardEngaged: + datatype: boolean + description: Seat forward switch engaged (SingleSeat.Position). + type: actuator + uuid: 95928045f69d5bfe9ef1c3eb2afec32a + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.IsTiltBackwardEngaged: + datatype: boolean + description: Tilt backward switch engaged (SingleSeat.Tilt). + type: actuator + uuid: d4f3974ffcd75ba3a5f040f9e823fffe + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.IsTiltForwardEngaged: + datatype: boolean + description: Tilt forward switch engaged (SingleSeat.Tilt). + type: actuator + uuid: aa71ac6246895ec1b6c74fd76ceecdda + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.IsUpEngaged: + datatype: boolean + description: Seat up switch engaged (SingleSeat.Height). + type: actuator + uuid: c2915c2c175c5a3a862b99d9d2a9cc9a + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.IsWarmerEngaged: + datatype: boolean + description: Warmer switch for Seat heater (SingleSeat.Heating). + type: actuator + uuid: 65c26ab3824b5208bb21d7b8e2dd0124 + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Massage: + description: Switches for SingleSeat.Massage. + type: branch + uuid: e40ca46bfdeb5a82965c1d6b0fc06890 + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Massage.IsDecreaseEngaged: + datatype: boolean + description: Decrease massage level switch engaged (SingleSeat.Massage). + type: actuator + uuid: 854f8899693756e8840ee04c856dd12b + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Massage.IsIncreaseEngaged: + datatype: boolean + description: Increase massage level switch engaged (SingleSeat.Massage). + type: actuator + uuid: a10a2542fdc85bd59286d62f5af32210 + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Seating: + description: Describes switches related to the seating of the seat. + type: branch + uuid: f28ce1da77645fcd83aa72171ea172e8 + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Seating.IsBackwardEngaged: + datatype: boolean + description: Is switch to decrease seating length engaged (SingleSeat.Seating.Length). + type: actuator + uuid: 5d6d6db128965724a9e6f236d9532377 + +Vehicle.Cabin.Seat.Row2.DriverSide.Switch.Seating.IsForwardEngaged: + datatype: boolean + description: Is switch to increase seating length engaged (SingleSeat.Seating.Length). + type: actuator + uuid: 9ec6de29b168513f823be11c8f348e8c + +Vehicle.Cabin.Seat.Row2.DriverSide.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 + uuid: 68275a8560a95481a54b590ce458d0e9 + +Vehicle.Cabin.Seat.Row2.Middle: + description: All seats. + type: branch + uuid: a27650921e1e5ee0bd56562364c7dd6f + +Vehicle.Cabin.Seat.Row2.Middle.Airbag: + description: Airbag signals. + type: branch + uuid: aa6d77c09158565787a2e418a1c9ea98 + +Vehicle.Cabin.Seat.Row2.Middle.Airbag.IsDeployed: + datatype: boolean + description: Airbag deployment status. True = Airbag deployed. False = Airbag not deployed. + type: sensor + uuid: cc06da5cab1e5b2e91d180c93c9e8eab + +Vehicle.Cabin.Seat.Row2.Middle.Backrest: + description: Describes signals related to the backrest of the seat. + type: branch + uuid: 4f54b32f4c85549b88acbe7cd19dcb20 + +Vehicle.Cabin.Seat.Row2.Middle.Backrest.Lumbar: + description: Adjustable lumbar support mechanisms in seats allow the user to change the seat back shape. + type: branch + uuid: f675492be60e5a1f9e4ed760a2ee4c33 + +Vehicle.Cabin.Seat.Row2.Middle.Backrest.Lumbar.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 + uuid: 1a20e907d2515d669c8207a464685be8 + +Vehicle.Cabin.Seat.Row2.Middle.Backrest.Lumbar.Support: + datatype: float + description: Lumbar support (in/out position). 0 = Innermost position. 100 = Outermost position. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: c281162d58ed50ccbd90fa58a1478047 + +Vehicle.Cabin.Seat.Row2.Middle.Backrest.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 + uuid: d24b223dcbb0534389c6c506126497e7 + +Vehicle.Cabin.Seat.Row2.Middle.Backrest.SideBolster: + description: Backrest side bolster (lumbar side support) settings. + type: branch + uuid: 10538af050535035a3a20e6f702ce99f + +Vehicle.Cabin.Seat.Row2.Middle.Backrest.SideBolster.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 + uuid: b391d00bfb8f5e699fa2332cb5991cdb + +Vehicle.Cabin.Seat.Row2.Middle.Headrest: + description: Headrest settings. + type: branch + uuid: eb9a3ea623445fbab28e98ace9716f48 + +Vehicle.Cabin.Seat.Row2.Middle.Headrest.Angle: + datatype: float + description: Headrest angle, relative to backrest, 0 degrees if parallel to backrest, Positive degrees = tilted forward. + type: actuator + unit: degrees + uuid: 41f7b225f1485deaba50f489d58656da + +Vehicle.Cabin.Seat.Row2.Middle.Headrest.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 + uuid: 987682ae6e7a539897bab4d96458fe15 + +Vehicle.Cabin.Seat.Row2.Middle.Heating: + datatype: int8 + description: Seat cooling / heating. 0 = off. -100 = max cold. +100 = max heat. + max: 100 + min: -100 + type: actuator + unit: percent + uuid: 3b6a82f5f68f56bba88b7c5349e1a45d + +Vehicle.Cabin.Seat.Row2.Middle.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 + uuid: 5e2a819627075c7ea1a6fb2c6b7e550d + +Vehicle.Cabin.Seat.Row2.Middle.IsBelted: + datatype: boolean + description: Is the belt engaged. + type: sensor + uuid: a4c37cf044a25eb9925b2278786b6cba + +Vehicle.Cabin.Seat.Row2.Middle.IsOccupied: + datatype: boolean + description: Does the seat have a passenger in it. + type: sensor + uuid: 50e0eeee98e95db58b87aa11a9285492 + +Vehicle.Cabin.Seat.Row2.Middle.Massage: + datatype: uint8 + description: Seat massage level. 0 = off. 100 = max massage. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: d5c053d69d3457ecb3b87be15ccbfe1c + +Vehicle.Cabin.Seat.Row2.Middle.Occupant: + description: Occupant data. + type: branch + uuid: 6850b36bd23f57d682a3ef7bc4faab5d + +Vehicle.Cabin.Seat.Row2.Middle.Occupant.Identifier: + description: Identifier attributes based on OAuth 2.0. + type: branch + uuid: 3216275b8b6e5ab2a5f739232945c139 + +Vehicle.Cabin.Seat.Row2.Middle.Occupant.Identifier.Issuer: + datatype: string + description: Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com. + type: sensor + uuid: 299d9f7fadef59859076cc783c2c6044 + +Vehicle.Cabin.Seat.Row2.Middle.Occupant.Identifier.Subject: + datatype: string + description: Subject for the authentication of the occupant e.g. UserID 7331677. + type: sensor + uuid: 2b257368bdb556d087e8f13806003ab2 + +Vehicle.Cabin.Seat.Row2.Middle.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 + uuid: c7e61a5fe6f35d0fb50a4cbb3c5d15e8 + +Vehicle.Cabin.Seat.Row2.Middle.Seating: + 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 + uuid: 8a5674259c805a498c827cc4341b20c7 + +Vehicle.Cabin.Seat.Row2.Middle.Seating.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 + uuid: 76071549a729587fbdebb78ef360cad9 + +Vehicle.Cabin.Seat.Row2.Middle.Switch: + description: Seat switch signals + type: branch + uuid: c634c8cf644d57098ae8b5337dec44a9 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest: + description: Describes switches related to the backrest of the seat. + type: branch + uuid: ea42e74c9ee55a188af9e0728428a991 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.IsReclineBackwardEngaged: + datatype: boolean + description: Backrest recline backward switch engaged (SingleSeat.Backrest.Recline). + type: actuator + uuid: 28a3b3bd920c552b8079c52743f10c22 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.IsReclineForwardEngaged: + datatype: boolean + description: Backrest recline forward switch engaged (SingleSeat.Backrest.Recline). + type: actuator + uuid: 2f81fa98e09b5cbdb462747053b61fe0 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.Lumbar: + description: Switches for SingleSeat.Backrest.Lumbar. + type: branch + uuid: 11adccdb44b15e26b22252dd75810422 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.Lumbar.IsDownEngaged: + datatype: boolean + description: Lumbar down switch engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: fbb8355fefd151b58936c7adbde8edd2 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.Lumbar.IsLessSupportEngaged: + datatype: boolean + description: Is switch for less lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: 03390dc0feb256f4977f5aadcdef1663 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.Lumbar.IsMoreSupportEngaged: + datatype: boolean + description: Is switch for more lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: 703ec67285de5b3799ebd2e4f090e2eb + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.Lumbar.IsUpEngaged: + datatype: boolean + description: Lumbar up switch engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: 24535eb7418f5bd4ac16900ea925c3ee + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.SideBolster: + description: Switches for SingleSeat.Backrest.SideBolster. + type: branch + uuid: 0618172eae735abdb3c40ed24481cb68 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.SideBolster.IsLessSupportEngaged: + datatype: boolean + description: Is switch for less side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). + type: actuator + uuid: c67fc3cb95bf54ef988ec24b76db4221 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Backrest.SideBolster.IsMoreSupportEngaged: + datatype: boolean + description: Is switch for more side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). + type: actuator + uuid: dfcaac526f3952e0aa29caacf9cd796e + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Headrest: + description: Switches for SingleSeat.Headrest. + type: branch + uuid: 84788fd7b9215fa78374c9ca196e5d2d + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Headrest.IsBackwardEngaged: + datatype: boolean + description: Head rest backward switch engaged (SingleSeat.Headrest.Angle). + type: actuator + uuid: aec4843ad9435b9785f0d2485d457c56 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Headrest.IsDownEngaged: + datatype: boolean + description: Head rest down switch engaged (SingleSeat.Headrest.Height). + type: actuator + uuid: e993d306024f5d5d8f1ffe8897d76a38 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Headrest.IsForwardEngaged: + datatype: boolean + description: Head rest forward switch engaged (SingleSeat.Headrest.Angle). + type: actuator + uuid: bbeb896cdb5059ea83add870abb45c69 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Headrest.IsUpEngaged: + datatype: boolean + description: Head rest up switch engaged (SingleSeat.Headrest.Height). + type: actuator + uuid: 2078f41ff0505639aab472a9793e0767 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.IsBackwardEngaged: + datatype: boolean + description: Seat backward switch engaged (SingleSeat.Position). + type: actuator + uuid: f9b78ecd6f065a59918c8fea51464f7a + +Vehicle.Cabin.Seat.Row2.Middle.Switch.IsCoolerEngaged: + datatype: boolean + description: Cooler switch for Seat heater (SingleSeat.Heating). + type: actuator + uuid: 36969412c2325b81906fc4a327a22c84 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.IsDownEngaged: + datatype: boolean + description: Seat down switch engaged (SingleSeat.Height). + type: actuator + uuid: 7507db75bf2d541e8eba802db5108fa7 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.IsForwardEngaged: + datatype: boolean + description: Seat forward switch engaged (SingleSeat.Position). + type: actuator + uuid: 0075b9cb31ae5a0c8172e966e6b40954 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.IsTiltBackwardEngaged: + datatype: boolean + description: Tilt backward switch engaged (SingleSeat.Tilt). + type: actuator + uuid: 974123228c7a5fc0bbbc8b13063eb76e + +Vehicle.Cabin.Seat.Row2.Middle.Switch.IsTiltForwardEngaged: + datatype: boolean + description: Tilt forward switch engaged (SingleSeat.Tilt). + type: actuator + uuid: 736dd231351d54389a65e77e39e28816 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.IsUpEngaged: + datatype: boolean + description: Seat up switch engaged (SingleSeat.Height). + type: actuator + uuid: f8ded34424025a93b04ee9d47f451b22 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.IsWarmerEngaged: + datatype: boolean + description: Warmer switch for Seat heater (SingleSeat.Heating). + type: actuator + uuid: 2cdec47cb7565df3934ed28acf1e05a3 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Massage: + description: Switches for SingleSeat.Massage. + type: branch + uuid: dc5720a01af45e78a562d12a93db0fbd + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Massage.IsDecreaseEngaged: + datatype: boolean + description: Decrease massage level switch engaged (SingleSeat.Massage). + type: actuator + uuid: 07e2a1c17a1854abb180fdf2038ece03 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Massage.IsIncreaseEngaged: + datatype: boolean + description: Increase massage level switch engaged (SingleSeat.Massage). + type: actuator + uuid: 9c2cd2dab1d65532b6b738966db8af41 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Seating: + description: Describes switches related to the seating of the seat. + type: branch + uuid: 473086da2fc4501f9b3bdbc94133eb92 + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Seating.IsBackwardEngaged: + datatype: boolean + description: Is switch to decrease seating length engaged (SingleSeat.Seating.Length). + type: actuator + uuid: fb25e00b59f1513eb66355fd254e3bbe + +Vehicle.Cabin.Seat.Row2.Middle.Switch.Seating.IsForwardEngaged: + datatype: boolean + description: Is switch to increase seating length engaged (SingleSeat.Seating.Length). + type: actuator + uuid: 45ef8de577b55ff9b621aad08238edaf + +Vehicle.Cabin.Seat.Row2.Middle.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 + uuid: 30d7caa224e6589a882751be94fb7a33 + +Vehicle.Cabin.Seat.Row2.PassengerSide: + description: All seats. + type: branch + uuid: 8cd32cb3e2d157b39af57d9cfe2e128c + +Vehicle.Cabin.Seat.Row2.PassengerSide.Airbag: + description: Airbag signals. + type: branch + uuid: d16d61dc474f514fb10d1c8ecbeb9179 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Airbag.IsDeployed: + datatype: boolean + description: Airbag deployment status. True = Airbag deployed. False = Airbag not deployed. + type: sensor + uuid: a73fecde42375d07834a6670209228f4 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Backrest: + description: Describes signals related to the backrest of the seat. + type: branch + uuid: ea5285b1124c527681e1a45c51429bdb + +Vehicle.Cabin.Seat.Row2.PassengerSide.Backrest.Lumbar: + description: Adjustable lumbar support mechanisms in seats allow the user to change the seat back shape. + type: branch + uuid: 4eb3938a709f5e4dbdefeada15a4ddb9 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Backrest.Lumbar.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 + uuid: a8bcc5c7172e545db2b7d56611d5ab6a + +Vehicle.Cabin.Seat.Row2.PassengerSide.Backrest.Lumbar.Support: + datatype: float + description: Lumbar support (in/out position). 0 = Innermost position. 100 = Outermost position. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: b29e1fd9898e5981807d74caa94dd16a + +Vehicle.Cabin.Seat.Row2.PassengerSide.Backrest.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 + uuid: 6e3669fe31425539a49a2235c11bd5b5 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Backrest.SideBolster: + description: Backrest side bolster (lumbar side support) settings. + type: branch + uuid: 7e9c0a02e46b57879a2e3a0e66f02137 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Backrest.SideBolster.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 + uuid: a97af5b193b1521e90eb0fd33472ab38 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Headrest: + description: Headrest settings. + type: branch + uuid: a5449c4df2955aac981992fcbb581b84 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Headrest.Angle: + datatype: float + description: Headrest angle, relative to backrest, 0 degrees if parallel to backrest, Positive degrees = tilted forward. + type: actuator + unit: degrees + uuid: 13f6bb21aa64545c97257c2b614622cb + +Vehicle.Cabin.Seat.Row2.PassengerSide.Headrest.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 + uuid: a82bd9a0a9745ef68dae31474a095294 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Heating: + datatype: int8 + description: Seat cooling / heating. 0 = off. -100 = max cold. +100 = max heat. + max: 100 + min: -100 + type: actuator + unit: percent + uuid: 4c0ab40eaf745f12a09dc2c5acbedae9 + +Vehicle.Cabin.Seat.Row2.PassengerSide.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 + uuid: b1ca33bf7f4455ada6be941b92b824da + +Vehicle.Cabin.Seat.Row2.PassengerSide.IsBelted: + datatype: boolean + description: Is the belt engaged. + type: sensor + uuid: c7d63d6c97845df5b602791f700968f7 + +Vehicle.Cabin.Seat.Row2.PassengerSide.IsOccupied: + datatype: boolean + description: Does the seat have a passenger in it. + type: sensor + uuid: 516d511279a75513a53ca57adade3a99 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Massage: + datatype: uint8 + description: Seat massage level. 0 = off. 100 = max massage. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: bd9ec382d92e52ae826cb532ba13e11f + +Vehicle.Cabin.Seat.Row2.PassengerSide.Occupant: + description: Occupant data. + type: branch + uuid: 0cd5c8c3bd3f55ee8cc4c876cad0b75f + +Vehicle.Cabin.Seat.Row2.PassengerSide.Occupant.Identifier: + description: Identifier attributes based on OAuth 2.0. + type: branch + uuid: d18aded275a454068904eb5371a69f4d + +Vehicle.Cabin.Seat.Row2.PassengerSide.Occupant.Identifier.Issuer: + datatype: string + description: Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com. + type: sensor + uuid: 3acca59e11b95e92945ac8ea568a3213 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Occupant.Identifier.Subject: + datatype: string + description: Subject for the authentication of the occupant e.g. UserID 7331677. + type: sensor + uuid: 9fc55976f51c552fac70632a7e61b1f4 + +Vehicle.Cabin.Seat.Row2.PassengerSide.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 + uuid: 07a8fe28cc1850dc96458e827a9ebeb5 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Seating: + 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 + uuid: ef3307b33fae500b837da872d2fad454 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Seating.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 + uuid: 68e28b1aadcf5c3db177943af27a9098 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch: + description: Seat switch signals + type: branch + uuid: dc15316849e75f6d9995d428eee65421 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest: + description: Describes switches related to the backrest of the seat. + type: branch + uuid: 9417cfbf4a08528f9a6bb6de95dd53a3 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.IsReclineBackwardEngaged: + datatype: boolean + description: Backrest recline backward switch engaged (SingleSeat.Backrest.Recline). + type: actuator + uuid: e9591a8c0ef551dd8d2da760bf96045a + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.IsReclineForwardEngaged: + datatype: boolean + description: Backrest recline forward switch engaged (SingleSeat.Backrest.Recline). + type: actuator + uuid: 9fca194c445257049d2ba0bc5d134e12 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.Lumbar: + description: Switches for SingleSeat.Backrest.Lumbar. + type: branch + uuid: ee7310791c475bcb946bd7074fb375af + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.Lumbar.IsDownEngaged: + datatype: boolean + description: Lumbar down switch engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: 32defc92edd159bc96939d399202d4ca + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.Lumbar.IsLessSupportEngaged: + datatype: boolean + description: Is switch for less lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: 54dd7359d76f5caeb221807f3c9f05d6 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.Lumbar.IsMoreSupportEngaged: + datatype: boolean + description: Is switch for more lumbar support engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: bc763cfcd7fd511cbdc8ae2cc64a0ac7 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.Lumbar.IsUpEngaged: + datatype: boolean + description: Lumbar up switch engaged (SingleSeat.Backrest.Lumbar.Support). + type: actuator + uuid: 8bc621f1041052c7abf17124cb6dc270 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.SideBolster: + description: Switches for SingleSeat.Backrest.SideBolster. + type: branch + uuid: a69bfc99fd21564b9d6e06504063f3f0 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.SideBolster.IsLessSupportEngaged: + datatype: boolean + description: Is switch for less side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). + type: actuator + uuid: ccdd90ab2f3152be80c64b4500c78a8b + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Backrest.SideBolster.IsMoreSupportEngaged: + datatype: boolean + description: Is switch for more side bolster support engaged (SingleSeat.Backrest.SideBolster.Support). + type: actuator + uuid: cd893883ea4857b8a42e02dccd7c48d6 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Headrest: + description: Switches for SingleSeat.Headrest. + type: branch + uuid: 0db2d43128845f65a029915777d30ac9 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Headrest.IsBackwardEngaged: + datatype: boolean + description: Head rest backward switch engaged (SingleSeat.Headrest.Angle). + type: actuator + uuid: 0f6c3fada9695cfc89309bca1941d0f5 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Headrest.IsDownEngaged: + datatype: boolean + description: Head rest down switch engaged (SingleSeat.Headrest.Height). + type: actuator + uuid: 263c5edb7c7c515581a853327df34215 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Headrest.IsForwardEngaged: + datatype: boolean + description: Head rest forward switch engaged (SingleSeat.Headrest.Angle). + type: actuator + uuid: d86793d827f6545e97e03d1b8363236d + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Headrest.IsUpEngaged: + datatype: boolean + description: Head rest up switch engaged (SingleSeat.Headrest.Height). + type: actuator + uuid: b77c09fbcec95c5fb04a6d14af5b9f94 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.IsBackwardEngaged: + datatype: boolean + description: Seat backward switch engaged (SingleSeat.Position). + type: actuator + uuid: cefaab13d761577f86c35403460a83de + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.IsCoolerEngaged: + datatype: boolean + description: Cooler switch for Seat heater (SingleSeat.Heating). + type: actuator + uuid: 119275e2b8b9579fbaf45f419f01879b + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.IsDownEngaged: + datatype: boolean + description: Seat down switch engaged (SingleSeat.Height). + type: actuator + uuid: 00793becfbf35a1f9e22e62c0ee23382 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.IsForwardEngaged: + datatype: boolean + description: Seat forward switch engaged (SingleSeat.Position). + type: actuator + uuid: 6c4cb5e0ab59597db55b22918510c1a1 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.IsTiltBackwardEngaged: + datatype: boolean + description: Tilt backward switch engaged (SingleSeat.Tilt). + type: actuator + uuid: d6a316b6a3455e9da8769144aece2a74 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.IsTiltForwardEngaged: + datatype: boolean + description: Tilt forward switch engaged (SingleSeat.Tilt). + type: actuator + uuid: b601c11e3b525dd19933adaf807bc5c1 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.IsUpEngaged: + datatype: boolean + description: Seat up switch engaged (SingleSeat.Height). + type: actuator + uuid: 0f1060fee7e05b2b91cc51d5a9b3da74 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.IsWarmerEngaged: + datatype: boolean + description: Warmer switch for Seat heater (SingleSeat.Heating). + type: actuator + uuid: a6ae083174c65a9599901c00819694f8 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Massage: + description: Switches for SingleSeat.Massage. + type: branch + uuid: bd644892090f5bd9a4b89281331cbe4d + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Massage.IsDecreaseEngaged: + datatype: boolean + description: Decrease massage level switch engaged (SingleSeat.Massage). + type: actuator + uuid: 399c59f3d97151499a9005b329368baf + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Massage.IsIncreaseEngaged: + datatype: boolean + description: Increase massage level switch engaged (SingleSeat.Massage). + type: actuator + uuid: ac7635aa2fc7578aae97d8a253e9a303 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Seating: + description: Describes switches related to the seating of the seat. + type: branch + uuid: 0b6331463cf65b44a5709705a1e55d7c + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Seating.IsBackwardEngaged: + datatype: boolean + description: Is switch to decrease seating length engaged (SingleSeat.Seating.Length). + type: actuator + uuid: ed70ebf0a7065894af1ac26e409d2408 + +Vehicle.Cabin.Seat.Row2.PassengerSide.Switch.Seating.IsForwardEngaged: + datatype: boolean + description: Is switch to increase seating length engaged (SingleSeat.Seating.Length). + type: actuator + uuid: ef90f29f5ab65b0cbf271a7e06fa848d + +Vehicle.Cabin.Seat.Row2.PassengerSide.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 + uuid: 646c179da57a59c39ca9777a4808980b + +Vehicle.Cabin.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 + uuid: 8dd40ecd47ab51c79ed9c74ae4296d7e + +Vehicle.Cabin.SeatRowCount: + comment: Default value corresponds to two rows of seats. + datatype: uint8 + default: 2 + description: Number of seat rows in vehicle. + type: attribute + uuid: 1002a7a4a954581b9cbc72fa438c5292 + +Vehicle.Cabin.Sunroof: + description: Sun roof status. + type: branch + uuid: 8ff70db05c065e3eb530082a0b6983cf + +Vehicle.Cabin.Sunroof.Position: + datatype: int8 + description: Sunroof position. 0 = Fully closed 100 = Fully opened. -100 = Fully tilted. + max: 100 + min: -100 + type: sensor + unit: percent + uuid: ab598697f1c852eda4df9ed62a956d17 + +Vehicle.Cabin.Sunroof.Shade: + description: Sun roof shade status. + type: branch + uuid: eeaae5977adb5683b16f405993405b2e + +Vehicle.Cabin.Sunroof.Shade.Position: + datatype: uint8 + description: Position of window blind. 0 = Fully retracted. 100 = Fully deployed. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 5f78c2a631b75abc88744f9bad277f5a + +Vehicle.Cabin.Sunroof.Shade.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 + uuid: 3836077128c65381b01e74a1a8be1c40 + +Vehicle.Cabin.Sunroof.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 + uuid: 88c39afd45a25ea2b474ff581e1fb138 + +Vehicle.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 + uuid: 789feabca2e8560ea3c1852371b4096e + +Vehicle.Chassis: + description: All data concerning steering, suspension, wheels, and brakes. + type: branch + uuid: 87d260d635425da0a4ebd62bc4e5c313 + +Vehicle.Chassis.Accelerator: + description: Accelerator signals + type: branch + uuid: 3b2b562086a45eb29c55186f3b710621 + +Vehicle.Chassis.Accelerator.PedalPosition: + datatype: uint8 + description: Accelerator pedal position as percent. 0 = Not depressed. 100 = Fully depressed. + max: 100 + min: 0 + type: sensor + unit: percent + uuid: 2fabd8b61db45f62b4e97e7a612b4a73 + +Vehicle.Chassis.Axle: + description: Axle signals + type: branch + uuid: 0a3ebde7efa85c04ac6c29b5676fec5d + +Vehicle.Chassis.Axle.Row1: + description: Axle signals + type: branch + uuid: d7e93a94af0752aaab36819f6be4f67a + +Vehicle.Chassis.Axle.Row1.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 + uuid: 4458487c2a4e51efa3762349188ce2a1 + +Vehicle.Chassis.Axle.Row1.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 + uuid: 91310e9ef88450c68791fbb07d83f104 + +Vehicle.Chassis.Axle.Row1.TireAspectRatio: + datatype: uint8 + description: Aspect ratio between tire section height and tire section width, as per ETRTO / TRA standard. + type: attribute + unit: percent + uuid: 716fec24167e5c36b2b97daaf091f911 + +Vehicle.Chassis.Axle.Row1.TireDiameter: + datatype: float + description: Outer diameter of tires, in inches, as per ETRTO / TRA standard. + type: attribute + unit: inch + uuid: ed9f037c1b5d53c78c90b71179db1f4f + +Vehicle.Chassis.Axle.Row1.TireWidth: + datatype: uint16 + description: Nominal section width of tires, in mm, as per ETRTO / TRA standard. + type: attribute + unit: mm + uuid: 3444d8773c215cd7a076d688eb7f1afc + +Vehicle.Chassis.Axle.Row1.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 + uuid: d854bb9c72615e2896c1ed084db515fa + +Vehicle.Chassis.Axle.Row1.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 + uuid: 0851716e0b635392b6bb64cb478e82b0 + +Vehicle.Chassis.Axle.Row1.Wheel: + description: Wheel signals for axle + type: branch + uuid: 8ed02c02eee0502ba6d94a5d5f1fb789 + +Vehicle.Chassis.Axle.Row1.Wheel.Left: + description: Wheel signals for axle + type: branch + uuid: 0cd478c6e72b55c6be6d3d9df9624545 + +Vehicle.Chassis.Axle.Row1.Wheel.Left.Brake: + description: Brake signals for wheel + type: branch + uuid: 162dab13d5815ec4bc22888b0bc59cbf + +Vehicle.Chassis.Axle.Row1.Wheel.Left.Brake.FluidLevel: + datatype: uint8 + description: Brake fluid level as percent. 0 = Empty. 100 = Full. + max: 100 + type: sensor + unit: percent + uuid: 63aa9c4973ef50b18bd7214c9f2634c5 + +Vehicle.Chassis.Axle.Row1.Wheel.Left.Brake.IsBrakesWorn: + datatype: boolean + description: Brake pad wear status. True = Worn. False = Not Worn. + type: sensor + uuid: 901771088eb35dec9e69b56a8cb3e8f5 + +Vehicle.Chassis.Axle.Row1.Wheel.Left.Brake.IsFluidLevelLow: + datatype: boolean + description: Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK. + type: sensor + uuid: 713da56818e55714ac441e10870b3753 + +Vehicle.Chassis.Axle.Row1.Wheel.Left.Brake.PadWear: + datatype: uint8 + description: Brake pad wear as percent. 0 = No Wear. 100 = Worn. + max: 100 + type: sensor + unit: percent + uuid: b4ed36f8143d512fadaca3e641739ee2 + +Vehicle.Chassis.Axle.Row1.Wheel.Left.Speed: + datatype: float + description: Rotational speed of a vehicle's wheel. + type: sensor + unit: km/h + uuid: 47897f20b2745b6aa2d0f76f1ecf824a + +Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire: + description: Tire signals for wheel. + type: branch + uuid: 17c60ec3c02054b4951c975156375d9a + +Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.IsPressureLow: + datatype: boolean + description: Tire Pressure Status. True = Low tire pressure. False = Good tire pressure. + type: sensor + uuid: 4088315cfaa05c28b51c3d3462c65339 + +Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.Pressure: + datatype: uint16 + description: Tire pressure in kilo-Pascal. + type: sensor + unit: kPa + uuid: 9fa3f176fd975d28a68f70c7d72e370f + +Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.Temperature: + datatype: float + description: Tire temperature in Celsius. + type: sensor + unit: celsius + uuid: 093d8fb119755f6bafa979e4eae201a0 + +Vehicle.Chassis.Axle.Row1.Wheel.Right: + description: Wheel signals for axle + type: branch + uuid: c7ae1f1787ec502d8aea41802dc9a203 + +Vehicle.Chassis.Axle.Row1.Wheel.Right.Brake: + description: Brake signals for wheel + type: branch + uuid: f334a45b92215f86b4ecadbd82c8b249 + +Vehicle.Chassis.Axle.Row1.Wheel.Right.Brake.FluidLevel: + datatype: uint8 + description: Brake fluid level as percent. 0 = Empty. 100 = Full. + max: 100 + type: sensor + unit: percent + uuid: 386bfddee4605e419d59755a51835650 + +Vehicle.Chassis.Axle.Row1.Wheel.Right.Brake.IsBrakesWorn: + datatype: boolean + description: Brake pad wear status. True = Worn. False = Not Worn. + type: sensor + uuid: 4c669b71c91e57dd8fd804ee68174b9c + +Vehicle.Chassis.Axle.Row1.Wheel.Right.Brake.IsFluidLevelLow: + datatype: boolean + description: Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK. + type: sensor + uuid: bb2057bc31c25beda1da0610ca62bd51 + +Vehicle.Chassis.Axle.Row1.Wheel.Right.Brake.PadWear: + datatype: uint8 + description: Brake pad wear as percent. 0 = No Wear. 100 = Worn. + max: 100 + type: sensor + unit: percent + uuid: f3c53c8c5628527a8501e12778dae6c7 + +Vehicle.Chassis.Axle.Row1.Wheel.Right.Speed: + datatype: float + description: Rotational speed of a vehicle's wheel. + type: sensor + unit: km/h + uuid: c288d064d56e53bfb94cef8670872587 + +Vehicle.Chassis.Axle.Row1.Wheel.Right.Tire: + description: Tire signals for wheel. + type: branch + uuid: 660f90ae8f14594cb6e97d000c1985a1 + +Vehicle.Chassis.Axle.Row1.Wheel.Right.Tire.IsPressureLow: + datatype: boolean + description: Tire Pressure Status. True = Low tire pressure. False = Good tire pressure. + type: sensor + uuid: 93fa1125894e53259af5b7e1d991c8da + +Vehicle.Chassis.Axle.Row1.Wheel.Right.Tire.Pressure: + datatype: uint16 + description: Tire pressure in kilo-Pascal. + type: sensor + unit: kPa + uuid: ea8038b63e6650ffb1a20539e915064a + +Vehicle.Chassis.Axle.Row1.Wheel.Right.Tire.Temperature: + datatype: float + description: Tire temperature in Celsius. + type: sensor + unit: celsius + uuid: 58d4cee188d353d7996e855d48bb92df + +Vehicle.Chassis.Axle.Row1.WheelCount: + datatype: uint8 + description: Number of wheels on the axle + type: attribute + uuid: 7232effafb7d5c908a9bafe1cef2ff3e + +Vehicle.Chassis.Axle.Row1.WheelDiameter: + datatype: float + description: Diameter of wheels (rims without tires), in inches, as per ETRTO / TRA standard. + type: attribute + unit: inch + uuid: 60d4b948ae8a5485bd77c45e1f648c13 + +Vehicle.Chassis.Axle.Row1.WheelWidth: + datatype: float + description: Width of wheels (rims without tires), in inches, as per ETRTO / TRA standard. + type: attribute + unit: inch + uuid: 5b92bdab1e035ff4ba000330e20f826b + +Vehicle.Chassis.Axle.Row2: + description: Axle signals + type: branch + uuid: 8ef77768446659b6b5020a06c7b23c8b + +Vehicle.Chassis.Axle.Row2.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 + uuid: 99860d78f2b25ae0b420660b76f933f0 + +Vehicle.Chassis.Axle.Row2.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 + uuid: bf1960525e725d2ca145ce12ba939ea3 + +Vehicle.Chassis.Axle.Row2.TireAspectRatio: + datatype: uint8 + description: Aspect ratio between tire section height and tire section width, as per ETRTO / TRA standard. + type: attribute + unit: percent + uuid: 9b4515273bf1554dab746212db05d352 + +Vehicle.Chassis.Axle.Row2.TireDiameter: + datatype: float + description: Outer diameter of tires, in inches, as per ETRTO / TRA standard. + type: attribute + unit: inch + uuid: 4dc46ee7fe0a5240a6eb67f9bf43a1ea + +Vehicle.Chassis.Axle.Row2.TireWidth: + datatype: uint16 + description: Nominal section width of tires, in mm, as per ETRTO / TRA standard. + type: attribute + unit: mm + uuid: 76a9071697b25fb8ab42393dfb77f0ef + +Vehicle.Chassis.Axle.Row2.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 + uuid: b6c5ba52f1985f179c9346edbabe2f9b + +Vehicle.Chassis.Axle.Row2.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 + uuid: bdfd2fb7c3b25091a48f873462466f84 + +Vehicle.Chassis.Axle.Row2.Wheel: + description: Wheel signals for axle + type: branch + uuid: 87b119ed6de254159877b24047fd3026 + +Vehicle.Chassis.Axle.Row2.Wheel.Left: + description: Wheel signals for axle + type: branch + uuid: 4c32a1c722a45ea09a52c389e8a8a618 + +Vehicle.Chassis.Axle.Row2.Wheel.Left.Brake: + description: Brake signals for wheel + type: branch + uuid: 774d0a5771d35975872870cf71ea1487 + +Vehicle.Chassis.Axle.Row2.Wheel.Left.Brake.FluidLevel: + datatype: uint8 + description: Brake fluid level as percent. 0 = Empty. 100 = Full. + max: 100 + type: sensor + unit: percent + uuid: 4b0d4f80b8855973a55ffee80fdfc4ba + +Vehicle.Chassis.Axle.Row2.Wheel.Left.Brake.IsBrakesWorn: + datatype: boolean + description: Brake pad wear status. True = Worn. False = Not Worn. + type: sensor + uuid: 3d9bae5bf0705de99789ecea26b99a5c + +Vehicle.Chassis.Axle.Row2.Wheel.Left.Brake.IsFluidLevelLow: + datatype: boolean + description: Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK. + type: sensor + uuid: 01f57161b0bf539fad1d2bfa9d9a9fc4 + +Vehicle.Chassis.Axle.Row2.Wheel.Left.Brake.PadWear: + datatype: uint8 + description: Brake pad wear as percent. 0 = No Wear. 100 = Worn. + max: 100 + type: sensor + unit: percent + uuid: 8eff72d583015e1e94eab98bf8f0497e + +Vehicle.Chassis.Axle.Row2.Wheel.Left.Speed: + datatype: float + description: Rotational speed of a vehicle's wheel. + type: sensor + unit: km/h + uuid: 427abdd04fc355769697d998a47d3f58 + +Vehicle.Chassis.Axle.Row2.Wheel.Left.Tire: + description: Tire signals for wheel. + type: branch + uuid: edfee87117dc5a6f9d970167f26ec090 + +Vehicle.Chassis.Axle.Row2.Wheel.Left.Tire.IsPressureLow: + datatype: boolean + description: Tire Pressure Status. True = Low tire pressure. False = Good tire pressure. + type: sensor + uuid: d895b1e23a4f59ec92735fc317e44769 + +Vehicle.Chassis.Axle.Row2.Wheel.Left.Tire.Pressure: + datatype: uint16 + description: Tire pressure in kilo-Pascal. + type: sensor + unit: kPa + uuid: ea414012c36e54fc84ec1d421f370ddd + +Vehicle.Chassis.Axle.Row2.Wheel.Left.Tire.Temperature: + datatype: float + description: Tire temperature in Celsius. + type: sensor + unit: celsius + uuid: 06ab6b3fe7bb5f7c9e2e104ee0e7cfd5 + +Vehicle.Chassis.Axle.Row2.Wheel.Right: + description: Wheel signals for axle + type: branch + uuid: f59f6ce66b1454498f5dc71be581732a + +Vehicle.Chassis.Axle.Row2.Wheel.Right.Brake: + description: Brake signals for wheel + type: branch + uuid: 5c33ec4bd8a15d3590f59e7257bf4d25 + +Vehicle.Chassis.Axle.Row2.Wheel.Right.Brake.FluidLevel: + datatype: uint8 + description: Brake fluid level as percent. 0 = Empty. 100 = Full. + max: 100 + type: sensor + unit: percent + uuid: 83e5e261302d5ab38c9ee4dddc18c8ae + +Vehicle.Chassis.Axle.Row2.Wheel.Right.Brake.IsBrakesWorn: + datatype: boolean + description: Brake pad wear status. True = Worn. False = Not Worn. + type: sensor + uuid: 9b5963e98a9c5b229a61df76ef5c86e0 + +Vehicle.Chassis.Axle.Row2.Wheel.Right.Brake.IsFluidLevelLow: + datatype: boolean + description: Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK. + type: sensor + uuid: 727823c7e0d551f48f26a5dd4f0578bd + +Vehicle.Chassis.Axle.Row2.Wheel.Right.Brake.PadWear: + datatype: uint8 + description: Brake pad wear as percent. 0 = No Wear. 100 = Worn. + max: 100 + type: sensor + unit: percent + uuid: 63a564bca18a5b1fabd7d3cff1af0e6d + +Vehicle.Chassis.Axle.Row2.Wheel.Right.Speed: + datatype: float + description: Rotational speed of a vehicle's wheel. + type: sensor + unit: km/h + uuid: 85b41a82f4775fcea57dcc6218fb6d7b + +Vehicle.Chassis.Axle.Row2.Wheel.Right.Tire: + description: Tire signals for wheel. + type: branch + uuid: d855fe9ffb4e52be83ebfc7967c1c3ee + +Vehicle.Chassis.Axle.Row2.Wheel.Right.Tire.IsPressureLow: + datatype: boolean + description: Tire Pressure Status. True = Low tire pressure. False = Good tire pressure. + type: sensor + uuid: da2f63312a455d92abd5edc405f01903 + +Vehicle.Chassis.Axle.Row2.Wheel.Right.Tire.Pressure: + datatype: uint16 + description: Tire pressure in kilo-Pascal. + type: sensor + unit: kPa + uuid: 0cd3dd4be36c5fcda49d6360556ba7c8 + +Vehicle.Chassis.Axle.Row2.Wheel.Right.Tire.Temperature: + datatype: float + description: Tire temperature in Celsius. + type: sensor + unit: celsius + uuid: 7c08b5778bc05265bb8d4e08fdca29cf + +Vehicle.Chassis.Axle.Row2.WheelCount: + datatype: uint8 + description: Number of wheels on the axle + type: attribute + uuid: ac6fe103410153d382306426d14213ab + +Vehicle.Chassis.Axle.Row2.WheelDiameter: + datatype: float + description: Diameter of wheels (rims without tires), in inches, as per ETRTO / TRA standard. + type: attribute + unit: inch + uuid: af27b1d18a5455e593692a9929909bb9 + +Vehicle.Chassis.Axle.Row2.WheelWidth: + datatype: float + description: Width of wheels (rims without tires), in inches, as per ETRTO / TRA standard. + type: attribute + unit: inch + uuid: 889d279053c051979ebbe301bacac206 + +Vehicle.Chassis.AxleCount: + datatype: uint8 + default: 2 + description: Number of axles on the vehicle + type: attribute + uuid: 86d084c9148d5f22b5402a030413ed79 + +Vehicle.Chassis.Brake: + description: Brake system signals + type: branch + uuid: 38df972e5c6b558e93839a5e97238c5a + +Vehicle.Chassis.Brake.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 + uuid: 0d462892aeac5062a62ee7d07306f6a6 + +Vehicle.Chassis.Brake.PedalPosition: + datatype: uint8 + description: Brake pedal position as percent. 0 = Not depressed. 100 = Fully depressed. + max: 100 + min: 0 + type: sensor + unit: percent + uuid: 0477d3a4a831564ea473976cf34374f2 + +Vehicle.Chassis.ParkingBrake: + description: Parking brake signals + type: branch + uuid: 3849d42292f4551590fa4bf716fc90f7 + +Vehicle.Chassis.ParkingBrake.IsAutoApplyEnabled: + datatype: boolean + description: Indicates if parking brake will be automatically engaged when the vehicle engine is turned off. + type: actuator + uuid: 26c694c9a1c75b699cc8c1dd2986ab90 + +Vehicle.Chassis.ParkingBrake.IsEngaged: + datatype: boolean + description: Parking brake status. True = Parking Brake is Engaged. False = Parking Brake is not Engaged. + type: actuator + uuid: faa7f94e6a5555c6b2d62e3328520ce0 + +Vehicle.Chassis.SteeringWheel: + description: Steering wheel signals + type: branch + uuid: 8c759072791e5986ac4efe9df0c2b751 + +Vehicle.Chassis.SteeringWheel.Angle: + datatype: int16 + description: Steering wheel angle. Positive = degrees to the left. Negative = degrees to the right. + type: sensor + unit: degrees + uuid: 92cd3b3d37585b2291806fe5127d9393 + +Vehicle.Chassis.SteeringWheel.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 + uuid: 6a84cc3604fc5960a1fb384fe63fae72 + +Vehicle.Chassis.SteeringWheel.Tilt: + datatype: uint8 + description: Steering wheel column tilt. 0 = Lowest position. 100 = Highest position. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 33e979769f91521d8080384447d06c00 + +Vehicle.Chassis.Wheelbase: + datatype: uint16 + default: 0 + description: Overall wheelbase, in mm. + type: attribute + unit: mm + uuid: 11677e0433935dc7aa9c1806c96a8a6b + +Vehicle.Connectivity: + description: Connectivity data. + type: branch + uuid: 89c267fccea35f3da9871cca2b4dc4df + +Vehicle.Connectivity.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 + uuid: b6d11be2a6565996b68ffb07a96595a7 + +Vehicle.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 + uuid: 69ac6ca079de59d19737f75e4c5c4342 + +Vehicle.CurrentLocation: + description: The current latitude and longitude of the vehicle. + type: branch + uuid: 24777bd485f15fb69550ae0520c40ad5 + +Vehicle.CurrentLocation.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 + uuid: d3ead98ab0b751c1a5b5dd5bc0e5e216 + +Vehicle.CurrentLocation.GNSSReceiver: + description: Information on the GNSS receiver used for determining current location. + type: branch + uuid: b1bea5d88662539a8cff6f8fe4974740 + +Vehicle.CurrentLocation.GNSSReceiver.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 + uuid: 52853b33d4605608bd0ae50595c69309 + +Vehicle.CurrentLocation.GNSSReceiver.MountingPosition: + 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 + uuid: 5c0887bce6fb5eb79402baaccb203e61 + +Vehicle.CurrentLocation.GNSSReceiver.MountingPosition.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 + uuid: f23d40f3556b5676a0d1e3def037197f + +Vehicle.CurrentLocation.GNSSReceiver.MountingPosition.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 + uuid: 16745ae827c0527ea2c48c20f0c146f1 + +Vehicle.CurrentLocation.GNSSReceiver.MountingPosition.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 + uuid: a4d04e86518e5c5ab60e5e4face35756 + +Vehicle.CurrentLocation.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 + uuid: 2a8f0afa2b315943aa001278875ce012 + +Vehicle.CurrentLocation.HorizontalAccuracy: + datatype: double + description: Accuracy of the latitude and longitude coordinates. + type: sensor + unit: m + uuid: bf25ef243f0c5f839f7ef874f9c57fda + +Vehicle.CurrentLocation.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 + uuid: 08933c5a445055df80bea15fbfa07f1c + +Vehicle.CurrentLocation.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 + uuid: 5246f2ec5fea550cb1b36f110854cfbb + +Vehicle.CurrentLocation.Timestamp: + datatype: string + description: Timestamp from GNSS system for current location, formatted according to ISO 8601 with UTC time zone. + type: sensor + uuid: 094aeff73be05c08905690be0e82a438 + +Vehicle.CurrentLocation.VerticalAccuracy: + datatype: double + description: Accuracy of altitude. + type: sensor + unit: m + uuid: 8f54055bce9e5e8e97fb6051582707ab + +Vehicle.CurrentOverallWeight: + datatype: uint16 + description: Current overall Vehicle weight. Including passengers, cargo and other load inside the car. + type: sensor + unit: kg + uuid: 75599d7628bb5f35839055269d3ad205 + +Vehicle.Driver: + description: Driver data. + type: branch + uuid: 1cac57e7b7e756dc8a154eaacbce6426 + +Vehicle.Driver.AttentiveProbability: + datatype: float + description: Probability of attentiveness of the driver. + max: 100 + min: 0 + type: sensor + unit: percent + uuid: fcd202467afb533fbbf9e7da89cc1cee + +Vehicle.Driver.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 + uuid: cb35ec0b924e58979e1469146d65c3fa + +Vehicle.Driver.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 + uuid: 49b1626295705a79ae20d8a270c48b6b + +Vehicle.Driver.HeartRate: + datatype: uint16 + description: Heart rate of the driver. + type: sensor + unit: bpm + uuid: d71516905f785c4da867a2f86e774d93 + +Vehicle.Driver.Identifier: + description: Identifier attributes based on OAuth 2.0. + type: branch + uuid: 89705397069c5ec58d607318f2ff0ea8 + +Vehicle.Driver.Identifier.Issuer: + datatype: string + description: Unique Issuer for the authentication of the occupant e.g. https://accounts.funcorp.com. + type: sensor + uuid: ee7988d26d7156d2a030ecc506ea97e7 + +Vehicle.Driver.Identifier.Subject: + datatype: string + description: Subject for the authentication of the occupant e.g. UserID 7331677. + type: sensor + uuid: b41ec688af265f10824bc9635989ac55 + +Vehicle.Driver.IsEyesOnRoad: + datatype: boolean + description: Has driver the eyes on road or not? + type: sensor + uuid: 625e5009f1145aa0b797ee6c335ca2fe + +Vehicle.Driver.IsHandsOnWheel: + datatype: boolean + description: Are the driver's hands on the steering wheel or not? + type: sensor + uuid: 90d7dc2c408c528d941829ff88075f24 + +Vehicle.EmissionsCO2: + datatype: int16 + description: The CO2 emissions. + type: attribute + unit: g/km + uuid: b73e8f1ed17d584fad3f088c666dc2a5 + +Vehicle.Exterior: + description: Information about exterior measured by vehicle. + type: branch + uuid: 06c5def549f3580e8cdaffa3e0f5d25c + +Vehicle.Exterior.AirTemperature: + datatype: float + description: Air temperature outside the vehicle. + type: sensor + unit: celsius + uuid: a38d3f5dfeb35317aca8b90453dc1a75 + +Vehicle.Exterior.Humidity: + datatype: float + description: Relative humidity outside the vehicle. 0 = Dry, 100 = Air fully saturated. + max: 100 + min: 0 + type: sensor + unit: percent + uuid: 6c785ec5d9a5534f98be7ce198d25d6b + +Vehicle.Exterior.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 + uuid: 9b46b70490f853e891e1cc35dd08dddc + +Vehicle.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 + uuid: 9671cb551dd8570fbe5d7cd797265e6a + +Vehicle.Height: + datatype: uint16 + default: 0 + description: Overall vehicle height. + type: attribute + unit: mm + uuid: 9784d39f68b8541f90c355178ded7d7c + +Vehicle.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 + uuid: 469ebd2a76b45e5b97b799262a085330 + +Vehicle.IsMoving: + datatype: boolean + description: Indicates whether the vehicle is stationary or moving. + type: sensor + uuid: db69549cc7375e919c2a2883b41cd19c + +Vehicle.Length: + datatype: uint16 + default: 0 + description: Overall vehicle length. + type: attribute + unit: mm + uuid: 885f1be6842a513582e52a42edb3176f + +Vehicle.LowVoltageBattery: + description: Signals related to low voltage battery. + type: branch + uuid: ab8c5816d44f55b68f6e1d6d9e5acb0b + +Vehicle.LowVoltageBattery.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 + uuid: e1d76e489d505b03ace30771ba4291b1 + +Vehicle.LowVoltageBattery.CurrentVoltage: + datatype: float + description: Current Voltage of the low voltage battery. + type: sensor + unit: V + uuid: 1394234e8b975a279959ae82e03df786 + +Vehicle.LowVoltageBattery.NominalCapacity: + datatype: uint16 + description: Nominal capacity of the low voltage battery. + type: attribute + unit: Ah + uuid: d9f32612cb2f58d3b863a0dae21ff7af + +Vehicle.LowVoltageBattery.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 + uuid: bd5d4b6ee33f507fb49782505c3040e0 + +Vehicle.LowVoltageSystemState: + allowed: + - UNDEFINED + - LOCK + - 'OFF' + - ACC + - 'ON' + - START + datatype: string + description: State of the supply voltage of the control units (usually 12V). + type: sensor + uuid: d7391ceb132e5519b02d4c13d5513d99 + +Vehicle.MaxTowBallWeight: + datatype: uint16 + default: 0 + description: Maximum vertical weight on the tow ball of a trailer. + type: attribute + unit: kg + uuid: fec550f2064750e8b65b54fbf1368d68 + +Vehicle.MaxTowWeight: + datatype: uint16 + default: 0 + description: Maximum weight of trailer. + type: attribute + unit: kg + uuid: a1b8fd65897654aa8a418bccf443f1f3 + +Vehicle.OBD: + description: OBD data. + type: branch + uuid: 7ad7c512ed5d52c8b31944d2d47a4bc3 + +Vehicle.OBD.AbsoluteLoad: + datatype: float + description: PID 43 - Absolute load value + type: sensor + unit: percent + uuid: b3dd889a42ce5de9a7904b7196ae325c + +Vehicle.OBD.AcceleratorPositionD: + datatype: float + description: PID 49 - Accelerator pedal position D + type: sensor + unit: percent + uuid: 7e63256081ac5a7b8a28a6fa3c2c2ff9 + +Vehicle.OBD.AcceleratorPositionE: + datatype: float + description: PID 4A - Accelerator pedal position E + type: sensor + unit: percent + uuid: 4104e7fc25355e25b4522d233565d84b + +Vehicle.OBD.AcceleratorPositionF: + datatype: float + description: PID 4B - Accelerator pedal position F + type: sensor + unit: percent + uuid: 95f5c2a209a857ff930e2f8e32ac2d3f + +Vehicle.OBD.AirStatus: + datatype: string + description: PID 12 - Secondary air status + type: sensor + uuid: 548f65bf59ed505a86dfaa1c33342e4d + +Vehicle.OBD.AmbientAirTemperature: + datatype: float + description: PID 46 - Ambient air temperature + type: sensor + unit: celsius + uuid: 220a90f183c5583ea8b8b6454d774517 + +Vehicle.OBD.BarometricPressure: + datatype: float + description: PID 33 - Barometric pressure + type: sensor + unit: kPa + uuid: 1966bfff4d235767bfd9a21afb445ac7 + +Vehicle.OBD.Catalyst: + description: Catalyst signals + type: branch + uuid: 4eb0b191d6445de081f3f3f759af31c2 + +Vehicle.OBD.Catalyst.Bank1: + description: Catalyst bank 1 signals + type: branch + uuid: 0c3aaf014ba95b938b639d4202ef8b25 + +Vehicle.OBD.Catalyst.Bank1.Temperature1: + datatype: float + description: PID 3C - Catalyst temperature from bank 1, sensor 1 + type: sensor + unit: celsius + uuid: 5a770f13939e5d069682d408f160a895 + +Vehicle.OBD.Catalyst.Bank1.Temperature2: + datatype: float + description: PID 3E - Catalyst temperature from bank 1, sensor 2 + type: sensor + unit: celsius + uuid: ca9419a5d23b5937af23b51d823722fa + +Vehicle.OBD.Catalyst.Bank2: + description: Catalyst bank 2 signals + type: branch + uuid: 9a20459754755146a3b9608bf6384835 + +Vehicle.OBD.Catalyst.Bank2.Temperature1: + datatype: float + description: PID 3D - Catalyst temperature from bank 2, sensor 1 + type: sensor + unit: celsius + uuid: 011658e4ee89502c9a33877c92dbf888 + +Vehicle.OBD.Catalyst.Bank2.Temperature2: + datatype: float + description: PID 3F - Catalyst temperature from bank 2, sensor 2 + type: sensor + unit: celsius + uuid: f60c68f0ebca5fcf97086ce04e16d661 + +Vehicle.OBD.CommandedEGR: + datatype: float + description: PID 2C - Commanded exhaust gas recirculation (EGR) + type: sensor + unit: percent + uuid: 0265890a4a695ee6952c9b9f565ddaa5 + +Vehicle.OBD.CommandedEVAP: + datatype: float + description: PID 2E - Commanded evaporative purge (EVAP) valve + type: sensor + unit: percent + uuid: 5e6295d04a9159b88f4698b561b86842 + +Vehicle.OBD.CommandedEquivalenceRatio: + datatype: float + description: PID 44 - Commanded equivalence ratio + type: sensor + unit: ratio + uuid: 104e39e816f65fa791d0afa24603292b + +Vehicle.OBD.ControlModuleVoltage: + datatype: float + description: PID 42 - Control module voltage + type: sensor + unit: V + uuid: 59e072b932605ffc88a299c874d885c4 + +Vehicle.OBD.CoolantTemperature: + datatype: float + description: PID 05 - Coolant temperature + type: sensor + unit: celsius + uuid: 824892cdc72d5f92a38ef3136576edc8 + +Vehicle.OBD.DTCList: + datatype: string[] + description: List of currently active DTCs formatted according OBD II (SAE-J2012DA_201812) standard ([P|C|B|U]XXXXX ) + type: sensor + uuid: eee1b64e69845d5ab5e793b74631f9dc + +Vehicle.OBD.DistanceSinceDTCClear: + datatype: float + description: PID 31 - Distance traveled since codes cleared + type: sensor + unit: km + uuid: 0da628e2c69d561eb86216ddcb6e7b2a + +Vehicle.OBD.DistanceWithMIL: + datatype: float + description: PID 21 - Distance traveled with MIL on + type: sensor + unit: km + uuid: a9a522e343f25522b08f11e81bb91349 + +Vehicle.OBD.DriveCycleStatus: + description: PID 41 - OBD status for the current drive cycle + type: branch + uuid: 5215e28062f75154822789b8a5f30630 + +Vehicle.OBD.DriveCycleStatus.DTCCount: + datatype: uint8 + description: Number of sensor Trouble Codes (DTC) + type: sensor + uuid: 312856f746ff560e8098c19196964d3b + +Vehicle.OBD.DriveCycleStatus.IgnitionType: + allowed: + - SPARK + - COMPRESSION + datatype: string + description: Type of the ignition for ICE - spark = spark plug ignition, compression = self-igniting (Diesel engines) + type: sensor + uuid: 1aeb7b6d025f5a8693104824abaa1c49 + +Vehicle.OBD.DriveCycleStatus.IsMILOn: + datatype: boolean + description: Malfunction Indicator Light (MIL) - False = Off, True = On + type: sensor + uuid: e367394c9a075eef8fd66499e3d9cf14 + +Vehicle.OBD.EGRError: + datatype: float + description: PID 2D - Exhaust gas recirculation (EGR) error + type: sensor + unit: percent + uuid: 80a7000c5c7b5444b5571a26264061e5 + +Vehicle.OBD.EVAPVaporPressure: + datatype: float + description: PID 32 - Evaporative purge (EVAP) system pressure + type: sensor + unit: Pa + uuid: 70b5dae2ffd0561eab73efed8ad2f0ad + +Vehicle.OBD.EVAPVaporPressureAbsolute: + datatype: float + description: PID 53 - Absolute evaporative purge (EVAP) system pressure + type: sensor + unit: kPa + uuid: ef188a1e1a1356f7bc425081e3e00805 + +Vehicle.OBD.EVAPVaporPressureAlternate: + datatype: float + description: PID 54 - Alternate evaporative purge (EVAP) system pressure + type: sensor + unit: Pa + uuid: 68eaba3c79975d61bc35b92cd3e5e8d0 + +Vehicle.OBD.EngineLoad: + datatype: float + description: PID 04 - Engine load in percent - 0 = no load, 100 = full load + type: sensor + unit: percent + uuid: a8fda8a1b4c6534aa49c447bafc1c700 + +Vehicle.OBD.EngineSpeed: + datatype: float + description: PID 0C - Engine speed measured as rotations per minute + type: sensor + unit: rpm + uuid: b682eea93b3e5874ab3b52e95a1fad37 + +Vehicle.OBD.EthanolPercent: + datatype: float + description: PID 52 - Percentage of ethanol in the fuel + type: sensor + unit: percent + uuid: a207e7de17e1520c894b412af6f2522c + +Vehicle.OBD.FreezeDTC: + datatype: string + description: PID 02 - DTC that triggered the freeze frame + type: sensor + uuid: 5b87fae8dda4522aae209ae528960782 + +Vehicle.OBD.FuelInjectionTiming: + datatype: float + description: PID 5D - Fuel injection timing + type: sensor + unit: degrees + uuid: ab4869446f5357d6936838983e1b8949 + +Vehicle.OBD.FuelLevel: + datatype: float + description: PID 2F - Fuel level in the fuel tank + type: sensor + unit: percent + uuid: fd39813424ee5cd08c44714b35697287 + +Vehicle.OBD.FuelPressure: + datatype: float + description: PID 0A - Fuel pressure + type: sensor + unit: kPa + uuid: 34e6b0689f025d7b9bfa1fc49bb30c0f + +Vehicle.OBD.FuelRailPressureAbsolute: + datatype: float + description: PID 59 - Absolute fuel rail pressure + type: sensor + unit: kPa + uuid: 83c88b13d30153949eeca1b1180a9061 + +Vehicle.OBD.FuelRailPressureDirect: + datatype: float + description: PID 23 - Fuel rail pressure direct inject + type: sensor + unit: kPa + uuid: 039cb7bf1a8356a98d09eaf4fc029fe9 + +Vehicle.OBD.FuelRailPressureVac: + datatype: float + description: PID 22 - Fuel rail pressure relative to vacuum + type: sensor + unit: kPa + uuid: b3b0adf44aa3572fa07e7434993e6458 + +Vehicle.OBD.FuelRate: + datatype: float + description: PID 5E - Engine fuel rate + type: sensor + unit: l/h + uuid: 4ab7c2b710f95ceb9c7d01d19dabac38 + +Vehicle.OBD.FuelStatus: + datatype: string + description: PID 03 - Fuel status + type: sensor + uuid: 15fa2f3f667a5f5786eda5c83435ef16 + +Vehicle.OBD.FuelType: + datatype: uint8 + description: PID 51 - Fuel type + max: 23 + min: 0 + type: attribute + uuid: aefb45bdd8035904b0c8f3ffcedc53a9 + +Vehicle.OBD.HybridBatteryRemaining: + datatype: float + description: PID 5B - Remaining life of hybrid battery + type: sensor + unit: percent + uuid: c9517b6243df5e8d8f3aa3e57f71ec37 + +Vehicle.OBD.IntakeTemp: + datatype: float + description: PID 0F - Intake temperature + type: sensor + unit: celsius + uuid: 7c108305178b5854b430a23e125588bd + +Vehicle.OBD.IsPTOActive: + datatype: boolean + description: PID 1E - Auxiliary input status (power take off) + type: sensor + uuid: ce291dc40bba5a969e57b17f11ae23a9 + +Vehicle.OBD.LongTermFuelTrim1: + datatype: float + description: PID 07 - Long Term (learned) Fuel Trim - Bank 1 - negative percent leaner, positive percent richer + type: sensor + unit: percent + uuid: 1c203b11667150f0b4ee1be26a60c084 + +Vehicle.OBD.LongTermFuelTrim2: + datatype: float + description: PID 09 - Long Term (learned) Fuel Trim - Bank 2 - negative percent leaner, positive percent richer + type: sensor + unit: percent + uuid: b02aff2efce05632b5694a256e5b9ec7 + +Vehicle.OBD.LongTermO2Trim1: + datatype: float + description: PID 56 (byte A) - Long term secondary O2 trim - Bank 1 + type: sensor + unit: percent + uuid: 9a9586e29a02567e9920cb9b0aa2e3f5 + +Vehicle.OBD.LongTermO2Trim2: + datatype: float + description: PID 58 (byte A) - Long term secondary O2 trim - Bank 2 + type: sensor + unit: percent + uuid: e579f6c930605b389e8ce2d7edd92999 + +Vehicle.OBD.LongTermO2Trim3: + datatype: float + description: PID 56 (byte B) - Long term secondary O2 trim - Bank 3 + type: sensor + unit: percent + uuid: 50ea51ad343a5e59b1d214053e522a45 + +Vehicle.OBD.LongTermO2Trim4: + datatype: float + description: PID 58 (byte B) - Long term secondary O2 trim - Bank 4 + type: sensor + unit: percent + uuid: f9c20edd12f456e5ace21581cea484bd + +Vehicle.OBD.MAF: + datatype: float + description: PID 10 - Grams of air drawn into engine per second + type: sensor + unit: g/s + uuid: f3acdf89fb865313883d5d3126f15518 + +Vehicle.OBD.MAP: + datatype: float + description: PID 0B - Intake manifold pressure + type: sensor + unit: kPa + uuid: 335991b1b53f56f097fea7b05d4db83b + +Vehicle.OBD.MaxMAF: + datatype: float + description: PID 50 - Maximum flow for mass air flow sensor + type: sensor + unit: g/s + uuid: e21826479f715ee7afe8dc485f109b11 + +Vehicle.OBD.O2: + description: Oxygen sensors (PID 14 - PID 1B) + type: branch + uuid: 31f007df72af50f0925d2b4647682a4d + +Vehicle.OBD.O2.Sensor1: + description: Oxygen sensors (PID 14 - PID 1B) + type: branch + uuid: 3aa8859203d4545083196a9690d72627 + +Vehicle.OBD.O2.Sensor1.ShortTermFuelTrim: + datatype: float + description: PID 1x (byte B) - Short term fuel trim + type: sensor + unit: percent + uuid: ee366d40132456c0bce8cac3a837f16a + +Vehicle.OBD.O2.Sensor1.Voltage: + datatype: float + description: PID 1x (byte A) - Sensor voltage + type: sensor + unit: V + uuid: e95f4ea667265ee3a68ab57b86ecbf66 + +Vehicle.OBD.O2.Sensor2: + description: Oxygen sensors (PID 14 - PID 1B) + type: branch + uuid: efcb337cf94056c8a724e76bcfee6765 + +Vehicle.OBD.O2.Sensor2.ShortTermFuelTrim: + datatype: float + description: PID 1x (byte B) - Short term fuel trim + type: sensor + unit: percent + uuid: 92e6e172777457a9866ca045d0d79853 + +Vehicle.OBD.O2.Sensor2.Voltage: + datatype: float + description: PID 1x (byte A) - Sensor voltage + type: sensor + unit: V + uuid: 5f1781bde96b53ce9b810a5a56b7c8ed + +Vehicle.OBD.O2.Sensor3: + description: Oxygen sensors (PID 14 - PID 1B) + type: branch + uuid: b8c145402b7a5cffaa2699ed61b056fa + +Vehicle.OBD.O2.Sensor3.ShortTermFuelTrim: + datatype: float + description: PID 1x (byte B) - Short term fuel trim + type: sensor + unit: percent + uuid: 66c300d35eb85e7387dc42528cca48d9 + +Vehicle.OBD.O2.Sensor3.Voltage: + datatype: float + description: PID 1x (byte A) - Sensor voltage + type: sensor + unit: V + uuid: a86a1986f0fe5d25b6c438a00438ff60 + +Vehicle.OBD.O2.Sensor4: + description: Oxygen sensors (PID 14 - PID 1B) + type: branch + uuid: 853945bce86c5c4f95081075ae32261c + +Vehicle.OBD.O2.Sensor4.ShortTermFuelTrim: + datatype: float + description: PID 1x (byte B) - Short term fuel trim + type: sensor + unit: percent + uuid: b71dcf9d850c5d5686f14ad46cd2cae3 + +Vehicle.OBD.O2.Sensor4.Voltage: + datatype: float + description: PID 1x (byte A) - Sensor voltage + type: sensor + unit: V + uuid: 772cbfab91be59f7bbf3ec4140ffbcc4 + +Vehicle.OBD.O2.Sensor5: + description: Oxygen sensors (PID 14 - PID 1B) + type: branch + uuid: f48c76c9c7ec5ddcb6838ced0bd7517b + +Vehicle.OBD.O2.Sensor5.ShortTermFuelTrim: + datatype: float + description: PID 1x (byte B) - Short term fuel trim + type: sensor + unit: percent + uuid: 7604de26198b51e28a441f79b1d84242 + +Vehicle.OBD.O2.Sensor5.Voltage: + datatype: float + description: PID 1x (byte A) - Sensor voltage + type: sensor + unit: V + uuid: 155a0816093b5aee8012ed2a8d532b7f + +Vehicle.OBD.O2.Sensor6: + description: Oxygen sensors (PID 14 - PID 1B) + type: branch + uuid: 5269c1877ded507b87d7d1d7bec10605 + +Vehicle.OBD.O2.Sensor6.ShortTermFuelTrim: + datatype: float + description: PID 1x (byte B) - Short term fuel trim + type: sensor + unit: percent + uuid: 2fb034769cab5089986d90bf7f9000ca + +Vehicle.OBD.O2.Sensor6.Voltage: + datatype: float + description: PID 1x (byte A) - Sensor voltage + type: sensor + unit: V + uuid: 85430592fb795e848d7bb91e6b9f1e00 + +Vehicle.OBD.O2.Sensor7: + description: Oxygen sensors (PID 14 - PID 1B) + type: branch + uuid: 4b565102e4a052aa8aa64f27dc678ce3 + +Vehicle.OBD.O2.Sensor7.ShortTermFuelTrim: + datatype: float + description: PID 1x (byte B) - Short term fuel trim + type: sensor + unit: percent + uuid: 81f34b16b5e05d1ab159de9474eaf5bc + +Vehicle.OBD.O2.Sensor7.Voltage: + datatype: float + description: PID 1x (byte A) - Sensor voltage + type: sensor + unit: V + uuid: 23984a68e63f532bab18679e1174130d + +Vehicle.OBD.O2.Sensor8: + description: Oxygen sensors (PID 14 - PID 1B) + type: branch + uuid: d5eef24c35f1561982127404b50ece11 + +Vehicle.OBD.O2.Sensor8.ShortTermFuelTrim: + datatype: float + description: PID 1x (byte B) - Short term fuel trim + type: sensor + unit: percent + uuid: 1699eb2267615e258259e480be0fa606 + +Vehicle.OBD.O2.Sensor8.Voltage: + datatype: float + description: PID 1x (byte A) - Sensor voltage + type: sensor + unit: V + uuid: 23e057b3629a5136bb585638725fe0a2 + +Vehicle.OBD.O2WR: + description: Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B) + type: branch + uuid: a439f2bc16575318afe20d0bc6a8cacf + +Vehicle.OBD.O2WR.Sensor1: + description: Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B) + type: branch + uuid: 496074cec04a5260b60fd39bb7ed1479 + +Vehicle.OBD.O2WR.Sensor1.Current: + datatype: float + description: PID 3x (byte CD) - Current for wide range/band oxygen sensor + type: sensor + unit: A + uuid: bb4c70d9d2ae56c8a9a3be446db6f54c + +Vehicle.OBD.O2WR.Sensor1.Lambda: + datatype: float + description: PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor + type: sensor + uuid: b809083454a5516f995477c59bf4d3c6 + +Vehicle.OBD.O2WR.Sensor1.Voltage: + datatype: float + description: PID 2x (byte CD) - Voltage for wide range/band oxygen sensor + type: sensor + unit: V + uuid: 396251cbfa5a57ffb1dd743298dfcdf9 + +Vehicle.OBD.O2WR.Sensor2: + description: Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B) + type: branch + uuid: 079f9960f75d5f399df7ff86fcea8f0c + +Vehicle.OBD.O2WR.Sensor2.Current: + datatype: float + description: PID 3x (byte CD) - Current for wide range/band oxygen sensor + type: sensor + unit: A + uuid: 442ab33180ca5028a37a487056ba4a51 + +Vehicle.OBD.O2WR.Sensor2.Lambda: + datatype: float + description: PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor + type: sensor + uuid: ce55aed0e8705a49970566db71ebcf90 + +Vehicle.OBD.O2WR.Sensor2.Voltage: + datatype: float + description: PID 2x (byte CD) - Voltage for wide range/band oxygen sensor + type: sensor + unit: V + uuid: a784675c3b765d42ad023d8ee412be26 + +Vehicle.OBD.O2WR.Sensor3: + description: Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B) + type: branch + uuid: a8a83d3e33f9584b824088e830bcbaec + +Vehicle.OBD.O2WR.Sensor3.Current: + datatype: float + description: PID 3x (byte CD) - Current for wide range/band oxygen sensor + type: sensor + unit: A + uuid: c942468e349e5aaebde4d90ee0bc3814 + +Vehicle.OBD.O2WR.Sensor3.Lambda: + datatype: float + description: PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor + type: sensor + uuid: f2ae7c781b0a5dcf8db91558e3cf4c13 + +Vehicle.OBD.O2WR.Sensor3.Voltage: + datatype: float + description: PID 2x (byte CD) - Voltage for wide range/band oxygen sensor + type: sensor + unit: V + uuid: a78f7621a3f75df2adc1dc940219834a + +Vehicle.OBD.O2WR.Sensor4: + description: Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B) + type: branch + uuid: bb67047ddad158ba98876a6a87d02e97 + +Vehicle.OBD.O2WR.Sensor4.Current: + datatype: float + description: PID 3x (byte CD) - Current for wide range/band oxygen sensor + type: sensor + unit: A + uuid: f16b31fde63a516db04cb44feaa7c27b + +Vehicle.OBD.O2WR.Sensor4.Lambda: + datatype: float + description: PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor + type: sensor + uuid: be09013f423c588eae9c06da9ddf290f + +Vehicle.OBD.O2WR.Sensor4.Voltage: + datatype: float + description: PID 2x (byte CD) - Voltage for wide range/band oxygen sensor + type: sensor + unit: V + uuid: abeca90ba22d5c32a34ee907cedf3192 + +Vehicle.OBD.O2WR.Sensor5: + description: Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B) + type: branch + uuid: 01c4160d39af5db59c66db844646195e + +Vehicle.OBD.O2WR.Sensor5.Current: + datatype: float + description: PID 3x (byte CD) - Current for wide range/band oxygen sensor + type: sensor + unit: A + uuid: 40494cb5826554929f5ecadd5b9173fd + +Vehicle.OBD.O2WR.Sensor5.Lambda: + datatype: float + description: PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor + type: sensor + uuid: 16a957200f5c51f89824bbb76a23b9c0 + +Vehicle.OBD.O2WR.Sensor5.Voltage: + datatype: float + description: PID 2x (byte CD) - Voltage for wide range/band oxygen sensor + type: sensor + unit: V + uuid: 699c4db2439f51af8465e823687018b8 + +Vehicle.OBD.O2WR.Sensor6: + description: Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B) + type: branch + uuid: cff12c30bde957798daaa3a91758b48b + +Vehicle.OBD.O2WR.Sensor6.Current: + datatype: float + description: PID 3x (byte CD) - Current for wide range/band oxygen sensor + type: sensor + unit: A + uuid: 06a38b6b4784545bb637279e96d48eb5 + +Vehicle.OBD.O2WR.Sensor6.Lambda: + datatype: float + description: PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor + type: sensor + uuid: fdae9bb9a3a45b4680450f0347cf6d66 + +Vehicle.OBD.O2WR.Sensor6.Voltage: + datatype: float + description: PID 2x (byte CD) - Voltage for wide range/band oxygen sensor + type: sensor + unit: V + uuid: 304c181c76d55c3abe75382a935c7bde + +Vehicle.OBD.O2WR.Sensor7: + description: Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B) + type: branch + uuid: 44459df1f25f5d43a07b00f2bad65ef5 + +Vehicle.OBD.O2WR.Sensor7.Current: + datatype: float + description: PID 3x (byte CD) - Current for wide range/band oxygen sensor + type: sensor + unit: A + uuid: 6ed46315325d540eb95c86ec61eef8e4 + +Vehicle.OBD.O2WR.Sensor7.Lambda: + datatype: float + description: PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor + type: sensor + uuid: 9221a5289157538b9dcaa0d961c335fa + +Vehicle.OBD.O2WR.Sensor7.Voltage: + datatype: float + description: PID 2x (byte CD) - Voltage for wide range/band oxygen sensor + type: sensor + unit: V + uuid: 0ad1d79dcce65c00ac48421b5b54ca0e + +Vehicle.OBD.O2WR.Sensor8: + description: Wide range/band oxygen sensors (PID 24 - 2B and PID 34 - 3B) + type: branch + uuid: b8865e72055d52a086f6935d5c188cc1 + +Vehicle.OBD.O2WR.Sensor8.Current: + datatype: float + description: PID 3x (byte CD) - Current for wide range/band oxygen sensor + type: sensor + unit: A + uuid: 96de3c3b036c50c2978ab2aa490d4d9e + +Vehicle.OBD.O2WR.Sensor8.Lambda: + datatype: float + description: PID 2x (byte AB) and PID 3x (byte AB) - Lambda for wide range/band oxygen sensor + type: sensor + uuid: c56db1195fa3519ab6718ab57d2cd543 + +Vehicle.OBD.O2WR.Sensor8.Voltage: + datatype: float + description: PID 2x (byte CD) - Voltage for wide range/band oxygen sensor + type: sensor + unit: V + uuid: ab7d6c739f025782bba640e58123f0c8 + +Vehicle.OBD.OBDStandards: + datatype: uint8 + description: PID 1C - OBD standards this vehicle conforms to + type: attribute + uuid: 1aa8d7d055cf5a29a31b04a12124f673 + +Vehicle.OBD.OilTemperature: + datatype: float + description: PID 5C - Engine oil temperature + type: sensor + unit: celsius + uuid: ef3dfc11085d5077b363b1a4e8e4a84e + +Vehicle.OBD.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 + uuid: 0a9ba3f0a9b256d78bafd62ee8ce73cd + +Vehicle.OBD.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 + uuid: 41d3377813d651aa9b9344ba9fd2f880 + +Vehicle.OBD.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 + uuid: ba1c1b9034955d2d97249c3b4516beef + +Vehicle.OBD.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 + uuid: 00193c560a0a5525baa45681e07b50f6 + +Vehicle.OBD.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 + uuid: 7c3a3f0ecc5d593aa996892668afe4b0 + +Vehicle.OBD.RelativeAcceleratorPosition: + datatype: float + description: PID 5A - Relative accelerator pedal position + type: sensor + unit: percent + uuid: e25de9aacad3549285b4fb234f10be8f + +Vehicle.OBD.RelativeThrottlePosition: + datatype: float + description: PID 45 - Relative throttle position + type: sensor + unit: percent + uuid: 54ecf7dd671c5053aac4bc1bb061d64b + +Vehicle.OBD.RunTime: + datatype: float + description: PID 1F - Engine run time + type: sensor + unit: s + uuid: acf70773752256d1a227ab48257624b5 + +Vehicle.OBD.RunTimeMIL: + datatype: float + description: PID 4D - Run time with MIL on + type: sensor + unit: min + uuid: 555604a484535f60adf8894a6bd895b6 + +Vehicle.OBD.ShortTermFuelTrim1: + datatype: float + description: PID 06 - Short Term (immediate) Fuel Trim - Bank 1 - negative percent leaner, positive percent richer + type: sensor + unit: percent + uuid: 569c983874335fb392d4e82a002654cb + +Vehicle.OBD.ShortTermFuelTrim2: + datatype: float + description: PID 08 - Short Term (immediate) Fuel Trim - Bank 2 - negative percent leaner, positive percent richer + type: sensor + unit: percent + uuid: 53a39620773a523a8182169027169ec2 + +Vehicle.OBD.ShortTermO2Trim1: + datatype: float + description: PID 55 (byte A) - Short term secondary O2 trim - Bank 1 + type: sensor + unit: percent + uuid: be7ed33a854557ba802da0c51f9f4564 + +Vehicle.OBD.ShortTermO2Trim2: + datatype: float + description: PID 57 (byte A) - Short term secondary O2 trim - Bank 2 + type: sensor + unit: percent + uuid: c8b962f8990e51d294621408ceaa21d9 + +Vehicle.OBD.ShortTermO2Trim3: + datatype: float + description: PID 55 (byte B) - Short term secondary O2 trim - Bank 3 + type: sensor + unit: percent + uuid: af58212df970568b9edcc5e58fa36f8d + +Vehicle.OBD.ShortTermO2Trim4: + datatype: float + description: PID 57 (byte B) - Short term secondary O2 trim - Bank 4 + type: sensor + unit: percent + uuid: 8ef0516c0c965fd6aecbacd6b9120a5b + +Vehicle.OBD.Speed: + datatype: float + description: PID 0D - Vehicle speed + type: sensor + unit: km/h + uuid: 91ed0bb43eb054759813cd784b071764 + +Vehicle.OBD.Status: + description: PID 01 - OBD status + type: branch + uuid: 474f58e593ee5bfebbb9c6ce4a453f96 + +Vehicle.OBD.Status.DTCCount: + datatype: uint8 + description: Number of Diagnostic Trouble Codes (DTC) + type: sensor + uuid: 4afdf65e788c5f69baf682597e69fb67 + +Vehicle.OBD.Status.IgnitionType: + allowed: + - SPARK + - COMPRESSION + datatype: string + description: Type of the ignition for ICE - spark = spark plug ignition, compression = self-igniting (Diesel engines) + type: attribute + uuid: 7ffd71caac8e5bd18f93366afdfe534d + +Vehicle.OBD.Status.IsMILOn: + datatype: boolean + description: Malfunction Indicator Light (MIL) False = Off, True = On + type: sensor + uuid: 8744bcb275205630932320b66185502c + +Vehicle.OBD.ThrottleActuator: + datatype: float + description: PID 4C - Commanded throttle actuator + type: sensor + unit: percent + uuid: 49a19905a1005ee3abe0c0a84d7112d1 + +Vehicle.OBD.ThrottlePosition: + datatype: float + description: PID 11 - Throttle position - 0 = closed throttle, 100 = open throttle + type: sensor + unit: percent + uuid: ec1d372020205bb4a846a014b33801e1 + +Vehicle.OBD.ThrottlePositionB: + datatype: float + description: PID 47 - Absolute throttle position B + type: sensor + unit: percent + uuid: 701712a565ed5bf8b6630487a7152c87 + +Vehicle.OBD.ThrottlePositionC: + datatype: float + description: PID 48 - Absolute throttle position C + type: sensor + unit: percent + uuid: 06f162dc00a85f628f9d5d1bc952665c + +Vehicle.OBD.TimeSinceDTCCleared: + datatype: float + description: PID 4E - Time since trouble codes cleared + type: sensor + unit: min + uuid: 66ea3984a2585dcdaaf6452eef835c0d + +Vehicle.OBD.TimingAdvance: + datatype: float + description: PID 0E - Time advance + type: sensor + unit: degrees + uuid: 35533b7e327d5f839b17c932b630767c + +Vehicle.OBD.WarmupsSinceDTCClear: + datatype: uint8 + description: PID 30 - Number of warm-ups since codes cleared + type: sensor + uuid: a63ba60721785fc591e3dd067c4dc2ae + +Vehicle.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 + uuid: add77f60f7885e39a84baae200569077 + +Vehicle.Powertrain: + description: Powertrain data for battery management, etc. + type: branch + uuid: 12f35ec7bd1c58d1a329565ce3d053d5 + +Vehicle.Powertrain.AccumulatedBrakingEnergy: + datatype: float + description: The accumulated energy from regenerative braking over lifetime. + type: sensor + unit: kWh + uuid: 0dd466d28d3d5ad094f2015adafb91a5 + +Vehicle.Powertrain.CombustionEngine: + description: Engine-specific data, stopping at the bell housing. + type: branch + uuid: 159e2e3e75f0590f95b4d2f6cfae54b5 + +Vehicle.Powertrain.CombustionEngine.AspirationType: + allowed: + - UNKNOWN + - NATURAL + - SUPERCHARGER + - TURBOCHARGER + datatype: string + default: UNKNOWN + description: Type of aspiration (natural, turbocharger, supercharger etc). + type: attribute + uuid: 3ca6a8ff30275c20a9d8d6d6829574eb + +Vehicle.Powertrain.CombustionEngine.Bore: + datatype: float + description: Bore in millimetres. + type: attribute + unit: mm + uuid: 1618fb16035b5464961570cc1afd934e + +Vehicle.Powertrain.CombustionEngine.CompressionRatio: + datatype: string + description: Engine compression ratio, specified in the format 'X:1', e.g. '9.2:1'. + type: attribute + uuid: ead42922511051a0a0a1b634781f3c09 + +Vehicle.Powertrain.CombustionEngine.Configuration: + allowed: + - UNKNOWN + - STRAIGHT + - V + - BOXER + - W + - ROTARY + - RADIAL + - SQUARE + - H + - U + - OPPOSED + - X + datatype: string + default: UNKNOWN + description: Engine configuration. + type: attribute + uuid: 586be4567fe059ee9e6cf42901c2e773 + +Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid: + 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 + uuid: 81d8eec46d9357a3b1064bfb5d070fa2 + +Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid.Capacity: + datatype: float + description: Capacity in liters of the Diesel Exhaust Fluid Tank. + type: attribute + unit: l + uuid: 863c16ad452b5cf5b7a37f58bdda14c3 + +Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid.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 + uuid: 811af3fe4f7f5270b4119bb66cff8759 + +Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid.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 + uuid: f5b0269b58ff5a8e8399f6d96963a3b6 + +Vehicle.Powertrain.CombustionEngine.DieselExhaustFluid.Range: + datatype: uint32 + description: Remaining range in meters of the Diesel Exhaust Fluid present in the vehicle. + type: sensor + unit: m + uuid: 124afbee975c5a67b316413f7b805eac + +Vehicle.Powertrain.CombustionEngine.DieselParticulateFilter: + description: Diesel Particulate Filter signals. + type: branch + uuid: eeddd99ad6475b1a92b9ec7bd7cefdbd + +Vehicle.Powertrain.CombustionEngine.DieselParticulateFilter.DeltaPressure: + datatype: float + description: Delta Pressure of Diesel Particulate Filter. + type: sensor + unit: Pa + uuid: a6f476775c60531b93acb835e0bc6ab6 + +Vehicle.Powertrain.CombustionEngine.DieselParticulateFilter.InletTemperature: + datatype: float + description: Inlet temperature of Diesel Particulate Filter. + type: sensor + unit: celsius + uuid: 70e90d202d3054bd967e67dce95c8ef2 + +Vehicle.Powertrain.CombustionEngine.DieselParticulateFilter.OutletTemperature: + datatype: float + description: Outlet temperature of Diesel Particulate Filter. + type: sensor + unit: celsius + uuid: e2b7f9d97bec5c0d94ade71a5e2f6518 + +Vehicle.Powertrain.CombustionEngine.Displacement: + datatype: uint16 + description: Displacement in cubic centimetres. + type: attribute + unit: cm^3 + uuid: 94dbd928847150ab842c00fa5caaf272 + +Vehicle.Powertrain.CombustionEngine.ECT: + datatype: int16 + description: Engine coolant temperature. + type: sensor + unit: celsius + uuid: fff3cad23cac5b189a1a075c3ab562cd + +Vehicle.Powertrain.CombustionEngine.EOP: + datatype: uint16 + description: Engine oil pressure. + type: sensor + unit: kPa + uuid: 76c7039dc7975ec3a003f0f4a04895ec + +Vehicle.Powertrain.CombustionEngine.EOT: + datatype: int16 + description: Engine oil temperature. + type: sensor + unit: celsius + uuid: eae6f5eae04f530e80f6b024f95b767d + +Vehicle.Powertrain.CombustionEngine.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 + uuid: 4ec845911b8e5b64b2cb1d34063184de + +Vehicle.Powertrain.CombustionEngine.EngineCoolantCapacity: + datatype: float + description: Engine coolant capacity in liters. + type: attribute + unit: l + uuid: 90b5b64808ea5f4fa2798d96143b0d60 + +Vehicle.Powertrain.CombustionEngine.EngineHours: + datatype: float + description: Accumulated time during engine lifetime with 'engine speed (rpm) > 0'. + type: sensor + unit: h + uuid: a23a62e24f58514d961890f53262e4e0 + +Vehicle.Powertrain.CombustionEngine.EngineOilCapacity: + datatype: float + description: Engine oil capacity in liters. + type: attribute + unit: l + uuid: 2ca7af6facb55a13885989faa9bc6ca7 + +Vehicle.Powertrain.CombustionEngine.EngineOilLevel: + allowed: + - CRITICALLY_LOW + - LOW + - NORMAL + - HIGH + - CRITICALLY_HIGH + datatype: string + description: Engine oil level. + type: sensor + uuid: e3813f59e94b509eb865fd97255a8a4f + +Vehicle.Powertrain.CombustionEngine.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 + uuid: 6caa3d7e669c5cc6aecd4a6be9a302d4 + +Vehicle.Powertrain.CombustionEngine.IsRunning: + datatype: boolean + description: Engine Running. True if engine is rotating (Speed > 0). + type: sensor + uuid: 57652c27679757398c44d56af7a044d3 + +Vehicle.Powertrain.CombustionEngine.MAF: + datatype: uint16 + description: Grams of air drawn into engine per second. + type: sensor + unit: g/s + uuid: 1e222ed8c48b5dcea60e43ac8af7d6df + +Vehicle.Powertrain.CombustionEngine.MAP: + datatype: uint16 + description: Manifold absolute pressure possibly boosted using forced induction. + type: sensor + unit: kPa + uuid: 28d4354fa34056369acb857aa7cc76ac + +Vehicle.Powertrain.CombustionEngine.MaxPower: + datatype: uint16 + default: 0 + description: Peak power, in kilowatts, that engine can generate. + type: attribute + unit: kW + uuid: 81fbdd5e90f557a38b96578a38dc137d + +Vehicle.Powertrain.CombustionEngine.MaxTorque: + datatype: uint16 + default: 0 + description: Peak torque, in newton meter, that the engine can generate. + type: attribute + unit: Nm + uuid: 471cd478c1e8597f8e97c85b4e4ebe26 + +Vehicle.Powertrain.CombustionEngine.NumberOfCylinders: + datatype: uint16 + description: Number of cylinders. + type: attribute + uuid: b2cd342c218257e88d214cdb511df82b + +Vehicle.Powertrain.CombustionEngine.NumberOfValvesPerCylinder: + datatype: uint16 + description: Number of valves per cylinder. + type: attribute + uuid: 44633204726e561ca21beff31f3fef80 + +Vehicle.Powertrain.CombustionEngine.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 + uuid: 94303734c68c5353a02625f652103918 + +Vehicle.Powertrain.CombustionEngine.Power: + datatype: uint16 + description: Current engine power output. Shall be reported as 0 during engine breaking. + type: sensor + unit: kW + uuid: 20e8b5d2187758c2848ed421248c180d + +Vehicle.Powertrain.CombustionEngine.Speed: + datatype: uint16 + description: Engine speed measured as rotations per minute. + type: sensor + unit: rpm + uuid: 557ce24c5a4d51cc825059c948ac9e29 + +Vehicle.Powertrain.CombustionEngine.StrokeLength: + datatype: float + description: Stroke length in millimetres. + type: attribute + unit: mm + uuid: 1bdfdab7904d51ed93e101b84ea54ddf + +Vehicle.Powertrain.CombustionEngine.TPS: + datatype: uint8 + description: Current throttle position. + max: 100 + type: sensor + unit: percent + uuid: 1ddb77860de558b4876ffb399a442bda + +Vehicle.Powertrain.CombustionEngine.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 + uuid: b81f504bdb57513299ae6e9402ec7bcd + +Vehicle.Powertrain.ElectricMotor: + description: Electric Motor specific data. + type: branch + uuid: 1ade64f6b0d05f6c9340e7a667555ae2 + +Vehicle.Powertrain.ElectricMotor.CoolantTemperature: + datatype: int16 + description: Motor coolant temperature (if applicable). + type: sensor + unit: celsius + uuid: 3c5ea8c7700956518f2ae7a2a0f34f1c + +Vehicle.Powertrain.ElectricMotor.EngineCode: + datatype: string + description: Engine code designation, as specified by vehicle manufacturer. + type: attribute + uuid: e4102a5142ed501495e5edafd3d36dfb + +Vehicle.Powertrain.ElectricMotor.MaxPower: + datatype: uint16 + default: 0 + description: Peak power, in kilowatts, that motor(s) can generate. + type: attribute + unit: kW + uuid: 825ec7911ee958abb199b9f7903df3a6 + +Vehicle.Powertrain.ElectricMotor.MaxRegenPower: + datatype: uint16 + default: 0 + description: Peak regen/brake power, in kilowatts, that motor(s) can generate. + type: attribute + unit: kW + uuid: 7f2cb2650ba95485b7156ffe76e27366 + +Vehicle.Powertrain.ElectricMotor.MaxRegenTorque: + datatype: uint16 + default: 0 + description: Peak regen/brake torque, in newton meter, that the motor(s) can generate. + type: attribute + unit: Nm + uuid: 0e5190c2517b55aa80fcb9bf698e02d6 + +Vehicle.Powertrain.ElectricMotor.MaxTorque: + datatype: uint16 + default: 0 + description: Peak power, in newton meter, that the motor(s) can generate. + type: attribute + unit: Nm + uuid: cf31eabcde5151f589e9b0f7a6090512 + +Vehicle.Powertrain.ElectricMotor.Power: + datatype: int16 + description: Current motor power output. Negative values indicate regen mode. + type: sensor + unit: kW + uuid: 46b86286fba059349a733fed9a0e3232 + +Vehicle.Powertrain.ElectricMotor.Speed: + datatype: int32 + description: Motor rotational speed measured as rotations per minute. Negative values indicate reverse driving mode. + type: sensor + unit: rpm + uuid: ca961aa6ca435095a89f9d404a5d849d + +Vehicle.Powertrain.ElectricMotor.Temperature: + datatype: int16 + description: Motor temperature. + type: sensor + unit: celsius + uuid: 1b7c15e5341052139995bfacea2c05b2 + +Vehicle.Powertrain.ElectricMotor.Torque: + datatype: int16 + description: Current motor torque. Negative values indicate regen mode. + type: sensor + unit: Nm + uuid: aceffe768ddf5b828fff0975349d2433 + +Vehicle.Powertrain.FuelSystem: + description: Fuel system data. + type: branch + uuid: dbc194a7f97d5a56bc8942c17c2db22e + +Vehicle.Powertrain.FuelSystem.AbsoluteLevel: + datatype: float + description: Current available fuel in the fuel tank expressed in liters. + type: sensor + unit: l + uuid: 00a1399655ee5d9188022f3d55d8f05e + +Vehicle.Powertrain.FuelSystem.AverageConsumption: + datatype: float + description: Average consumption in liters per 100 km. + min: 0 + type: sensor + unit: l/100km + uuid: e2252108125a54dcab34e1bad0fe8bdc + +Vehicle.Powertrain.FuelSystem.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 + uuid: adf0a40964ff556f92b10275ad918883 + +Vehicle.Powertrain.FuelSystem.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 + uuid: f0f72012f5e453c1935ff8c3a5aff696 + +Vehicle.Powertrain.FuelSystem.InstantConsumption: + datatype: float + description: Current consumption in liters per 100 km. + min: 0 + type: sensor + unit: l/100km + uuid: cf65767ec8ad56ffadfdccd831e4b562 + +Vehicle.Powertrain.FuelSystem.IsEngineStopStartEnabled: + datatype: boolean + description: Indicates whether eco start stop is currently enabled. + type: sensor + uuid: 176eed5bb0da582a9ee56f1c70e12075 + +Vehicle.Powertrain.FuelSystem.IsFuelLevelLow: + datatype: boolean + description: Indicates that the fuel level is low (e.g. <50km range). + type: sensor + uuid: 65f18ee3b04f5d4c8bb76083227dd9fe + +Vehicle.Powertrain.FuelSystem.Range: + datatype: uint32 + description: Remaining range in meters using only liquid fuel. + type: sensor + unit: m + uuid: c5a0dbe5e754553897f0aed0069af57a + +Vehicle.Powertrain.FuelSystem.RelativeLevel: + datatype: uint8 + description: Level in fuel tank as percent of capacity. 0 = empty. 100 = full. + max: 100 + min: 0 + type: sensor + unit: percent + uuid: e90e3daa1dcd5165a9d78b09e890fb22 + +Vehicle.Powertrain.FuelSystem.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 + uuid: 7fd3bf2ef0c650e69ff2037875ec59ee + +Vehicle.Powertrain.FuelSystem.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 + uuid: 80edc3002aa25097aba6455fe459fa6c + +Vehicle.Powertrain.FuelSystem.TankCapacity: + datatype: float + description: Capacity of the fuel tank in liters. + type: attribute + unit: l + uuid: 362643b866c55d5386fdbdf383464e90 + +Vehicle.Powertrain.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 + uuid: d740b02e2fb35c07bf88a6e5ebe2f6e4 + +Vehicle.Powertrain.Range: + datatype: uint32 + description: Remaining range in meters using all energy sources available in the vehicle. + type: sensor + unit: m + uuid: ea4b6de772d65d20b1fa611f997aa7b8 + +Vehicle.Powertrain.TractionBattery: + description: Battery Management data. + type: branch + uuid: 1a2515d1a8875d86873431194ade2b50 + +Vehicle.Powertrain.TractionBattery.AccumulatedChargedEnergy: + datatype: float + description: The accumulated energy delivered to the battery during charging over lifetime of the battery. + type: sensor + unit: kWh + uuid: 739d06021d795da0877bc0ef3c107de1 + +Vehicle.Powertrain.TractionBattery.AccumulatedChargedThroughput: + datatype: float + description: The accumulated charge throughput delivered to the battery during charging over lifetime of the battery. + type: sensor + unit: Ah + uuid: 6d038ccc313351fba3a9104c1158a207 + +Vehicle.Powertrain.TractionBattery.AccumulatedConsumedEnergy: + datatype: float + description: The accumulated energy leaving HV battery for propulsion and auxiliary loads over lifetime of the battery. + type: sensor + unit: kWh + uuid: b844cb96765f574d8d31edb09ccaef81 + +Vehicle.Powertrain.TractionBattery.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 + uuid: f3e2ca21f3b550288d494827c9a172dd + +Vehicle.Powertrain.TractionBattery.CellVoltage: + description: Voltage information for cells in the battery pack. + type: branch + uuid: 0070210b80125f1a8e9473f8875fe3d1 + +Vehicle.Powertrain.TractionBattery.CellVoltage.Max: + datatype: float + description: Current voltage of the battery cell with highest voltage. + type: sensor + unit: V + uuid: bde40aa6b442580db3c0d4c1efed8a09 + +Vehicle.Powertrain.TractionBattery.CellVoltage.Min: + datatype: float + description: Current voltage of the battery cell with lowest voltage. + type: sensor + unit: V + uuid: b868f28cc42a5ba28a127647cd16cb93 + +Vehicle.Powertrain.TractionBattery.Charging: + description: Properties related to battery charging. + type: branch + uuid: 49b9ef0c8b145a36afdf17d0cb44131b + +Vehicle.Powertrain.TractionBattery.Charging.ChargeCurrent: + description: Current charging current. + type: branch + uuid: 94739cf563735b438878ac0f85601f27 + +Vehicle.Powertrain.TractionBattery.Charging.ChargeCurrent.DC: + datatype: float + description: Current DC charging current at inlet. Negative if returning energy to grid. + type: sensor + unit: A + uuid: 44204d7ae6fd5f8e954d0670a739bdf2 + +Vehicle.Powertrain.TractionBattery.Charging.ChargeCurrent.Phase1: + datatype: float + description: Current AC charging current (rms) at inlet for Phase 1. Negative if returning energy to grid. + type: sensor + unit: A + uuid: 400dca50fcde52a6bb605d7e86f49776 + +Vehicle.Powertrain.TractionBattery.Charging.ChargeCurrent.Phase2: + datatype: float + description: Current AC charging current (rms) at inlet for Phase 2. Negative if returning energy to grid. + type: sensor + unit: A + uuid: 32cb24d1c495503a9087d6f55997cf57 + +Vehicle.Powertrain.TractionBattery.Charging.ChargeCurrent.Phase3: + datatype: float + description: Current AC charging current (rms) at inlet for Phase 3. Negative if returning energy to grid. + type: sensor + unit: A + uuid: 55fb7fb7ff4a5df9b6a3af435eac868e + +Vehicle.Powertrain.TractionBattery.Charging.ChargeLimit: + datatype: uint8 + default: 100 + description: Target charge limit (state of charge) for battery. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 62360a4ed1095275a7052d65112aaef1 + +Vehicle.Powertrain.TractionBattery.Charging.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 + uuid: 4c56357a6f1d586395215a9beeb26d91 + +Vehicle.Powertrain.TractionBattery.Charging.ChargePortFlap: + allowed: + - OPEN + - CLOSED + datatype: string + description: Status of the charge port cover, can potentially be controlled manually. + type: actuator + uuid: 71bdd2145bb55c3393df194bfc2e03e5 + +Vehicle.Powertrain.TractionBattery.Charging.ChargeRate: + datatype: float + description: Current charging rate, as in kilometers of range added per hour. + type: sensor + unit: km/h + uuid: a287cea3fdaa533180c8e349343a7851 + +Vehicle.Powertrain.TractionBattery.Charging.ChargeVoltage: + description: Current charging voltage, as measured at the charging inlet. + type: branch + uuid: 7170151d653b52c6bb5e75cb0a14d1c5 + +Vehicle.Powertrain.TractionBattery.Charging.ChargeVoltage.DC: + datatype: float + description: Current DC charging voltage at charging inlet. + type: sensor + unit: V + uuid: 701c21d1a4815b35ba061415789ec911 + +Vehicle.Powertrain.TractionBattery.Charging.ChargeVoltage.Phase1: + datatype: float + description: Current AC charging voltage (rms) at inlet for Phase 1. + type: sensor + unit: V + uuid: 15991c8316585816815d6f4fb6b06776 + +Vehicle.Powertrain.TractionBattery.Charging.ChargeVoltage.Phase2: + datatype: float + description: Current AC charging voltage (rms) at inlet for Phase 2. + type: sensor + unit: V + uuid: 6c0dcf98169d5a5190736a6dd81291a4 + +Vehicle.Powertrain.TractionBattery.Charging.ChargeVoltage.Phase3: + datatype: float + description: Current AC charging voltage (rms) at inlet for Phase 3. + type: sensor + unit: V + uuid: 1ab06b48231e54e2ac27e543508c84f0 + +Vehicle.Powertrain.TractionBattery.Charging.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 + uuid: d28244c9e3365899954bd3e38ef46bb9 + +Vehicle.Powertrain.TractionBattery.Charging.IsChargingCableConnected: + datatype: boolean + description: Indicates if a charging cable is physically connected to the vehicle or not. + type: sensor + uuid: a1c8e2f662b95a54a9933a1b163fff84 + +Vehicle.Powertrain.TractionBattery.Charging.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 + uuid: 7fa81693f3b8587f8d71e7b1619c8e21 + +Vehicle.Powertrain.TractionBattery.Charging.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 + uuid: 534d884fb36652688535543b52419529 + +Vehicle.Powertrain.TractionBattery.Charging.MaximumChargingCurrent: + description: Maximum charging current that can be accepted by the system, as measured at the charging inlet. + type: branch + uuid: e3f2e57e7a395d9ca9931d429e540a34 + +Vehicle.Powertrain.TractionBattery.Charging.MaximumChargingCurrent.DC: + datatype: float + description: Maximum DC charging current at inlet that can be accepted by the system. + type: sensor + unit: A + uuid: 5a70acfd3c8959898b43738151ab36e1 + +Vehicle.Powertrain.TractionBattery.Charging.MaximumChargingCurrent.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 + uuid: e3c1034e89cc55968ff51b990906db43 + +Vehicle.Powertrain.TractionBattery.Charging.MaximumChargingCurrent.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 + uuid: ab3514bc982e54f2b98698fb6c752368 + +Vehicle.Powertrain.TractionBattery.Charging.MaximumChargingCurrent.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 + uuid: 47dd5e99c30d562e9e2e1c58007846b6 + +Vehicle.Powertrain.TractionBattery.Charging.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 + uuid: 1e4be3280b265873945531f6f6d0ec6b + +Vehicle.Powertrain.TractionBattery.Charging.PowerLoss: + datatype: float + description: Electrical energy lost by power dissipation to heat inside the AC/DC converter. + type: sensor + unit: W + uuid: 88f40bbeb80b5dfb97ceba13269665c5 + +Vehicle.Powertrain.TractionBattery.Charging.StartStopCharging: + allowed: + - START + - STOP + datatype: string + description: Start or stop the charging process. + type: actuator + uuid: 80506d3e9a2557c2b52f74a50d89593f + +Vehicle.Powertrain.TractionBattery.Charging.Temperature: + datatype: float + description: Current temperature of AC/DC converter converting grid voltage to battery voltage. + type: sensor + unit: celsius + uuid: c3c0ef3a41db5df1bab659803adbc7ba + +Vehicle.Powertrain.TractionBattery.Charging.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 + uuid: c6439c2e068652b08383b9654e2e784a + +Vehicle.Powertrain.TractionBattery.Charging.Timer: + description: Properties related to timing of battery charging sessions. + type: branch + uuid: cd5b57ada627510e83f90832efed9d5a + +Vehicle.Powertrain.TractionBattery.Charging.Timer.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 + uuid: b09fb52261735977af275dda1904a7a1 + +Vehicle.Powertrain.TractionBattery.Charging.Timer.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 + uuid: c08dcaeda02b5e26aacd7e2542f0fc90 + +Vehicle.Powertrain.TractionBattery.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 + uuid: 7a1488e0c83f50a6b69d8ea85c5bb592 + +Vehicle.Powertrain.TractionBattery.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 + uuid: 8859e1b0386a5eda880a9c30cd0dfa8e + +Vehicle.Powertrain.TractionBattery.CurrentVoltage: + datatype: float + description: Current Voltage of the battery. + type: sensor + unit: V + uuid: 7b54ea22ee7d5f559da552aefcc07222 + +Vehicle.Powertrain.TractionBattery.DCDC: + 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 + uuid: 01f4943795b55cbd8f94e1bca137fc0a + +Vehicle.Powertrain.TractionBattery.DCDC.PowerLoss: + datatype: float + description: Electrical energy lost by power dissipation to heat inside DC/DC converter. + type: sensor + unit: W + uuid: f29e37087cdf57ca998188c7b945a77b + +Vehicle.Powertrain.TractionBattery.DCDC.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 + uuid: 4e587c3af2aa5fbb9205e42a64fc8d77 + +Vehicle.Powertrain.TractionBattery.GrossCapacity: + datatype: uint16 + description: Gross capacity of the battery. + type: attribute + unit: kWh + uuid: 5460530488435dc8bfa1298bf47a993d + +Vehicle.Powertrain.TractionBattery.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 + uuid: c8279874660c55b38c7ac64a8503a519 + +Vehicle.Powertrain.TractionBattery.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 + uuid: dd38d1c7ee12530aac03f49ad01d5c04 + +Vehicle.Powertrain.TractionBattery.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 + uuid: e30ef59fc2a25f6b8990248e19a5cdf9 + +Vehicle.Powertrain.TractionBattery.MaxVoltage: + datatype: uint16 + description: Max allowed voltage of the battery, e.g. during charging. + type: attribute + unit: V + uuid: a81264a0ef0c55d288671cfc62c4add5 + +Vehicle.Powertrain.TractionBattery.NetCapacity: + datatype: uint16 + description: Total net capacity of the battery considering aging. + type: sensor + unit: kWh + uuid: 9c68fe42cb81501eb6349f8c9b0b6899 + +Vehicle.Powertrain.TractionBattery.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 + uuid: 3eccae5633185b998d5bdb6ea33cd926 + +Vehicle.Powertrain.TractionBattery.PowerLoss: + datatype: float + description: Electrical energy lost by power dissipation to heat inside the battery. + type: sensor + unit: W + uuid: 880082aafe025cb3a5776b623f9a48b5 + +Vehicle.Powertrain.TractionBattery.ProductionDate: + datatype: string + description: Production date of battery in ISO8601 format, e.g. YYYY-MM-DD. + type: attribute + uuid: c9509ba4d76c56d9a8c1d6e2280ae02f + +Vehicle.Powertrain.TractionBattery.Range: + datatype: uint32 + description: Remaining range in meters using only battery. + type: sensor + unit: m + uuid: c0376a425e5d578d9d86ae0dc2ad9778 + +Vehicle.Powertrain.TractionBattery.StateOfCharge: + description: Information on the state of charge of the vehicle's high voltage battery. + type: branch + uuid: 26bae2ce7c4d5e2a951915ef2f5d8b7d + +Vehicle.Powertrain.TractionBattery.StateOfCharge.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 + uuid: 2e647ca3a1ff5e52af137aab240642da + +Vehicle.Powertrain.TractionBattery.StateOfCharge.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 + uuid: 435ef8dbe4425450ae1ff6215fc9e40b + +Vehicle.Powertrain.TractionBattery.StateOfCharge.Displayed: + datatype: float + description: State of charge displayed to the customer. + max: 100.0 + min: 0 + type: sensor + unit: percent + uuid: 1bfcc228293b5512aafe2508ab0500d2 + +Vehicle.Powertrain.TractionBattery.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 + uuid: 4d982c47f3245048bcfec1190973a3ed + +Vehicle.Powertrain.TractionBattery.Temperature: + description: Temperature Information for the battery pack. + type: branch + uuid: 1cfbcf8c152959dcb3eb2c54fc42e623 + +Vehicle.Powertrain.TractionBattery.Temperature.Average: + datatype: float + description: Current average temperature of the battery cells. + type: sensor + unit: celsius + uuid: ae28e502137f56b9a037ed9b32bc04e1 + +Vehicle.Powertrain.TractionBattery.Temperature.Max: + datatype: float + description: Current maximum temperature of the battery cells, i.e. temperature of the hottest cell. + type: sensor + unit: celsius + uuid: 07aa7c8ba1d355398d7469c2b337152a + +Vehicle.Powertrain.TractionBattery.Temperature.Min: + datatype: float + description: Current minimum temperature of the battery cells, i.e. temperature of the coldest cell. + type: sensor + unit: celsius + uuid: 4e3f630fefa7558fa302b175bc7eb5c7 + +Vehicle.Powertrain.Transmission: + description: Transmission-specific data, stopping at the drive shafts. + type: branch + uuid: 6b71e284b63a527caa6296a66e9fdd0c + +Vehicle.Powertrain.Transmission.ClutchEngagement: + datatype: float + description: Clutch engagement. 0% = Clutch fully disengaged. 100% = Clutch fully engaged. + max: 100 + min: 0 + type: actuator + unit: percent + uuid: 2890bd4a2b6a56c19b62d7bd95151fc6 + +Vehicle.Powertrain.Transmission.ClutchWear: + datatype: uint8 + description: Clutch wear as a percent. 0 = no wear. 100 = worn. + max: 100 + type: sensor + unit: percent + uuid: c113405ad165571a9d53ae4cf55dc929 + +Vehicle.Powertrain.Transmission.CurrentGear: + datatype: int8 + description: The current gear. 0=Neutral, 1/2/..=Forward, -1/-2/..=Reverse. + type: sensor + uuid: cd0ba1d772565e16bff46cbd5c9361da + +Vehicle.Powertrain.Transmission.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 + uuid: 5149afe37fbd5c24847b5820821abc02 + +Vehicle.Powertrain.Transmission.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 + uuid: 197c939bd1405613b80179becec6db83 + +Vehicle.Powertrain.Transmission.DriveType: + allowed: + - UNKNOWN + - FORWARD_WHEEL_DRIVE + - REAR_WHEEL_DRIVE + - ALL_WHEEL_DRIVE + datatype: string + default: UNKNOWN + description: Drive type. + type: attribute + uuid: 0e480b76fb2d5f8bb08fb586f90ee6ae + +Vehicle.Powertrain.Transmission.GearChangeMode: + allowed: + - MANUAL + - AUTOMATIC + datatype: string + description: Is the gearbox in automatic or manual (paddle) mode. + type: actuator + uuid: ff3c69378c2f598286e51f7dac13adaa + +Vehicle.Powertrain.Transmission.GearCount: + datatype: int8 + default: 0 + description: Number of forward gears in the transmission. -1 = CVT. + type: attribute + uuid: 84293f40d3ed57f1a08992d97b1a9ccd + +Vehicle.Powertrain.Transmission.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 + uuid: 6660cf1d88d15430b1e7c8908a7b769b + +Vehicle.Powertrain.Transmission.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 + uuid: 63ba7593926b574ebbe4f90b28557e78 + +Vehicle.Powertrain.Transmission.IsParkLockEngaged: + datatype: boolean + description: Is the transmission park lock engaged or not. False = Disengaged. True = Engaged. + type: actuator + uuid: 1578da3f925e54ac9df978abd0195408 + +Vehicle.Powertrain.Transmission.PerformanceMode: + allowed: + - NORMAL + - SPORT + - ECONOMY + - SNOW + - RAIN + datatype: string + description: Current gearbox performance mode. + type: actuator + uuid: 6b5cfd85cb595e559503ccf993be04dd + +Vehicle.Powertrain.Transmission.SelectedGear: + datatype: int8 + description: The selected gear. 0=Neutral, 1/2/..=Forward, -1/-2/..=Reverse, 126=Park, 127=Drive. + type: actuator + uuid: 490fd99b9d5f562eb180c19e8cef5e12 + +Vehicle.Powertrain.Transmission.Temperature: + datatype: int16 + description: The current gearbox temperature. + type: sensor + unit: celsius + uuid: 4f5e48c3511b5e1abff11aa7ec62dd18 + +Vehicle.Powertrain.Transmission.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 + uuid: d3bcaaf973d3512287817049db9bd677 + +Vehicle.Powertrain.Transmission.TravelledDistance: + datatype: float + description: Odometer reading, total distance travelled during the lifetime of the transmission. + type: sensor + unit: km + uuid: b9dd66f20c7f5b12a046766b94dc20c1 + +Vehicle.Powertrain.Transmission.Type: + allowed: + - UNKNOWN + - SEQUENTIAL + - H + - AUTOMATIC + - DSG + - CVT + datatype: string + default: UNKNOWN + description: Transmission type. + type: attribute + uuid: f83b9e5464d85a0288fcb32c164d3c63 + +Vehicle.Powertrain.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 + uuid: 2a000da4204658a4a6e3ecd5176bdfba + +Vehicle.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 + uuid: 97dc98269a19591d9efa455a8d943c16 + +Vehicle.Service: + description: Service data. + type: branch + uuid: b6463772705b56a7a993e23601bd3d47 + +Vehicle.Service.DistanceToService: + datatype: float + description: Remaining distance to service (of any kind). Negative values indicate service overdue. + type: sensor + unit: km + uuid: 6f4347ce149759819572c8c3a17e8d93 + +Vehicle.Service.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 + uuid: 3e28f85ccccd5702b9adbe9a761ea1b4 + +Vehicle.Service.TimeToService: + datatype: int32 + description: Remaining time to service (of any kind). Negative values indicate service overdue. + type: sensor + unit: s + uuid: c968be91a5685fa9ae30b84a0f91934e + +Vehicle.Speed: + datatype: float + description: Vehicle speed. + type: sensor + unit: km/h + uuid: efe50798638d55fab18ab7d43cc490e9 + +Vehicle.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 + uuid: 3790b5f4513c5a3d90a0503a965bbbe0 + +Vehicle.Trailer: + description: Trailer signals. + type: branch + uuid: 66206ee5c25a5817bef214c0c8ae8013 + +Vehicle.Trailer.IsConnected: + datatype: boolean + description: Signal indicating if trailer is connected or not. + type: sensor + uuid: 77f28ed03c125ac9a19d22e9436b0ec4 + +Vehicle.TraveledDistance: + datatype: float + description: Odometer reading, total distance traveled during the lifetime of the vehicle. + type: sensor + unit: km + uuid: 32c3c3585f105d8aa5566ef5a038a741 + +Vehicle.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 + uuid: cfc6efd2793152e487f9fe3f4e03fd5d + +Vehicle.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 + uuid: 84b9558ad33555389791b57d505f27a8 + +Vehicle.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 + uuid: 81f51ebfe29c591190171d7b96e1c948 + +Vehicle.VehicleIdentification: + description: Attributes that identify a vehicle. + type: branch + uuid: c33861c3e9125208b05f23fe922bf08e + +Vehicle.VehicleIdentification.AcrissCode: + datatype: string + description: The ACRISS Car Classification Code is a code used by many car rental companies. + type: attribute + uuid: 115a821e8e0b57f08e4b9e61e85d7156 + +Vehicle.VehicleIdentification.BodyType: + datatype: string + description: Indicates the design and body style of the vehicle (e.g. station wagon, hatchback, etc.). + type: attribute + uuid: e6d5c71ecec95d68b0b59bb7e93af759 + +Vehicle.VehicleIdentification.Brand: + datatype: string + description: Vehicle brand or manufacturer. + type: attribute + uuid: 19fd645ff5385767bcdbf5dd4313483f + +Vehicle.VehicleIdentification.DateVehicleFirstRegistered: + datatype: string + description: The date in ISO 8601 format of the first registration of the vehicle with the respective public authorities. + type: attribute + uuid: 046f47acf62e50bd863d6568d73743d7 + +Vehicle.VehicleIdentification.KnownVehicleDamages: + datatype: string + description: A textual description of known damages, both repaired and unrepaired. + type: attribute + uuid: e87f352cddb15e94b340506b17207586 + +Vehicle.VehicleIdentification.MeetsEmissionStandard: + datatype: string + description: Indicates that the vehicle meets the respective emission standard. + type: attribute + uuid: d75dedbfadca54d8b6c7261c37ad5d83 + +Vehicle.VehicleIdentification.Model: + datatype: string + description: Vehicle model. + type: attribute + uuid: dd3d3b72e6a85b3695ba25f829255403 + +Vehicle.VehicleIdentification.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 + uuid: d9ecc64b0c995595967e05009d6fc1b9 + +Vehicle.VehicleIdentification.ProductionDate: + datatype: string + description: The date in ISO 8601 format of production of the item, e.g. vehicle. + type: attribute + uuid: 5683877c4bac504d915b268c9476c190 + +Vehicle.VehicleIdentification.PurchaseDate: + datatype: string + description: The date in ISO 8601 format of the item e.g. vehicle was purchased by the current owner. + type: attribute + uuid: 31302f8b57e85c4197afda3e3201fce8 + +Vehicle.VehicleIdentification.VIN: + datatype: string + description: 17-character Vehicle Identification Number (VIN) as defined by ISO 3779. + type: attribute + uuid: 6f0b6fa8c34f589baa92e565bc9df5bd + +Vehicle.VehicleIdentification.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 + uuid: 2526c7ba4c8458c78000a9e5f2fe89d5 + +Vehicle.VehicleIdentification.VehicleInteriorColor: + datatype: string + description: The color or color combination of the interior of the vehicle. + type: attribute + uuid: 67a8b069b8bf573993d51959c24f04e2 + +Vehicle.VehicleIdentification.VehicleInteriorType: + datatype: string + description: The type or material of the interior of the vehicle (e.g. synthetic fabric, leather, wood, etc.). + type: attribute + uuid: 4c4eed302b2e51daa9b6f5f398987a77 + +Vehicle.VehicleIdentification.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 + uuid: c71b63f83dea536bac58e62bbe537f11 + +Vehicle.VehicleIdentification.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 + uuid: 7ae5db0e0482555686b9be71dd8a0c38 + +Vehicle.VehicleIdentification.VehicleSpecialUsage: + datatype: string + description: Indicates whether the vehicle has been used for special purposes, like commercial rental, driving school. + type: attribute + uuid: 7e6e8a48f54a5549a8f6af8f1dc5eb8d + +Vehicle.VehicleIdentification.WMI: + datatype: string + description: 3-character World Manufacturer Identification (WMI) as defined by ISO 3780. + type: attribute + uuid: e7c86defbcd554a79f90ba85de58e133 + +Vehicle.VehicleIdentification.Year: + datatype: uint16 + description: Model year of the vehicle. + type: attribute + uuid: 9a76b0aca8e45f6fb33dbaf5b976b8b5 + +Vehicle.VersionVSS: + description: Supported Version of VSS. + type: branch + uuid: 9a687e56f1305eedb20f6a021ea58f48 + +Vehicle.VersionVSS.Label: + datatype: string + description: Label to further describe the version. + type: attribute + uuid: 7c92cd50d24b5662922b27cb9a327e53 + +Vehicle.VersionVSS.Major: + datatype: uint32 + default: 4 + description: Supported Version of VSS - Major version. + type: attribute + uuid: 5edf1a338c975cbb84d4ce3cfe1aa4b4 + +Vehicle.VersionVSS.Minor: + datatype: uint32 + default: 0 + description: Supported Version of VSS - Minor version. + type: attribute + uuid: 6e70a598dbc7534c96c58c18e9888cfd + +Vehicle.VersionVSS.Patch: + datatype: uint32 + default: 0 + description: Supported Version of VSS - Patch version. + type: attribute + uuid: 69858f224af459338b9bfbff436dda45 + +Vehicle.Width: + datatype: uint16 + default: 0 + description: Overall vehicle width. + type: attribute + unit: mm + uuid: b4aabe144e3259adb1459a2e25fec9bd diff --git a/vss-processor/build.gradle.kts b/vss-processor/build.gradle.kts index 6fcf03fa..9ff4761d 100644 --- a/vss-processor/build.gradle.kts +++ b/vss-processor/build.gradle.kts @@ -90,6 +90,7 @@ java { val dependentCompositeTasks = setOf( "publishToMavenLocal", "publishAllPublicationsToOSSRHReleaseRepository", + "test", ) val dependentCompositeBuilds = setOf("vss-processor-plugin") From 1b2dfc05ee8b42d46de53d11df24210b2b49424a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Thu, 22 Feb 2024 09:56:17 +0100 Subject: [PATCH 19/29] test: Add tests for outdated cache --- .../plugin/VssProcessorPluginTest.kt | 63 +++++++++++++++++-- .../generator/project/AndroidLibProject.kt | 6 +- .../plugin/generator/project/GradleProject.kt | 7 ++- .../project/VssProcessorLibProject.kt | 23 +++---- .../project/VssProcessorPluginProject.kt | 2 +- .../resources/vss_rel_4.0_test_minimal.yaml | 32 ++++++++++ 6 files changed, 110 insertions(+), 23 deletions(-) create mode 100644 vss-processor-plugin/src/test/resources/vss_rel_4.0_test_minimal.yaml diff --git a/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPluginTest.kt b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPluginTest.kt index 803c1df4..189b99df 100644 --- a/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPluginTest.kt +++ b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPluginTest.kt @@ -22,14 +22,17 @@ import io.kotest.core.spec.style.BehaviorSpec import io.kotest.matchers.shouldBe import io.kotest.matchers.string.shouldContain import org.eclipse.kuksa.vssprocessor.plugin.generator.project.AndroidLibProject +import org.eclipse.kuksa.vssprocessor.plugin.generator.project.GradleProject.Companion.TEST_FOLDER_NAME_DEFAULT import org.eclipse.kuksa.vssprocessor.plugin.generator.project.VssProcessorLibProject -import org.eclipse.kuksa.vssprocessor.plugin.generator.project.VssProcessorLibProject.Companion.VSS_TEST_FILE import org.eclipse.kuksa.vssprocessor.plugin.generator.project.VssProcessorPluginProject +import org.eclipse.kuksa.vssprocessor.plugin.generator.project.dollar import org.gradle.testkit.runner.GradleRunner import org.gradle.testkit.runner.TaskOutcome +import java.io.File import kotlin.io.path.ExperimentalPathApi import kotlin.io.path.deleteRecursively import kotlin.io.path.exists +import kotlin.io.path.pathString @OptIn(ExperimentalPathApi::class) class VssProcessorPluginTest : BehaviorSpec({ @@ -78,9 +81,21 @@ class VssProcessorPluginTest : BehaviorSpec({ } } + // The following tests are mainly testing the configuration cache + // #1: A full clean of the build folder AND gradle cache -> SUCCESS + // #2: A full clean of the build folder BUT gradle cache stays -> FROM_CACHE + // #3: No clean -> UP_TO_DATE + // #4: Gradle + plugin / task input changed -> SUCCESS + // #5: Input file name changed -> SUCCESS and("a VSS compatible Android library project is added") { - val vssProcessorProject = VssProcessorLibProject("lib") - vssProcessorProject.generate() + val vssFile2: File + val vssProcessorProject = VssProcessorLibProject("lib").apply { + copyVssFiles(vssDir, VSS_TEST_FILE_NAME) + vssFile2 = copyVssFiles(vssDir2, VSS_TEST_FILE_MINIMAL_NAME) + generate() + } + val vssDir2 = vssProcessorProject.vssDir2 + val vssDir2Path = vssDir2.pathString pluginProject.add(vssProcessorProject) @@ -129,16 +144,56 @@ class VssProcessorPluginTest : BehaviorSpec({ } then("it should copy all vss files") { - val vssFile = kspInputDir.resolve(VSS_TEST_FILE) + val vssFile = kspInputDir.resolve(VSS_TEST_FILE_NAME) vssFile.exists() shouldBe true } } + + `when`("the input of the ProvideVssDefinitionTask changes") { + val projectVssDir2 = vssDir2Path.substringAfter(TEST_FOLDER_NAME_DEFAULT) + vssProcessorProject.generate( + """ + vssProcessor { + searchPath = "${dollar}rootDir/$projectVssDir2" + } + """.trimIndent(), + ) + + val result = gradleRunner + .withArguments("--build-cache", "provideVssDefinition") + .build() + + println("ProvideVssDefinitionTask + Build Cache #4 output: ${result.output}") + + then("it should build successfully") { + val outcome = result.task(":lib:provideVssDefinition")?.outcome + + outcome shouldBe TaskOutcome.SUCCESS + } + } + + `when`("the name of the input of the ProvideVssDefinitionTask changes") { + vssFile2.renameTo(File("$vssDir2Path/vss_rel_4.0_test_renamed.yml")) + val result = gradleRunner + .withArguments("--build-cache", "provideVssDefinition") + .build() + + println("ProvideVssDefinitionTask + Build Cache #5 output: ${result.output}") + + then("it should build successfully") { + val outcome = result.task(":lib:provideVssDefinition")?.outcome + + outcome shouldBe TaskOutcome.SUCCESS + } + } } } } }) { companion object { + private const val VSS_TEST_FILE_NAME = "vss_rel_4.0_test.yaml" + private const val VSS_TEST_FILE_MINIMAL_NAME = "vss_rel_4.0_test_minimal.yaml" private const val GRADLE_VERSION_TEST = "8.6" private const val KSP_INPUT_BUILD_DIRECTORY = "kspInput" } diff --git a/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/AndroidLibProject.kt b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/AndroidLibProject.kt index 9b95decd..a6f44ccf 100644 --- a/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/AndroidLibProject.kt +++ b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/AndroidLibProject.kt @@ -18,6 +18,7 @@ package org.eclipse.kuksa.vssprocessor.plugin.generator.project +import kotlin.io.path.appendText import kotlin.io.path.createDirectories import kotlin.io.path.writeText @@ -28,7 +29,7 @@ open class AndroidLibProject(name: String) : GradleProject(name) { private val mainDir = projectDir.resolve("src/main").createDirectories() private val androidManifestFile = mainDir.resolve("AndroidManifest.xml") - override fun generate() { + override fun generate(appendix: String) { androidManifestFile.writeText( """ @@ -60,8 +61,11 @@ open class AndroidLibProject(name: String) : GradleProject(name) { dependencies { } + """.trimIndent(), ) + + buildFile.appendText("\n$appendix") } companion object { diff --git a/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/GradleProject.kt b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/GradleProject.kt index be0ff7c4..d112efef 100644 --- a/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/GradleProject.kt +++ b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/GradleProject.kt @@ -28,7 +28,7 @@ abstract class GradleProject(val name: String, testFolder: String = TEST_FOLDER_ val buildDir: Path get() = projectDir.resolve("build") - abstract fun generate() + abstract fun generate(appendix: String = "") open fun refresh() { generate() @@ -39,6 +39,9 @@ abstract class GradleProject(val name: String, testFolder: String = TEST_FOLDER_ } companion object { - private const val TEST_FOLDER_NAME_DEFAULT = "build/functionalTest/" + const val TEST_FOLDER_NAME_DEFAULT = "build/functionalTest/" } } + +val dollar: String + get() = "\$" diff --git a/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/VssProcessorLibProject.kt b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/VssProcessorLibProject.kt index b88303fa..f9bfc84c 100644 --- a/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/VssProcessorLibProject.kt +++ b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/VssProcessorLibProject.kt @@ -19,29 +19,22 @@ package org.eclipse.kuksa.vssprocessor.plugin.generator.project import java.io.File +import java.nio.file.Path import kotlin.io.path.createDirectories class VssProcessorLibProject(name: String) : AndroidLibProject(name) { - private val vssDir = rootProjectDir.resolve(VSS_DIR_NAME).createDirectories() + val vssDir = rootProjectDir.resolve(VSS_DIR_NAME).createDirectories() + val vssDir2 = rootProjectDir.resolve("${VSS_DIR_NAME}_2").createDirectories() - override fun generate() { - super.generate() + fun copyVssFiles(directory: Path, fileName: String): File { + val certificateUrl = VssProcessorLibProject::class.java.classLoader?.getResource(fileName)!! + val certificateFile = File(certificateUrl.toURI()) - copyVssFiles(VSS_TEST_FILE) - } - - private fun copyVssFiles(vararg files: String) { - files.forEach { file -> - val certificateUrl = VssProcessorLibProject::class.java.classLoader?.getResource(file)!! - val certificateFile = File(certificateUrl.toURI()) - - val targetLocation = vssDir.resolve(certificateFile.name).toFile() - certificateFile.copyTo(targetLocation, true) - } + val targetLocation = directory.resolve(certificateFile.name).toFile() + return certificateFile.copyTo(targetLocation, true) } companion object { const val VSS_DIR_NAME = "vss" - const val VSS_TEST_FILE = "vss_rel_4.0_test.yaml" } } diff --git a/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/VssProcessorPluginProject.kt b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/VssProcessorPluginProject.kt index 00bae2b7..85e4507f 100644 --- a/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/VssProcessorPluginProject.kt +++ b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/generator/project/VssProcessorPluginProject.kt @@ -24,7 +24,7 @@ import kotlin.io.path.writeText class VssProcessorPluginProject : RootGradleProject("VssProcessorPlugin") { val localCacheFolder = projectDir.resolve("local-cache").createDirectories() - override fun generate() { + override fun generate(appendix: String) { settingsFile.writeText( """ pluginManagement { diff --git a/vss-processor-plugin/src/test/resources/vss_rel_4.0_test_minimal.yaml b/vss-processor-plugin/src/test/resources/vss_rel_4.0_test_minimal.yaml new file mode 100644 index 00000000..db9c669d --- /dev/null +++ b/vss-processor-plugin/src/test/resources/vss_rel_4.0_test_minimal.yaml @@ -0,0 +1,32 @@ +Vehicle: + description: High-level vehicle data. + type: branch + uuid: ccc825f94139544dbb5f4bfd033bece6 + +Vehicle.ADAS: + description: All Advanced Driver Assist Systems data. + type: branch + uuid: 14c2b2e1297b513197d320a5ce58f42e + +Vehicle.ADAS.ABS: + description: Antilock Braking System signals. + type: branch + uuid: 219270ef27c4531f874bbda63743b330 + +Vehicle.ADAS.ABS.IsEnabled: + datatype: boolean + description: Indicates if ABS is enabled. True = Enabled. False = Disabled. + type: actuator + uuid: cad374fbfdc65df9b777508f04d5b073 + +Vehicle.ADAS.ABS.IsEngaged: + datatype: boolean + description: Indicates if ABS is currently regulating brake pressure. True = Engaged. False = Not Engaged. + type: sensor + uuid: 6dd21979a2225e31940dc2ece1aa9a04 + +Vehicle.ADAS.ABS.IsError: + datatype: boolean + description: Indicates if ABS incurred an error condition. True = Error. False = No Error. + type: sensor + uuid: 13cfabb3122254128234f9a696f14678 From 33441b7754d3fa9fe617d81a0751932de70351ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Thu, 22 Feb 2024 09:56:36 +0100 Subject: [PATCH 20/29] chore: Improve logging --- .../main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt | 2 +- .../kuksa/vssprocessor/plugin/version/SemanticVersion.kt | 2 +- .../eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt | 5 +++-- vss-processor/build.gradle.kts | 5 ++++- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt b/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt index 9bc0443d..d0f696b9 100644 --- a/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt +++ b/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt @@ -66,6 +66,6 @@ class SemanticVersion(versionFilePath: String) { patch = versions[2].toInt() this.suffix = suffix - println("Current SemanticVersion($versionName)\n") + println("Current SemanticVersion($versionName)") } } diff --git a/vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/vssprocessor/plugin/version/SemanticVersion.kt b/vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/vssprocessor/plugin/version/SemanticVersion.kt index 482861c1..686868dc 100644 --- a/vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/vssprocessor/plugin/version/SemanticVersion.kt +++ b/vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/vssprocessor/plugin/version/SemanticVersion.kt @@ -66,6 +66,6 @@ class SemanticVersion(versionFilePath: String) { patch = versions[2].toInt() this.suffix = suffix - println("Current SemanticVersion($versionName)\n") + println("Current SemanticVersion($versionName)") } } diff --git a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt index d4ed407f..6dc4f9bc 100644 --- a/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt +++ b/vss-processor-plugin/src/main/java/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPlugin.kt @@ -82,7 +82,8 @@ class VssProcessorPlugin : Plugin { val searchDir = file(searchPath) if (!searchDir.exists()) { throw FileNotFoundException( - "Directory '$searchPath' for VSS files not found! Please create the folder.", + "Directory '$searchPath' for VSS files not found! Please create the folder relative to " + + "your project directory: ${searchDir.path}.", ) } @@ -132,7 +133,7 @@ private abstract class ProvideVssDefinitionTask : DefaultTask() { } val targetFile = outputDir.file(change.normalizedPath).get().asFile - logger.info("Found vss file change for: ${targetFile.name}, change: ${change.changeType}") + logger.info("Found VSS file changes for: ${targetFile.name}, change: ${change.changeType}") when (change.changeType) { ChangeType.ADDED, diff --git a/vss-processor/build.gradle.kts b/vss-processor/build.gradle.kts index 9ff4761d..e54b6755 100644 --- a/vss-processor/build.gradle.kts +++ b/vss-processor/build.gradle.kts @@ -104,7 +104,10 @@ gradle.projectsEvaluated { .filter { dependentCompositeBuilds.contains(it.name) } .map { compositeBuild -> val compositeTaskPath = task.path.substringAfterLast(":") - println("Linking composite task - ${compositeBuild.name} <-> ${task.project}:${task.name}") + println( + "Linking composite task - " + + "${compositeBuild.name}:${task.name} <-> ${task.project.name}:${task.name}", + ) compositeBuild.task(":$compositeTaskPath") } From 8f0050929c0d70322e633f48551d95601b18b6ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Thu, 22 Feb 2024 10:17:16 +0100 Subject: [PATCH 21/29] chore: Link :clean task with VSS Processor Plugin --- vss-processor/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/vss-processor/build.gradle.kts b/vss-processor/build.gradle.kts index e54b6755..55360b32 100644 --- a/vss-processor/build.gradle.kts +++ b/vss-processor/build.gradle.kts @@ -91,6 +91,7 @@ val dependentCompositeTasks = setOf( "publishToMavenLocal", "publishAllPublicationsToOSSRHReleaseRepository", "test", + "clean", ) val dependentCompositeBuilds = setOf("vss-processor-plugin") From e4d673437a6a89e3f816a85547e60db724edef5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Thu, 22 Feb 2024 10:38:59 +0100 Subject: [PATCH 22/29] chore: Correct composite task linking logging --- vss-processor/build.gradle.kts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/vss-processor/build.gradle.kts b/vss-processor/build.gradle.kts index 55360b32..b2406dec 100644 --- a/vss-processor/build.gradle.kts +++ b/vss-processor/build.gradle.kts @@ -98,6 +98,7 @@ val dependentCompositeBuilds = setOf("vss-processor-plugin") gradle.projectsEvaluated { val subProjectTasks = tasks + subprojects.flatMap { it.tasks } + println("Linking Composite Task:") subProjectTasks .filter { dependentCompositeTasks.contains(it.name) } .forEach { task -> @@ -105,10 +106,7 @@ gradle.projectsEvaluated { .filter { dependentCompositeBuilds.contains(it.name) } .map { compositeBuild -> val compositeTaskPath = task.path.substringAfterLast(":") - println( - "Linking composite task - " + - "${compositeBuild.name}:${task.name} <-> ${task.project.name}:${task.name}", - ) + println("${compositeBuild.name}:${task.name} -> ${task.project.name}:${task.name}") compositeBuild.task(":$compositeTaskPath") } From 890393d6698d274434002a2113b1f2712e3b5dac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Thu, 22 Feb 2024 11:00:07 +0100 Subject: [PATCH 23/29] chore: Reverse logging order for linked composite tasks --- vss-processor/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vss-processor/build.gradle.kts b/vss-processor/build.gradle.kts index b2406dec..bd64b7ea 100644 --- a/vss-processor/build.gradle.kts +++ b/vss-processor/build.gradle.kts @@ -106,7 +106,7 @@ gradle.projectsEvaluated { .filter { dependentCompositeBuilds.contains(it.name) } .map { compositeBuild -> val compositeTaskPath = task.path.substringAfterLast(":") - println("${compositeBuild.name}:${task.name} -> ${task.project.name}:${task.name}") + println("- ${task.project.name}:${task.name} -> ${compositeBuild.name}:${task.name}") compositeBuild.task(":$compositeTaskPath") } From 77efd21cbe21dd785a06c39cf837680bf4121716 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Thu, 22 Feb 2024 11:59:42 +0100 Subject: [PATCH 24/29] chore: Remove FunctionTests run config --- ...s-processor-Plugin_FunctionalTests.run.xml | 23 ------------------- .../plugin/VssProcessorPluginTest.kt | 5 ++++ 2 files changed, 5 insertions(+), 23 deletions(-) delete mode 100644 .run/kuksa-vss-processor-Plugin_FunctionalTests.run.xml diff --git a/.run/kuksa-vss-processor-Plugin_FunctionalTests.run.xml b/.run/kuksa-vss-processor-Plugin_FunctionalTests.run.xml deleted file mode 100644 index 777d8402..00000000 --- a/.run/kuksa-vss-processor-Plugin_FunctionalTests.run.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - true - true - false - - - \ No newline at end of file diff --git a/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPluginTest.kt b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPluginTest.kt index 189b99df..5dbd4a45 100644 --- a/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPluginTest.kt +++ b/vss-processor-plugin/src/test/kotlin/org/eclipse/kuksa/vssprocessor/plugin/VssProcessorPluginTest.kt @@ -34,6 +34,11 @@ import kotlin.io.path.deleteRecursively import kotlin.io.path.exists import kotlin.io.path.pathString +// Note: +// - Debugging into functional gradle test cases do not work. +// - Sometimes test errors are obscured so try looking into the test report to see the actual one. +// +// ./gradlew :vss-processor-plugin:test -Dkotest.tags="Functional" @OptIn(ExperimentalPathApi::class) class VssProcessorPluginTest : BehaviorSpec({ tags(Functional) From 889b3291a85fff00a6f22e1bdd467beef4dc5826 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Thu, 22 Feb 2024 18:14:00 +0100 Subject: [PATCH 25/29] chore: Fix missing oss/all folder during clean build - Removed print from SemanticVersion because it spams the logs and can be printed via the "printVersion" task. --- build.gradle.kts | 41 ++++++++++++------- .../eclipse/kuksa/version/SemanticVersion.kt | 2 - .../plugin/version/SemanticVersion.kt | 2 - vss-processor/build.gradle.kts | 3 +- 4 files changed, 29 insertions(+), 19 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index b56939ab..afce8049 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -19,7 +19,16 @@ import org.eclipse.kuksa.version.VERSION_FILE_DEFAULT_NAME import org.eclipse.kuksa.version.VERSION_FILE_DEFAULT_PATH_KEY -import org.jetbrains.kotlin.incremental.createDirectory +import java.nio.file.FileVisitResult +import java.nio.file.Path +import kotlin.io.path.ExperimentalPathApi +import kotlin.io.path.bufferedWriter +import kotlin.io.path.createDirectories +import kotlin.io.path.createFile +import kotlin.io.path.deleteIfExists +import kotlin.io.path.name +import kotlin.io.path.useLines +import kotlin.io.path.visitFileTree val versionDefaultPath = "$rootDir/$VERSION_FILE_DEFAULT_NAME" rootProject.ext[VERSION_FILE_DEFAULT_PATH_KEY] = versionDefaultPath @@ -52,6 +61,7 @@ subprojects { } } +@OptIn(ExperimentalPathApi::class) tasks.register("mergeDashFiles") { group = "oss" @@ -61,23 +71,26 @@ tasks.register("mergeDashFiles") { }, ) - val ossFolder = File("$rootDir/build/oss/all") - ossFolder.createDirectory() + val buildDir = layout.buildDirectory.asFile.get() + val buildDirPath = Path.of(buildDir.path) - val ossDependenciesFile = File("$ossFolder/all-dependencies.txt") - if (ossDependenciesFile.exists()) { - ossDependenciesFile.delete() - } - ossDependenciesFile.createNewFile() - - val ossFiles = files("build/oss") doLast { + val ossDir = buildDirPath.resolve("oss").createDirectories() + val ossAllDir = ossDir.resolve("all").createDirectories() + val ossDependenciesFile = ossAllDir.resolve("all-dependencies.txt") + ossDependenciesFile.deleteIfExists() + ossDependenciesFile.createFile() + val sortedLinesSet = sortedSetOf() - ossFiles.asFileTree.forEach { file -> - if (file.name != "dependencies.txt") return@forEach + ossDir.visitFileTree { + onVisitFile { file, _ -> + if (file.name != "dependencies.txt") return@onVisitFile FileVisitResult.CONTINUE + + file.useLines { + sortedLinesSet.addAll(it) + } - file.useLines { - sortedLinesSet.addAll(it) + FileVisitResult.CONTINUE } } diff --git a/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt b/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt index d0f696b9..c014e299 100644 --- a/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt +++ b/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt @@ -65,7 +65,5 @@ class SemanticVersion(versionFilePath: String) { minor = versions[1].toInt() patch = versions[2].toInt() this.suffix = suffix - - println("Current SemanticVersion($versionName)") } } diff --git a/vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/vssprocessor/plugin/version/SemanticVersion.kt b/vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/vssprocessor/plugin/version/SemanticVersion.kt index 686868dc..d27f4e5b 100644 --- a/vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/vssprocessor/plugin/version/SemanticVersion.kt +++ b/vss-processor-plugin/buildSrc/src/main/kotlin/org/eclipse/kuksa/vssprocessor/plugin/version/SemanticVersion.kt @@ -65,7 +65,5 @@ class SemanticVersion(versionFilePath: String) { minor = versions[1].toInt() patch = versions[2].toInt() this.suffix = suffix - - println("Current SemanticVersion($versionName)") } } diff --git a/vss-processor/build.gradle.kts b/vss-processor/build.gradle.kts index bd64b7ea..842f26c9 100644 --- a/vss-processor/build.gradle.kts +++ b/vss-processor/build.gradle.kts @@ -98,7 +98,8 @@ val dependentCompositeBuilds = setOf("vss-processor-plugin") gradle.projectsEvaluated { val subProjectTasks = tasks + subprojects.flatMap { it.tasks } - println("Linking Composite Task:") + println("Linking Composite Tasks:") + subProjectTasks .filter { dependentCompositeTasks.contains(it.name) } .forEach { task -> From fb3e8fdb960934932ef405fc17624e9facc40815 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Fri, 23 Feb 2024 14:12:11 +0100 Subject: [PATCH 26/29] chore: Add comment to be mindful of oss licenses --- vss-processor-plugin/build.gradle.kts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/vss-processor-plugin/build.gradle.kts b/vss-processor-plugin/build.gradle.kts index 5d0789a1..c139a37d 100644 --- a/vss-processor-plugin/build.gradle.kts +++ b/vss-processor-plugin/build.gradle.kts @@ -1,6 +1,5 @@ import org.eclipse.kuksa.vssprocessor.plugin.version.SemanticVersion import org.eclipse.kuksa.vssprocessor.plugin.version.VERSION_FILE_DEFAULT_NAME -import org.eclipse.kuksa.vssprocessor.plugin.version.VERSION_FILE_DEFAULT_PATH_KEY /* * Copyright (c) 2023 Contributors to the Eclipse Foundation @@ -21,16 +20,13 @@ import org.eclipse.kuksa.vssprocessor.plugin.version.VERSION_FILE_DEFAULT_PATH_K * */ -val versionDefaultPath = "$rootDir/../$VERSION_FILE_DEFAULT_NAME" -rootProject.ext[VERSION_FILE_DEFAULT_PATH_KEY] = versionDefaultPath - plugins { alias(libs.plugins.pluginPublishing) signing `kotlin-dsl` } -val versionPath = rootProject.ext[VERSION_FILE_DEFAULT_PATH_KEY] as String +val versionPath = "$rootDir/../$VERSION_FILE_DEFAULT_NAME" val semanticVersion = SemanticVersion(versionPath) version = semanticVersion.versionName group = "org.eclipse.kuksa" @@ -137,6 +133,10 @@ tasks.withType().configureEach { testLogging.showStandardStreams = true } +// IMPORTANT: The currently used dependencies here are already covered by the other modules in this project so dash oss +// scripts do not have to be included here (yet). +// But keep in mind to check the coverage when adding new dependencies. +// TODO: Automated with https://github.com/eclipse-kuksa/kuksa-android-sdk/issues/79 dependencies { implementation(kotlin("stdlib")) From 9da050766cb1045da578aa4c6ce9bd3f25fecca3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Fri, 23 Feb 2024 15:18:25 +0100 Subject: [PATCH 27/29] chore: Add known issue explanation for build warning --- vss-processor-plugin/build.gradle.kts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/vss-processor-plugin/build.gradle.kts b/vss-processor-plugin/build.gradle.kts index c139a37d..da252e21 100644 --- a/vss-processor-plugin/build.gradle.kts +++ b/vss-processor-plugin/build.gradle.kts @@ -26,6 +26,14 @@ plugins { `kotlin-dsl` } +// TODO: This linking to the version file currently throws a warning: +// Caught exception: Already watching path: kuksa-android-sdk/vss-processor-plugin/.. +// +// The reason is that two different root projects (main + composite (this)) are referencing to the same version.txt +// file because data models like SemanticVersion can't be shared. However the same build folder is used for the +// caching so the cache does not know about this. The issue will be ignored as a warning for now. +// +// Similar issue: https://github.com/gradle/gradle/issues/27940 val versionPath = "$rootDir/../$VERSION_FILE_DEFAULT_NAME" val semanticVersion = SemanticVersion(versionPath) version = semanticVersion.versionName From 6c3d7bc83376ef1b7ad0a89dc06400e0a5025429 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Mon, 26 Feb 2024 13:27:47 +0100 Subject: [PATCH 28/29] chore: Disable config cache for maven task The "generateMetadataFileForPluginMavenPublication" task is currently not using the configuration cache correctly. The cache was disabled for this task until it is fixed. --- vss-processor-plugin/build.gradle.kts | 15 +++++++++++++++ vss-processor/build.gradle.kts | 3 +-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/vss-processor-plugin/build.gradle.kts b/vss-processor-plugin/build.gradle.kts index da252e21..f3c9fdff 100644 --- a/vss-processor-plugin/build.gradle.kts +++ b/vss-processor-plugin/build.gradle.kts @@ -141,6 +141,21 @@ tasks.withType().configureEach { testLogging.showStandardStreams = true } +afterEvaluate { + tasks.find { it.name.contains("generateMetadataFileForPluginMavenPublication") } + ?.notCompatibleWithConfigurationCache( + """ + The "generateMetadataFileForPluginMavenPublication" task is currently not using the configuration cache + correctly which leads to: + + java.io.FileNotFoundException: /build/libs/vss-processor-plugin-0.1.3.jar (No such file or directory) + + Reproduction steps: + ./gradlew :vss-processor-plugin:clean :vss-processor-plugin:generateMetadataFileForPluginMavenPublication + """.trimIndent(), + ) +} + // IMPORTANT: The currently used dependencies here are already covered by the other modules in this project so dash oss // scripts do not have to be included here (yet). // But keep in mind to check the coverage when adding new dependencies. diff --git a/vss-processor/build.gradle.kts b/vss-processor/build.gradle.kts index 842f26c9..8f21b661 100644 --- a/vss-processor/build.gradle.kts +++ b/vss-processor/build.gradle.kts @@ -106,10 +106,9 @@ gradle.projectsEvaluated { val compositeTask = gradle.includedBuilds .filter { dependentCompositeBuilds.contains(it.name) } .map { compositeBuild -> - val compositeTaskPath = task.path.substringAfterLast(":") println("- ${task.project.name}:${task.name} -> ${compositeBuild.name}:${task.name}") - compositeBuild.task(":$compositeTaskPath") + compositeBuild.task(":${task.name}") } task.dependsOn(compositeTask) From d4ebab16ba47e41a6ca94dce6dc4e45ba941b3b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Tue, 27 Feb 2024 09:01:25 +0100 Subject: [PATCH 29/29] chore: Remove clean from composite linking There is currently a limitation with "clean" + composite builds. https://github.com/gradle/gradle/issues/23585 --- vss-processor/build.gradle.kts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vss-processor/build.gradle.kts b/vss-processor/build.gradle.kts index 8f21b661..d3099dd4 100644 --- a/vss-processor/build.gradle.kts +++ b/vss-processor/build.gradle.kts @@ -87,11 +87,12 @@ java { // // We have to manually define the task names because the task() method of the included build throws an error for any // unknown task. +// +// WARNING: Do not depend on the task "clean" here: https://github.com/gradle/gradle/issues/23585 val dependentCompositeTasks = setOf( "publishToMavenLocal", "publishAllPublicationsToOSSRHReleaseRepository", "test", - "clean", ) val dependentCompositeBuilds = setOf("vss-processor-plugin")