Eclipse LIBERSOM

Architecture

Eclipse LIBERSOM follows a modular, layered architecture with clear separation of concerns. The entire stack compiles into a single library (opensomeip) with no external runtime dependencies beyond a C++17 standard library and platform threading/sockets.

Layers:

- Core: Message structures, session management, error handling, return codes
- Serialization: SOME/IP data type serialization/deserialization with big-endian byte order
- Transport: UDP (configurable blocking/non-blocking, buffer sizes) and TCP (connection management, framing) bindings
- Service Discovery: SOME/IP-SD multicast-based offer/find/subscribe with IPv4 options
- Transport Protocol: Large message segmentation and reassembly over UDP (SOME/IP-TP)
- RPC: Request/response client and server for method calls
- Events: Publish/subscribe communication with event groups
- E2E Protection: CRC-based message integrity with profile registry and standard profile
- Platform Abstraction (PAL): Portable threading, sockets, memory allocation, and byte-order APIs

Platform Support:

- POSIX (Linux, macOS) — Stable, primary development and CI target
- Windows (Winsock) — Supported, Win32 socket backend
- Zephyr RTOS — Stable, module system, native_sim + NXP S32K388 Renode simulation
- FreeRTOS + lwIP — Stable, Linux POSIX port + Renode STM32F407 Cortex-M4F simulation
- Eclipse ThreadX + lwIP — Stable, Linux port + Renode STM32F407 Cortex-M4 simulation
- Static allocation (no-heap) — Supported, optional ETL-based containers for lockstep/safety-critical targets

Current Maturity (v0.1.0):

- Total specification requirements: 669
- Fully traced (code + tests): 594 (88.8%)
- C++ unit test cases: 443 across 15 suites
- Python integration/conformance tests: 80+
- CI workflows: 16 (host, RTOS, Zephyr, static analysis, requirements, RPM, etc.)
- Total commits: 500+
- Active development since: 2025

Quality and Engineering Practices:

- Requirements traceability: Automated tooling maps specification requirements to @implements and @tests annotations in source code
- Continuous integration: 16 GitHub Actions workflows covering host builds, FreeRTOS, ThreadX, Zephyr, Python tests, clang-tidy, Coverity Scan, requirements validation, and RPM packaging
- Hardware simulation: Renode-based CI testing on ARM Cortex-M4 targets (STM32F407, NXP S32K388)
- Static analysis: clang-tidy, Coverity Scan, AddressSanitizer, UndefinedBehaviorSanitizer
- Documentation: PlantUML architecture diagrams, Sphinx-Needs requirements, API docs, porting guides
- Packaging: CMake presets for all targets, RPM spec via Packit/Copr, Docker test environments

Open SOME/IP Specification

OpenSOME/IP is developed against the Open SOME/IP Specification — a community-driven specification project (included as a git submodule) that defines normative requirements for interoperable SOME/IP communication. The specification operates under the SOME/IP Community Specification License 1.0 and provides a vendor-neutral reference for conformance.

Ecosystem Integration

The project is designed for composition with other Eclipse SDV technologies:

- Eclipse ThreadX — Direct RTOS backend (PAL implementation)
- Eclipse Zenoh — Gateway bridge (planned, separate repo)
- Eclipse Cyclone DDS — Gateway bridge (planned, separate repo)
- Eclipse uProtocol — Gateway bridge (planned, separate repo)
- Eclipse Velocitas — Vehicle service communication layer

State
Incubating
Licenses
Apache Software License 2.0

The content of this open source project is received and distributed under the license(s) listed above. Some source code and binaries may be distributed under different terms. Specific license information is provided in file headers and in NOTICE files distributed with the project's binaries.

Active Member Companies

Member companies supporting this project over the last three months.

    Is your logo missing?