跳到主要内容

概述

消息语义定义 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 层恢复
协议层 EventQoS、Session、Flow 等协议状态通知否,除非 Event 明确关联某个 Flow

非 Flow 消息的 channel_id 应为 0。接收端收到非 Flow 消息但 channel_id 非 0 时,应返回协议错误或丢弃该消息