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
}
相关推荐
HelloWorld工程师7 小时前
新手如何快速申请SSL通配符证书...
网络协议·https·ssl
姚不倒12 小时前
F5 SSL Profile 证书卸载深入篇
运维·网络协议·负载均衡·ssl·f5
念何架构之路16 小时前
moby-http-api-server
网络·网络协议·http
KaMeidebaby16 小时前
卡梅德生物技术快报|纳米抗体技术全套实操流程:AFB1 全合成文库淘选 + 分子对接定点突变参数手册
人工智能·python·tcp/ip·算法·机器学习
云栖梦泽在16 小时前
原生 IP、机房 IP、住宅 IP、广播 IP 有何不同?从网络身份到 ASN 识别的技术科普
网络·网络协议·tcp/ip·性能优化
从零开始的代码生活_18 小时前
Linux epoll 多路转接详解
linux·运维·网络·后端·tcp/ip·计算机网络·php
魔尔助理顾问18 小时前
HTTP Response中的CORS Headers
网络·网络协议·http
Zhan86112418 小时前
西班牙股票行情数据API的WebSocket接入:IBEX35指数实时推送与数据清洗
python·websocket·网络协议
yqcoder19 小时前
什么是 Math 对象
网络·网络协议·udp
I'm a winner1 天前
【IP核】 Xilinx FPGA LVDS 高速接口,含验证工程与板级测试用例
tcp/ip·fpga开发·测试用例