SomeIpXf

缩写词注解

缩写词

英文全称

中文解释

SOME/IP

Scalable service-Oriented MiddlewarE over IP

基于IP 的可缩放的面向服务的中间件

Service

a logical combination of zero or more methods, zero or more

events, and zero or more fields (empty service is allowed, e.g.

for announcing non-SOME/IP services in SOME/IP-SD)

由零个或多个 方法,零个或多个事件,零个 或多个Field组成的逻辑组合

Request

a message of the client to the server invoking a method

一条由客户端发出 的用于调用服务端方法的消息

Response

a message of the server to the client transporting results of a

method invocation

一条由服 务端发送给客户端的消息,用 于传输客户端调用方法的结果

Method

a method, procedure, function, or subroutine that is called/invoked

方法或者函数。

简介

在发送端SOME/IP Transformer模块对数据进行线性化处理,将数据转换为符合SOME/IP格式要求的数据。

在接收端,SOME/IP Transformer模块将接收到的线性化的数据进行反序列化处理,将数据还原后提供给上层模块。image1

图 SOME/IP Transformer模块概要图

参考资料

[1] AUTOSAR_SWS_SOMEIPTransformer.pdf,R19-11

[2] AUTOSAR_ASWS_TransformerGeneral.pdf,R19-11

功能描述

数据序列化功能

数据序列化功能介绍

对原始数据进行序列化。

数据序列化功能实现

根据配置工具中对接口(SenderReceiverInterface/ ClientServerInterface容器)和数据的描述(配置在DateTypeDescription页面中),SOME/IP Transformer模块会生成对应的序列化函数(根据SomeIpXfConfig配置项的配置生成),用户调用该序列化函数,提供对应的参数,该序列化函数输出序列化后的数据。

数据反序列化功能

数据反序列化功能介绍

对原始数据进行反序列化。

数据反序列化功能实现

根据配置工具中对接口(SenderReceiverInterface/ ClientServerInterface容器)和数据的描述(配置在DateTypeDescription页面中),SOME/IP Transformer模块会生成对应的反序列化函数(根据SomeIpXfConfig配置项的配置生成),用户调用该反序列化函数,提供对应的参数,该反序列化函数输出反序列化后的原始数据。

源文件描述

表 SomeIpXf组件文件描述

文件

说明

SomeIpXf_Cfg.h

定义SomeIpXf模块预编译时用到的配置参数。

SomeIpXf.c

SomeIpXf模块源文件,包含了API函数的实现。

SomeIpXf.h

SomeIpXf模块头 文件,包含了API函数的声明并定义了使用的数据结构。

So meIpXf_MemMap.h

SomeIpXf模块函数和变量存储位置定义文件。

image2

图 SomeIpXf组件文件交互关系图

API接口

类型定义

SomeIpXf_ConfigType类型定义

名称

SomeIpXf_ConfigType

类型

Structure

范围

描述

SomeIpXf初始化需要用到的数据,当前实现为空。

输入函数描述

输入模块

API

Det

Det_ReportError

静态接口函数定义

SomeIpXf_<transformerId>函数定义(Sender/Receiver)

函数名称:

SomeIpXf _<transformerId>

函数原型:

uint8 SomeIpXf_<transformerId>(

uint8* buffer,

uint16* bufferLength,

const <type>* dataElement

)

服务编号:

0x03

同步/异步:

同步

是 否可重入:

可重入

输入参数:

dataElement

值域:

输入 输出参数:

输出参数:

buffer

值域:

bufferLength

值域:

返回值:

uint8

0x00 (E_OK): 序列 化成功

0x81 ( E_SER_G ENERIC _ERROR): 出 现错误

功能概述:

该函数为Sender/R eceiver类型的序列 化函数,它将data element作为 输入,输出一个ui nt8类型的数组其中 包含序列化后的数 据。序列化后的数 据长度由序列化函 数计算,并输出在b ufferLength参数中 。该值可能比输出 buffer的长度小。

SomeIpXf_<transformerId>函数定义(Client/Server)

函数名称:

SomeIpXf _<transformerId>

函数原型:

uint8 SomeIpXf_<transformerId>(

const Rte_Cs_Transa ctionHandleType* T ransactionHandle,

uint8* buffer,

uint16* bufferLength,

[Std_ReturnType returnValue,]

<type> data_1, …

<type> data_n

)

服务编号:

0x03

同步/异步:

同步

是 否可重入:

可重入

输入参数:

TransactionHandle

值域:

returnValue

值域:

STD_ON / STD_OFF

data_1

值域:

data_n

值域:

输入 输出参数:

NONE

输出参数:

buffer

值域:

bufferLength

值域:

返回值:

uint8

0x00 (E_OK): 序列 化成功

0x81 ( E_SER_G ENERIC _ERROR): 出 现错误

功能概述:

该函数为Client /Server类型的序列 化函数,它将data element作为 输入,输出一个ui nt8类型的数组其中 包含序列化后的数 据。序列化后的数 据长度由序列化函 数计算,并输出在b ufferLength参数中 。该值可能比输出 buffer的长度小。

SomeIpXf_<transformerId>函数定义(trigger event)

函数名称:

SomeIpXf _<transformerId>

函数原型:

uint8 SomeIpXf_<transformerId>(

uint8* buffer,

uint16* bufferLength

)

服务编号:

0x03

同步/异步:

同步

是 否可重入:

可重入

输入参数:

输入 输出参数:

输出参数:

buffer

值域:

bufferLength

值域:

返回值:

uint8

0x00 (E_OK): 序列 化成功

0x81 ( E_SER_G ENERIC _ERROR): 出 现错误

功能概述:

该函数为trigger even t类型的序列化函数 ,它将trigger作为 输入,输出一个ui nt8类型的数组其中 包含序列化后的数 据。序列化后的数 据长度由序列化函 数计算,并输出在b ufferLength参数中 。该值可能比输出 buffer的长度小。

SomeIpXf_Inv_<transformerId>函数定义 (Sender/Receiver)

函数名称:

SomeIpXf Inv_<tran sformerId>

函数原型:

uint8 SomeIpXf_I nv_<trans formerId>(

const uint8* buffer,

uint16 buf ferLength,

<type>* d ataElement

)

服务编号:

0x04

同步/异步:

同步

是 否可重入:

可重入

输入参数:

buffer

值域:

bu fferLength

值域:

0 .. 65535

输入 输出参数:

输出参数:

d ataElement

值域:

返回值:

uint8

0x00 (E_OK): 反序列化成功

0x81 (E_SER_G ENERIC_ERROR): 出现一个错误

0x87 (E _SER_WRONG_PROT OCOL_VERSION):

接收端的版本号 和发送端不匹配

0x88 (E_S ER_WRONG_INTER FACE_VERSION):

接口版本不支持

0x89 (E_SER_MALFO RMED_MESSAGE):

接收到 的消息长度不正 确,Xf无法处理

0x8a (E_SER_WRONG _MESSAGE_TYPE): 接收到的 报文类型不正确

功能概述:

Sen der/Receiv er通信的反 序列化函数 ,用于反序 列化SOME/ IP。该函数 接受一个包 含序列化数 据的uint8 类型的数组 作为输入, 输出原始数 据到RTE。

SomeIpXf_Inv_<transformerId>函数定义 (Client/Server)

函数名称:

SomeI pXf_Inv_<tr ansformerId>

函数原型:

uint8 SomeIp Xf_Inv_<tra nsformerId>(

Rte_Cs _Transaction HandleType* Transa ctionHandle,

const uint8* buffer,

uint16 b ufferLength,

[Std _ReturnType* r eturnValue,]

[<type>* data_1,] …

[<type>* data_n]

)

服务编号:

0x04

同步/异步:

同步

是 否可重入:

可重入

输入参数:

buffer

值域:

bufferLength

值域:

0 .. 65535

输入 输出参数:

输出参数:

Trans actionHandle

值域:

returnValue

值域:

data_1

值域:

data_n

值域:

返回值:

uint8

0x00 (E_OK): 反序列化成功

0x81 (E_SER_G ENERIC_ERROR): 出现一个错误

0x87 (E _SER_WRONG_PROT OCOL_VERSION):

接收端的版本号 和发送端不匹配

0x88 (E_S ER_WRONG_INTER FACE_VERSION):

接口版本不支持

0x89 (E_SER_MALFO RMED_MESSAGE):

接收到 的消息长度不正 确,Xf无法处理

0x8a (E_SER_WRONG _MESSAGE_TYPE): 接收到的 报文类型不正确

功能概述:

Client/Serv er通信的反序 列化函数,用 于反序列化S OME/IP。该函 数接受一个包 含序列化数据 的uint8类型 的数组作为输 入,输出原始 数据到RTE。

SomeIpXf_Inv_<transformerId>函数定义 (trigger event)

函数名称:

SomeI pXf_Inv_<tr ansformerId>

函数原型:

uint8 SomeIp Xf_Inv_<tra nsformerId>(

const uint8* buffer,

uint16 bufferLength

)

服务编号:

0x04

同步/异步:

同步

是 否可重入:

可重入

输入参数:

buffer

值域:

bufferLength

值域:

0 .. 65535

输入 输出参数:

输出参数:

返回值:

uint8

0x00 (E_OK): 反序列化成功

0x81 (E_SER_G ENERIC_ERROR): 出现一个错误

0x87 (E _SER_WRONG_PROT OCOL_VERSION):

接收端的版本号 和发送端不匹配

0x88 (E_S ER_WRONG_INTER FACE_VERSION):

接口版本不支持

0x89 (E_SER_MALFO RMED_MESSAGE):

接收到 的消息长度不正 确,Xf无法处理

0x8a (E_SER_WRONG _MESSAGE_TYPE): 接收到的 报文类型不正确

功能概述:

Trigger Eve nt通信的反序 列化函数,用 于反序列化S OME/IP。该函 数接受一个包 含序列化数据 的uint8类型 的数组作为输 入,输出原始 数据到RTE。

SomeIpXf_Init函数定义

函数名称:

S omeIpXf_Init

函数原型:

void So meIpXf_Init(

const SomeIpXf ConfigType* config

)

服务编号:

0x01

同步/异步:

同步

是 否可重入:

不可重入

输入参数:

config

值域:

输入 输出参数:

输出参数:

返回值:

功能概述:

初始化So meIpXf模块。

SomeIpXf_DeInit函数定义

函数名称:

SomeIpXf_DeInit

函数原型:

void SomeIpXf_DeInit(

void

)

服务编号:

0x02

同步/异步:

同步

是 否可重入:

不可重入

输入参数:

输入 输出参数:

输出参数:

返回值:

功能概述:

反初始化SomeIpXf模块。

SomeIpXf_GetVersionInfo函数定义

函数名称:

SomeIpX f_GetVersionInfo

函数原型:

void SomeIpXf _GetVersionInfo(

Std_V ersionInfoType* VersionInfo

)

服务编号:

0x00

同步/异步:

同步

是 否可重入:

可重入

输入参数:

输入 输出参数:

输出参数:

VersionInfo

值域:

返回值:

功能概述:

获取Some IpXf模块的版本号

可配置函数定义

无。

配置

TransformationSet

image3

图 TransformationSet容器配置图

表 TransformationSet容器属性描述

UI名称

描述

Tra nsform ations

取值范围

默认取值

参数描述

该容器用 于定义Transformer对象

依赖关系

T ransfo rmatio nTechn ologys

取值范围

默认取值

参数描述

该容器用于定义Transfo rmationTechnology对象

依赖关系

Transformation

image4

图 Transformation对象配置图

表 Transformation对象属性描述

UI名称

描述

T ransfo rmerId

取值范围

合法字符串

默认取值

参数描述

Transf ormerId,用做序列化函 数或者反序列化函数名

依赖关系

T ransfo rmatio nChain

取值范围

引用到ComXfTran sformer/E2Etransforme r/SomeIpXfTransformer

默认取值

参数描述

引用到ComXfTransf ormer/E2Etransformer/ SomeIpXfTransformer用 于生成TransfomerChain

(单独 生成一个SomeIpXf的序 列化或者反序列化函数 也需要配置一个Transf ormerChain,在Transfo rmerChain中引用到Some IpXfTransformer,否则 无法生成序列化函数)

依赖关系

TransformationTechnology

image5

图 TransformationTechnology容器配置图

表 TransformationTechnology容器属性描述

UI名称

描述

Needs Origin alData

取值范围

ON / OFF

默认取值

OFF

参数描述

表示transformer是否需 要访问SWC的原始数据。

依赖关系

Pr otocol

取值范围

合法字符串

默认取值

E2E

参数描述

表示该 transformer实现的协议

依赖关系

Tran sforme rClass

取值范围

CUSTOM /

SAFETY /

SECURITY /

SERIALIZER

默认取值

SAFETY

参数描述

表 示该transformer的类型

依赖关系

V ersion

取值范围

Int

默认取值

1

参数描述

实现的协议版本号

依赖关系

S OMEIPT ransfo rmatio nDescr iption

取值范围

默认取值

参数描述

该容器定义和 transformer相关的属性

依赖关系

SOMEIPTransformationDescription

image6

图 SOMEIPTransformationDescription容器配置图

表 SOMEIPTransformationDescription容器属性描述

UI名称

描述

ali gnment

取值范围

1 .. 65535

默认取值

参数描述

表示动态长 度的数据的对其字节数

依赖关系

byt eOrder

取值范围

mos tSignificantByteFirst / mo stSignificantByteLast

/opaque

默认取值

most Significan tByteFirst

参数描述

表 示transformer的字节序

依赖关系

inte rfaceV ersion

取值范围

1 .. 65535

默认取值

参数描述

版本号

依赖关系

DataTypeDescription

image7

图 DataTypeDescription容器配置图

表 DataTypeDescription容器属性描述

UI名称

描述

Type

取值范围

VALUE(基本类型)

ARRAY (定长数组)

DYNAMIC ARRAY (动态长度数组)

STRING (定长字符串)

DYNAMIC STRING (动态长度字符串)

STRUCT (结构体)

UNION (联合体)

默认取值

参数描述

定 义所描述的数据的类型

依赖关系

1. Type参数设置为DYNAMIC STRING和DYNAMIC ARRAY时,St orageArrays容器中必须 配置StorageArray对象

2. Type 参数设置为UNION时,Un ionElements容器中必须 配置UnionElement对象

3. T ype参数设置为STRUCT时 ,SubElements容器中必 须配置SubElement对象

Val ueType

取值范围

boolean

uint8

uint16

uint32

uint64

sint8

sint16

sint32

sint64

float32

默认取值

参数描述

表示所定义 的基本数据类型的类型

依赖关系

仅在 Type=Value时可以配置

Array Length

取值范围

1 .. 65535

默认取值

参数描述

表示数组的长度

依赖关系

仅在 Type=Array时可以配置

St ringEn coding

取值范围

UTF-8 / UTF-16

默认取值

UTF-8

参数描述

表示字符串的编码方式

依赖关系

仅在Type=STRING / DYNAMIC ARRAY时可以配置

String Length

取值范围

1 .. 65535

默认取值

参数描述

表示字符串的长度

依赖关系

仅在 Type=STRING时可以配置

Type Length

取值范围

0 .. 8

默认取值

0

参数描述

静态类型的数 据类型长度,自动计算

依赖关系

当 Type=VALUE,根据Value Type的值会计算;

当Type=STRING,根据 StringEncoding值计算

Arra yEleme ntType

取值范围

引用 到DataTypeDescription

默认取值

参数描述

表示数组成员的类型

依赖关系

仅在 Type=Array时可以配置

Refere ncedDa taType

取值范围

引用 到DataTypeDescription

默认取值

参数描述

表示是哪种类型的指针

依赖关系

仅在Type=DATA REFERENCE时可以配置

SubEl ements

取值范围

默认取值

参数描述

表示结构体的子成员

依赖关系

仅在 Type=STRUCT时可以配置

Si zeIndi cators

取值范围

默认取值

参数描述

动 态长度数组或动态长度 字符串表示长度的变量

依赖关系

仅在Type=DYNAMIC ARRAY / DYNAMIC STRING时可以配置

S torage Arrays

取值范围

默认取值

参数描述

动 态长度数组或动态长度 字符串存储数据的数组

依赖关系

仅在Type=DYNAMIC ARRAY / DYNAMIC STRING时可以配置

UnionElement

image8

图 UnionElement容器配置图

表 UnionElement容器属性描述

UI名称

描述

UnionE lement

取值范围

默认取值

参数描述

表示联合体

依赖关系

MemberSelector

image9

图 MemberSelector容器配置图

表 MemberSelector容器属性描述

UI名称

描述

Member Select orType

取值范围

uint8/uint16/uint32

默认取值

参数描述

表示共用体的Mem berSelector的数据类型

依赖关系

UnionMember

image10

图 UnionMember容器配置图

表 UnionMember容器属性描述

UI名称

描述

Union Member

取值范围

DataTypeDe scription中定义的类型

默认取值

参数描述

表示联合体中的各成员

依赖关系

SubElement

image11

图 SubElement容器配置图

表 SubElement容器属性描述

UI名称

描述

R eferen ceType

取值范围

引用 到DataTypeDescription

默认取值

参数描述

表示结构体成员的类型

依赖关系

SizeIndicator

image12

图 SizeIndicator容器配置图

表 SizeIndicator容器属性描述

UI名称

描述

R eferen ceType

取值范围

uint8 / uint16 / uint32

默认取值

uint8

参数描述

表示存储动态长 度数组或动态长度字符 串的长度的变量的类型

依赖关系

StorageArray

image13

图 StorageArray容器配置图

表 StorageArray容器属性描述

UI名称

描述

Ar rayMax Length

取值范围

1 .. 65535

默认取值

参数描述

表示存储动态 长度数组或动态长度字 符串的数组的最大长度

依赖关系

SOMEIPTransformationISignalProps

image14

图 SOMEIPTransformationISignalProp容器配置图

表 SOMEIPTransformationISignalProp容器属性描述

UI名称

描述

Inte rfaceV ersion

取值范围

0 .. 65535

默认取值

参数描述

方法的版本号

依赖关系

Messa geType

取值范围

Error / Notification / Request / RequestNoReturn / Response

默认取值

参数描述

表 示Header中的消息类型

依赖关系

Sessi onHand lingSR

取值范围

SessionHandlingActive / Se ssionHandlingInactive

默认取值

参数描述

表示Sender/Receiver通 信中的session控制方式

依赖关系

SizeO fArray Length Fields

取值范围

0 .. 65535

默认取值

参数描述

固定长度数组的Le ngthField占用的字节数

依赖关系

SizeOf Struct Length Fields

取值范围

0 .. 65535

默认取值

参数描述

结构体的Le ngthField占用的字节数

依赖关系

SizeO fUnion Length Fields

取值范围

0 .. 65535

默认取值

参数描述

共用体的Le ngthField占用的字节数

依赖关系

SenderReceiverInterface

image15

图 SenderReceiverInterface容器配置图

表 SenderReceiverInterface容器属性描述

UI名称

描述

DataE lement

取值范围

Reference DataTypeDescription

默认取值

参数描述

Se nderReceiverInterface 中的dataElement的类型

依赖关系

ClientServerInterface

image16

图 SenderReceiverInterface容器配置图

表 SenderReceiverInterface容器属性描述

UI名称

描述

Cli entSer verOpe ration

取值范围

默认取值

参数描述

表示一个ClientServerI nterface中的Operation

依赖关系

ClientServerOperation

image17

图 ClientServerOperation容器配置图

表 ClientServerOperation容器属性描述

UI名称

描述

arg uments

取值范围

默认取值

参数描述

ClientSe rverOperation中的参数

依赖关系

po ssible Errors

取值范围

默认取值

参数描述

ClientServer Operation中可能的错误

依赖关系

Arguments

image18

图 ClientServerOperation容器配置图

表 ClientServerOperation容器属性描述

UI名称

描述

Dir ection

取值范围

IN / INOUT / OUT

默认取值

参数描述

定 义参数的输入输出方向

依赖关系

Type

取值范围

Reference DataTypeDescription

默认取值

参数描述

定义参数的类型.

依赖关系

PossibleErrors

image19

图 possibleError容器配置图

表 possibleError容器属性描述

UI名称

描述

Err orCode

取值范围

0 .. 65535

默认取值

参数描述

定义可能出现的错误。

依赖关系

SomeIpXfConfig

Dingtalk_20240808172129

图 SomeIpXfConfig容器配置图

表 SomeIpXfConfig容器属性描述

UI名称

描述

S ervice Type

取值范围

Client / Server

默认取值

参数描述

表示SOMEIP Tr ansformer需要处理的对 象是Client还是Server

依赖关系

C ommuni cation Type

取值范围

Client-Server / Sender-Receiver / Trigger

默认取值

参数描述

表示SOMEIP Transformer需要 处理的对象的通信方式

依赖关系

Dir ection

取值范围

RECEIVE / SEND

默认取值

参数描述

指示发送方向

依赖关系

csE rrorRe action

取值范围

autonomous / applicationOnly

默认取值

参数描述

指示错误处理方式

依赖关系

SOMEI PTrans format ionISi gnalPr opsRef

取值范围

引用到本 模块定义的SOMEIPTran sformationISignalProp

默认取值

参数描述

引用到SOMEIPTran sformationISignalProp

依赖关系

Client Server Interf aceRef

取值范围

引用到本模块定义的 ClientServerInterface

默认取值

参数描述

引用到 ClientServerInterface

依赖关系

Communication Type = Client-Server时可配置

Se nderRe ceiver Interf aceRef

取值范围

引用到本模块定义的Se nderReceiverInterface

默认取值

参数描述

引用到Se nderReceiverInterface

依赖关系

Communication Type = Se nder-Receiver时可配置

X frmTra nsform ationT echnol ogyRef

取值范围

引用 到Xfrm模块中定义的Tra nsformationTechnology

默认取值

参数描述

引用到Tra nsformationTechnology

依赖关系

TransformationTech nology->Protocol为SOM EIP时可在下拉框中选择