A software defined vehicle requires the design and development of software entities(uEs) that are distributed by nature, and deployed in many different os/hw environments such as vehicle-mechatronics, vehicle-high-compute SoCs, mobile phones, infrastructure, the cloud, etc....
Each environment has their own software development languages, deployment solutions, and communication protocols making application and service development for connected vehicles challenging and often OEM/vendor specific.
The currently are no common protocols that cross automotive and cloud boundaries for messaging/RPC, existing solutions are tailored for specific use cases and each come with their own pro's and cons (ex. it works in the cloud but not for safety critical ASIL-D messages).
Finally, given the lack of connections between the embedded automotive and Internet/cloud worlds, there is no standard way to safely and securely discover, connect, and communicate with software across the various above mentioned deployments so more often than not OEMs are left with implementing proprietary communication solutions.
Eclipse uProtocol provides a transport agnostic, layered communication protocol that is deployment, OS, and device (vehicle, cloud, mobile phone, charging station, etc...) agnostic, leveraging well-known existing automotive and Internet standards. Scope of the project shall include the specifications, sdk, and reference implementations of the specifications.
Connecting Automotive Apps and Services, Everywhere
The purpose of this project shall be to provide a transport agnostic, layered communication protocol that builds on top of existing automotive and Internet standards, from the mechatronic layer (between ECUs, VMs, etc…) up to the Cloud, enabling a connected software defined vehicles.
The protocol is divided up into three layers:
- Application Layer (uP-L3):
- Responsible for business/application logic through definition of methods, topics, messages
- Core Platform uEs (uSubscription, uDiscovery, etc...)
- Communication Layer (uP-L2):
- Describing data & metadate in a common way using CloudEvents: publication/notificaitons, request/response, file transfer, etc...
- Routing & Dispatching of events through Dispatchers (uBus, uStreamer, Device Proxy Router, Cloud Proxy)
- Transport Layer (uP-L1):
- Sending & receiving of events point-2-point between Software Entities (uEs)
- Session an connection over automotive & Internet standards
For more information about uProtocol please visit: Overview of uProtocol
The uProtocol project shall contain that contain a number of children repos that are:
- eclipse-uprotocol/uprotocol: Protocol specification & various layers interface definitions and interface definitions
- eclipse-uprotocol/uprotocol-sdk-java: Java Software development Kit (implements uP-L2 and includes other helper code for the protocol)
- eclipse-uprotocol/uprotocol-sdk-cpp: Same as Java SDK but for C++
- eclipse-uprotocol/uprotocol-android: Android implementation of uProtocol, both the transport protocol (Binder) and core dispatchers and application logic
The value we hope to give (and get) are:
- Collect valueable feedback and insite from the industry
- Avoid fragmentation (OEM/vendor specific solutions)
- Rally around a common vision for the software defined vehicle
- Harmonize across the automotive projects to a common vision such that we can expand the deployments and functionality supported by this underlining protocol
An official release of the source code is planned for September (post incubation period to allow for feedback from the community). Documentation might be released sooner.
Other deployment solutions (cloud providers, IV OS like Linux, QNX, etc...), additional transports, etc... .