The overall goal of VSS Tools is to provide a set of tools that can be used to convert or verify Vehicle Signal Specifications defined by the format specified by the COVESA VSS project. VSS Tools is developed in parallel with VSS, please visit the COVESA VSS project for information on how to contribute. If any questions arise, please check out the FAQ for more information.
This repository contains three categories of tools:
- Community Supported Tools are tools that are actively maintained by the VSS community. They are run as part of the Continuous Integration process for both this repository and for the COVESA VSS project repository, and pull request will normally not be merged if any of the tools fails. That assures that the tools always are compatible with the latest version of the COVESA VSS.
- Contributed Tools are tools that are not actively maintained by the VSS community. Instead they are maintained by individual contributors, or not maintained at all. Even if many of them are run as part of the continuous integration process, it is not a requirement that they must run successfully on the latest VSS version and a change in VSS may be merged even if it cause some contributed tools to fail.
- Obsolete Tools are tools that are not maintained and not functional.
A tool in the Contributed Tools category may be moved to the Obsolete category if it has been non-functional for at least 6 months. Tools in the Obsolete Tools category may be deleted after 12 months.
Examples on tool usage can be found in the VSS Makefile and in tool-specific documentation, if existing.
Tool | Description | Tool Category | Documentation |
---|---|---|---|
vspec2csv | Generating CSV output | Community Supported | Check vspec2x documentation |
vspec2ddsidl | Generating DDS-IDL output | Community Supported | VSS2DDSIDL Documentation. For general parameters check vspec2x documentation |
vspec2json | Generating JSON output | Community Supported | Check vspec2x documentation |
vspec2yaml | Generating flattened YAML output | Community Supported | Check vspec2x documentation |
vspec2binary | The binary toolset consists of a tool that translates the VSS YAML specification to the binary file format (see below), and two libraries that provides methods that are likely to be needed by a server that manages the VSS tree, one written in C, and one in Go | Community Supported | vspec2binary Documentation. For general parameters check vspec2x documentation |
vspec2franca | Parses and expands a VSS and generates a Franca IDL specification | Community Supported | Check vspec2x documentation |
vspec2c | The vspec2c tooling allows a vehicle signal specification to be translated from its source YAML file to native C code that has the entire specification encoded in it. | Obsolete (2022-11-01) | Documentation |
vspec2ocf | Parses and expands a VSS and generates a OCF specification | Obsolete (2022-11-01) | - |
vspec2protobuf | Parses and expands a VSS tree and generates a Protobuf message definition | Contrib | Documentation |
vspec2ttl | Parses and expands a VSS and generates a TTL specification | Contrib | - |
vspec2graphql | Parses and expands a VSS and generates a GraphQL specification | Community Supported | Documentation |
vspec2id | Generates and validates static UIDs for a VSS | WIP | vspec2id Documentation |
All current tools are based on common Python functionality in the vspec
folder to read, parse and expand a Vehicle Signal Specification files(*.vspec files). As an example, if the standard VSS root file is given as input then the Python tooling will read all included files, do a validation of the content, expand any instances used and create an in-memory representation which then can be used by specialized tools to generate the wanted output.
The COVESA VSS project repository includes vss-tools as a submodule.
The vss-tools version linked by the VSS repository is the preferred vss-tools version to use for that particular version of the VSS repository. It is not guaranteed that newer or older versions of vss-tools can successfully handle that particular version of the VSS repository. The table below gives an overview of basic version support forvspec2json.py
,
other exporters may have stricter requirements.
VSS-tools version | Supported VSS versions | Comments |
---|---|---|
v3.0 |
v3.0 - v3.1.1 |
|
v3.1 |
v3.0 -v4.0 |
|
v4.0 |
v4.0 |
|
v4.1 |
v4.0 - |
|
<latest source> |
v4.0 - |
Examples on changes affecting compatibility
- VSS version
v4.1
introduced a new syntax for the unit files that cannot be handled byvss-tools < v4.1
- From
v4.0
vss-tools expects unit file to be explicitly specified or provided in the same directory as the VSS input. VSSv3.1
is the first VSS version including a unit file in the VSS repository. This means vss-tools fromv4.0
onwards cannot handle VSS-versions prior to VSSv3.1
- VSS-tools
v3.1
only supporteddefault
for attributes, resulting in that newer VSS-versions is not supported. - VSS-tools
v4.0
requires case-sensitive for type, resulting in that VSS versionsv3.1
and earlier is not supported.
- If your environment behind a (corporate) proxy, the following environments variables must typically be set:
http_proxy
andhttps_proxy
(including authentication e.g.,http://${proxy_username):$(proxy_password)@yourproxy.yourdomain
). - If using
apt
and you are behind a proxy, you may also need to configure proxy in/etc/apt/apt.conf.d/proxy.conf
.
We are using poetry or a package and venv handling system. Therefore a requirement to develop a tool is to install poetry on your host machine. For that you will need Python > 3 as well as pip. Check here for official installation instructions. The recommended one is the following, however installing it through pip/pipx works aswell:
curl -sSL https://install.python-poetry.org | python3 -
You can then use the following command to install all dependencies and the vss-tools
package:
poetry install
The call will create an .venv
directory but does not automatically activate it.
You can do that in various ways:
poetry shell
: Spawns a new subshell with the appropriate environment activated. After that you can directly call toolspoetry run <tool>
: Runs the given tool in the virtual environment but does return to the current environment after that. $(poetry env info --path)/bin/activate
: Enables the virtual environment. Since we do store virtual envs directly with the tool the command can be simplified to. .venv/bin/activate
. See here for more detailed information how to run poetry e.g. for Windows and how to exit/deactive it.- We also have an
.envrc
that automatically sources the.venv
when available. Check direnv for how to set it up.
If you intend to run testcases related to vspec2protobuf.py
you need to install the protobuf compiler.
Please follow official instructions for your OS. For Debian systems it would be:
sudo apt update
sudo apt install -y golang-go protobuf-compiler
protoc --version # Ensure compiler version is 3+
This repository is set up to use pre-commit hooks. After you clone the project, run pre-commit install
to install pre-commit into your git hooks. pre-commit will now run on every commit. Every time you clone a project using pre-commit running pre-commit install should always be the first thing you do.
For usage of VSS-Tools with Pip (PyPI) please see README-PYPI.md