zoukankan      html  css  js  c++  java
  • 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类型。

     

  • 相关阅读:
    python判断字典中key是否存在
    获取redis中所有的key,清空整个 Redis 服务器的数据
    python redis模块详解
    Windows中redis的下载及安装、设置
    .htaccess
    python介绍
    vi和vim
    其他
    Linux系统相关命令
    Linux用户权限常见命令
  • 原文地址:https://www.cnblogs.com/wjcdx/p/9038613.html
Copyright © 2011-2022 走看看