Monova Compatibility完整技术方案
← 返回方案首页

Monova 双芯片眼镜兼容原 MT007 协议技术方案

版本:V1.6(创达实施稿) 日期:2026-10-09
适用对象:创达 BES2700 固件、Qualcomm 5100 Android 系统、RemoteModule 集成团队

1. 方案结论

本方案的改造对象是 Monova(BES2700 + Qualcomm 5100 双芯片眼镜);MT007 指现有单芯片眼镜及其手机 App、协议。《蒙通 APP 协议 2.1》和 MT007 手机 App 不变。Monova 的 2700 端复刻 MT007 眼镜的广播、GATT 和 SPP Server,将完整 MT007 帧通过独立 Mailbox Bridge 交给 5100;5100 端新增 MT007 协议兼容入口,与 Monova 既有协议分别解析后调用同一业务能力。既有功能、状态机和默认行为不改。

2. 目标与边界

项目 实施边界
手机与外部协议 原 App、SDK、扫描和 MT007 2.1 字节协议不修改、不重新发版;内部 Bridge 不暴露给手机。
功能范围 覆盖 MT007 2.1 的连接/网络、媒体/相机、拍摄控制、状态、系统设置、交互、支付和文件传输。
代码基线 5100 RemoteModule 以创达提交 84bf6cf71715e2d5792b75221d1d7649bb5b7267 为准;其中 MT007/支付原型需评审,不能视为已验收。
复用判定 只有入口、所有者、实际结果回读和回归均确认后,才将功能标为可复用;缺少入口时仅加薄 Facade。
录音 Monova 双芯片眼镜既有协议与原 MT007 0x51650F 分别解析后,共用现有 MediaService 的开始/停止和状态;不恢复相机键三连击入口。
支付 先确认目标固件中的支付能力及受控入口;5100 兼容层只映射 MT007 支付命令、图片分片及结果,复用既有支付流程,不重写支付业务。
大数据 完整媒体文件和持续音视频走 MT007 规定的数据面,不进入 Mailbox 控制隧道。

本文供设备端实施和验收使用;对外协议文档只保留协议定义,不写入双芯片实现和测试信息。

3. 总体架构

交互图(可缩放、可搜索):Monova 兼容 MT007 协议架构

3.1 三个隔离层

层 所在芯片 责任 明确不做
MT007 对外兼容面 2700 广播、连接、GATT/SPP、MTU、CCCD、MT007 帧收发 不解释命令业务,不访问 Android 服务
内部可靠桥接面 2700 + 5100 会话、序号、ACK、去重、重试、背压、故障关闭 不产生 MT007 业务成功,不复用原生业务 appId
原 MT007 协议适配面 Monova 双芯片眼镜的 5100 端 唯一解析原 MT007 命令,调用双芯片已有能力,生成原 MT007 响应/事件 不管理手机 BLE 连接,不复制现有业务流程

3.2 实施原则

  1. 一次业务解析:2700 只识别帧边界和 CRC,MT007 命令只在 5100 解析一次。
  2. 原帧保真:进入隧道的 MT007 bytes 与手机写入的完整帧一致;返回方向同理。
  3. 共用现有功能:两套协议分别解析后调用同一 Service/AIDL/API;缺少公开入口时只增加薄 Facade,不改业务行为。支付确认目标固件受控入口后按同一原则接入。
  4. 内部确认不外泄:Bridge ACK 只确认内部收到包,不能转换为手机可见的业务成功。
  5. 就绪后再暴露:5100 Bridge、业务适配器和 Mailbox 均就绪后,2700 才允许 MT007 端点对外可用。
  6. 失败关闭:5100 重启、Mailbox 断开、重试耗尽或队列溢出时,终止当前 MT007 会话并等待重建,禁止带病继续。

4. 协议域严格隔离

4.1 外部 MT007 协议域

对手机必须保持以下兼容面不变:

项目 兼容要求
BLE Service UUID 00009c54-0000-1000-8000-00805F9B34FB
Notify/Read Characteristic 0000ba55-0000-1000-8000-00805F9B34FB
Write Characteristic 0000e6be-0000-1000-8000-00805F9B34FB
自定义 Descriptor 00007f96-0000-1000-8000-00805F9B34FB
经典蓝牙 SPP UUID 00004473-0000-1000-8000-00805F9B34FB
SPP 角色 眼镜为 RFCOMM SPP Server,手机为 Client
手机请求 MTU 517
单个完整 MT007 帧上限 514 bytes
广播识别 保持原 MT007 Service UUID 和 manufacturer data 的位置、ID、值及扫描响应行为
通知语义 普通响应、主动事件、支付分片所使用的 notify/indicate 行为与旧眼镜一致

MT007 帧:

普通命令:  command(1) | payload(N) | crc8(1)
0x51 命名空间:0x51 | sub(1) | payload(N) | crc8(1)
0x51/0x65 或 0x51/0x66:0x51 | namespace(1) | command(1) | payload(N) | crc8(1)

CRC、编码、字段长度、端序和响应行为以《蒙通 APP 协议 2.1》为唯一外部验收基线。

4.2 内部 Bridge 协议域

BridgePacket 只存在于 2700↔︎5100 内部:

magic(2="AR") | version(1) | type(1) | sessionId(4) |
sequence(4) | payloadLength(2) | payload(0..514)
字段 约束
type OPEN=1、CLOSE=2、FRAME=3、ACK=4、REJECT=5
sessionId 非 0;每次手机逻辑连接创建新值,不跨连接复用
sequence FRAME 从 1 单调递增;OPEN/CLOSE 为 0
payload FRAME 时是一帧完整 MT007 bytes;其他类型按定义为空或错误码
字节序 多字节字段统一 big-endian
最大长度 14 + 514 = 528 bytes

4.3 Mailbox/UART 外层

BridgePacket 作为 Mailbox 的 data,使用专用 MT007_COMPAT_APPID:

0x55 | frameId(4) | srcId(1) | dstId(1) | appId(1) |
dataLen(2) | BridgePacket(<=528) | mailboxCrc(1)

当前 Mailbox MAX_DATA_LENGTH=1024,静态容量可容纳 528 字节 BridgePacket。以下项目必须由创达依据底层库源码或串口抓包确认后固化,不能凭结构体猜测:

禁止把 MT007 原帧交给现有 Mailbox 业务解析器,也不得以首字节猜测协议类型;Bridge ACK/REJECT 只在内部使用,不能冒充 MT007 业务响应。

5. 模块设计

芯片 模块 唯一职责
2700 Mt007Endpoint 复刻原广播、GATT、SPP Server、MTU、CCCD 和通知语义;仅在内部 READY 后开放。
2700 Mt007FrameAssembler 从 BLE write/SPP stream 恢复完整帧,校验长度与 CRC,不解析命令业务。
2700 Mt007CompatGateway / Mt007BridgeSession2700 原帧封装、会话、ACK 重试、反向路由;每方向最多一个未确认 FRAME,断连清空队列。
2700 TcMailboxAdapter 仅绑定正式 MT007_COMPAT_APPID,校验来源和 [14,528] 字节长度,不进入既有业务解析器。
5100 MailboxTransport / Mt007BridgeSession5100 注册专用 appId,校验 Bridge 字段;重复 (sessionId,sequence,payloadHash) 不重复执行,冲突或旧包 REJECT。HAL death 后关闭旧会话。
5100 Mt007CompatAdapter 唯一解析 MT007 命令并编码响应/事件;按命令注册能力接口,重复 key 启动失败;内部错误按 2.1 映射,不外泄堆栈。
5100 BaselineCapabilityAdapters 对已确认 Service/AIDL/API/广播做参数与结果映射;缺入口只加薄 Facade。既有服务不依赖 MT007、Bridge 或 BLE/UART 类型。
5100 Mt007PaymentProtocolAdapter 确认目标固件支付入口后复用 Monova 既有支付功能;只处理 MT007 支付命令、请求关联、图片分片和结果映射。基线 AndroidPaymentPort 是待评审原型,不是验收证据。
5100 Native2700CapabilityAdapter 通过既有 typed Mailbox 能力读取 2700 状态,并在 5100 统一生成 MT007 响应/事件;不把原始 MT007 帧送入该入口。

6. 功能复用与归属

MT007 功能域 MT007 解析者 实际执行者 适配要求
BLE 连接、广播、MTU、CCCD 2700 只处理传输 2700 完整复刻旧眼镜外观
Wi-Fi STA/SoftAP/P2P、独立 IP 查询 5100 Adapter 基线网络能力(待盘点) 只包装已确认接口;返回实际 STA IP,不混用 P2P IP
相机参数、拍照、录像 5100 Adapter 已确认的 5100 相机/媒体能力 保持 Monova 既有状态机和文件命名;5100 兼容层只映射 MT007 命令与结果
录音开始/停止与状态 5100 Adapter Monova 双芯片眼镜既有 MediaService 既有协议与原 MT007 0x51650F 共用开始/停止入口及状态回报;不增加相机键三连击录音
媒体列表、缩略图、下载、删除 5100 Adapter 基线文件/媒体能力(待盘点) 控制走 Bridge,文件走数据面
状态、存储、温度、版本 5100 Adapter 5100 或 2700 数据源 5100 聚合,按协议编码一次
电量、佩戴、按键、音量/音频硬件状态 5100 Adapter 2700 原生能力 使用既有 typed Mailbox 能力,不转发 raw MT007
系统设置、App 启停、恢复出厂 5100 Adapter 5100 Android 系统服务 有副作用命令必须幂等、可审计
戒指/蓝牙外设 5100 Adapter 2700 蓝牙能力或基线 Remote BT 能力(待盘点) 保留 Monova 已确认的连接策略;5100 兼容层只增加 MT007 协议入口
支付扫码、结果、图片分片 5100 Adapter 目标固件待确认的支付/相机/文件能力入口 确认入口后由 5100 兼容层把原 MT007 支付命令接入双芯片既有支付流程;分片和结果编码按 MT007 2.1 验收
RFCOMM/SoftAP/P2P/TCP 文件传输 不解析业务命令 2700/5100 数据面服务 与 Bridge 控制面分离

7. 核心时序

完整交互图:Monova 启动与 MT007 请求响应时序

7.1 启动与就绪

  1. 5100 RemoteModule 启动,注册 MT007_COMPAT_APPID,初始化 MT007 Adapter 和全部能力端口。
  2. 2700 Mailbox 链路确认 5100 可达,创建新 sessionId 并发送 OPEN。
  3. 5100 完成 session 初始化后返回 ACK(seq=0)。
  4. 2700 收到 ACK 后才启动/开放 MT007 广播与 GATT/SPP 服务。
  5. 原手机 App 按旧流程扫描、连接、发现服务、订阅并请求 MTU 517。

7.2 请求与响应

  1. 手机写入一帧完整 MT007 请求。
  2. 2700 完成组帧与 CRC 校验,原字节封装为 BridgePacket.FRAME。
  3. Mailbox 使用专用 appId 发送到 5100。
  4. 5100 Bridge 完成会话、序号、去重检查,再交给 MT007 Adapter。
  5. Adapter 调用盘点确认的能力接口;缺少受控入口时记录缺口,不以复制业务流程代替协议适配。
  6. 功能返回后 Adapter 按 MT007 2.1 生成响应帧。
  7. 响应以反向 Bridge FRAME 返回 2700,并由原 notify/indicate 或 SPP 发给手机。

7.3 2700 主动事件

  1. 2700 的按键、佩戴、电量等原生模块产生 typed event。
  2. 事件通过现有对应 appId 发给 5100,不直接生成 MT007 帧。
  3. 5100 Adapter 结合当前业务状态生成 MT007 事件。
  4. MT007 事件通过专用 Bridge 返回 2700,再通知手机。

这样可避免 2700 与 5100 两边分别维护 MT007 业务状态。

7.4 大数据

8. 状态机与失败恢复

完整交互图:Monova 兼容链路故障隔离与恢复时序

DISABLED
   └─ 配置有效 ─> WAIT_MAILBOX
        └─ 5100 ready ─> OPENING
             └─ OPEN ACK ─> READY
                  └─ 手机连接 ─> ACTIVE
ACTIVE ── 手机断开 ─> READY
ACTIVE/READY ── HAL death / timeout / overflow / 5100 reboot ─> RECOVERING
RECOVERING ── 清空旧会话 + 链路恢复 ─> OPENING

规则:

9. 错误映射

故障 内部处理 手机可见行为
MT007 长度/CRC 非法 2700 丢弃或按旧 GATT 写失败语义处理 与原 MT007 一致,不暴露内部错误
Bridge magic/version/length 非法 REJECT 并记录脱敏原因 不直接通知手机;严重时断开会话
session/sequence 错误 REJECT,禁止执行 不伪造业务响应
不支持的 MT007 命令 5100 Adapter 按 2.1 的未支持语义处理 协议定义的失败或无响应
既有服务暂不可用 Adapter 返回稳定 UNAVAILABLE 分类 按对应命令定义失败;无定义则关闭会话,禁止报成功
Mailbox/HAL death 清空会话并重连 外部断连或暂不可用
队列溢出 终止会话 外部断连,防止静默丢事件
ACK 重试耗尽 终止会话 外部断连并允许原 App 重连

10. 性能、资源与线程

项目 初始设计值 说明
MT007 完整帧 ≤514 B 外部兼容上限
BridgePacket ≤528 B 14 B 头 + MT007 帧
Mailbox data ≤1024 B 当前静态容量;需真机确认
未确认 FRAME 每方向 1 个 stop-and-wait,便于可靠去重
Bridge 队列 总计 32 控制优先,为支付图片等 bulk 保留背压
ACK 超时 2000 ms 初始值,需 UART 压测校准
重试次数 3 重试耗尽即关闭会话
5100 工作线程 1 个 HandlerThread 串行协议状态;服务关闭时 quitSafely()

禁止在回调中创建裸线程、无限线程池或无界队列。耗时文件/相机操作由既有服务线程执行,协议线程只管理状态和回调。

11. 安全与日志

+----------+-----------+------------+-----------+--------+------------------+
| stage    | key       | value      | source    | status | reason           |
+----------+-----------+------------+-----------+--------+------------------+
| startup  | transport | mailbox    | property  | PASS   | handler ready    |
| startup  | appId     | configured | build cfg | PASS   | dedicated        |
| runtime  | session   | ****7A31   | bridge    | PASS   | active           |
+----------+-----------+------------+-----------+--------+------------------+

表格格式化器必须按 Unicode 显示宽度处理中文、全角和组合字符,动态长字段安全截断,禁止依赖 Logcat 自动换行。

12. 实施与退出条件

阶段 工作 退出条件
0 基线盘点 固定 84bf6cf、原 App APK/签名/SHA-256、2.1 协议和旧眼镜黄金抓包;评审基线 MT007 原型,列出各功能的实际入口与状态回读。 创达确认模块版本、能力所有者、支付入口及原型处置。
1 2700 端点 原广播、GATT、MTU 517、CCCD、notify/indicate、SPP Server 和组帧。 原 App 可扫描连接;回环帧与旧眼镜逐字节一致。
2 独立 Bridge 分配正式 appId,实现双端编解码、会话、去重、重试和故障关闭。 514 B 帧双向无损;重传不重复执行。
3 5100 适配 注册原 MT007 命令并调用已确认能力;双协议共用 MediaService;确认支付能力入口后,由 5100 端增加原 MT007 报文映射。 双芯片既有协议与业务回归无变化,MT007/Bridge 依赖不进入稳定服务。
4 数据面 打通 RFCOMM/SoftAP/P2P/TCP 与支付 BLE 分片。 文件和图片长度、分片、校验、删除及中断恢复通过。
5 原 App 验收 使用冻结 APK 对照旧眼镜,覆盖功能、弱链路、重启与长稳。 第 14 节验收矩阵全部有真机证据。

13. 创达交付物

  1. 2700 Mt007Endpoint、Mt007FrameAssembler、Mt007CompatGateway、BridgeSession、Mailbox Adapter 源码。
  2. 5100 Bridge Endpoint、MT007 Compat Adapter、Baseline Capability Adapters 和 Mt007PaymentProtocolAdapter 源码。
  3. 正式 MT007_COMPAT_APPID 分配表及冲突检查结果。
  4. BridgePacket 和会话状态机内部协议说明;不得混入对外 MT007 协议文档。
  5. UART/Mailbox 线上字节序、CRC、波特率、缓存和分段结论及抓包依据。
  6. 单元测试、集成测试、原 App 黑盒回归脚本和结果。
  7. 可过滤的 MT007_COMPAT 参数表与脱敏事件日志。
  8. 84bf6cf 基线锁定记录、原型处置清单、能力盘点表、兼容补丁文件清单,以及构建产物、目标路径、版本和 SHA-256 清单;源码修改与二进制分别交付。

14. 验收矩阵

下列为验收要求,不代表当前已通过。创达应在独立测试报告中逐项给出 PASS、FAIL、BLOCKED、UNVERIFIED 或 WARN 及证据;编译成功不能替代真机业务验收。

验收项 必须证据
源码基线与录音按键 HEAD=84bf6cf...、能力盘点;三连击不触发录音的源码和按键回归。
原 App 零修改连接 APK SHA-256、扫描/连接/发现/MTU 日志;广播、GATT、SPP 与旧眼镜抓包对照。
Bridge 隔离与可靠性 514 B 边界帧逐字节一致;非法帧不串协议;丢 ACK 重传时副作用只执行一次。
故障恢复 5100 重启、Mailbox 断链、队列溢出后更换 session,拒绝旧包,原 App 可重连。
连接与网络 真实网络状态、STA IP 与 P2P IP 区分、SoftAP/P2P 数据传输。
媒体、相机与拍摄控制 真实拍照/录像/录音文件;参数设置、开始/停止和状态回读。
双协议录音 两套协议分别开始/停止并交叉操作;状态、文件、事件与原录音 App 行为一致。
状态与系统设置 设备真实值交叉核对,设置后读回和重启保持策略。
文件与缩略图 列表、缩略图、下载、删除的真实文件、长度/hash 与删除后读回。
支付 目标固件支付能力/受控入口盘点、双芯片既有支付流程回归、原 MT007 命令及结果对照;>32 KiB 且不超过 2.1 上限的图片完成分片和完整性校验。
RFCOMM 与稳定性 原 App 连接旧 UUID 实收实发;24 小时内存、队列、断连重连和丢帧统计。

15. 实施前待确认

问题 责任方 未确认影响
MT007_COMPAT_APPID 正式取值及全局冲突检查 2700 + 5100 无法进入量产配置
84bf6cf 对应的 manifest 修订、模块 SHA-256 和原型处置清单 创达 无法证明双方构建输入完全一致,容易把原型当成量产实现
基线能力盘点表及每项能力的真实入口 创达 5100 团队 Adapter 可能调用不存在或不稳定的接口
Mailbox/UART 线上端序、CRC、分段、波特率 2700 平台 Bridge 只能静态验证,不能真机验收
用于兼容验收的原 App APK SHA-256 产品/测试 “App 不修改”缺少基线证据
原 MT007 广播完整字节及 notify/indicate 选择 旧眼镜团队 手机自动重连和支付链路存在差异风险
2700 与 5100 各能力的最终所有权 系统架构 可能出现重复执行或状态源冲突
目标固件支付能力的受控入口及支付图片分片/超时预算 产品/协议/支付团队 无法冻结 Mt007PaymentProtocolAdapter 的调用和重试参数
RFCOMM 与 SoftAP/P2P 数据面落在哪颗芯片 蓝牙/网络团队 文件传输方案不能冻结