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
}
相关推荐
treesforest9 小时前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全
程序员mine9 小时前
HTTPS-TLS加密与证书完全指南(中)
网络协议·https·ssl
之歆10 小时前
现代 HTTP 客户端深度解析:Fetch 与 Axios
chrome·网络协议·http
江华森11 小时前
TCP/IP 协议栈实战 — 7 个实验详解
网络·tcp/ip·智能路由器
酉鬼女又兒12 小时前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php
dog25012 小时前
不要再继续优化 TCP
网络协议·tcp/ip·php
程序员mine12 小时前
HTTPS-TLS加密与证书完全指南(上)
网络协议·https
Shepherd061913 小时前
【IT 运维】Apache 使用 mod_remoteip 恢复 Cloudflare 后的真实访客 IP
运维·tcp/ip·apache
VidDown14 小时前
视频帧率技术详解:从 24fps 到 120fps,帧率如何影响你的观看体验?
网络·网络协议·编辑器·音视频·视频编解码·视频
C++ 老炮儿的技术栈14 小时前
Qt工控实战:自研机器人TCP长连接客户端(粘包处理+心跳保活+自动重连完整源码解析)
qt·tcp/ip·机器人