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
}
相关推荐
ALex_zry4 小时前
Consul 的使用搭建注意事项
网络协议·rpc·consul
车载测试工程师4 小时前
CAPL学习-SOME/IP交互层-服务器端API函数
网络协议·tcp/ip·以太网·capl·canoe
北京耐用通信4 小时前
告别调试噩梦:耐达讯自动化实现EtherNet/IP转DeviceNet网关即插即用
人工智能·物联网·网络协议·自动化·信息与通信
Arva .4 小时前
为什么需要四次挥手
网络·tcp/ip
llilian_164 小时前
微型低功耗原子钟筑牢多行业时频基准 低功耗原子钟
人工智能·单片机·嵌入式硬件·网络协议·其他·51单片机
老蒋新思维4 小时前
创客匠人万人峰会解码:AI+IP 能力裂变,知识变现告别 “单点依赖” 时代
大数据·网络·人工智能·tcp/ip·创始人ip·创客匠人·知识变现
就叫飞六吧4 小时前
HTTP Basic认证完全指南
网络·网络协议·http
石牌桥网管4 小时前
Linux ip 命令教程
linux·运维·tcp/ip
Tandy12356_7 小时前
手写TCP/IP协议——IP层输出处理
c语言·网络·c++·tcp/ip·计算机网络