The vspec dds exporter is used to export VSS file data to DDS IDL file (4.2 version)
- DDS : Data Distribution Service
- IDL : Interface Definition Language
- VSS : Vehicle Signal Specification
- Name
- datatype (also single dimensional array is supported)
- allowed
Below elements are considered only if the switch --all-idl-features
is supplied as a command line argument
- type
- min, max
- unit
- description
VSS | DDS-IDL |
---|---|
uint8 | octet |
int8 | octet |
uint16 | unsigned short |
int16 | short |
uint32 | unsigned long |
int32 | long |
uint64 | unsigned long long |
int64 | long long |
boolean | boolean |
float | float |
double | double |
string | string |
VSS | DDS-IDL |
---|---|
Safety.SpeedLimit: |
struct SpeedLimit{ |
VSS | DDS-IDL |
---|---|
Direction: |
module Direction_M { |
To comply with DDS-IDL rules and limitations in IDL compilers VSS string literals that start with a digit will get a d
as prefix.
Example VSS:
allowed: ['FORWARD','BACKWARD', '123']
Resulting DDS-IDL::
enum DirectionValues{FORWARD,BACKWARD,d123}
Initially an underscore was used a prefix. That made the IDL correct according to tools, but could not be correctly handled by tools like "Eclipse Cyclone DDS idlc Python Backend" resulting in invalid Python code.
IDL files can be supplied as input to one of the DDS implementation (e.g: CycloeDDS, FastDDS) and the data can be validated, and also stubs (python/c++/java code) can be generated from the contents in the IDL file.
Cyclone DDS can for Linux be installed with pip:
pip3 install cyclonedds
Note
Pip install does not work for all architectures, if you experience problems consider using some other installation mechanism mentioned at the Cyclone DDS webpage
Usage of CycloneDDS to take IDL file as input and generate Python file with types
idlc -l py ./results/res.idl
Installation of FastDDS
Follow the instructions mentioned in page : https://fast-dds.docs.eprosima.com/en/latest/installation/binaries/binaries_linux.html
Usage of FastDDS to take IDL file as input and generate Python file with types
./fastddsgen -replace ./results/res.idl