Skip to content

Communication & standards

VSS — the shared vocabulary

A standard naming scheme for vehicle data, and why the boring problem it solves — three teams disagreeing about what a signal means — is the one that actually costs programmes months.

Intermediate6 minVSS · COVESA · Standards

— the Vehicle Signal Specification — is the least glamorous thing in this curriculum and one of the most useful. It is a naming scheme.

That sounds trivial until you have watched three teams spend a month discovering they meant different things by "speed".

The problem#

What it looks like#

One shared vocabulary, agreed across ECU, platform and HMI teamsVehiclebranchVehicle.Speedsensor · float · km/hVehicle.CabinbranchVehicle.Cabin.HVACbranchVehicle.Cabin.HVAC.AmbientAirTemperaturesensor · float · celsiusVehicle.Cabin.Seat.Row1.DriverSide.Heatingactuator · int8 · percentevery node carries a datatype, a unit and whether it can be written
The VSS treeBranches organise, leaves carry data. Every leaf declares its type, its unit, and whether it can be written.
A leaf definition
Vehicle.Speed:
  datatype: float
  type: sensor
  unit: km/h
  min: 0
  max: 400
  description: Vehicle speed.

Node types#

TypeMeaning
branchA grouping node, holds no value
sensorObserved, read-only
actuatorCan be commanded
attributeStatic configuration, set at build time

Instances — how repeated things are expressed#

Cars have four doors and several seats. VSS handles that with instances rather than four separate definitions.

One definition, many instances
Vehicle.Cabin.Seat:
  type: branch
  instances:
    - Row[1,2]
    - ["DriverSide", "Middle", "PassengerSide"]
 
Vehicle.Cabin.Seat.Heating:
  datatype: int8
  type: actuator
  unit: percent
  min: 0
  max: 100

That expands to Vehicle.Cabin.Seat.Row1.DriverSide.Heating and so on — six seats from one definition.

Overlays — where your vehicle differs#

The standard tree will not match any real vehicle exactly. Overlays extend or adjust it without forking.

An overlay for vehicle-specific additions
Vehicle.Cabin.Seat.Massage:
  datatype: uint8
  type: actuator
  unit: percent
  min: 0
  max: 100
  description: Massage intensity, OEM-specific feature.
 
Vehicle.Speed:
  max: 250        # this vehicle's actual limit

What VSS deliberately does not define#

This is where expectations need managing.

No transport. VSS says what a signal is called and what it means. It says nothing about how it moves — that is SOME/IP, DDS, gRPC or anything else.

No sampling rate. Whether speed is published at 1 Hz or 50 Hz is a product decision the specification does not express.

No permissions. Who may read or write a signal is not part of VSS.

Generating rather than translating#

The real value appears when VSS becomes the source that other artefacts are generated from.

One definition, several outputs
  ARXML (from the ECU team)
        │  generate

  VSS tree  +  reviewed overlay (rates, permissions, area mappings)
        │  generate
        ├──> vehicle HAL / property configuration
        ├──> service interface definitions
        ├──> data broker configuration
        └──> client libraries for app teams

The part that is not technical#

Next#

The component that holds these values and serves them to everyone.

References & further reading

Code links target the main branch on cs.android.com. AOSP moves — if a path 404s, search the symbol instead.