CAPL学习-SOME/IP交互层-通用函数

General Functions

SomeIpGetLastError

CAPL 函数 >> 以太网 >> SOME/IP IL >> SomeIpGetLastError

函数

语法
long SomeIpGetLastError();

功能

该函数用于检查 SOME/IP IL 中最后调用的函数是否执行成功。调用此函数不会重置已保存的错误。若发生错误,可使用 SomeIpGetLastErrorText 函数读取详细错误描述。

参数

返回值

  • 0:最后调用的函数执行成功
  • 0:错误代码

可用性

  • 版本:8.1 及以上
  • 适用场景:仅适用于仿真/测试环境

示例

capl 复制代码
long retVal;
// 恢复消息发送
SomeIpILControlResume();
// 检查最后调用的函数是否执行正确
if((retVal = SomeIpGetLastError()) != 0)
{
  write("SOME/IP IL 发生错误:错误代码:%d", retVal);
} // if

SomeIpGetLastErrorText

CAPL 函数 >> 以太网 >> SOME/IP IL >> SomeIpGetLastErrorText

函数

语法
long SomeIpGetLastErrorText(dword bufferLength, CHAR buffer[]);

功能

用于获取 SOME/IP IL 中发生的最后一个错误的字符串描述。若最后调用的函数执行成功,返回值为 0。调用此函数不会重置已保存的错误文本。

参数

  • bufferLength:字符数量
  • buffer:接收错误文本的缓冲区

返回值

复制的字符数

可用性

  • 版本:8.1 及以上
  • 适用场景:仅适用于仿真/测试环境

示例

capl 复制代码
char buffer[1024];
// 恢复消息发送
SomeIpILControlResume();
// 检查最后调用的函数是否执行正确
if((SomeIpGetLastErrorText(elcount(buffer), buffer)) != 0)
{
  write("SOME/IP IL 发生错误:%s", buffer);
} // if

SomeIpGetSecurityValidationState

CAPL 函数 >> 以太网 >> SOME/IP IL >> SomeIpGetSecurityValidationState

函数

语法
long SomeIpGetSecurityValidationState(dword messageHandle);

功能

返回接收到的 SOME/IP 消息的安全验证状态。

参数

  • messageHandle:接收到的 SOME/IP 消息句柄(例如,参见 OnSomeIpMessage

返回值

  • -1:消息无效
  • 0:消息未加密
  • 1:消息有效
  • 1:错误代码

可用性

  • 版本:10.0 SP4 及以上
  • 适用场景:仅适用于仿真/测试环境

SomeIpSetProperty

CAPL 函数 >> 以太网 >> SOME/IP IL >> SomeIpSetProperty

函数

语法

capl 复制代码
long SomeIpSetProperty(char propertyName[], int64 value);          // 形式 1
long SomeIpSetProperty(dword objHandle, char propertyName[], int64 value); // 形式 2
long SomeIpSetProperty(dword objHandle, char propertyName[], char value);  // 形式 3
long SomeIpSetProperty(char propertyName[], byte buffer[]);        // 形式 4
long SomeIpSetProperty(char propertyName[], dword bufferLength, byte buffer[]); // 形式 5

功能

通过属性配置 SOME/IP IL 的行为。属性可针对当前总线上下文或特定对象(服务、事件组、事件)设置。默认属性值如下表所示。

参数

  • propertyName:待设置的属性名称
  • objHandle:服务、事件组或事件的句柄
  • value:属性的新值
  • buffer:包含属性新值的字节缓冲区
  • bufferLength:从缓冲区复制的字节数

属性说明

名称 默认值 描述
当前总线上下文
ClientId 随机值 SOME/IP 客户端 ID,包含在每条消息中
MaxUDPMessageLength 1416 SOME/IP 消息的最大允许大小(最大值:65519)
SDMulticastIp 239.192.255.251 IPv4 服务发现(SD)多播目标地址
SDMulticastPort 30490 SD 多播端口
SDMulticastIPv6 FF02::1 IPv6 服务发现多播目标地址
VlanId --- 可在 on preStart 中设置,用于选择当前总线上下文的 VLAN
UseSD 1 设为 0 时,后续创建的服务实例和事件组不注册到服务发现(仅 CAPL API 创建的服务有效)
SendMagicCookie 1 启用 TCP 连接的魔数(Magic Cookie)发送(每 10 秒发送一次)
服务实例(提供)
MajorVersion 1 实现接口的主版本号
MinorVersion 0 实现接口的次版本号
SDCyclicOfferDelay 1000 周期发送间隔(毫秒)
SDConfigurationString --- OfferService 发送的配置字符串
服务实例/事件组(消费)
SDCyclicRequestDelay 1000 周期请求间隔(毫秒)
事件组(提供)
MulticastIp 239.192.255.251 事件组多播 IPv4 地址
MulticastPort 30490 事件组多播端口
MulticastThreshold 0 多播阈值(0:仅单播;1:首个客户端即多播;n:第 n 个客户端触发多播)
事件/字段(提供)
CycleTimeMs 0 循环发送周期(仅用于测试流量生成)
AliveCounterIncrementationOn 1 启用消息发送时的存活计数器自增(需厂商特定数据库支持)
UpdateCRCAndLengthOn 1 启用发送时的 CRC、长度及 Data-ID 更新(需厂商特定数据库支持)

返回值

  • 0:函数执行成功
  • 0:错误代码

可用性

  • 形式 1-3:8.1 及以上
  • 形式 5:9.0 及以上
  • 形式 4:9.0 SP2 及以上

示例

capl 复制代码
dword appEndpointHandle;
dword serviceHandle;
appEndpointHandle = SomeIpOpenLocalApplicationEndpoint(kUDP, 30501);
serviceHandle = SomeIpCreateConsumedServiceInstance(appEndpointHandle, 1 /*serviceId*/, 1 /*instanceId*/);
SomeIpSetProperty(serviceHandle, "MajorVersion", 2);

SomeIpSetVerbosity

CAPL 函数 >> 以太网 >> SOME/IP IL >> SomeIpSetVerbosity

函数

语法
long SomeIpSetVerbosity(long verbosity);

功能

设置 SOME/IP IL 消息在输出窗口(Write Window)中的详细程度。

参数
verbosity:详细级别

  • 0:静默模式(不输出消息)
  • 1:错误模式(仅输出错误消息,默认)
  • 2:警告模式(输出警告和错误消息)
  • 3:信息模式(输出信息、警告和错误消息)

返回值

  • 0:函数执行成功
  • 0:错误代码

可用性

  • 版本:8.1 及以上
  • 适用场景:仅适用于仿真/测试环境

示例

capl 复制代码
on key '0'
{
  char buffer[1024];
  // 设置详细级别为"静默"模式
  if(SomeIpSetVerbosity(0) == 0)
  {
    write("SOME/IP IL 详细级别已设置为"静默"模式");
  } // if
  else
  {
    // 检查最后调用的函数是否执行正确
    SomeIpGetLastErrorText(elcount(buffer), buffer);
    write("SOME/IP IL 详细级别设置错误:%s", buffer);
  } // else
}
相关推荐
小李独爱秋4 小时前
计算机网络经典问题透视:常规密钥体制与公钥体制最主要的区别是什么?—— 一文带你从“钥匙”看懂现代密码学核心
服务器·网络·tcp/ip·计算机网络·密码学
几道之旅5 小时前
websocket.WebSocketApp是全双工的吗?
网络·websocket·网络协议
西幻凌云7 小时前
TCP 解析:头部格式、三次握手与四次挥手
网络协议·tcp/ip·udp·tcp·三次握手·四次挥手·传输层
7ACE10 小时前
Wireshark TS | 超时重传时间不翻倍
网络协议·tcp/ip·wireshark
微爱帮监所写信寄信11 小时前
微爱帮监狱寄信写信工具照片高清处理技术架构
开发语言·人工智能·网络协议·微信·php
li星野11 小时前
TCP 套接字+TLS+HTTP 基本认证
网络协议·tcp/ip·http
爱学java的ptt14 小时前
TCP详解
网络·网络协议·tcp/ip
阿拉伯柠檬15 小时前
传输层协议TCP(一)
linux·网络·网络协议·tcp/ip·面试
wanzhong233316 小时前
开发日记2-创建http文件测试http接口
网络·网络协议·http
YJlio16 小时前
PsPing 学习笔记(14.2):TCP Ping——端口连通性与服务在线性秒级体检
笔记·学习·tcp/ip