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.

SOME/IP Transformer Block Diagram

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:

SOME/IP Transformer Flow Diagram

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:

SOME/IP Transformer Flow Diagram

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.

API Functions

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

  1. Consturct the payload using rs_some_get_serialize_event_data or rs_some_pack_struct_data or rs_some_pack_union_data called by application layer of SOME/IP server or client based on data type.

  2. Transmit the serialized SOME/IP payload through the SOME/IP server or client module.

For deserialization

  1. Receive the SOME/IP payload from the transport/protocol layer.

  2. Deserialize the received data using rs_some_set_deserialize_event_data or rs_some_unpack_struct_data or rs_some_unpack_union_data called by SOME/IP server or client based on data type.

  3. 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 Sequence Diagram

SOME/IP Transformer Stack Memory Usage

ROM/RAM Consumption (Stack only)

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