Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 24

Internal

Vehicle Service Catalog


ALL MEMBER MEETING
APRIL 26-28, 2022
Internal

Mission Statement

Create a standardized, extensible vehicle service catalog, and associated


tools, to enable protocol-, language-and specification-agnostic
interoperability between ECUs, infotainment, and cloud.

• Standardized – Version managed service specification with regular releases


• Extensible – Proprietary extensions can be added to an open-standard catalog
• Tools – Auto-generate network code and APIs from service specifications
• Specification agnostic – Translation to and from multiple specification formats
• Interoperability – Enable seamless communication in the vehicle and over the air

28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA |2
Internal

VSC – Working Session 1 (Tue 26.04)

topic start time


VSC Intro 15:00 20 min
Initial Services 15:20 25 min
VSC-VSS relationship (prep. Thursday) 15:45 25 min
Wrap up 16:10 20 min

Wrap Up:
- Identify a set of service that make sense for VSC, 3 nice example services
- Code generator on top of the VCS services
- Idl conversion

Questions:
- Verisoning on Interfaces / APIs?

28 March 2024 | Copyright ©2021 COVESA |3


Internal

VSC – Working Session 2 (Wed 27.04)

topic start time


Intro 10:30 10 min
Initial Services for VSC, 3-5 nice examples 10:40 20 min
Sample POC Vehicle Abstraction Layer 11:00 20 min
Tooling / Generators, etc. 11:20 20 min
Container, Access Control 11:40 10 min
Wrap up 11:50 10 min

28 March 2024 | Copyright ©2021 COVESA |4


Internal

Initial Objectives

Create service catalog


• Create catalog for commodity in-vehicle services using YAML
• Collaborate between OEMs and Tier-1s to ensure commonality
Create tooling
• Create VSC YAML translators for FrancaIDL and ARXML
• Create code generators for C++, DBUS, and SOME/IP
Create sample vehicle abstraction layer service
• Route ARXML-based SOME/IP traffic to DBUS

28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA |5
Internal

TECHNICAL OVERVIEW

28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA |6
Internal

VSC YAML File Structure


Namespaces
• Can be nested
• Major & minor versions enables versioned APIs
namespaces:
name: ... Typedefs
major-version: ... • Type defines native, defined, struct, or enumeration types
minor-version: ... • Supports array definitions

typedefs: Enumerations
... • Supports optional value specification for each element

enumerations: Structs
... • Can be nested
• Elements can be of any native or defined datatype
structs:
... Methods
• Arbitrary number of input and output parameters
methods: • Can return stream of output parameters
...
Events
events: • Pub/sub
... • Events can contain arbitrary number of elements

See full specification at: https://github.com/COVESA/vehicle_service_catalog

28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA |7
Internal

VSC Deployment Files

Namespaces
• Mapped to corresponding namespaces in VSC file
• Nested namespaces used to traverse tree to specific elements
namespaces:
- name: seats
dbus_interface: com.genivi.seat
Extensions
methods:
• Adds additional data elements to the VSC specification
- name: move_seat
in:
- name: position
datatype: float
Overrides
• Redefines an existing element defined in VSC specification
• Can redefine complete trees (namespaces, methods, etc)

28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA |8
Internal

Code Generation

Code generator combines VSC specification with deployment


files to customize code generation for specific protocol / language targets

vsc-generate -l cpp –l dbus -s comfort.yml –d comfort_dbus_deploy.yml –o comfort_dbus.cpp

Language to generate Protocol to generate Service specification Deployment file Output file for
stub code for stub code for (see above) generated code

• Specify if synchronous, event-driven, or callback-based API are to be generated


• Define listening ports, service discovery mechanisms, and other network configurations
• Map network identifiers to language symbols (SOME/IP Request ID to method names)

28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA |9
Internal

Integrating external specification formats

hvac.arxml vsc_convert -f arxml hvac.yml vsc_generate -p vsomeip hvac-vsomeip.cpp

HVAC ECU IVI

Adaptive SOME/IP hvac-service


Autosar

• Example: Generate SOME/IP interface code from ARXML


• Auto-generated VSOMEIP code provides Adaptive Autosar interoperability
• Extensible tools support multiple input formats and output protocols & languages

28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA | 10
Internal

Where is Franca IDL in all this?


hvac.fidl vsc_convert -i hvac.fidl -o hvac.yml

hvac.arxml vsc_convert -i hvac.arxml -o hvac.yml hvac.yml

hvac.proto vsc_convert -i hvac.proto -o hvac.yml

• Existing Franca IDL specifications can be used as ground truth format


• Bidirectional translation between Franca IDL and Vehicle Service Catalog formats fully supported

VSC could be seen as a YAML variant of Franca IDL with no loss of information

VSC drives improvements to Franca IDL → next step in Franca evolution?
28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA | 11
Internal

OBJECTIVES

28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA | 12
Internal

Objective: Create Service Catalog

• Define overall catalog structure with namespaces, naming conventions, etc


• Define global error codes, defined types, structs, etc.
• Define commodity services such as comfort, tuner, media, sota(?), etc
• Create placeholders for future services

28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA | 13
Internal

Objective: Sample Vehicle Abstraction Layer

Vehicle Abstraction Layer


• Simplifying integration of VSC defined services
• Enabling project to migrate step-by-step to VSC
• Supporting unchangeable legacy development while keeping a clean API

Sample
• Demonstrating E2E use case for a VSC defined service
• Demonstrating collaborative work and interoperability

28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA | 14
Internal

Sample Vehicle Abstraction Layer (SOME/IP-2-DBUS)


IVI
Comfort Application

DBUS

vsc-hvac.yml VSC Tooling vsc-hvac-dbus.cpp

Manual
translation-layer.cpp
coding

network.arxml VSC Tooling network-vsomeip.cpp

SOME/IP

Comfort ECU

28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA | 15
Internal

Sample Vehicle Abstraction Layer (SOME/IP-2-SOME/IP)

Gateway

ECU SOME/IP translation-layer.cpp SOME/IP ECU

network-vsomeip.cpp

Manual
VSC Tooling VSC Tooling
coding

network.arxml vsc-hvac.yml

28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA | 16
Internal

Open Questions

28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA | 17
Internal

Open Questions

• VSS – VSC Integration


• Boundaries between specifications, tooling, etc
• Use both signals and services to actuate?
• Choose a code integration option
• Structure of service catalog
• Namespace structuring
• Best practices for actuation, status updates, and failure management

28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA | 18
Internal

VSS-VSC Integration Option 1

Vehicle Signal VSS-to-VSC VSC Events &


Specification generator Properties

Application
Vehicle Service
VSC Tooling vsc-stub.cpp
Specification

• Signal Specification is translated to a VSC YAML file with events and properties
• Tooling generates code from both service specification and translated events and properties

28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA | 19
Internal

VSS-VSC Integration Option 2

Vehicle Signal VSS


Specification Tooling Application

vss-stub.cpp

Vehicle Service VSC vsc-stub.cpp


Specification Tooling

• Toolchains are kept separate


• Application uses code generated from booth toolchains

28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA | 20
Internal

Q: Best Practices
• Use RPCs to actuate and command
• Set radio station, move seats, set destination, …
• Can initiate transaction that triggers one or more events for transactional status update
• Returns ok/fail/in_progress(transaction_id)

• Use properties to report property changes (from RPC or otherwise)


• Current radio station changed, Seat position changed, Location changed, …
• Has getters and setters
• Has pub-sub

• Use events to track transactional progress (Needs to be specified by VSC RPC call)
• Window 10% up, 20% up, aborted (hand in window) (last update)
• Deployment file specifies if sync/async interface should be generated.

28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA | 21
Internal

Q: Service Catalog Structure

• How do we organize nested namespaces?


• How do we enable private / proprietary extensions?
• How do we namespace globals (error codes, enums, etc)?
• Service and argument styles (camel case, underscore, prefix, etc)?
• Versioning of Services?

28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA | 22
Internal

Q: Additional Features

• Mechanism to instrument calls in generated code


• Track latency, resource usage, etc
• How do we integrate Renesas AoS service specs?
• Can we use well-defined deployment file elements to specify containers?
• Refer to VSC spec + version from AoS service spec. Consume – provide.

28 March 2024 | ALL MEMBER MEETING • Leipzig, Germany • Copyright ©2022 COVESA | 23
Internal

You might also like