Files
Artemis-Plugins/plugins/artemis-device-test/skill/references/protocol-support.md
T

44 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 设备协议范围与资料来源
发现、查询或升级前先运行 `python scripts/device_adapter.py capabilities`,再按设备实际协议选择路由。该命令不联网;能力清单不代表设备在线或已完成真机升级。
| 设备协议 | 已实现的 CLI 操作 | 升级范围 |
| --- | --- | --- |
| V1 | UDP `ff00/ff01` 搜索、TCP `2104` 身份/原生版本查询、`2170` 固件下发、指定字段比较 | 默认 ROM/身份预检;显式执行最多一次 TCP4941/MD5+ROM 下发;同命令code=0后另行回读 |
| V2 | UDP EPBP 搜索、TCP EPTP/30101 身份/版本查询、EPFP/4001 传输 | 默认预检,显式执行后最多一次传包;协议成功后另行回读验收 |
`--protocol v1` 或 `--protocol v2` 放在网络子命令之后;不传仍默认 V2,以兼容既有调用。这不是自动检测。参数和结果见 [设备适配器](device-adapter.md);V1 报文、字段和应答范围见 [V1 接口](v1-protocol.md)。
配置工具软件的 V2.x 与设备的 V1/V2 协议不是同一个概念。同一 GUI 可以包含多个协议页面。V2 端口拒绝或搜索无响应不能证明 V1 设备离线。已知 V1 时不自动切换 V2;身份冲突时不能默认选第一台。
## 已核对的资料
2026-10-19,交叉核对用户提供的两份本地原文及源码:
| 文件 | 文档修订 | SHA-256 |
| --- | --- | --- |
| `v1.md`(工厂协议) | v1.0.23,2026-08-03 | `50e8a76c880386e03e173582de3115bc60fd91e1f1ce5f4e8a6b190e4fc8f8b9` |
| `固件配置工具及web管理工具接口文档.md` | V1.9,2019-05-13 | `e4d373e3ab673add9da93ca4d07b5c8530189df086743ba7fb171757eb2efa10` |
| `src.zip` | 用户提供的 Qt C++ 源码;未提供上游提交版本 | `1603ece177973ec79a4ea3fb94f2984faf9c82ca3ec7f4eac224003385737fbc` |
两份原文均定义 TCP4941、设备UDP4942、网络字节序的 `U32 CMD + U32 Data长度 + Data`,以及无请求Data的 `0x5a0e2104`。较早文档补充 `0x5a0eff00/ff01` 搜索。其第21节的升级Data留空,现由源码核实为 MD5小写ASCII32 + ROM,非直接ROM。
原文和源码ZIP保留在提供资料的机器上,不做修改。可分发技能只包含必要协议摘记和来源摘要,避免带入其他配置章节及示例账号。重新取得同名文件时先核对内容及修订,不只按路径判断;运行时不依赖原始ZIP或作者机器路径。
同时核对了“Windows电脑端调试”插件 `embedded-app-pc-debug` 1.0.0 及上游 tag `v1.0.0`,提交 `cfb586cb5ffc5a69e66cd9adbc57e4ebf725d1d3`。该版本仅附 V2 设备脚本,V1 参考是作者机器的外部路径;路径是查找线索,不是团队部署依赖。已有用户资料时先核对,不重复索取已提供的文件。
## 源码核对位置
以下行号相对上述归档中的 `src/`,不是本机安装依赖:
| 位置 | 核实内容 |
| --- | --- |
| `EapilPanoCHead.h:21–35,160` | 成功码0、TCP4941、UDP4942、升级命令2170 |
| `EpConnection.cpp:116–195`,`sendTcpFile` | 大端CMD/Length;全ROM的MD5.toHex();Length=32+ROM大小;MD5文本后跟ROM |
| `EpConnection.cpp:369–411` | 连续TCP文件字节及本地发送结束,不存在自定义块头 |
| `EpConnection.cpp:687–729`,`readTcpData` | 同连接读取CMD/Length/JSON |
| `EpPanoCConfigure.cpp:734–754`,`updatePanoC` | 检查返回命令为2170、CommonResponse.code=0 |
| `json/GetBasicInfoResponse.cpp:57–68` | V1字段为dev_type/sn/firmware/hardware/dev_id/dev_ver,无inner/outer映射 |
源码同时有8940/EPFP的另一种文件通道,不自动推断当前设备支持它。源码的本地发送完成和code=0没有证明设备已完成烧录并启动;CLI保留单次传输、精确身份/摘要门槛和独立回读。V1与inner/outer关系未建立,不能静默替换任务指定字段。具体实现及真机范围见 [V1接口](v1-protocol.md)。