This is the multi-page printable view of this section. Click here to print.
Interfaces
1 - Vehicle Signal Interface
Providing CLI package | Interface type-key |
---|---|
devenv-devcontainer-setup |
vehicle-signal-interface |
The Vehicle Signal Interface formerly known as Vehicle Model interface type creates an interface to a signal interface described by the VSS spec. This interface will generate a source code package equivalent to the contents of your VSS JSON automatically upon devContainer creation.
If a Vehicle App requires a vehicle-signal-interface
, it will act as a consumer of datapoints already available in the system. If, on the other hand, a Vehicle App provides a vehicle-signal-interface
, it will act as a provider (formerly feeder in KUKSA terms) of the declared datapoints.
Furthermore, in the source code generated by this functional interface, a connection to
KUKSA Databroker
will be established via the configured Velocitas middleware. It uses the broker.proto
if provided by the KUKSA Databroker to connect via gRPC. A seperate declaration of a grpc-interface
for the databroker is NOT required.
More information: Vehicle Model Creation
Configuration structure
Attribute | Type | Example value | Description |
---|---|---|---|
src |
string | "https://github.com/COVESA/vehicle_signal_specification/releases/download/v3.0/vss_rel_3.0.json" |
URI of the used COVESA Vehicle Signal Specification JSON export. URI may point to a local file or to a file provided by a server. |
unit_src |
string | ["abs_path_unit_file_1", "abs_path_unit_file_2", "uri_unit_file_3"] |
An array of URI’s/absolute path’s of the used COVESA Vehicle Signal Specification unit file(s) in yaml format. URI may point to a local file or to a file provided by a server. If none is provided a default one will be used ( https://github.com/COVESA/vehicle_signal_specification/blob/v4.0/spec/units.yaml) . |
datapoints |
object | Object containing both required and provided datapoints. | |
datapoints.required |
array | Array of required datapoints. | |
datapoints.required.[].path |
string | Vehicle.Speed |
Path of the VSS datapoint. |
datapoints.required.[].optional |
boolean? | true , false |
Is the datapoint optional, i.e. can the Vehicle App work without the datapoint being present in the system. Defaults to false . |
datapoints.required.[].access |
string | read , write |
What kind of access to the datapoint is needed by the application. |
datapoints.provided |
array | Array of provided datapoints. | |
datapoints.provided.[].path |
string | Vehicle.Cabin.Seat.Row1.Pos1.Position |
Path of the VSS datapoint. |
Example
{
"type": "vehicle-signal-interface",
"config": {
"src": "https://github.com/COVESA/vehicle_signal_specification/releases/download/v3.0/vss_rel_3.0.json",
"datapoints": {
"required": [
{
"path": "Vehicle.Speed",
"access": "read"
},
{
"path": "Vehicle.Body.Horn.IsActive",
"optional": true,
"access": "write"
}
],
"provided": [
{
"path": "Vehicle.Cabin.Seat.Row1.Pos1.Position"
}
]
}
}
}
Different VSS versions
The model generation is supported for VSS versions up to v4.0. There are some changes for some paths from v3.0 to v4.0. For example Vehicle.Cabin.Seat.Row1.Pos1.Position
in v3.0 is Vehicle.Cabin.Seat.Row1.DriverSide.Position
in v4.0. If you are using the mock provider you would need to take that into account when you sepcify your mock.py.
2 - gRPC Service Interface
Providing CLI package | Interface type-key |
---|---|
devenv-devcontainer-setup |
grpc-interface |
Description
This interface type introduces a dependency to a gRPC service. It is used to generate either client stubs (in case your application requires the interface) or server stubs (in case your application provides the interface). The result of the generation is a language specific and package manager specific source code package, integrated with the Velocitas SDK core.
If a Vehicle App requires a grpc-interface
- a client stub embedded into the Velocitas framework will be generated and added as a build-time dependency of your application. It enables you to access your service from your Vehicle App without any additional effort.
If a Vehicle App provides a grpc-interface
- a server stub embedded into the Velocitas framework will be generated and added as a build-time dependency of your application. It enables you to quickly add the business logic of your application.
Configuration structure
Attribute | Type | Example value | Description |
---|---|---|---|
src |
string | "https://raw.githubusercontent.com/eclipse-kuksa/kuksa-incubation/0.4.0/seat_service/proto/sdv/edge/comfort/seats/v1/seats.proto" |
URI of the used protobuf specification of the service. URI may point to a local file or to a file provided by a server. It is generally recommended that a stable proto file is used. I.e. one that is already released under a proper tag rather than an in-development proto file. |
required.methods |
array | Array of service’s methods that are accessed by the application. In addition to access control the methods attribute may be used to determine backward or forward compatibility i.e. if semantics of a service’s interface did not change but methods were added or removed in a future version. | |
required.methods.[].name |
string | "Move" , "MoveComponent" |
Name of the method that the application would like to access |
provided |
object | {} |
Reserved object indicating that the interface is provided. Might be filled with further configuration values. |
Execution
velocitas init
or
velocitas exec grpc-interface-support generate-sdk
Project configuration
{
"type": "grpc-interface",
"config": {
"src": "https://raw.githubusercontent.com/eclipse-kuksa/kuksa-incubation/0.4.0/seat_service/proto/sdv/edge/comfort/seats/v1/seats.proto",
"required": {
"methods": [
"Move", "MoveComponent"
]
},
"provided": { }
}
}
You need to specify devenv-devcontainer-setup
>= v2.4.2
in your project configuration. Therefore your .veloitas.json
should look similair to this example:
{
"packages": {
"devenv-devcontainer-setup": "v2.4.2"
},
"components": [
{
"id": "grpc-interface-support",
}
],
}
To do that you can run velocitas component add grpc-interface-support
when your package is above or equal to v2.4.2
3 - Publish Subscribe
Providing CLI package | Interface type-key |
---|---|
devenv-runtimes |
pubsub |
Description
This interface type introduces a dependency to a publish and subscribe middleware. While this may change in the future due to new middlewares being adopted, at the moment this will always indicate a dependency to MQTT.
If a Vehicle App requires pubsub
- this will influence the generated deployment specs to include a publish and subscribe broker (i.e. an MQTT broker).
If a Vehicle App provides pubsub
- this will influence the generated deployment specs to include a publish and subscribe broker (i.e. an MQTT broker).
Configuration structure
Attribute | Type | Example value | Description |
---|---|---|---|
reads |
array[string] | [ "sampleapp/getSpeed" ] |
Array of topics which are read by the application. |
writes |
array[string] | [ "sampleapp/currentSpeed", "sampleapp/getSpeed/response" ] |
Array of topics which are written by the application. |
Example
{
"type": "pubsub",
"config": {
"reads": [ "sampleapp/getSpeed" ],
"writes": [ "sampleapp/currentSpeed", "sampleapp/getSpeed/response" ]
}
}