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 实施原则
- 一次业务解析:2700 只识别帧边界和 CRC,MT007 命令只在 5100 解析一次。
- 原帧保真:进入隧道的
MT007 bytes与手机写入的完整帧一致;返回方向同理。 - 共用现有功能:两套协议分别解析后调用同一 Service/AIDL/API;缺少公开入口时只增加薄 Facade,不改业务行为。支付确认目标固件受控入口后按同一原则接入。
- 内部确认不外泄:Bridge ACK 只确认内部收到包,不能转换为手机可见的业务成功。
- 就绪后再暴露:5100 Bridge、业务适配器和 Mailbox 均就绪后,2700 才允许 MT007 端点对外可用。
- 失败关闭: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。以下项目必须由创达依据底层库源码或串口抓包确认后固化,不能凭结构体猜测:
frameId、dataLen的线上字节序;- Mailbox CRC 算法及覆盖范围;
- UART 波特率、DMA/缓存、物理层分段和重组策略;
- 底层超时、重试和最大并发帧数。
禁止把 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 启动与就绪
- 5100 RemoteModule 启动,注册
MT007_COMPAT_APPID,初始化 MT007 Adapter 和全部能力端口。 - 2700 Mailbox 链路确认 5100 可达,创建新
sessionId并发送OPEN。 - 5100 完成 session 初始化后返回
ACK(seq=0)。 - 2700 收到 ACK 后才启动/开放 MT007 广播与 GATT/SPP 服务。
- 原手机 App 按旧流程扫描、连接、发现服务、订阅并请求 MTU 517。
7.2 请求与响应
- 手机写入一帧完整 MT007 请求。
- 2700 完成组帧与 CRC 校验,原字节封装为
BridgePacket.FRAME。 - Mailbox 使用专用 appId 发送到 5100。
- 5100 Bridge 完成会话、序号、去重检查,再交给 MT007 Adapter。
- Adapter 调用盘点确认的能力接口;缺少受控入口时记录缺口,不以复制业务流程代替协议适配。
- 功能返回后 Adapter 按 MT007 2.1 生成响应帧。
- 响应以反向 Bridge FRAME 返回 2700,并由原 notify/indicate 或 SPP 发给手机。
7.3 2700 主动事件
- 2700 的按键、佩戴、电量等原生模块产生 typed event。
- 事件通过现有对应 appId 发给 5100,不直接生成 MT007 帧。
- 5100 Adapter 结合当前业务状态生成 MT007 事件。
- MT007 事件通过专用 Bridge 返回 2700,再通知手机。
这样可避免 2700 与 5100 两边分别维护 MT007 业务状态。
7.4 大数据
- BLE/Mailbox 发送下载、删除、开始/停止等控制命令。
- 数据本体通过协议已定义的数据面传输。
- 支付图片若按 MT007 2.1 使用 BLE 分片,则每个完整 MT007 通知仍不得超过 514 字节,并具备总长度、分片序号、完整性校验和缺片重传。
- 不能把当前调试链路的 MTU 247、215 字节 payload 或 64 KiB 图片限制带入正式方案;正式目标按 MT007 2.1 和实际 MTU 517 验收。
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
规则:
- 新手机连接必须使用新
sessionId;旧 session 延迟包不得产生任何副作用。 - 同一请求因内部 ACK 丢失而重发时,只允许业务执行一次。
CLOSE、断链、服务停止必须清空待确认包、响应缓存、控制队列、大消息队列和业务会话状态。- 5100 未准备好时,2700 不得继续向手机报告“连接正常”。
- 恢复时必须先建内部新会话,再恢复外部可用性。
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. 安全与日志
- 仅允许已授权/已绑定手机访问 MT007 私有端点,沿用原产品配对策略。
- 校验来源
srcId、目标dstId、专用appId、长度、会话、序号、CRC 和 payload 上限。 - 日志不得输出 Wi-Fi 密码、完整 SSID、支付二维码、图片内容、Token、完整 MT007 payload 或异常敏感文本。
- 可记录命令 key、长度、方向、session 后四位、sequence、耗时、状态和错误类别。
- 配置和运行状态使用稳定 tag
MT007_COMPAT输出视觉宽度严格对齐的表格:
+----------+-----------+------------+-----------+--------+------------------+
| 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. 创达交付物
- 2700
Mt007Endpoint、Mt007FrameAssembler、Mt007CompatGateway、BridgeSession、Mailbox Adapter 源码。 - 5100 Bridge Endpoint、MT007 Compat Adapter、Baseline Capability
Adapters 和
Mt007PaymentProtocolAdapter源码。 - 正式
MT007_COMPAT_APPID分配表及冲突检查结果。 - BridgePacket 和会话状态机内部协议说明;不得混入对外 MT007 协议文档。
- UART/Mailbox 线上字节序、CRC、波特率、缓存和分段结论及抓包依据。
- 单元测试、集成测试、原 App 黑盒回归脚本和结果。
- 可过滤的
MT007_COMPAT参数表与脱敏事件日志。 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 数据面落在哪颗芯片 | 蓝牙/网络团队 | 文件传输方案不能冻结 |