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
}