ArcCore重构-打通Can各层ID配置
2024-09-29 03:14:26
基于官方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类型。
最新文章
- Sprint第二个冲刺(第九天)
- U盘10分钟安装linux系统
- Nginx/LVS/HAProxy负载均衡软件的优缺点详解
- tvm install
- HDU5418.Victor and World(状压DP)
- ios开发 AFNetworking的基本使用方法
- MVC整个样例的源代码
- iOS网络通信http之NSURLConnection
- SQL server 用命令行更改数据库
- 028hibernate缓存(性能优化策略)
- spring mvc 经常出现的错误
- Java面向对象 继承(上)
- webAPP踩坑记录
- property干嘛的
- ASP.NET Zero--前期要求
- js图片预加载与延迟加载
- Shell工具| 流程控制
- 11. Container With Most Water (JAVA)
- Python2与python3中字符串的区别
- Django的AutoField字段