SOME/IP Transformer
Overview
RAPIDSEA supports SOME/IP transformer module handles the serialization and deserialization of SOME/IP messages as explained in the SOME/IP Protocol page. The SOME/IP Transformer Module is a middleware-level component responsible for converting application-level data structures into SOME/IP wire-format byte streams (serialization) and reconstructing application-level data from received byte streams (deserialization). It acts as the translation layer between the service interface model and the underlying transport.
This module abstracts the encoding and decoding logic, enabling upper layers to interact with structured data without handling low-level byte manipulation.
The below diagram captures the block level diagram of the SOME/IP Transformer and how it interfaces with other modules.
Application Interface
The SOME/IP Transformer module ensures correct transformation of data by providing mechanisms for:
Serializing application data into SOME/IP-compliant message payloads.
Deserializing received SOME/IP payloads into application-level data structures.
Handling byte order conversion (endianness).
Managing data alignment as per SOME/IP specification.
Supporting primitive and complex data types.
Ensuring consistency between transmitted and received data formats.
Serialization
Serialization is the process of converting structured application data into a contiguous byte buffer conforming to the SOME/IP wire format, for transmission over the network.
The transformer module shall:
Convert each field of the application data structure into its binary representation.
Follow the SOME/IP payload format and data type encoding rules.
Apply network byte order (big-endian) for multi-byte data types.
Handle variable-length data such as arrays and strings.
Supported Data Types
The module shall support serialization of:
Unsigned and signed integers (8/16/32/64-bit)
Boolean values
Floating-point types (if applicable)
Arrays (fixed and dynamic length)
Strings (length-prefixed)
structures
High level flow chart is depicted below for serialization:
Deserialization
Deserialization is the process of parsing a received SOME/IP byte buffer and reconstructing the strongly-typed application data structures that represent the original transmitted values.
The transformer module shall:
Parse the incoming byte stream sequentially.
Extract fields based on predefined data types and structure definitions.
Perform byte order conversion from network to host format.
Validate payload length before extraction.
Handle variable-length data safely.
High level flow chart is depicted below for deserialization:
The RAPIDSEA SOME/IP Transformer module clearly defines API functions that are essential for users to implement and integrate serialization and deserialization mechanisms effectively.
The below table captures the function that are to be called from the application logic.
Function |
Description |
|---|---|
rs_someip_transformer_get_version_info |
To get the version information of SOME/IP Transformer module. |
rs_some_get_serialize_event_data |
To get the serialization fixed data type event data. |
rs_some_pack_struct_data |
To construct the payload data based on the given tag number from the given pointer |
rs_some_pack_union_data |
To construct the payload data for union datatype. |
rs_some_set_deserialize_event_data |
To set the deserialization payload data into event data. |
rs_some_unpack_struct_data |
To unpack the structure data with corresponding wire type. |
rs_some_unpack_union_data |
To unpack the union data. |
Implementation Guide
For serialization
Consturct the payload using
rs_some_get_serialize_event_dataorrs_some_pack_struct_dataorrs_some_pack_union_datacalled by application layer of SOME/IP server or client based on data type.Transmit the serialized SOME/IP payload through the SOME/IP server or client module.
For deserialization
Receive the SOME/IP payload from the transport/protocol layer.
Deserialize the received data using
rs_some_set_deserialize_event_dataorrs_some_unpack_struct_dataorrs_some_unpack_union_datacalled by SOME/IP server or client based on data type.Validate the deserialized data and ensure consistency before passing it to the application layer.
The below diagram captures the high level sequence of operations associated with the SOME/IP stack layer.
SOME/IP Transformer Stack Memory Usage
Platform |
Memory |
Size |
|---|---|---|
Micro controller (iMXRT) |
ROM |
3KB |
Micro controller (iMXRT) |
RAM |
0KB |
Dependency
This stack depends on the below RAPIDSEA interfaces that can be obtained or custom implemented.
SOME/IP Transformer Header Details
Documentation from the relevant header as follows:
Warning
doxygenfile: Cannot find file “rs_someip_transformer.h