IL 是 Interaction Layer 的缩写,也就是主要针对于交互层。更多的是跟 dll 文件会使用的一些封装函数。在CAN网络中,交互层负责管理传输模型并执行以下任务:
1. 提供基于信号的接口。
2. 根据信号和消息的发送类型控制消息的传输。
3. 提供根据请求发送消息的可能性(使用信号或消息作为触发对象)。
4. 提供故障注入接口以影响消息的发送。
由于交互层的函数较多,而且在当前阶段我并没有对该系列函数有多的涉及,所以这里主要是对各种函数进行一个汇总。具体的函数与功能,请查看下表:
Interaction Layer Functions | |||
---|---|---|---|
Module | Name | Description | Comment |
Control | ILActivateClamp15 ILDeactivateClamp15 | 将夹具15的状态(有效/无效)转发给NM(如果存在) | - |
ILConfigureNMNotifications | 允许交互层和NM模块耦合 | 该函数可以随时调用 | |
ILControlInit | 交互层初始化 | 只能在 on preStart 中使用,防止 IL 自动启动 | |
ILControlResume | 周期性重启 | 只能在函数 ILControlWait 之后使用 | |
ILControlSimulationOff | IL 模拟停止 | 要重新启动 IL 的仿真,使用函数 ILControlSimulationOn | |
ILControlSimulationOn | IL 模拟开始 | 通过该函数恢复至函数 ILControlSimulationOff 停止之前的状态。 | |
ILControlStart | 周期性启动 | - | |
ILControlStop | 发送完全停止 | 这种状态下,交互层不起作用 | |
ILControlWait | 循环发送停止 | 仅在ILControlResume之后才继续循环发送 | |
ILSetAutoStartParam | 测量开始时定义交互层的行为 | 如果完全使用,则必须在 on preStart 事件中调用该函数 | |
ILSetOperationMode | 交互层中设置特定的操作模式 | 不同函数结构的作用不尽相同 | |
Maintenance | ILErrno | 返回最后的错误代码 | - |
ILSetResultString | 将传输的错误代码转换为文本 | - | |
Message Handling | ILControlMsg | 允许操纵 Message 的发送行为 | - |
ILResetAllCANFDParam | 将所有 Message 的 CAN FD 参数重置为数据库值 | - | |
ILSetCANFDParam | 设定特定 Message 的 CAN FD 参数 | - | |
ILSetMsgEvent | 将传送的消息直接发送到总线(网络激活) | 发送类型将被忽略 | |
Fault Injection and Disturbance | ILFaultInjectionDisableMsg | 禁止发送消息 | 函数 ILSetMsgEvent 例外 |
ILFaultInjectionEnableMsg | 启用发送消息 | - | |
ILFaultInjectionResetAllFaultInjections | 重置所有节点的 Message 的故障 | - | |
ILFaultInjectionResetMsgCycleTime | 重置 Message 的循环时间 | 在使用 ILFaultInjectionSetMsgCycleTime 设置循环时间之后 | |
ILFaultInjectionResetMsgDlc | 将 Message 的DLC重置 | 在使用 ILFaultInjectionSetMsgDlc 设置 DLC 之后 | |
ILFaultInjectionResetMsgLength | 将 Message 的长度重置 | 在使用 ILFaultInjectionSetMsgLength 设置 Message 长度之后 | |
ILFaultInjectionSetMsgCycleTime | 重新设置 Message的循环时间 | - | |
ILFaultInjectionSetMsgDlc | 重新设置 Message 的 DLC | - | |
ILFaultInjectionSetMsgLength | 重新设置 Message 的 长度 | - | |
Signal Handling | ILSetEvent | 将传送的信号直接发送到总线(网络激活) | 发送类型将被忽略 |
ILSetResultString | 将传输的错误代码转换为文本 | - | |
OEM Package based on Fault Injection Functions (CAN/Flexy 特有) | ILCalculateChecksum | 根据有效载荷计算相应的 CRC 校验和 | 使用 PDU 名称从数据库中计算出正确的偏移量 |
ILDisableMsg | 禁用 Message 发送 | 调用函数 ILSetMsgEvent 可继续发送 | |
ILEnableMsg | 启用 Message 发送 | - | |
ILEnableTimingCyclic | 控制 PDU 的循环周期 | 影响指定 CANoe 交互层的仿真节点 | |
ILEnableTimingEvtTrg | 控制 PDU 的事件触发时间 | 影响指定 CANoe 交互层的仿真节点 | |
ILEnableTimingImmed | 控制 PDU 的即时时序 | 影响指定 CANoe 交互层的仿真节点 | |
Functions for Test Setup and Simulation Setup | ILNodeControlMsg | 影响特定 CANoe 交互层的模拟节点的特定消息的发送 | param1 和 param2 参数的含义取决于参数控制 |
ILNodeControlResume | 重新启动指定模拟节点的交互层并将启用消息的循环发送 | 指定的节点必须在当前总线中,否则该函数无效并返回错误。 | |
ILNodeControlSimulationOff | 停止对指定模拟节点的交互层的模拟 | 该状态下,交互层除了再次打开模拟之外不会对任何功能做出反应 指定的节点必须在当前总线中否则该函数无效并返回错误 | |
ILNodeControlSimulationOn | 启动指定仿真节点交互层的仿真 | IL 处于与停止前相同的状态 指定的节点必须在当前总线中,否则该函数无效并返回错误 | |
ILNodeControlStart | 消息的循环发送开始,可设置信号 | 指定的节点必须在当前总线中,否则该函数无效并返回错误 | |
ILNodeControlStop | 消息的循环发送停止,且无法设置信号 | 指定的节点必须在当前总线中,否则该函数无效并返回错误 | |
ILNodeControlWait | 停止指定模拟节点的交互层 消息的循环发送停止,但可以设置信号 | 指定的节点必须在当前总线中,否则该函数无效并返回错误 | |
ILNodeDisturbAllNodesUpdateBits | 修改当前总线中所有节点的信号/信号组的所有 ub 位 | 可注入故障,且对指定 CANoe 交互层的仿真节点 | |
ILNodeDisturbAllUpdateBits | 修改节点的信号/信号组的所有 ub 位 | 可注入故障,且对指定 CANoe 交互层的仿真节点 | |
ILNodeDisturbChecksum | 使用可配置的值对 Checksum 造错 | 可注入故障,且对指定 CANoe 交互层的仿真节点 | |
ILNodeDisturbCounter | 使用可配置的值对 Counter 造错 | 可注入故障,且对指定 CANoe 交互层的仿真节点 | |
ILNodeDisturbPduUpdateBit | 修改信号组的 ub 位 | 可注入故障,且对指定 CANoe 交互层的仿真节点 | |
ILNodeDisturbSignalGroupUpdateBit | 使用可配置值对信号组的 ub 位进行配置 | 可注入故障,且对指定 CANoe 交互层的仿真节点 | |
ILNodeDisturbSignalUpdateBit | 使用 0/1 的值对信号组进行 ub 位配置 | 可注入故障,且对指定 CANoe 交互层的仿真节点 | |
ILNodeSetAllNodesOperationMode | 在当前总线中,对所有节点设置特定的操作模式 | - | |
ILNodeSetOperationMode | 在交互层设置特定的操作模式 | 函数的格式不同,会存在细微偏差 | |
ILNodeSetSigGroupOperationMode | 为指定的信号组设置交互层中的特定操作模式 | - | |
ILNodeSetPDUTimingCyclic | 覆盖数据库中定义的循环周期 | 并行存在两个周期(假和真),需根据 PDU 的当前传输模式进行选择 | |
ILNodeResetPDUTimingCyclic | 将循环周期重置为数据库中的值 | 并行存在两个周期(假和真),需根据 PDU 的当前传输模式进行选择 | |
ILNodeSetPDUTimingEvent | 覆盖数据库中定义的事件时间 | 并行存在两个周期(假和真),需根据 PDU 的当前传输模式进行选择 | |
ILNodeResetPDUTimingEvent | 重置数据库中定义的事件时间 | 并行存在两个周期(假和真),需根据 PDU 的当前传输模式进行选择 | |
ILNodeSetPDUAsrTxMode | 覆盖 PDU 的当前有效传输模式 | 传输模式可以是 False 或 True 当前传输模式由 PDU 所有信号值的当前数据过滤条件值定义 | |
ILNodeResetPDUAsrTxMode | 重置 PDU 的当前有效传输模式 | 将当前有效传输模式重置为由或所有信号的所有数据过滤器定义的条件 | |
Callback Interface | applILTxPending | 在 IL 向总线发送消息之前,可以选择调用此回调 | 可以阻止消息的发送或更改消息的数据 |
applILTxRequestConsumed | 在 IL Clamp15 状态已被 ILActivateClamp15 启用或任何唤醒允许信号被发送后,然后可选地调用此函数 | 总线 NM 睡眠定时器应该重新启动 | |
applILTxRequestPending | 如果 IL Clamp15 状态由 ILActivateClamp15 启用或任何唤醒允许信号发生更改,则可选地调用此函数 | 总线应由网络管理 DLL 请求 |