优化无线/有线CAN,以及控制指令解析
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# CAN0/CAN1 共享语义协议清单
|
||||
|
||||
CAN 语义控制的单一来源是:
|
||||
|
||||
- `config/can_protocol/semantic_protocol.json`
|
||||
|
||||
该清单同时定义 CAN0/CAN1 的语义语法、能力映射、帧 ID、经典 CAN/CAN FD、BRS、DLC、基础帧模板、固定或动态重复策略、周期和反馈 ID。需要实时状态参与的窗口位置、遮阳帘位置、座椅相对移动和记忆位置仍由命名的 `special_handler` 执行闭环算法;这些算法不得另行定义帧 ID、重复节拍或反馈来源。
|
||||
|
||||
## 生成物
|
||||
|
||||
不要直接修改以下文件:
|
||||
|
||||
- `src/cognitive_agent/generated/can_semantic_protocol.py`
|
||||
- `tools/can_read_trans/generated/can_semantic_protocol.hpp`
|
||||
|
||||
更新清单后执行:
|
||||
|
||||
```bash
|
||||
make can-protocol-generate
|
||||
```
|
||||
|
||||
只检查生成物是否同步:
|
||||
|
||||
```bash
|
||||
make can-protocol-check
|
||||
```
|
||||
|
||||
`make validate`、`make test` 和 `make can-read-trans-test` 都会检查或重新生成协议视图。生成内容携带规范化源文件的 SHA-256,便于确认 Python 与 C++ 来自同一版本。
|
||||
|
||||
## 运行时接入
|
||||
|
||||
- Python CAN1 `NativeCanRuntime` 从生成模块取得支持能力、帧格式、帧 ID、重复策略和反馈 ID。
|
||||
- Python CAN0 `T2GSeatCompiler` 在每个物理命令中附带生成的协议契约;`HardwareSeatExecutor` 会在发送前校验矩阵编码的 ID、DLC 和格式,并使用契约中的反馈 ID。
|
||||
- C++ `can_read_trans` 使用生成头文件匹配 CAN0/CAN1 白名单、打印帮助、取得 CAN0 传输元数据和 CAN1 单风口精确 payload。其自检还会将生成模板与已验证的状态闭环编码器交叉比对。
|
||||
|
||||
## 修改规则
|
||||
|
||||
1. 仅在协议证据明确时修改帧模板、重复次数或反馈 ID。
|
||||
2. 新增命令时必须同时填写 `patterns`、`frames`、`repeat` 和 `feedback_ids`。
|
||||
3. 有状态序列使用 `special_handler`,但传输元数据仍放在共享清单中。
|
||||
4. 先执行离线生成和测试;真实总线验证必须另外明确授权,且分别记录 SDK 提交、CAN ACK、应用反馈和实体动作。
|
||||
Reference in New Issue
Block a user