Proposal "struct": Reference external IDLs - COVESA/vehicle_signal_specification GitHub Wiki

Instead of (re-)inventing a new IDL in terms of VSS, it might be more useful to make use of the many options already available

This are there examples of t might look life, if we allow some URI-like schema in VSS datatypes:

ADAS.Lidar.Front
    type: branch

ADAS.Lidar.Front.ObstacleList
    type: sensor  
    datatype: jsonchema://datatypes/ObstacleList.json

or

ADAS.Lidar.Front.ObstacleList
    type: sensor  
    datatype: proto://datatypes/ObstacleList.proto

or

ADAS.Lidar.Front.ObstacleList
    type: sensor  
    datatype: ros2://datatypes/ObstacleList.msg

an in case of the ROS2 example having

ObstacleList.msg

Obstacle[] obstaclelist

and Obstacle.msg

int64 id
float64 double

similar for jsonschema, ARXML Franka, you-name it

Advantages

  • Can use strong tooling for various IDLs
  • Extensibility in terms of supporting standard IDL specifications
  • Does not "clutter" the VSS spec

Disadvantages

  • Easy for our tooling, (much) harder for downstream stacks, e.g. when using a VISS system jsonchema described data might be natural to handle, protobuf is maybe harder. Also, if this is open, how would you ever handle datatype:neverseenbfore://bla
  • There is a chance that the primitive data types in external IDL specifications will mismatch with the primitive data types within VSS. For example, protobuf has some fixed length types and bytes type that are not available in VSS. Similarly, JSON schema type system is different from that of VSS.
  • Subsequently, VSS primitives will have to maintain parity with the primitives of whatever IDLs we want to support, adding to the effort and complexity of supporting additional IDLs
  • Relying on external IDL specifications to completely parse the VSS tree. (VSS will no longer be self-sufficient). vss-tools and any custom VSS parsers out there will now have to rely on these external specification tools as well.

Neutral

  • might lead to "hollowing out" VSS where people just hang their favorite data model somewhere in the tree. Depending where you stand that might be "ok" or "bad"
  • Would we allow more than one IDL specification in a tree? For example, can a user use protobuf data type for one sensor, jsonschema for another, etc. ? If not, we would need additional validation to ensure only IDL specification is used across the VSS tree