rawbusmessage

This commit is contained in:
flower_linux
2026-04-15 11:16:27 +08:00
parent 4f2ada08c8
commit 94eec643de
23 changed files with 109 additions and 145 deletions

View File

@@ -70,7 +70,7 @@
输出:`frameKind = CompleteFrame` 的帧批次。
### 3.3 Stage 2/3/4解析 -> 过滤 -> 校验
### 3.3 Stage 2/3/4解析 -> 过滤 -> 校验(当前返回语义)
`runStages234(...)` 核心流程:
@@ -83,10 +83,13 @@
3. **Stage4 Validator**
- 最低校验当前为 `messageId` 非空。
4. **Transform/Enrich**
- 应用动态规则scale/offset/unit
- 仅对通过 filter+validator 的 `DOMMessage` 应用动态规则scale/offset/unit
- 写入 trace补充富化字段。
说明:当前 `runStages234` 只返回布尔结果,`EnrichedMessage` 由内部生成,后续可接持久化/发布环节。
说明(与代码一致):
- `runStages234``stage2Parser` 返回空时才返回 `false`
- 只要 `stage2Parser` 有消息,哪怕全部在 Stage3/Stage4 被跳过,当前实现仍返回 `true`
- `EnrichedMessage` 在内部生成,但尚未进入独立发布/持久化通道。
### 3.4 出口与有序保证
@@ -101,12 +104,12 @@
## 4. 错误与背压点
主要失败点及表现:
主要失败点及表现(按当前实现)
1. **内存池分配失败**`SerialDevice::onRead` 直接 `reportError(memory pool exhausted)`
2. **入口队列满**`enqueueIngress` 返回 false计入 drop。
3. **分帧/解析插件缺失或失败**对应帧在阶段中被丢弃
4. **过滤/校验失败**消息跳过,不进入下游
3. **分帧/解析/映射插件缺失或失败**`stage2Parser` 返回空,`runStages234=false`,该帧不进入 egress
4. **过滤/校验失败**对应 `DOMMessage` 被跳过(不做 enrich但该 `PipelineContext` 仍可能继续进入 egress只要 Stage2 非空)
5. **重排深度超限**`mergeDrop` 增加并告警。
---
@@ -125,16 +128,19 @@ SerialQtDriver(read callback)
-> [Stage4] validate
-> transform/enrich
-> egressQ (有序模式下先 merge 再 egress)
-> DeviceBusManager::processEgressLoop
-> EgressRouter::send
-> SerialDevice::writePayload
```
---
## 6. 下行(现状)
## 6. egress 到设备(现状)
- `RawBusMessage.direction` 已支持 `Downstream` 语义
- `SerialDevice` 已提供 `writePayload(...)` 写入能力
- 当前代码中 egress 路由到物理设备的绑定仍预留(`SerialDeviceManager` 里相关逻辑已注释),后续可补齐:
- egress 消息 -> `EgressRouter` -> endpoint 设备 -> `writePayload`
- `DeviceBusManager` 已启动 `processEgressLoop`,持续从 `PipelineEngine::tryPopEgress` 取数据并调用 `EgressRouter::send`
- `EgressRouter` 已实现 `endpoint -> SerialDevice` 查找和 `writePayload(...)` 发送
- 当前关键缺口:`SerialDeviceManager::initializeSerialDeviceWithDeps``bindSerialDevice(...)` 仍被注释,导致路由表通常为空,`send` 多数返回失败。
- 因此当前链路是“egress 框架已存在,但默认没有绑定到串口实例”
---