COM的功能主要就是两个:
把IPDU内的signal提取出来提供给SWC使用,把SWC发送的signal拷贝到IPDU buffer内
所以,COM的关键字是 signal, signal group, IPDU, IPDU group
Signal group 是为了保证 Complex Data Types 的数据一致性IPDU group 是为了实现partial networking 发送数据:发送流程是, SWC更新IPDU buffer内部的signal数据,然后com把IPDU发送出去
这里有两大块可以配置的地方:
1. PDU内signal的更新:
如果是普通的signal,SWC调用Com_SendSignal函数会直接改变IPDU buffer内相应signal的值如果是属于signal group下的signal,SWC调用Com_SendSignal函数则只会改变shadow buffer里面的值,SWC调用Com_SendSignalGroup函数时,才会把shadow buffer 复制过去改变IPDU buffer内相应signal的值signal group的好处是,在对Complex Data Types操作时可以保证IPDU buffer内数据的一致性。也就是说SWC可以先调用Com_SendSignal, 对signal group下的signal一一赋值,然后再调用Com_SendSignalGroup统一发送出去
2. PDU的发送:pdu ComTxModeMode + signal ComTransferPropety
PDU【direct】+ Signal 【triggered】: PDU内的signal一被更新就发送PDU【periodic】+ Signal 【pending】: PDU被自动定期发送出去具体函数
Com_SendSignal(signal ID, *SignalDataPtr)Com_SendSignalGroup(signalgroup ID)SWC调用这两个函数去把signal的信息更新到IPDU里面,根据PDU的ComTxModeMode 和 signal/signal group 的ComTransferPropety 属性 共同确定PDU什么时候被发送出去
PDU: 【ComTxModeMode】
periodic: Com_Mainfunction will trigger the IPDU transmitdirect: IPDU transmit will be triggered immediately by triggered signalmixed: direct + periodic 的完全融合,即direct 又 periodicsignal: 【ComTransferPropety】
pending: A write access to this signal never triggers the transmission of the corresponding I-PDUtriggered: a write access to this signal can trigger the transmission of the corresponding IPDU(Depending on the IPDU transmission mode) 接收数据:Com_RxIndication更新IPDU buffer内的signal数据,然后SWC去接收signal
IPDU buffer 内 signal 的读取:
如果是普通的signal,SWC直接调用Com_ReceiveSignal函数即可完成signal读取如果是signal group下的signal,SWC需要先调用Com_ReceiveSignalGroup函数,实现把signal从IPDU buffer 复制到 shadow buffer, 然后再调用Com_ReceiveSignal函数即可完成signal读取 杂:ComSignal里面可以配置signal的endianness
Ipdu group:
BswM的action 里面可以去触发 Ipdu group 的 发送,感觉是跟PN有关 【在某些特定的情况下,让BswM去关闭特定的Ipdu group 的 发送 和接收】
I-PDU group 在BswM里面 enable,只有被enable的才能被发送/接收
I-PDU group 是PN的一种表现方式
发送/接收 数据完成后的 通知:
pdu:
deferred: Com_RxIndication/ Com_TxConfirmation will set a flag, Com_Mainfunction will check the flag and notifies RTE via configured ComNotifications function immediate: Com_RxIndication/ Com_TxConfirmation immediately notifies RTE via configured ComNotifications function for the signals and signal groupsComNotifications function 是在ComIPDU里面用户自己配置的