From the very beginning that the “VSC” project started discussing the interface description format that is now IFEX, there has been an obvious question on how that may relate to VSS.
Here we should answer specifically, how may we design systems using a combination of the technologies, or if that does not work, what would be the criteria for choosing one or the other.
One view that has been frequently proposed is the following:
With that view it seems obvious that analyzing and unifying the concepts is necessary to ensure that a system definition is coherent also when using both description formats. In particular, it may be very useful to refer to the VSS standard catalog and other VSS-formatted standard data sets from the IFEX-described interfaces.
For that reason, here are proposals for how to model systems and how to create tools that can work with both standards.
Some of the text was extended from “A proposal for how we can translate VSS signals to properties” by Magnus Feuer, originally stored at: https://github.com/COVESA/vehicle_service_catalog/blob/master/vss_integration_proposal.yml (the file might be removed from the master branch at this point since this document supersedes it).
For modeling IFEX and VSS together there are several common characteristics, as well as some differences, that are worth considering:
The similarity between these concepts is high enough that they can map to each other. A Property definition in IFEX ought to be able to describe the exact same data object in the system as the VSS Signal. This should be made clear by having the Property refer to a VSS-defined signal somehow.
The primary issues to review are:
Two different strategies are here proposed for branches and namespaces when describing a system with a combination of VSS and IFEX description formats:
1) The first is to treat the VSS tree made up of branches as identical to the nested namespace tree for IFEX interfaces. This means that property, when it is defined as a reference to an existing VSS signal, its sequence of nested parent namespaces in IFEX must be identical to the names of each branch in the hierarchy that leads to the VSS signal name. Since the VSS tree location is defined by Namespaces that are equal to branches, the IFEX property name needs only have the VSS signal name to be fully defined.
2) The second approach is to treat the independent namespace trees as completely independent. In that case, IFEX definitions would need to refer to the VSS signals by their fully qualified name that includes branches and leaves.
Example of strategy 1), copied from vss_integration_proposal.yml:
# From VSS :
#
# - Vehicle:
# type: branch
# description: High-level vehicle data.
#
# - Vehicle.VehicleIdentification:
# type: branch
# description: Attributes that identify a vehicle
#
# - Vehicle.VehicleIdentification.VIN:
# datatype: string
# type: attribute
# description: 17-character Vehicle Identification Number (VIN) as defined by ISO 3779
namespaces:
- name: Vehicle
description: High-level vehicle data.
namespaces:
- name: VehicleIdentification
description: Attributes that identify a vehicle
properties:
- name: VIN # The item's namespace+name equivalence entails that it is identical to the corresponding VSS signal
description: 17-character Vehicle Identification Number (VIN) as defined by ISO 3779
datatype: string
Examples of strategy 2:
2.1:
# From VSS :
#
# - Vehicle:
# type: branch
# description: High-level vehicle data.
#
# - Vehicle.VehicleIdentification:
# type: branch
# description: Attributes that identify a vehicle
#
# - Vehicle.VehicleIdentification.VIN:
# datatype: string
# type: attribute
# description: 17-character Vehicle Identification Number (VIN) as defined by ISO 3779
# IFEX, with its own namespace hierarchy, and explicit VSS reference:
namespaces:
- name: vehicle_platform
description: Main namespace for the VehiclePlatform subsystem
namespaces:
- name: veh_attributes
description: Attributes that identify a vehicle
properties:
- name: VSS:Vehicle.VehicleIdentification.VIN # Needs explicit VSS-reference, using fully-qualified VSS name
datatype: string
description: 17-character Vehicle Identification Number (VIN) as defined by ISO 3779
TODO: This concept of referencing an external definition realm (VSS: above) ought to be generalized.
2.2 An alternative approach could be:
properties:
- name: MyPropertyName
vss-alias: VSS:Vehicle.VehicleIdentification.VIN
To consider: Both the reference of an external realm (VSS:x.y.z
) and the keyword vss-alias:
are automotive-environment specific things that might bet better suited to be part of a Layer, not in the core IDL.
IFEX does not specify if a property is readable, writeable, or constant on the IFEX Core IDL level. Such characteristics would be added through a Layer, that in turn get translated into an access-control mechanism on the running software.
It could be very useful to match the Namespaces to the VSS branch hierarchy, especially if the IFEX interfaces are used mostly to augment the VSS signals to add a few methods and other features, in other words if the system modeling starts from a strong VSS basis.
But that strategy is also likely to be very limiting in some cases: Looking at the VSS Standard Catalog first, it is organized primarily to have reasonable groupings of data, and this has resulted in several branches mimicking the physical features of the the car design (Powertrain, Braking, Engine, etc.). Namespaces in software on the other hand, are often organized according to software system composition and software-features: (User Interface, Application Servers, Bootup, Storage, Networking, Communication, “Base Platform”, etc.) so when modeling a larger system (already existing or otherwise) the namespaces likely won’t match the VSS branch hierarchy very well.
STILL TODO: It is of course necessary to go through and understand if there are any semantic mismatches in for example the type definitions, and for namespaces it is necessary to choose between some of the alternatives (2.1 vs 2.2).
However, as a preliminary for the namespace concept the recommendation is to support both strategy 1) and 2) because of the reasons given in the Discussions chapter: Both strategies could be desirable, in different scenarios. We could therefore provide the flexibility.