ArcCore重構-打通Can各層ID配置


 
基於官方arc-stable-9c57d86f66be,AUTOSAR版本3.1.5
 
ArcCore中Communication Service中各層都有許多ID的配置,如Can driver中有CanObjectId,
CanIf中有CANIF_ID,CanTp中又有CANTP_ID,其他的PDUR_ID, COM_ID等等,紛繁復雜。
 
先來看看各層的配置:
Can Driver:
 
CanIf:
CanTp:
CanTp中最為明顯,各種ID齊上場,眼花繚亂,很難理清楚各個ID之間的關系。這些ID又被當做參數傳遞給上層或者下層,或者被當做數組索引號來索引數組,配置時很難一一對應起來。
有沒有什么辦法簡化呢?
 
Communication各層次交互圖如下:
 
跟蹤代碼可以發現,除了Can driver之外,其他各層之間的API,都是用PduId為參數指代要操作的PDU。雖然這些PduId在每一層都有自己的對應關系,但在各層之間指代的是同一個PDU類型,如COM -> PDUR -> CANTP -> CANIF -> CAN DRV,每一層有自己的ID,但是指代其實是同一個Pdu類型。
 
所以可以打通各層的PduId,統一使用,各層的配置數組索引號根據統一的PduId編號進行映射,在內部使用該映射即可。
CanIf: PduId_to_CanIfPduConfig_Index_Map;
CanTp: PduId_to_CanTpNSdu_Index_Map;
PduR: PduId_to_RoutingPath_Index_Map;
這些里面的PduId都是統一定義的,各層對應到各自的配置索引號,以供使用。
如:
 
 
CanId & PduId
另外一個需要注意的是,要區分Can Id和 PduId。
CanId: 實際發送接收時使用的ID;編號為某PduId的Pdu最終通過Can發送時使用的CanId。
PduId: Pdu類型的編號,用以指代一個Pdu類型。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM