概述
消息语义定义 NRCP 帧头之上的通用协议角色。它只描述消息在协议中的通用作用,不描述具体业务能力
具体业务含义由后续接口定义章节中的 Operation Name 或 Flow Name 决定。例如控制指令、状态反馈、故障通知等业务能力不应直接膨胀为大量 Message Type,而应定义为具体 Operation 或 Flow
核心原则
- Message Type 描述消息在协议中的通用角色;
- Operation 描述一次性 Request/Response 调用;
- Flow 描述持续数据流,对标 ROS Topic;
- Heartbeat 不属于 Flow 机制;
channel_id仅用于 Flow 机制;- 协议控制类 Payload 默认使用 JSON;
- 具体 Flow Data 的 Payload Codec 由该 Flow 的定义决定;
- 当前版本不引入 Action 或 Task 机制;
通用关系
NRCP 消息分为以下几类:
| 类别 | 作用 | 是否使用 channel_id |
|---|---|---|
| 通用消息 | ACK、Error 等协议通用反馈 | 否 |
| Operation | 一次性 Request/Response 调用 | 否 |
| Flow 控制 | 创建、协商、关闭 Flow | 协商前可为 0,协商后使用 Flow channel_id |
| Flow 数据 | 已建立 Flow 的数据帧 | 是 |
| Heartbeat 与恢复 | 心跳、时钟同步、NRCP 层恢复 | 否 |
| 协议层 Event | QoS、Session、Flow 等协议状态通知 | 否,除非 Event 明确关联某个 Flow |
非 Flow 消息的 channel_id 应为 0。接收端收到非 Flow 消息但 channel_id 非 0 时,应返回协议错误或丢弃该消息