Vehicle Services Interface Definition Language (VSIDL) is a domain-specific language built on top of protocol buffers. VSIDL is designed to define the interfaces and interactions between service bundles in a Software Defined Vehicle (SDV). For information on service bundles, see Service units and service bundles.
VSIDL provides the interface to interact with lower-level services in the SDV ecosystem. You can use VSIDL to specify service units that communicate using RPC (including unary, client streaming, and server streaming) or a data tunnel. VSIDLC's generated code handles service unit registration with SDV Service Discovery.
Using additional configuration files, the code VSIDLC generates for service bundles can be packaged as APEXes, which can be controlled by the Orchestrator and SDV Lifecycle Manager.
Implement SDV services
Following are the high-level steps to define the interfaces and interactions between service bundles in a SDV and to create APEX packages for deployment:
- Define data structures in protobuf files (files with the
.protoextension). Use protobuf to define the data structures that are exchanged between the service units defined by VSIDL. - Define service architecture in VSIDL files (files with the
.vsidlextensions). VSIDL is used to define service bundles and service units. VSIDL references types declared by protobuf (step 1). - Generate middleware. The middleware provides a standardized way for services to communicate and interact with each other.
- Implement custom business logic in Rust.
- Package your service bundles, including generated and custom business logic code, into an APEX package for deployment.
- Configure your catalog for automatic updates and IDE support.
VSIDLC's type system operates at two levels: Protobuf and VSIDL. Protobuf is used to define data structures that are exchanged between the service units defined by VSIDL. This section explains how data structures are defined in VSIDL and protobuf.
What's next
Following are documents you might read next:
- To learn how to define data structures in protobuf, proceed to Define data structures.
- To understand the main elements of VSIDL language, see the Language specification.