feat: add FT1 factory test host and protocol updates
This commit is contained in:
+13
-36
@@ -25,13 +25,10 @@
|
||||
-> ES8311 ID/初始化,设置所有播放音量为 100%
|
||||
-> 播放开机提示音
|
||||
-> 电源 ADC
|
||||
-> 按住对话键录音,松开后回放,最多录 5 秒
|
||||
-> 按住 GPIO84(原三击测试按键)录音,松开后回放,最多录 5 秒
|
||||
-> 工人判断音质
|
||||
正常:按另一个按键三次
|
||||
异常:不再操作,60 秒后 KEY_TRIPLE 失败
|
||||
-> eSIM READY 和 ICCID
|
||||
-> 4G 注册、PDP 激活、获取 IPv4
|
||||
-> Ping 业务域名
|
||||
-> 前面全部通过后启用 NFC 测试
|
||||
-> 读取 NTAG213 UID
|
||||
-> 播放“全部测试通过”
|
||||
@@ -49,16 +46,13 @@
|
||||
|---:|---|---|---|---:|
|
||||
| 0 | `BOOT_AUDIO` | 读取 ES8311 ID,初始化外置 Codec,播放 `U:/factory_boot_zh.mp3` | Codec ID 为 `0x83`,文件存在且播放结束 | 15 秒播放超时 |
|
||||
| 1 | `POWER_ADC` | 读取 6 次 VBAT,去掉最大值和最小值后平均 | `3500mV <= 平均值 <= 4200mV` | - |
|
||||
| 2 | `AUDIO_LOOPBACK` | 按住电源/对话键录音,松开后按原音量回放 | 录音和回放 API 成功且至少有一帧 PCM | 等待按键 60 秒,录音最长 5 秒 |
|
||||
| 3 | `KEY_TRIPLE` | GPIO84 按下并释放三次,每次输出进度 PASS | 60 秒内累计三次有效按键 | 60 秒 |
|
||||
| 4 | `ESIM` | 查询 SIM 状态并读取 ICCID | `READY`,ICCID 为 18-22 位十进制数字 | 30 秒 |
|
||||
| 5 | `DATA_CALL` | 等待注册、激活 CID 1 IPv4 PDP | 返回非 `0.0.0.0` 的 IPv4 | 注册等待 120 秒 |
|
||||
| 6 | `PING` | Ping `banban.api.talkingq.com` 3 次 | 至少收到 2 次回复 | 单包 4 秒,总等待 20 秒 |
|
||||
| 7 | `NFC` | 检查 DP1312EA 版本并轮询 NTAG213 | 版本 `0x82`,成功读取 UID | 60 秒 |
|
||||
| 2 | `AUDIO_LOOPBACK` | 按住 GPIO84 录音,松开后按原音量回放 | 录音和回放 API 成功且至少有一帧 PCM | 等待按键 60 秒,录音最长 5 秒 |
|
||||
| 3 | `ESIM` | 查询 SIM 状态并读取 ICCID | `READY`,ICCID 为 18-22 位十进制数字 | 30 秒 |
|
||||
| 4 | `DATA_CALL` | 等待注册、激活 CID 1 IPv4 PDP | 返回非 `0.0.0.0` 的 IPv4 | 注册等待 120 秒 |
|
||||
| 5 | `NFC` | 检查 DP1312EA 版本并轮询 NTAG213 | 版本 `0x82`,成功读取 UID | 60 秒 |
|
||||
|
||||
说明:`AUDIO_LOOPBACK` 的软件通过仅代表数据链路完成。最终声学判断由工人完成;
|
||||
如果声音异常,工人不按三击键,随后 `KEY_TRIPLE` 超时,整机产测失败。这避免了
|
||||
上位机额外的人工确认按钮。
|
||||
说明:`AUDIO_LOOPBACK` 使用 GPIO84 按键,软件通过仅代表录放数据链路完成。
|
||||
最终声学判断由工人完成。
|
||||
|
||||
## 4. 音频和文件系统接口
|
||||
|
||||
@@ -104,7 +98,6 @@ Windows 打包方法见 [factory_test_windows_fs.md](factory_test_windows_fs.md)
|
||||
### 5.2 会话开始
|
||||
|
||||
```text
|
||||
FT1 {"v":1,"type":"session_start","seq":1,"session":"20260923-163010","uptime_ms":2050,"imei":"860123456789012","iccid":"","nfc_uid":"","fw":"FACTORY_TEST_1.0.0","ping_host":"banban.api.talkingq.com","start_time":"2026-09-23T16:30:10"}
|
||||
```
|
||||
|
||||
RTC 无效时 `start_time` 为 `null`。RTC 无效不会导致产测失败;测试耗时始终以
|
||||
@@ -122,36 +115,25 @@ FT1 {"v":1,"type":"node_start","seq":2,"session":"20260923-163010","uptime_ms":2
|
||||
FT1 {"v":1,"type":"node_result","seq":3,"session":"20260923-163010","uptime_ms":2450,"imei":"860123456789012","iccid":"","nfc_uid":"","node":1,"name":"POWER_ADC","result":"PASS","code":0,"elapsed_ms":350,"data":{"voltage_mv":3865,"sample_min_mv":3858,"sample_max_mv":3873,"limit_min_mv":3500,"limit_max_mv":4200}}
|
||||
```
|
||||
|
||||
### 5.5 三击按键进度
|
||||
|
||||
每次完整按下并释放都输出一条 `node_progress`:
|
||||
|
||||
```text
|
||||
FT1 {"v":1,"type":"node_progress","seq":8,"session":"20260923-163010","uptime_ms":12300,"imei":"860123456789012","iccid":"","nfc_uid":"","node":3,"name":"KEY_TRIPLE","result":"PASS","data":{"current":1,"required":3}}
|
||||
```
|
||||
|
||||
第三次松开后再输出正式的 `node_result=PASS`。
|
||||
|
||||
### 5.6 网络和 Ping
|
||||
### 5.5 NFC 和最终报告
|
||||
|
||||
```text
|
||||
FT1 {"v":1,"type":"node_result","seq":14,"session":"20260923-163010","uptime_ms":28000,"imei":"860123456789012","iccid":"89860xxxxxxxxxxxxxxx","nfc_uid":"","node":5,"name":"DATA_CALL","result":"PASS","code":0,"elapsed_ms":8200,"data":{"ip":"10.23.45.67","ip_type":"IPv4"}}
|
||||
```
|
||||
|
||||
```text
|
||||
FT1 {"v":1,"type":"node_result","seq":16,"session":"20260923-163010","uptime_ms":31500,"imei":"860123456789012","iccid":"89860xxxxxxxxxxxxxxx","nfc_uid":"","node":6,"name":"PING","result":"PASS","code":0,"elapsed_ms":3400,"data":{"host":"banban.api.talkingq.com","sent":3,"received":3,"lost":0,"avg_rtt_ms":86}}
|
||||
```
|
||||
|
||||
### 5.7 NFC 和最终报告
|
||||
### 5.6 NFC 和最终报告
|
||||
|
||||
```text
|
||||
FT1 {"v":1,"type":"node_result","seq":18,"session":"20260923-163010","uptime_ms":34000,"imei":"860123456789012","iccid":"89860xxxxxxxxxxxxxxx","nfc_uid":"04A1B2C3D4E5F6","node":7,"name":"NFC","result":"PASS","code":0,"elapsed_ms":1900,"data":{"chip_version":"0x82","uid":"04A1B2C3D4E5F6"}}
|
||||
FT1 {"v":1,"type":"node_result","seq":18,"session":"20260923-163010","uptime_ms":34000,"imei":"860123456789012","iccid":"89860xxxxxxxxxxxxxxx","nfc_uid":"04A1B2C3D4E5F6","node":5,"name":"NFC","result":"PASS","code":0,"elapsed_ms":1900,"data":{"chip_version":"0x82","uid":"04A1B2C3D4E5F6"}}
|
||||
```
|
||||
|
||||
最终报告包含 IMEI、ICCID、NFC UID、失败码、开始时间、总耗时和全部节点状态:
|
||||
|
||||
```text
|
||||
FT1 {"v":1,"type":"session_result","seq":19,"session":"20260923-163010","uptime_ms":40120,"result":"PASS","fail_code":0,"imei":"860123456789012","iccid":"89860xxxxxxxxxxxxxxx","nfc_uid":"04A1B2C3D4E5F6","start_time":"2026-09-23T16:30:10","duration_ms":38070,"nodes":{"BOOT_AUDIO":"PASS","POWER_ADC":"PASS","AUDIO_LOOPBACK":"PASS","KEY_TRIPLE":"PASS","ESIM":"PASS","DATA_CALL":"PASS","PING":"PASS","NFC":"PASS"}}
|
||||
FT1 {"v":1,"type":"session_result","seq":19,"session":"20260923-163010","uptime_ms":40120,"result":"PASS","fail_code":0,"imei":"860123456789012","iccid":"89860xxxxxxxxxxxxxxx","nfc_uid":"04A1B2C3D4E5F6","start_time":"2026-09-23T16:30:10","duration_ms":38070,"nodes":{"BOOT_AUDIO":"PASS","POWER_ADC":"PASS","AUDIO_LOOPBACK":"PASS","ESIM":"PASS","DATA_CALL":"PASS","NFC":"PASS"}}
|
||||
```
|
||||
|
||||
上位机收到 `power_off` 后应立即落盘本次记录:
|
||||
@@ -174,17 +156,13 @@ FT1 {"v":1,"type":"power_off","seq":20,"session":"20260923-163010","uptime_ms":4
|
||||
| 1201 | 录音句柄或 160KB 缓冲区创建失败 |
|
||||
| 1202 | 没有录到一帧有效 PCM |
|
||||
| 1203 | PCM 回放失败 |
|
||||
| 1204 | 60 秒内未按下对话键 |
|
||||
| 1301 | 音质异常未继续,或 60 秒内未完成三击 |
|
||||
| 1204 | 60 秒内未按下 Loopback 按键 |
|
||||
| 1401 | eSIM 未进入 READY |
|
||||
| 1402 | ICCID 读取失败 |
|
||||
| 1403 | ICCID 长度或字符格式错误 |
|
||||
| 1501 | 4G 网络注册超时 |
|
||||
| 1502 | IPv4 PDP 激活失败 |
|
||||
| 1503 | 未获取有效 IPv4 地址 |
|
||||
| 1601 | Ping 上下文或同步对象创建失败 |
|
||||
| 1602 | Ping 启动或等待回调失败 |
|
||||
| 1603 | 3 包中收到少于 2 包 |
|
||||
| 1701 | 前置节点未全部通过,NFC 锁定 |
|
||||
| 1702 | DP1312EA 版本寄存器不是 `0x82` |
|
||||
| 1703 | 60 秒内没有成功刷卡 |
|
||||
@@ -200,8 +178,7 @@ FT1 {"v":1,"type":"power_off","seq":20,"session":"20260923-163010","uptime_ms":4
|
||||
- `interface/factory_test/factory_test.h`:阈值、超时、业务域名、GPIO 和文件路径;
|
||||
- `interface/factory_test/Makefile`:独立产测编译单元。
|
||||
|
||||
修改 Ping 地址时只需修改 `FT_PING_HOST`。ADC 阈值、按键超时和 NFC 超时也集中在
|
||||
`factory_test.h`。GPIO84 是第二个按键,GPIO68 是功放控制;产测代码不会把 GPIO68
|
||||
ADC 阈值、按键超时和 NFC 超时集中在 `factory_test.h`。GPIO84 是第二个按键,GPIO68 是功放控制;产测代码不会把 GPIO68
|
||||
当作 LED,也不会把 GPIO86 当作红色 LED,避免和 NFC 复位冲突。
|
||||
|
||||
## 8. 上板前检查
|
||||
|
||||
Reference in New Issue
Block a user