AvbGetLastError
CAPL 函数 >> 以太网 >> AVB IL >> AvbGetLastError
函数
语法
dword AvbGetLastError();
功能
该函数用于检查 AVB IL 的上一个调用函数是否成功执行。调用此函数不会重置已保存的错误。若发生错误,可通过 AvbGetLastErrorText 函数读取详细的错误描述。
参数
无
返回值
- 0:上一个调用函数执行成功。
-
0:错误代码。
可用性
- 版本:8.2 SP2
- 限制:仅适用于仿真/测试设置
示例
capl
dword retVal;
dword listenerHandle;
// 打开监听器
listenerHandle = AvbOpenListener();
// 检查上一个函数是否成功执行
if ((retVal = AvbGetLastError()) != 0)
{
write("AVB IL 发生错误:错误代码:%d", retVal);
}
AvbGetLastErrorText
CAPL 函数 >> 以太网 >> AVB IL >> AvbGetLastErrorText
函数
语法
dword AvbGetLastErrorText(dword bufferLength, char buffer[]);
功能
以字符串形式检索 AVB IL 中发生的最后一个错误。调用此函数不会重置已保存的错误文本。
参数
bufferLength:字符数量。buffer:接收错误文本的缓冲区。
返回值
复制的字符数。
可用性
- 版本:8.2 SP2
- 限制:仅适用于仿真/测试设置
示例
capl
char buffer[1024];
dword listenerHandle;
// 打开监听器
listenerHandle = AvbOpenListener();
// 检查上一个函数是否成功执行
if ((AvbGetLastErrorText(elcount(buffer), buffer)) != 0)
{
write("AVB IL 发生错误:%s", buffer);
}
AvbSetProperty
CAPL 函数 >> 以太网 >> AVB IL >> AvbSetProperty
函数
语法
capl
dword AvbSetProperty(char propertyName[], long value); // 形式 1
dword AvbSetProperty(char propertyName[], qword value); // 形式 2
dword AvbSetProperty(dword objHandle, char propertyName[], long value); // 形式 3
dword AvbSetProperty(dword objHandle, char propertyName[], dword length, byte value[]); // 形式 4
dword AvbSetProperty(dword objHandle, char propertyName[], qword value); // 形式 5
功能
可通过属性配置 AVB IL 的行为。属性可针对当前总线上下文(形式 1-2)或特定对象(如 talker,形式 3-4)进行设置。属性默认值如下表所示。
参数
propertyName:要设置的属性名称。
| 属性名称 | 默认值 | 描述 |
|---|---|---|
| 当前总线上下文 | ||
| StreamReservation | 1 | 不支持流预留,需将此属性设为 0。 |
| 监听器/发送器 | ||
| VlanId | 2 | 用于发送或接收 AVB 数据包的 VLAN ID。 |
| 监听器 | ||
| RtpPort | 1024 | UDP 上 RTP 使用的本地客户端端口(RTCP 端口比 RTP 端口大 1)。 |
| RtspAddress | 未设置/0 | TCP 上 RT(S)P 使用的远程服务器地址;未设置时,调用 AvbListen 不尝试连接 RTSP 服务器。 |
| 发送器 | ||
| FramesPerPacket | 由 SR 类和帧率推导(若可能) | 每个 AVTPDU 的固定帧数。 |
| VlanPriority | 2 | 发送 AVB 数据包使用的 VLAN 优先级。 |
| PresentationTimeOffset | 由 SR 类和帧率推导(若可能) | 演示时间偏移量(单位:ns),即演示时间与样本移交至 MAC 出口缓冲区的时间差。需考虑网络 SR 类的最大传输时间(见 IEEE 1722-2011 图 6)。 |
| RtpPayloadType | 由媒体类型自动推导 | RTP 负载类型,描述 RTP 流负载样本的媒体编码格式。可通过本属性手动设置。 |
objHandle:发送器或监听器的句柄。length:传递的 value 缓冲区长度。value:属性的新值。
返回值
- 0:函数执行成功。
-
0:错误代码。
可用性
- 形式 1、3:8.2 SP2
- 形式 2、4、VlanId 属性:10.0
- RtspAddress 属性:10.0 SP3
- 形式 5、PresentationTimeOffset 属性:12.0 SP4
- RtpPayloadType 属性:14
示例
capl
dword talkerHandle;
talkerHandle = AvbOpenTalker();
AvbSetProperty(talkerHandle, "FramesPerPacket", 64);
AvbSetVerbosity
CAPL 函数 >> 以太网 >> AVB IL >> AvbSetVerbosity
函数
语法
dword AvbSetVerbosity(long verbosity);
功能
设置"输出窗口"中 AVB IL 消息的详细级别。
参数
verbosity:详细级别:
- 0:静默模式(不输出消息)
- 1:错误模式(仅输出错误消息,默认)
- 2:警告模式(输出警告和错误消息)
- 3:信息模式(输出信息、警告和错误消息)
返回值
复制的字符数。
可用性
- 版本:8.2 SP2
- 限制:仅适用于仿真/测试设置
示例
capl
on key '0'
{
char buffer[1024];
// 设置详细级别为"静默"模式
if (AvbSetVerbosity(0) == 0)
{
write("AVB IL 详细级别已设置为"静默"模式");
}
else
{
// 检查上一个函数是否成功执行
AvbGetLastErrorText(elcount(buffer), buffer);
write("设置 AVB IL 详细级别失败:%s", buffer);
}
}
PtpSetProperty
CAPL 函数 >> 以太网 >> AVB IL >> PtpSetProperty
函数
语法
capl
long PtpSetProperty(char propertyName[], long value); // 形式 1
long PtpSetProperty(char propertyName[], dword length, byte value[]); // 形式 2
功能
通过属性配置 PTP 层行为。可静态配置仿真节点的端口角色,或预设时间感知终端站的配置(例如在 on prestart 事件中将 PortRole 设置为从站端口)。
参数
propertyName:要设置的属性名称。
| 属性名称 | 描述 |
|---|---|
| PortRole | 整数:0=自动选择(默认,由 BMCA 决定);1=主站端口;2=从站端口;3=被动端口;4=禁用端口。>0 时跳过 BMCA。 |
| PortNumber | 整数(1-65535,默认 1):主站端口发送 Sync 和 Sync-follow-up 消息时使用的端口号。 |
| LogSyncInterval | 整数(-128~127,默认 -3=0.125s):发送 Sync 消息的时间间隔。 |
| Priority1 | 整数(0~0xFF,默认 0xFA):系统标识的 Priority1 值。 |
| ClockClass | 整数(0~0xFF,默认 0xF8):系统标识的 ClockClass 值。 |
| ClockAccuracy | 整数(0~0xFF,默认 0xFE):系统标识的 ClockAccuracy 值。 |
| OffsetScaledLogVariance | 整数(0~65535,默认 1):系统标识的 OffsetScaledLogVariance 值。 |
| Priority2 | 整数(0~0xFF,默认 0xF8):系统标识的 Priority2 值。 |
| VlanId | 整数:0=不使用 VLAN(默认);1~4094=VLAN ID。 |
| VlanPriority | 整数(0~7,默认 0):VLAN 优先级(PCP)。 |
| RequestLogSyncInterval | 整数(-127~125=请求的同步间隔;127=停止发送同步消息;126=重置间隔;-128=不修改)。不可在 on prestart 中设置。 |
| RequestLogPdelayReqInterval | 整数(-127~125=请求的传播延迟间隔;127=停止发送延迟测量消息;126=重置间隔;-128=不修改)。不可在 on prestart 中设置。 |
| RequestLogAnnounceInterval | 整数(-127~125=请求的宣告间隔;127=停止发送宣告消息;126=重置间隔;-128=不修改)。不可在 on prestart 中设置。 |
| DestinationAddress(CANoe 11.0+) | PTP 消息的目标 MAC 地址。需使用字节数组类型(长度=6,网络字节序);默认地址为 01:80:C2:00:00:0E。 |
| LogPdelayReqInterval | 整数(-128~127,默认 0=1s):发送 Pdelay_Req 消息的时间间隔。 |
| LogAnnounceInterval | 整数(-128~127,默认 0=1s):发送 Announce 消息的时间间隔。 |
length:属性(数组)的字节大小。value:属性的新值。
返回值
- 0:函数执行成功。
- ≠0:错误代码。
可用性
- 形式 1:9.0
- 形式 2:11.0
示例
capl
on preStart
{
// 将端口角色设置为从站
if (PtpSetProperty("PortRole", 2) != 0)
{
Stop();
return;
}
}
PtpSimulationTimespanFromPtpTimespan
CAPL 函数 >> 以太网 >> AVB IL >> PtpSimulationTimespanFromPtpTimespan
函数
语法
int64 PtpSimulationTimespanFromPtpTimespan(qword ptpTimespan);
功能
返回与 PTP 时间跨度对应的仿真时间跨度(时间跨度为两个时间值的差值)。
参数
ptpTimespan:PTP 时间跨度(单位:ns)。
返回值
仿真时间跨度(单位:ns)。
可用性
- 版本:11.0
- 限制:仅适用于仿真/测试设置
PtpTimeFromSimulationTime
CAPL 函数 >> 以太网 >> AVB IL >> PtpTimeFromSimulationTime
函数
语法
qword PtpTimeFromSimulationTime(int64 simulationTime);
功能
返回与仿真时间对应的全局 PTP 时间。
参数
simulationTime:仿真时间(单位:ns)。
返回值
全局 PTP 时间(单位:ns)。
可用性
- 版本:8.2 SP2
- 限制:仅适用于仿真/测试设置
PtpTimeNow
CAPL 函数 >> 以太网 >> AVB IL >> PtpTimeNow
函数
语法
qword PtpTimeNow();
功能
返回当前全局 PTP 时间。
参数
无
返回值
当前全局 PTP 时间(单位:ns)。
可用性
- 版本:8.2 SP2
- 限制:仅适用于仿真/测试设置