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

图1-1 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配置项的配置生成),用户调用该反序列化函数,提供对应的参数,该反序列化函数输出反序列化后的原始数据。

源文件描述

表3-1 SomeIpXf组件文件描述

文件

说明

SomeIpXf_Cfg.h

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

SomeIpXf.c

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

SomeIpXf.h

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

image2

图3-1 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

图5-1 TransformationSet容器配置图

表5‑1 TransformationSet容器属性描述

UI名称

描述

Transf ormati onTech nology

取值范围

Container

默认取值

参数描述

该容器用于定义 一个Transformer的属性

依赖关系

TransformationTechnology

image4

图5-2 TransformationTechnology容器配置图

表5‑2 TransformationTechnology容器属性描述

UI名称

描述

Needs Origin alData

取值范围

ON / OFF

默认取值

OFF

参数描述

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

依赖关系

Pr otocol

取值范围

String

默认取值

E2E

参数描述

表示该 transformer实现的协议

依赖关系

Tran sforme rClass

取值范围

CUSTOM /

SAFETY /

SECURITY /

SERIALIZER

默认取值

SAFETY

参数描述

表 示该transformer的类型

依赖关系

V ersion

取值范围

Int

默认取值

1

参数描述

实现的协议版本号

依赖关系

S OMEIPT ransfo rmatio nDescr iption

取值范围

Container

默认取值

参数描述

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

依赖关系

SOMEIPTransformationDescription

image5

图5-3 SOMEIPTransformationDescription容器配置图

表5‑3 SOMEIPTransformationDescription容器属性描述

UI名称

描述

ali gnment

取值范围

1 .. 65535

默认取值

参数描述

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

依赖关系

byt eOrder

取值范围

mos tSignificantByteFirst / mo stSignificantByteLast

/opaque

默认取值

most Significan tByteFirst

参数描述

表 示transformer的字节序

依赖关系

inte rfaceV ersion

取值范围

1 .. 65535

默认取值

参数描述

版本号

依赖关系

DataTypeDescription

image6

图5-4 DataTypeDescription容器配置图

表5‑4 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时可以配置

Arra yEleme ntType

取值范围

引用 到DataTypeDescription

默认取值

参数描述

表示数组成员的类型

依赖关系

仅在 Type=Array时可以配置

Refere ncedDa taType

取值范围

引用 到DataTypeDescription

默认取值

参数描述

表示是哪种类型的指针

依赖关系

仅在Type=DATA REFERENCE时可以配置

SubEl ements

取值范围

Container

默认取值

参数描述

表示结构体的子成员

依赖关系

仅在 Type=STRUCT时可以配置

Si zeIndi cators

取值范围

Container

默认取值

参数描述

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

依赖关系

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

S torage Arrays

取值范围

Container

默认取值

参数描述

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

依赖关系

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

UnionElement

image7

图5-5 UnionElement容器配置图

表5‑5 UnionElement容器属性描述

UI名称

描述

UnionE lement

取值范围

默认取值

参数描述

表示联合体

依赖关系

MemberSelector

image8

图5-6 MemberSelector容器配置图

表5‑6 MemberSelector容器属性描述

UI名称

描述

Member Select orType

取值范围

uint8/uint16/uint32

默认取值

参数描述

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

依赖关系

UnionMember

image9

图5-7 UnionMember容器配置图

表5‑7 UnionMember容器属性描述

UI名称

描述

Union Member

取值范围

DataTypeDe scription中定义的类型

默认取值

参数描述

表示联合体中的各成员

依赖关系

SubElement

image10

图5-8 SubElement容器配置图

表5‑8 SubElement容器属性描述

UI名称

描述

R eferen ceType

取值范围

引用 到DataTypeDescription

默认取值

参数描述

表示结构体成员的类型

依赖关系

SizeIndicator

image11

图5-9 SizeIndicator容器配置图

表5‑9 SizeIndicator容器属性描述

UI名称

描述

R eferen ceType

取值范围

uint8 / uint16 / uint32

默认取值

uint8

参数描述

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

依赖关系

StorageArray

image12

图5-10 StorageArray容器配置图

表5‑10 StorageArray容器属性描述

UI名称

描述

Ar rayMax Length

取值范围

1 .. 65535

默认取值

参数描述

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

依赖关系

SOMEIPTransformationISignalProps

image13

图5-11 SOMEIPTransformationISignalProp容器配置图

表5‑11 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

image14

图5-12 SenderReceiverInterface容器配置图

表5‑12 SenderReceiverInterface容器属性描述

UI名称

描述

DataE lement

取值范围

Reference DataTypeDescription

默认取值

参数描述

Se nderReceiverInterface 中的dataElement的类型

依赖关系

ClientServerInterface

image15

图5-13 SenderReceiverInterface容器配置图

表5‑13 SenderReceiverInterface容器属性描述

UI名称

描述

Cli entSer verOpe ration

取值范围

Container

默认取值

参数描述

表示一个ClientServerI nterface中的Operation

依赖关系

ClientServerOperation

image16

图5-14 ClientServerOperation容器配置图

表5‑14 ClientServerOperation容器属性描述

UI名称

描述

arg uments

取值范围

Container

默认取值

参数描述

ClientSe rverOperation中的参数

依赖关系

po ssible Errors

取值范围

Container

默认取值

参数描述

ClientServer Operation中可能的错误

依赖关系

Arguments

image17

图5-15 ClientServerOperation容器配置图

表5‑15 ClientServerOperation容器属性描述

UI名称

描述

Dir ection

取值范围

IN / INOUT / OUT

默认取值

参数描述

定 义参数的输入输出方向

依赖关系

Type

取值范围

Reference DataTypeDescription

默认取值

参数描述

定义参数的类型.

依赖关系

PossibleErrors

image18

图5-16 possibleError容器配置图

表5‑16 possibleError容器属性描述

UI名称

描述

Err orCode

取值范围

0 .. 65535

默认取值

参数描述

定义可能出现的错误。

依赖关系

SomeIpXfConfig

image19

图5-17 SomeIpXfConfig容器配置图

表5‑17 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

默认取值

参数描述

指示错误处理方式

依赖关系

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

依赖关系