基于官方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类型。

最新文章

  1. Sprint第二个冲刺(第九天)
  2. U盘10分钟安装linux系统
  3. Nginx/LVS/HAProxy负载均衡软件的优缺点详解
  4. tvm install
  5. HDU5418.Victor and World(状压DP)
  6. ios开发 AFNetworking的基本使用方法
  7. MVC整个样例的源代码
  8. iOS网络通信http之NSURLConnection
  9. SQL server 用命令行更改数据库
  10. 028hibernate缓存(性能优化策略)
  11. spring mvc 经常出现的错误
  12. Java面向对象 继承(上)
  13. webAPP踩坑记录
  14. property干嘛的
  15. ASP.NET Zero--前期要求
  16. js图片预加载与延迟加载
  17. Shell工具| 流程控制
  18. 11. Container With Most Water (JAVA)
  19. Python2与python3中字符串的区别
  20. Django的AutoField字段

热门文章

  1. Oracle的三种循环
  2. java基础篇 之 foreach探索
  3. OpenCV Error: Unspecified Error(The Function is not implemented)
  4. 1018 Public Bike Management (30分) 思路分析 + 满分代码
  5. 深入理解JS中的对象(二):new 的工作原理
  6. css段落样式
  7. 二、YARN
  8. python3.x 基础四:json与pickple
  9. MVC4.0接口学习
  10. python基本数据类型:字符串及其方法(一)