You are on page 1of 51

SPark 自动化测试脚本协议

V4.8
万思维

目录
一、通信接口 ......................................................................................................................................... 4
二、交互协议 ......................................................................................................................................... 5
1. 控制类 .......................................................................................................................................... 5
2 配置类 .......................................................................................................................................... 9
3 业务类 ........................................................................................................................................ 16
4 强制类 ........................................................................................................................................ 30
5 查询类 ........................................................................................................................................ 35
6 导出类 ........................................................................................................................................ 43
附录 A:NR 参数表 ....................................................................................................................... 47
附录 B:LTE 参数表 ....................................................................................................................... 48
附录 C:公共参数表 ..................................................................................................................... 48
附录 D:NR CA 参数表 ................................................................................................................ 49

1 / 50
万思维

修订记录
序号 类型 接口 描述 接口协议版本 SPark版本
[1] 修改 Attach 新增Timeout入参,设置UE附着 V3.5.1 V1.1.2000.7
的超时时长
[2] 增加 GetParamValue 《附录C》新增参数:Product V3.5.1 V1.1.2000.11
Version,可通过GetParamValue接
口查询Spark版本号
[3] 增加 GetParamValue 《附录A》新增参数:NR PUSCH V3.5.1 V1.1.2000.15
TxPower等参数,可通过
GetParamValue接口查询对应的参
数值。
[4] 增加 Warning 新增告警信息回传,自动化过程 V3.5.2 V1.1.2000.17
中自动回传告警信息
[5] 删除 UpdateTask 停用UpdataTask接口 V4.0 V1.1.2003.11
[6] 修改 ConfigureAPN 支持MNC和MCC入参为空或者不填 V4.0 V1.1.2003.11
写该项
[7] 增加 SetExportFilterBin 支持对导出模板设置过滤条件 V4.0 V1.1.2003.11
[8] 增加 GetParamValue 《附录B》新增参数:LTE V4.1 V1.1.2003.25
RSRP[dBm]\ LTE SINR[dB]等参
数,可通过GetParamValue接口查
询对应的参数值
[9] 增加 ExportReport 新增统计报表接口,指定数据和 V4.1 V1.1.2003.26
报表模板进行统计
[10] 增加 UpdateTaskXML 新增设置测试计划接口,支持: V4.1 V1.1.2005.3
PING业务
[11] 增加 UpdateTaskXML 设置测试计划接口支持:FTP、 V4.2 V1.1.2006.2
HTTP业务
[12] 增加 StartULtraffic 灌包业务添加TCP缓冲区总大 V4.3 V1.1.2006.7
小、缓冲区读写长度和线程
[13] 增加 AutoDivideSet 新增按时长/按大小切割数据接 V4.3 V1.1.2007.3
口,测试过程中按设定条件进行
切割数据
[14] 增加 UpdateTaskXML 设置测试计划接口支持:灌包 V4.3 V1.1.2007.5
(BWT)业务
[15] 增加 GetEPSInfo 新增通过APN查询LTE EPS IP接 V4.3 V1.1.2007.10

[16] 增加 GetUEPower 新增查询手机电量接口,获取手 V4.4 V1.1.2008.1
机当前剩余电量
[17] 增加 DivideLogfileByTime 新增按时间分割数据接口,根据 V4.4 V1.1.2008.1
时间条件分割数据
[18] 增加 UpdateTaskXML PING业务添加TestMode入参,根 V4.5 V1.1.2008.3
据终端状态执行业务
[19] 增加 UpdateTaskXML 新增语音业务和短信业务 V4.5 V1.1.2008.5
[20] 增加 Reboot 新增重启手机接口 V4.5 V1.1.2008.6
[21] 增加 GetPortStatus 新增查询终端端口状态接口 V4.5 V1.1.2008.6
[22] 增加 UpdateTaskXML FTP业务添加TestMode入参,可 V4.6 V1.1.2008.13
指定FTP测试模式。
[23] 增加 GetRBDetail 新增查询上行/下行RBdetail接 V4.6 V1.1.2008.13
2 / 50
万思维


[24] 增加 ExportRBDetail 新增导出上行/下行RBdetail接 V4.6 V1.1.2008.13

[25] 删除 LockBand 停用LockBand和unLockBand接口 V4.7 V1.1.2008.15
[26] 增加 EQInfo 新增获取设备信息接口 V4.7 V1.1.2008.15
[27] 增加 GetParamValue 参数查询接口添加NR CA参数 V4.8 V1.1.2008.28
[28] 增加 UpdateTaskXML FTP上传业务支持“按文件上传”模 V4.8 V1.1.2008.29
式,和设定本地文件的路径
[29] 增加 ImportTask 新增导入测试计划接口 V4.8 V1.1.2008.30
[30] 增加 PowerOff/PowerOn 支持所有终端同步执行,添加执 V4.8 V1.1.2008.30
行指令失败的终端列表
[31] 增加 GetParamValue 参数查询接口添加LTE参数 V4.8 V1.1.2008.30

3 / 50
万思维

一、通信接口

1. 第三方软件与 SPark 采用 TCP/IP 通信方式,IP 为 SPark 所在 PC 的 IP 地址,端口


为 30999,自行编写 Socket 交互。
2. 交互协议采用 JSON 格式,UTF8 编码,具体协议见“交互协议”章节。
3. 每发送一条指令,收到 Spark 的回复消息后,再发下一条指令。
4. 运行 SPark,并且软件狗有自动化测试权限,则会自动启动自动化测试监听。
5. 建议用 Socket 工具把本文档的协议 JSON 指令直接粘贴到工具发送校验指令正确
性。注意要把协议的备注部分删掉。
6. 如果请求的 Json 格式不对,会返回 Json 格式错误的地方的说明。以 JsonError 开
头的字符串返回。
7. 由于 Socket 会分包或粘包发送,所以 json 命令需要完整性解析。算法:把返回的
内容缓存起来,计数括号数量,收到左括号就加 1,收到右括号就减 1,计数为 0
说明括号配对了,就把这段字符串截取出来就是一个完整的 json 串。

4 / 50
万思维

二、交互协议

1. 控制类

1.1 自动配置设备

请求:
{
"CMD": "AutoCheck"
}

回复:
{
"CMD": "AutoCheck",
"Param": {
"State": 0, //0成功, 其他为失败原因码
"Count": 2 //设备个数
}
}

1.2 连接设备

请求:不区分终端,所有终端都执行
{
"CMD": "ConnectEQ"
}

回复:
{
"CMD": "ConnectEQ",
"Param": {
"State": 0 //0成功, 其他为失败原因码
}
}

1.3 断开设备

请求:不区分终端,所有终端都执行
{
5 / 50
万思维

"CMD": "DisConnectEQ"
}

回复:
{
"CMD": "DisConnectEQ",
"Param": {
"State": 0 //0成功, 其他为失败原因码
}
}

1.4 连接设备-指定终端

请求:
{
"CMD": "ConnectOneEQ",
"EQIndex": 1 //第几个终端,1为第1个终端,不支持所有终端
}

回复:
{
"CMD": "ConnectOneEQ",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"State": 0 //0成功, 其他为失败原因码
}
}

1.5 断开设备-指定终端

请求:
{
"CMD": "DisConnectOneEQ",
"EQIndex": 1 //第几个终端,1为第1个终端,不支持所有终端
}

回复:
{
"CMD": "DisConnectOneEQ",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
6 / 50
万思维

"State": 0 //0成功, 其他为失败原因码


}
}

1.6 开始记录

请求:不区分终端,所有终端都执行
{
"CMD": "StartLog",
"Param": {
"LogPath": "D:\\Logfiles\\", //如果不修改存储目录,可以传””
"LogName": "AutoTest2019-130106" //不带后缀名,注意中文要UTF8编码
}
}

回复:
{
"CMD": " StartLog",
"Param": {
"State": 0 //0成功, 其他为失败原因码
}
}

1.7 停止记录

请求:不区分终端,所有终端都执行
{
"CMD": "StopLog"
}

回复:
{
"CMD": "StopLog",
"Param": {
"State": 0 //0成功, 其他为失败原因码
}
}

7 / 50
万思维

1.8 开始记录-指定终端

请求:
{
"CMD": "StartOneLog",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"LogPath": "D:\\Logfiles\\", //如果不修改存储目录,可以传””
"LogName": "AutoTest2019-130106" //不带后缀名,注意中文要UTF8编码
}
}

回复:
{
"CMD": "StartOneLog",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"State": 0 //0成功, 其他为失败原因码
}
}

1.9 停止记录-指定终端

请求:不区分终端,所有终端都执行
{
"CMD": "StopOneLog",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
}

回复:
{
"CMD": "StopOneLog",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"State": 0 //0成功, 其他为失败原因码
}
}

8 / 50
万思维

1.10 自动切割数据设置

请求:在 StartLog 前设置


{
"CMD": "AutoDivideSet",
"Param": {
"Enabled": 1, //0: 不生效, 1:生效
"Type": 1, //0: 按时间, 1:按大小
"Time": 60, //单位:分钟
"Size": 100 //单位:兆
}
}

回复:
{
"CMD": "AutoDivideSet",
"Param": {
"State": 0 //0成功, 其他为失败原因码
}
}

2 配置类

2.1 配置 APN

请求:
{
"CMD": "ConfigureAPN",
"EQIndex": 1, //1 代表第一个终端,2 代表第二个终端,以此类推
"Param": {
"APN":"wap2.xxx.com", // APN 地址
"MCC":"460", // MCC,允许为空或不填写该项
"MNC":"02" // MNC,允许为空或不填写该项
}
}

回复:
{
9 / 50
万思维

"CMD": "ConfigureAPN",
"EQIndex": 1, //1 代表第一个终端,2 代表第二个终端,以此类推.
"Param": {
"State": 0 //0 成功,其他为失败原因码
}
}

原因码列表:
原因码 描述 备注
0 成功
-1 失败

2.2 配置/激活 PDU

请求:
{
"CMD": "SetupPDU",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"ID": 1,
"Type": "IPV4V6",
"APN": "wap2.xxx.com",
"SSC_mode": 0, //0:SSC mode1,1:SSC mode2
"S_NSSAI": "1.123456;2F.654321" //5GS的分片信息,注意:字符串中的数据为16
进制,字符取值范围:0-9,A-F,a-f。S_NSSAI的sst和sd组合入参说明如下。
}
}

回复:
{
"CMD": "SetupPDU",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"State": 0 //0成功,其他为失败原因码
}
}

2.3 释放 PDU

请求:
10 / 50
万思维

{
"CMD": "ReleasePDU",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"ID": 1
}
}

回复:
{
"CMD": "ReleasePDU",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"State": 0 //0成功,其他为失败原因码
}
}

2.4 配置/激活 S-NSSAI 网络切片

请求:
{
"CMD": "SetupS_NSSAI",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"ID": 1,
"Type": "IPV4V6",
"APN": "wap2.xxx.com",
"SSC_mode": 0, //0:SSC mode1,1:SSC mode2
"S_NSSAI": "1.123456;2F.654321" //5GS的分片信息,注意:字符串中的数据为16
进制,字符取值范围:0-9,A-F,a-f。S_NSSAI的sst和sd组合入参说明如下。
}
}

回复:
{
"CMD": "SetupS_NSSAI",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"State": 0 //0成功,其他为失败原因码
}
}

11 / 50
万思维

// 说明:S_NSSAI 的 sst 和 sd 有 5 种组合入参,如下:


1、"sst":"sst" if only slice/service type (SST) is present
入参:1
2 、 "sst;mapped_sst" : "sst;mapped_sst" if SST and mapped configured SST are
present
入参:1;2F
3、"sst.sd":"sst.sd" if SST and slice differentiator (SD) are present
入参:1.123456
4 、 "sst.sd;mapped_sst" : "sst.sd;mapped_sst" if SST, SD and mapped configured
SST are present
入参:1.123456;2F
5 、 "sst.sd;mapped_sst.mapped_sd" : "sst.sd;mapped_sst.mapped_sd" if SST, SD,
mapped configured SST and mapped configured SD are present
入参:1.123456;2F.654321

2.5 设置终端 5G 网络制式

设置终端 5G 网络制式,仅海思芯片终端生效!可设置为:"自由模式", "NSA 模式",


" SA+NSA 模式"
请求:
{
"CMD": "Config5GDeployment",
"EQIndex": 1, //1 代表第一个终端,2 代表第二个终端,以此类推
"Param": {
"NetType": 0 //0:"自由模式", 8:"NSA 模式", 20:" SA+NSA 模式"
}
}

回复:
{
"CMD": "Config5GDeployment",
"EQIndex": 1, //{1~n}, 1 代表第一个终端,2 代表第二个终端,以此类推.
"Param": {
"State": 0 //0 成功,其他为失败原因码
}
}
原因码列表:
原因码 描述 备注
0 成功
-1 失败

限制条件:

12 / 50
万思维

1、该接口仅 Mate 20X, Mate 30, Mate 30 PRO 生效,终端版本需要升级到 SP7 及


以后的版本;
2、执行接口命令前,需要启动手机上的 UE manger 服务,并让终端处于亮屏状态;
3、执行接口命令后,网络制式立即生效,不需要重启终端。

2.6 设置子帧

请求:
{
"CMD": "SetSubFrame",
"Param": {
"QualcommEnable": true, //高通子帧设置, true设置,false不设置
"SubFrameSet":{ //子帧具体的设置内容
"ItemListNR5G": [
{
"Code": 5070, //CQI/RI Info
"Checked": true //true采集,false不采集
}, {
"Code": 5080, //PDSCH Info
"Checked": true
}, {
"Code": 5081, //PUSCH Info
"Checked": true
}, {
"Code": 5090, //DL Grant Info
"Checked": true
}, {
"Code": 5091, //UL Grant Info
"Checked": true
}
],
"ItemListLTE": [ //LTE网络的子帧设置
{
"Code": 180, //LTE PDSCH Info
"Checked": true
}, {
"Code": 200, //LTE PUSCH Info
"Checked": true
}, {
"Code": 220, //LTE PUCCH Info
"Checked": true
}, {
"Code": 280, //LTE UL Grant Info

13 / 50
万思维

"Checked": true
}, {
"Code": 300, //LTE DL Grant Info
"Checked": true
}, {
"Code": 560, //LTE UL MAC Info
"Checked": true
}, {
"Code": 580, //LTE DL MAC Info
"Checked": true
}, {
"Code": 600, //LTE UL RLC Info
"Checked": true
}, {
"Code": 620, //LTE DL RLC Info
"Checked": true
}, {
"Code": 680, //LTE UL PDCP Info
"Checked": true
}, {
"Code": 700, //LTE DL PDCP Info
"Checked": true
}
]
}
}
}

回复:
{
"CMD": "SetSubFrame",
"Param": {
"State": 0 //0成功,其他为失败原因码
}
}

2.7 配置导出参数模板

配置导出参数模板,生成模板名称默认为 test
请求:
{

14 / 50
万思维

"CMD": "Config5GNRmeasurementAndEvent",
"EQIndex": 1, //1 代表第一个终端,2 代表第二个终端,以此类推.
"Param": {
"IEList": ["event", "Cell ID"….] //1、输入需要导出的参数名称,参
数名称务必与导出列表中显示的名称一致,建议从附录 NR5G 参数列表中拷贝。2、
event,代表导出所有事件,3、Message,代表导出所有 L3 信令。
}
}

回复:
{
"CMD": "Config5GNRmeasurementAndEvent",
"EQIndex": 1, //1 代表第一个终端,2 代表第二个终端,以此类推.
"Param": {
"State": 0 //0 成功,其他为失败原因码
}
}

原因码列表:
原因码 描述 备注
0 成功
-1 或其他 失败

2.8 配置导出过滤条件

Filter 和 Bin 的名字对应下面红框的

请求:
{
"CMD": "SetExportFilterBin",
"Param": {
"Filter": "FTP Task",
"Bin": "Time-1S"
}
}

15 / 50
万思维

回复:
{
"CMD": "SetExportFilterBin",
"Param": {
"State": 0 //0成功,-1为传入的json格式有问题
}
}

2.9 配置回传告警信息

请求:在 Spark 软件设置-采集(分页),勾选“自动化测试上报告警信息”选项,不需要


发请求消息,该选项默认不勾选;勾选后,如不需要上报告警信息,则需要去除勾选。

回复:
{
"CMD": "Warning",
"EQIndex": 1,
"Param": {
"Code": 0, //0: NoRSRP,
"Desc": "没有测量参数,请检查。" //提示信息
}
}

3 业务类

3.1 开始测试

请求:
{
"CMD": "StartTest",
"EQIndex": 1 //第几个终端,1为第1个终端,-1为所有终端
}

回复:
{
"CMD": "StartTest",
"EQIndex": 1, //第几个终端,1为第1个终端,-1为所有终端
16 / 50
万思维

"Param": {
"State": 0 //0成功, 其他为失败原因码
}
}
原因码列表:
原因码 描述 备注
0 成功
-1 失败
-98 Server 异常 调 用 者 需 要 重 新 调 用 StartLog 或
StartOneLog 接口,重跑业务流程。
-99 无权限

3.2 停止测试

请求:
{
"CMD": "StopTest",
"EQIndex": 1 //第几个终端,1为第1个终端,-1为所有终端
}

回复:
{
"CMD": "StopTest",
"EQIndex": 1, //第几个终端,1为第1个终端,-1为所有终端
"Param": {
"State": 0 //0成功, 其他为失败原因码
}
}
原因码列表:
原因码 描述 备注
0 成功
-1 失败
-98 Server 异常 调 用 者 需 要 重 新 调 用 StartLog 或
StartOneLog 接口,重跑业务流程。
-99 无权限

3.3 开始测试-指定测试计划

请求:
{
17 / 50
万思维

"CMD": "StartTestByName",
"EQIndex": 1, //第几个终端,1为第1个终端,-1为所有终端
"Param": {
"TaskName": ["Ping", "Attach"] //数组,支持多个测试计划名勾选并测试
}
}

回复:
{
"CMD": "StartTestByName",
"EQIndex": 1, //第几个终端,1为第1个终端,-1为所有终端
"Param": {
"State": 0 //0成功, 其他为失败原因码
}
}

3.4 开始上行灌包

UDP 灌包请求:
{
"CMD": "StartULtraffic",
"EQIndex": 1, //{-1, 1~n}, -1 代表所有终端, 1 代表第一个终端,2 代表第二个
终端,以此类推
"Param": {
"Protocol": "UDP", // 灌包类型
"Address": "10.57.163.34", //灌包服务器地址
"Port": 5001, //灌包服务器端口号
"TestTime": 120, //测试时长
"Bandwidth": 1000, //Kbps.
"BufferSize": 1024, //KB
"PacketSize": 1400 //Byte
}
}

TCP 灌包请求:
{
"CMD": "StartULtraffic",
"EQIndex": 1, //{-1, 1~n}, -1 代表所有终端, 1 代表第一个终端,2 代表第二个
终端,以此类推
"Param": {
"Protocol": "TCP", // 灌包类型
"Address": "10.57.163.34", //灌包服务器地址

18 / 50
万思维

"Port": 5001, //灌包服务器端口号


"TestTime": 120, //测试时长
"Thread": 10, //线程数量
"TCPWindowsSize": 4096, //TCP 缓冲区总大小
"TCPBufferLength": 512 //TCP 缓冲区读写大小
}
}

回复:
{
"CMD": "StartULtraffic",
"EQIndex": 1, //{-1, 1~n}, -1 代表所有终端, 1 代表第一个终端,2 代表第二个终
端,以此类推

"Param": {
"State": 0 //0 成功,其他为失败原因码
}
}

原因码列表:
原因码 描述 备注
0 成功
-1 或其他 失败

3.5 停止上行灌包

请求:
{
"CMD": "StopULtraffic",
"EQIndex": 1 //{-1, 1~n}, -1 代表所有终端, 1 代表第一个终端,2 代表第二个终
端,以此类推

回复:
{
"CMD": "StopULtraffic",
"EQIndex": 1, //{-1, 1~n}, -1 代表所有终端, 1 代表第一个终端,2 代表第二个终
端,以此类推
"Param": {
"State": 0 //0 成功,其他为失败原因码

19 / 50
万思维

}
}

原因码列表:
原因码 描述 备注
0 成功
-1 或其他 失败

3.6 设置测试计划

测试计划接口结构说明:测试计划接口(UpdateTaskXML)由两部分组成,一是公共部
分,二是具体的测试计划,测试计划可以配置 1 个或者多个,修改测试计划,只需要将
Command Repeat 节点的内容进行修改即可。
注意:xml 内容里如果有字符串,需要加斜杠\,如:<Command Repeat=\"1\">
结构 内容

{
"CMD":"UpdateTaskXML",
公共部分 "EQIndex":1,
"Param":"
<CommandList Repeat=\"1\">
<Synchronize type=\"\">

<Command Repeat=\"10\">
<name>PING-BAIDU</name>
测试计划 1 <ID>0x0604</ID>
...
</Command>

<Command Repeat=\"10\">
<name>HTTP 网页</name>
测试计划 2 <ID>0x060F</ID>
...
</Command>
… …
<Command Repeat=\"10\">
<name>FTPDownload</name>
测试计划 N <ID>0x060C</ID>
...
</Command>
</Synchronize>
公共部分 </CommandList>"
}

20 / 50
万思维

PING 业务

请求:
{
"CMD":"UpdateTaskXML",
"EQIndex":1,
"Param":"
<CommandList Repeat=\"1\">//外循环执行次数
<Synchronize type=\"\"> //同步类型,入参暂不支持设置,默认为:空
<Command Repeat=\"10\"> //业务执行次数
<name>PING</name> //PING 业务名称
<ID>0x0604</ID> //PING 业务 ID
<NetLink>1</NetLink> //网络类型,1:手机对应的是 APP 测试,广和
通模组对应的是 AT NDIS 连接;2:为 AT 指令,仅针对 NB-IoT 模组。
<IP>www.baidu.com</IP> //PING 目标地址,如:8.8.8.8
<Packagesize>200</Packagesize> //PING 包大小
<Interval>1</Interval> //PING 间隔
<TimeOut>15</TimeOut> //PING 超时
<TestMode>NormalPing</TestMode> //测试模式,“IdlePing”: 空闲
态 Ping,“NormalPing”:常规 Ping,"Inactive":RRC Inactive 状态,“NR5G”:仅 5G 模式
<SortIndex>1</SortIndex> //业务排序
</Command>
</Synchronize>
</CommandList>"
}
回复:
{
"CMD": " UpdateTaskXML",
"EQIndex": 1, //第几个终端,1为第1个终端,-1为所有终端
"Param": {
"State": 0 //0成功, -1为解析失败,-2为xml格式错误
}
}

FTP 上传业务

请求:
{
"CMD":"UpdateTaskXML",
"EQIndex":1,
"Param":"
<CommandList Repeat=\"1\"> // CommandList Repeat:外循环次数

21 / 50
万思维

<Synchronize type=\"\">
<Command Repeat=\"10\"> //业务执行次数
<name>FTPUpload</name> //FTP 上传业务名称
<ID>0x060C</ID> //FTP 业务 ID
<Download>0</Download> //FTP 业务类型,0:上传,1:下载
<RemoteHost>1.71.191.178</RemoteHost> //FTP 服务器 IP 地址
<Port>8018</Port> // FTP 服务器端口号
<Account>SXDX_test1</Account> //FTP 服务器用户名
<Password>SXdx@5G</Password> //FTP 服务器密码
<Passive>1</Passive> //主被动模式,0:主动模式,1:被动模式
<RemoteFile>/Upload/</RemoteFile> //FTP 服务器上传路径
<UploadSchema>time</UploadSchema> //“size”: 按大小上传,
“time”:按时长上传,“file”:按文件上传
<UploadTime>180</UploadTime> //FTP 上传测试时长, 单位:秒;仅
UploadSchema 为 Time 模式下生效
<FileSize>1024000</FileSize> //FTP 上传文件大小,前端生成指定
大小的上传文件,单位:KB;仅 UploadSchema 为 size 模式下生效
<FilePath>E:\\Upload\\File1G.zip</FilePath> //FTP 上 传 文 件 路
径,仅 UploadSchema 为 file 模式下生效;如果网络连接类型为:APP 测试,则需要把本
地的上传文件拷贝到手机的 Sdcard 后,再指定路径,如:/sdcard/File1G.zip
特别说明:上传测试电脑本地的文件,路径节点间使用“\\”分隔符,
上传测试手机 Sdcard 的文件,路径节点间使用“/”分隔符。
<Interval>15</Interval> //FTP 业务间隔
<ThreadNum>3</ThreadNum> //FTP 业务线程数
<TimeOut>180</TimeOut> //FTP 业务传输超时时长
<NoDataTimeout>30</NoDataTimeout> //FTP 业务传输无流量超时时长
<DeleteUploadedFile>true</DeleteUploadedFile> //“true”删除已
上传文件;“false”不删除已上传文件
<MaxFTPland>5</MaxFTPland> //FTP 业务尝试次数
<SortIndex>2</SortIndex> //业务排序
</Command>
</Synchronize>
</CommandList>"
}
回复:
{
"CMD": " UpdateTaskXML",
"EQIndex": 1, //第几个终端,1 为第 1 个终端,-1 为所有终端
"Param": {
"State": 0 //0 成功, -1 为解析失败,-2 为 xml 格式错误
}
}

22 / 50
万思维

FTP 下载业务

请求:
{
"CMD":"UpdateTaskXML",
"EQIndex":1,
"Param":"
<CommandList Repeat=\"1\"> // CommandList Repeat:外循环次数。
<Synchronize type=\"\">
<Command Repeat=\"10\"> //业务执行次数
<name>FTPDownload</name> //FTP 下载业务名称
<ID>0x060C</ID> //FTP 业务 ID
<Download>1</Download> //FTP 业务类型,0:上传,1:下载。
<RemoteHost>1.71.191.178</RemoteHost> //FTP 服务器 IP 地址
<Port>8018</Port> // FTP 服务器端口号
<Account>SXDX_test1</Account> //FTP 服务器用户名
<Password>SXdx@5G</Password> //FTP 服务器密码
<Passive>1</Passive> //主被动模式,0:主动模式,1:被动模式
<DownloadSchema>file</DownloadSchema> // “file”: 按文件下载,
“time”:按时长下载
<RemoteFile>/Download/10G1</RemoteFile> //FTP 服务器下载路径及
文件;仅 UploadSchema 为 file 模式下生效
<DownloadTime>180</DownloadTime> //FTP 下载测试时长,单位:秒;
仅 UploadSchema 为 time 模式下生效
<Interval>15</Interval> //FTP 业务间隔
<ThreadNum>10</ThreadNum> //FTP 业务线程数
<TimeOut>180</TimeOut> //FTP 业务传输超时时长
<NoDataTimeout>30</NoDataTimeout> //FTP 业务传输无流量超时时长
<MaxFTPland>5</MaxFTPland> //FTP 业务尝试次数
<SortIndex>3</SortIndex> //业务排序
</Command>
</Synchronize>
</CommandList>"
}
回复:
{
"CMD": " UpdateTaskXML",
"EQIndex": 1, //第几个终端,1 为第 1 个终端,-1 为所有终端
"Param": {
"State": 0 //0 成功, -1 为解析失败,-2 为 xml 格式错误
}
}

23 / 50
万思维

HTTP 网页业务

请求:
{
"CMD":"UpdateTaskXML",
"EQIndex":1,
"Param":"
<CommandList Repeat=\"1\"> // CommandList Repeat:外循环次数。
<Synchronize type=\"\">
<Command Repeat=\"10\"> //业务执行次数
<name>HTTPpage</name> //HTTP 网页浏览业务名称
<ID>0x060F</ID> //HTTP 业务 ID
<Mode>0</Mode> //HTTP 业务类型:0:网页浏览
<UrlMust>https://www.sina.com.cn,https://www.baidu.com</UrlMust>
//HTTP 网页浏览地址
<UrlInterval>3</UrlInterval> //网页浏览间隔(多 URL 时
生效)
<NoDataTimeout>30</NoDataTimeout> //无流量超时时长
<TimeOut>30</TimeOut> //HTTP 网页浏览总时长
<Interval>10</Interval> //HTTP 业务间隔
<SortIndex>4</SortIndex> //HTTP 业务排序
</Command>
</Synchronize>
</CommandList>"
}

回复:
{
"CMD": " UpdateTaskXML",
"EQIndex": 1, //第几个终端,1 为第 1 个终端,-1 为所有终端
"Param": {
"State": 0 //0 成功, -1 为解析失败,-2 为 xml 格式错误
}
}

HTTP 下载业务

请求:
{
"CMD":"UpdateTaskXML",
"EQIndex":1,
"Param":"

24 / 50
万思维

<CommandList Repeat=\"1\"> // CommandList Repeat:外循环次数。


<Synchronize type=\"\">
<Command Repeat=\"10\"> //业务执行次数
<name>HTTPdownload</name> //HTTP 文件业务名称
<ID>0x060F</ID> //HTTP 业务 ID
<Mode>2</Mode> //HTTP 业务类型:2:文件下载
<URL> https://down.qq.com/qqweb/PCQQ/PCQQ_EXE/PCQQ2020.exe</URL>
//HTTP 下载文件地址
<NoDataTimeout>30</NoDataTimeout> //无流量超时时长
<TimeOut>30</TimeOut> //HTTP 文件下载总时长
<Interval>10</Interval> //HTTP 业务间隔
<SortIndex>5</SortIndex> //HTTP 业务排序
</Command>
</Synchronize>
</CommandList>"
}回复:
{
"CMD": " UpdateTaskXML",
"EQIndex": 1, //第几个终端,1 为第 1 个终端,-1 为所有终端
"Param": {
"State": 0 //0 成功, -1 为解析失败,-2 为 xml 格式错误
}
}

BWT 灌包业务

UDP 灌包请求:
{
"CMD":"UpdateTaskXML",
"EQIndex":1,
"Param":"
<CommandList Repeat=\"1\">
<Synchronize type=\"\">
<Command Repeat=\"10\">
<name>BWT-UDP</name> //灌包业务名称
<ID>0x0620</ID> //灌包业务ID
<NetLink>10</NetLink> //10:AT NDIS连接,1:APP测试,0:AT网络连接
<RemoteHost>8.8.8.8</RemoteHost> //灌包服务器IP地址
<Port>50001</Port> //灌包服务器端口
<Passive>1</Passive> //0:TCP;1:UDP
<Download>0</Download> //0:上行;1:下行
<BandWidth>12000</BandWidth> //带宽Kbps

25 / 50
万思维

<BufferSize>1024</BufferSize> //缓存区大小,单位:KB
<PacketSize>1000</PacketSize> //发包大小,单位:Byte
<transferTime>180</transferTime> //测试时长,单位:s
<Interval>10</Interval> //测试间隔,单位:s
<SortIndex>6</SortIndex> //业务排序
</Command>
</Synchronize>
</CommandList>"
}
}
回复:
{
"CMD": " UpdateTaskXML",
"EQIndex": 1, //第几个终端,1 为第 1 个终端,-1 为所有终端
"Param": {
"State": 0 //0 成功, -1 为解析失败,-2 为 xml 格式错误
}
}

TCP 灌包请求:
{
"CMD":"UpdateTaskXML",
"EQIndex":1,
"Param":"
<CommandList Repeat=\"1\">
<Synchronize type=\"\">
<Command Repeat=\"10\">
<name>BWT-TCP</name> //灌包业务名称
<ID>0x0620</ID> //灌包业务ID
<NetLink>10</NetLink> //10:AT NDIS连接,1:APP测试,0:AT网络连接
<RemoteHost>8.8.8.8</RemoteHost> //灌包服务器IP地址
<Port>50001</Port> //灌包服务器端口
<Passive>0</Passive> //0:TCP;1:UDP
<Download>0</Download> //0:上行;1:下行
<PacketSize>1400</PacketSize> //发包大小,单位:Byte
<TCPWindowsSize>4096</TCPWindowsSize> //TCP缓存区总大小,单位:KB
<TCPBufferLength>32</TCPBufferLength> //TCP缓存区读写长度,单位:KB
<Thread>1</Thread> //线程数
<transferTime>180</transferTime> //测试时长,单位:s
<Interval>10</Interval> //测试间隔,单位:s
<SortIndex>1</SortIndex> //业务排序
</Command>
</Synchronize>
</CommandList>"

26 / 50
万思维

}
回复:
{
"CMD": " UpdateTaskXML",
"EQIndex": 1, //第几个终端,1 为第 1 个终端,-1 为所有终端
"Param": {
"State": 0 //0 成功, -1 为解析失败,-2 为 xml 格式错误
}
}

CallMO 业务

请求:
{
"CMD":"UpdateTaskXML",
"EQIndex":1,
"Param":"
<CommandList Repeat=\"1\">//外循环执行次数
<Synchronize type=\"\"> //同步类型,入参暂不支持设置,默认为:空
<Command Repeat=\"10\"> //业务执行次数
<name>CallMO</name> //语音主叫业务名称
<ID>0x0500</ID> //语音主叫业务 ID
<CallType>2</CallType> // 0:仅主叫,2:互拨-主叫。
<CallMSNO>2</CallMSNO> //被叫终端 UE 编号,仅“CallType 为 2:互拨
-主叫,3:互拨-被叫”时生效。
<CallNumber> 13411390000</CallNumber> //被叫号码
<Duration >60</Duration> //通话时长
<Interval>15</Interval> //业务间隔
<TestMOS>0</TestMOS> //是否进行 MOS 测试,0:不做 MOS 测试,1:
进行 MOS 测试
<POLQAAlgorithm>0</POLQAAlgorithm> //POLQA 算分模式,0:SWB,
1:NB
<SamplingRate>0</SamplingRate> //语料采样率,0:48K,1:16K,
2:8K
<SortIndex>7</SortIndex> //业务排序
</Command>
</Synchronize>
</CommandList>"
}
回复:
{
"CMD": " UpdateTaskXML",

27 / 50
万思维

"EQIndex": 1, //第几个终端,1为第1个终端,-1为所有终端
"Param": {
"State": 0 //0成功, -1为解析失败,-2为xml格式错误
}
}

CallMT 业务

请求:
{
"CMD":"UpdateTaskXML",
"EQIndex":1,
"Param":"
<CommandList Repeat=\"1\">//外循环执行次数
<Synchronize type=\"\"> //同步类型,入参暂不支持设置,默认为:空
<Command Repeat=\"10\"> //业务执行次数
<name>CallMT</name> //语音被叫业务名称
<ID>0x0501</ID> //语音被叫业务 ID
<CallType>3</CallType> //1:仅被叫,3:互拨-被叫。
<TestMOS>0</TestMOS> //是否进行 MOS 测试,0:不做 MOS 测试,1:进
行 MOS 测试
<SortIndex>8</SortIndex> //业务排序
</Command>
</Synchronize>
</CommandList>"
}
回复:
{
"CMD": " UpdateTaskXML",
"EQIndex": 1, //第几个终端,1为第1个终端,-1为所有终端
"Param": {
"State": 0 //0成功, -1为解析失败,-2为xml格式错误
}
}

SMS 业务

请求:
{
"CMD":"UpdateTaskXML",
28 / 50
万思维

"EQIndex":1,
"Param":"
<CommandList Repeat=\"1\">//外循环执行次数
<Synchronize type=\"\"> //同步类型,入参暂不支持设置,默认为:空
<Command Repeat=\"10\"> //业务执行次数
<name>SMS</name> //短信业务名称
<ID>0x6609</ID> //短信业务 ID
<SMSMode>SendOnly</SMSMode> //仅发送:SendOnly,仅接
收:ReceiveOnly,自发自收:SendandReceive
<CalledNumber>13411390000</CalledNumber> //接收号码
<CallingNumber>13411391111</CallingNumber> //本机号码
<SMSContent>SMStest</SMSContent> //短信内容
<SendTimeout>30</SendTimeout> //发送超时
<ReceiveTimeout>30</ReceiveTimeout> //接收超时,仅对 Mode 为
0 和 2 时生效。
<Interval>15</Interval> //业务间隔
<SortIndex>9</SortIndex> //业务排序
</Command>
</Synchronize>
</CommandList>"
}
回复:
{
"CMD": " UpdateTaskXML",
"EQIndex": 1, //第几个终端,1为第1个终端,-1为所有终端
"Param": {
"State": 0 //0成功, -1为解析失败,-2为xml格式错误
}
}

3.7 指定若干测试计划为并发业务

请求:
{
"CMD": "SetParallelTask",
"EQIndex": 1, //第几个终端,1为第1个终端,-1为所有终端
"Param": {
"NewName": "ParallelTask", //生成的并发业务名称
"TaskName": ["Ping", "Attach"] //数组,支持多个测试计划名
}
}

29 / 50
万思维

回复:
{
"CMD": "SetParallelTask",
"EQIndex": 1, //第几个终端,1为第1个终端,-1为所有终端
"Param": {
"State": 0 //0成功, -1为不够2个业务,-2为找不到对应的测试计划名称
}
}

3.8 导入测试计划

请求:
{
"CMD": "ImportTask",
"EQIndex": 1, //第几个终端,1为第1个终端,-1为所有终端
"Param": {
"TaskFile": "C:\\test.task"
}
}

回复:
{
"CMD": "ImportTask",
"EQIndex": 1, //第几个终端,1为第1个终端,-1为所有终端
"Param": {
"State": 0 //0成功,其他为失败
}
}

4 强制类

4.1 关机指令

请求:
{
"CMD": "PowerOff",
"EQIndex": 1 //第几个终端,1为第1个终端,-1为所有终端
}

30 / 50
万思维

回复:
{
"CMD": "PowerOff",
"EQIndex": 1, //第几个终端,1为第1个终端,-1为所有终端
"Param": {
"State": -1, //0 执行成功,其他为失败
"FailUEs": [1,3] //关机失败的终端编号
}
}

4.2 开机指令

请求:
{
"CMD": "PowerOn",
"EQIndex": 1 //第几个终端,1为第1个终端,-1为所有终端
}

回复:
{
"CMD": "PowerOn",
"EQIndex": 1, //第几个终端,1为第1个终端,-1为所有终端
"Param": {
"State": -1, //0 执行成功,其他为失败
"FailUEs": [1,3] //开机失败的终端编号
}
}

4.3 Attach 指令

请求:
{
"CMD": "Attach",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"UEMode": "5G_SA", //”4G” or “5G_SA” or “5G_NSA”
"Timeout": 30000 //单位:ms,附着超时时长;如果留空,整个流程默认30秒超时
}
}

回复:
31 / 50
万思维

{
"CMD": "Attach",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"State": 0 //0 执行成功;-1是没Attach Success 或 SA Registration Success事
件;-2 是UEMode请求为 5G_NSA 时,超时时间内没收到 NR5G CELL Add事件
}
}

4.4 Detach 指令

请求:
{
"CMD": "Detach",
"EQIndex": 1 //第几个终端,1为第1个终端,不支持所有终端
}

回复:
{
"CMD": "Detach",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"State": 0 //0 执行成功,只有收到Detach Request或SA Deregistration Request
事件才返回成功;其他为失败,默认30秒超时。
}
}

4.5 关闭手机移动数据

请求:
{
"CMD": "TurnOffMobileData",
"EQIndex": 1 //第几个终端,1为第1个终端,不支持所有终端

回复:
{
"CMD": "TurnOffMobileData",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
32 / 50
万思维

"Param": {
"State": 0 //0 执行成功,其他为失败
}
}

4.6 打开手机移动数据

请求:
{
"CMD": "TurnOnMobileData",
"EQIndex": 1 //第几个终端,1为第1个终端,不支持所有终端
}

回复:
{
"CMD": "TurnOnMobileData",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"State": 0 //0 执行成功,其他为失败
}
}

4.7 发送 AT 指令

请求:
{
"CMD": "SendAT",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"Command": "AT+CFUN=1,1", //请求的AT指令
"Timeout": 50000, //超时毫秒
"SuccStr": "+AT READY" //判断成功的字符串,可根据AT指令返回的信息来
设置SuccStr,作为AT指令发送成功的判断依据,如:发送的AT指令会返回“+AT READY”,
那么SuccStr传入的内容则设置为"+AT READY";在超时时间内接收到AT返回返回的“+AT
READY”信息时,则判断本次AT指令发送成功。如果SuccStr传入内容为空或不传本字段,
默认判断返回ok为成功。
}
}

回复:
33 / 50
万思维

{
"CMD": "SendAT",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"State": 0 //0成功,-1打开AT口失败,-2Error失败,-3超时
"Command": "AT+CFUN=1,1", //请求的AT指令
"Back": "AT+CFUN=1,1\r\r\nOK\r\n\r\n+AT READY\r\n" //AT指令返回的内容
}
}

注意:调用 SendAT 接口连续发 AT 指令时,需要添加“间隔时间”或者是等待接收到 AT 指


令返回结果后,才执行一下一条指令;连续无间隔的发送 AT 指令,可能会导致设备异常。
原因码列表:
原因码 描述 备注
0 成功
-1 或其他 失败

4.8 重启手机指令

请求:
{
"CMD": "Reboot",
"EQIndex": 1 //第几个终端,1为第1个终端,不支持所有终端
}

回复:
{
"CMD": "Reboot",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"State": 0 //0 执行成功,其他为失败
}
}

原因码列表:
原因码 描述 备注
0 成功
-1 失败:EQIndex 不正确
-2 失败:终端 ADB 口为空或异常
-3 失败:终端 Trace 口打开失败

34 / 50
万思维

5 查询类

5.1 查询 NR MAC 层上下行速率

请求:
{
"CMD": "GetParamMAC",
"EQIndex": 1 //第几个终端,1为第1个终端,不支持所有终端
}

回复:
{
"CMD": "GetParamMAC",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"State": 0, //0成功,其他为失败原因码
"MACDL": 2000000, //bps, 当前时刻MAC下行速率
"MACUL": 1000000 //bps, 当前时刻MAC上行速率
}
}

5.2 查询 IMSI 和移动数据 IP

该接口需要结合 UE Manager 一起使用。请先启动手机上的 UE Manager APP 后,再连接设


备。
请求:
{
"CMD": "GetParamIMSI",
"EQIndex": 1 //第几个终端,1为第1个终端,不支持所有终端
}

回复:
{
"CMD": "GetParamIMSI",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"State": 0, //0成功,其他为失败原因码
"IMSI": "460020315993651", //查询终端的IMSI
"IP": "10.68.59.136" //查询终端的IP地址
}
}
35 / 50
万思维

5.3 查询 PDU IP

该接口根据不同的 APN,返回该 APN 对应 NR PDU 的 IP 地址。


请求:
{
"CMD": "GetPDUInfo",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"APN": "wap2.xxx.com"
}
}

回复:
{
"CMD": "GetPDUInfo",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"State": 0, //0成功,其他为失败原因码
"APN": "wap2.xxx.com",
"IP": "1.1.1.1"
}
}

5.4 查询 EPS IP

该接口根据不同的 APN,返回该 APN 对应 LTE EPS 的 IP 地址。


请求:
{
"CMD": "GetEPSInfo",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"APN": "CMNET.MNC002.MCC460.GPRS"
}
}

回复:
{
"CMD": "GetEPSInfo",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"State": 0, //0成功,其他为失败原因码

36 / 50
万思维

"APN": "CMNET.MNC002.MCC460.GPRS",
"IP": "0001:0002:9EBD:1401:10.45.52.88"
}
}

5.5 获取事件列表

本接口只支持获取测试终端数据的事件列表,可以通过本接口定时调用,传入实时的
LastEventIndex,获取测试时的增量事件。
请求:
{
"CMD": "GetEvents",
"EQIndex": 1, //1 代表第一个终端,2 代表第二个终端,以此类推,不支持-1 所有终

"Param": {
"LastEventIndex": 0 //获取大于本序号的事件,第一次传0,后续传GetEvents
结果返回的LastEventIndex,返回的第一个事件序号为1,第二个事件序号为2,以此
类推。
}
}
回复:
{
"CMD": "GetEvents",
"EQIndex": 1, //1 代表第一个终端,2 代表第二个终端,以此类推,不支持-1 所有终

"Param": {
"State": 0 //0成功,-1为没连接设备或不存在该设备,其他
为失败原因码
"LastEventIndex": 1, //下次请求事件列表,要用本LastEventIndex
"EventCount": 1,
"EventList": [
{
"Index": 1, //事件序号,从1开始
"Time": 1500739860933013, //1970年1月1日后经过的微秒数,Int64
"Name": "Attach Success",
"Detail": "Delay: 3ms"
}
]
}
}

37 / 50
万思维

5.6 查询参数

请求:
{
"CMD": "GetParamValue",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": [ //参数名(数组),参数名称区分大小写、空格等字符,入参名称
必须与附录NR5G参数表里的一致
"NR SSB RSRP[dBm]",
"NR SSB SINR[dB]",
"NR PCI"
]
}

回复:
{
"CMD": "GetParamValue",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"State": 0, //0成功,-1非测试状态, -2存在不支持访问的参数,
Values为空
"Values": [ //参数值数组,值为字符串类型
"-88.68",
"10.61",
"295"
]
}
}

原因码列表:
原因码 描述 备注
0 成功 返回参数查询结果
-1 失败-非测试状态
-2 失败-存在不支持访问的参数

5.7 查询参数(列表)

该接口返回的结果,以列表的方式呈现。如: NR DPSCH DMRS RSSI 参数,根据不同的维


度,在在同一时刻有多个不同测量结果。
请求:

38 / 50
万思维

{
"CMD": "GetParamValueList",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"ParamName": "NR PDSCH DMRS RSSI[dBm]", //要获取参数值列表的参数名,参数名称
区分大小写、空格等字符,入参名称必须与附录NR5G参数表里的一致
"FilterParamName": "NR PDSCH DMRS PortIndex", //条件参数名,参数名称区分大
小写、空格等字符,入参名称必须与附录NR5G参数表里的一致
"FilterParamValue": 0 //条件参数值
}
}

回复:
{
"CMD": "GetParamValueList",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"State": 0, //0成功,-1非测试状态, -2存在不支持访问的参数,
Values为空
"Values": [ //参数值数组,值为字符串类型
"-88.68",
"-86.61",
"-85.66"
]
}
}

原因码列表:
原因码 描述 备注
0 成功 返回参数查询结果
-1 失败-非测试状态
-2 失败-存在不支持访问的参数

5.8 查询手机电量

请求:
{
"CMD": "GetUEPower",
"EQIndex": 1 //第几个终端,1为第1个终端,不支持所有终端
}

39 / 50
万思维

回复:
{
"CMD": "GetUEPower",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"State": 0, //见下面原因码列表
"Power": 65 //整形,正常值0~100, -1为取不到电量
}
}

原因码列表:
原因码 描述 备注
0 成功 返回参数查询结果
-1 失败-UE Manager 没返回 确 认 手 机 的 UE
Manager 已启动,并且
连接状态为:已连接
-2 失败-EQIndex 不正确
-3 失败-需要先连接设备

5.9 获取设备信息

请求:
{
"CMD": "EQInfo"
}

回复:
{
"CMD": "EQInfo",
"Param": {
"State": 0,
"EQCount": 1,
"EQList": [
{
"EQIndex": 1,
"Model": "MI 8", //终端的型号;
"IMEI": "861997048939990",//终端的IMEI
"DataIP": "", //移动网络蜂窝IP
"Operator": "中国移动",//运营商
}
]

40 / 50
万思维

}
}

5.10 查询端口状态

请求:
{
"CMD": "GetPortStatus",
"EQIndex": 1, //1 代表第一个终端,2 代表第二个终端,以此类推,不支持-1 所有终端
"Param": {
"Type": 0 //0:AT口检测,1:ADB通道检测
}
}

回复:
{
"CMD": "GetPortStatus",
"EQIndex": 1, //1 代表第一个终端,2 代表第二个终端,以此类推,不支持-1 所有终端
"Param": {
"State": 0 //0端口正常,-1端口异常
}
}

原因码列表:
原因码 描述 备注
0 成功
-1 失败:端口异常
-2 失败:EQIndex 不正确
-3 失败:Param 节点入参不正确
-4 失败:终端未连接 仅 Type 为 AT 口检测返回
-5 失败:AT 口打开失败 仅 Type 为 AT 口检测返回
-6 失败:终端数据读取异常 仅 Type 为 AT 口检测返回
-7 失败:终端 ADB 口为空 仅 Type 为 ADB 通道检测返回

5.11 查询 RBDetail

请求:
{
"CMD": "GetRBDetail",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"Network": 11, //11: NR, 1:LTE
41 / 50
万思维

"Direction": 1 //0: 上行, 1:下行


}
}

回复:
{
"CMD": "GetRBDetail",
"EQIndex": 1, //第几个终端,1为第1个终端,不支持所有终端
"Param": {
"State": 0, //0成功,-1非测试状态(此时Values为空)
"Values": [ //参数值数组,值为整数类型,NR 273个值,LTE 100个值
40,
40,
39,
8,
8
]
}
}

5.12 获取信令列表

本接口只支持获取测试终端数据的信令列表,可以通过本接口定时调用,传入实时的
LastMsgIndex,获取测试时的增量信令。
请求:
{
"CMD": "GetMsgs",
"EQIndex": 1, //1 代表第一个终端,2 代表第二个终端,以此类推,不支持-1 所有终端
"Param": {
"LastMsgIndex": 0, //获取大于本序号的信令,第一次传 0,后续传 GetMsgs 结果返回
的 LastMsgIndex,返回的第一个信令序号为 1,第二个信令序号为 2,以此类推。
"GetMsgDetail": 0 //0 代表不获取信令详解,1 代表获取信令详解
}
}
回复:
{
"CMD": "GetMsgs",
"EQIndex": 1, //1 代表第一个终端,2 代表第二个终端,以此类推,不支持-1 所有终端
"Param": {
"State": 0 //0 成功,-1 为没连接设备或不存在该设备,其他为失败原因码
"LastMsgIndex": 1, //下次请求信令列表,要用本 LastMsgIndex
"MsgCount": 1,

42 / 50
万思维

"MsgList": [
{
"Index": 1, //信令序号,从 1 开始
"Time": 1500739860933013, //1970 年 1 月 1 日后经过的微秒数,Int64
"Name": "L SystemInformationBlocks",
"Info": "sib7",
"MsgDetail": "xxxxxxxx" //信令详解内容
}
]
}
}

6 导出类

6.1 导出层三信令及详解

该接口导出指定数据的全部层三信令和对应的信令详情。
请求:
{
"CMD": "ExportMessageDetail",
"Param": {
"ExportFileName": "C:\\e.xml", //导出文件名,包含路径和后缀名,为空则导
出到软件的Data\Export目录
"Logfile": "C:\\t1.saf" //要导出的数据,包含路径和后缀名
}
}

回复:
{
"CMD": "ExportMessageDetail",
"Param": {
"State": 0 //0成功,-1为数据为当前测试数据被占用,-2为目标导出xml文件被占用
}
}

Xml 文件格式:
<MessageDetails>
<OneMessage> … </OneMessage>
<OneMessage> … </OneMessage>

</MessageDetails>
43 / 50
万思维

6.2 导出参数

该接口需要根据需求提前创建一个【csv 格式】的参数导出模板,入参需要指定导出模板
的名称。
注:如何创建 csv 格式模板:软件->高级->数据格式转换,选 saf->csv,点击+按钮创建。
请求:
{
"CMD": "ExportLogfile",
"Param": {
"TemplateName": "test", //软件先保存名为test的导出模板,供自动化测试调用
"ExportFileName": "C:\\e.csv", //导出文件名,包含路径和后缀名,为空则导
出到软件的Data\Export目录,导出格式为csv;
"Logfile": "C:\\t1.saf" //要导出的数据,包含路径和后缀名
}
}

回复:
{
"CMD": "ExportLogfile",
"Param": {
"State": 0 //0成功,-2为模板名称不存在,-3为模板没有选择参数,-6为
Logfile不存在
}
}

6.3 生成报表

该接口根据指定的统计模板和数据生成报表,数据格式为*.saf。
请求:
{
"CMD":"ExportReport",
"Param":{
"ReportName":"C:\\Report\\China\\1.rpt", //报表目录及名称
"ReportGenerationPath":"e:\\rhp", //报表生成的目录
"OpenReportResult":true, //是否打开统计结果,true:打
开,false:不打开
"Logfiles":[ //数据文件数组
"E:\\workspace\\day36_spark\\2021.06.17_094741_DT.saf",
"E:\\workspace\\day36_spark\\2021.06.17_094741_DT_XXX.saf"
]
44 / 50
万思维

}
}
回复:
{
"CMD":"ExportReport",
"Param":{
"State":0
}
}
State 返回说明:
0 成功
-1 报表模板不存在
-2 数据不存在
-3 其他原因导出失败
-99 没有权限

6.4 按时间分割数据

请求:
{
"CMD": "DivideLogfileByTime",
"Param":{
"SourceFile": "C:\\test.saf", //源文件
"DestFile": "C:\\dest.saf", //分割后文件
"StartTime": "2022-11-16 15:00:00",
"EndTime": "2022-11-16 15:10:59"
}
}
回复:
{
"CMD": "DivideLogfileByTime",
"Param": {
"State": 0 //见下面原因码列表
}
}

原因码列表:
原因码 描述 备注
0 成功 返回参数查询结果
-1 失败- SourceFile 不存在
-2 失败- DestFile 创建失败 盘符不存在等导致
创建失败
-3 失 败 - StartTime 或
45 / 50
万思维

EndTime 格式异常

6.5 导出 RBDetail

请求:
{
"CMD": "ExportRBDetail",
"Param": {
"Network": 11, //11: NR, 1:LTE
"Direction": 1, //0: 上行, 1:下行
"Logfile": "C:\\t1.saf" //要导出的数据,包含路径和后缀名
}
}

回复:
{
"CMD": "ExportRBDetail",
"Param": {
"State": 0 //0成功,-1数据不存在
}
}

46 / 50
万思维

附录 A:NR 参数表

编号 参数名称
1 NR SSB ARFCN DL
2 NR PCI
3 NR SSB RSRP[dBm]
4 NR SSB SINR[dB]
5 NR SSB RSRQ[dB]
6 NR SSB RSSI[dBm]
7 NR SDAP Thr. DL [Mbps]
8 NR PDCP Thr. DL [Mbps]
9 NR RLC Thr. DL [Mbps]
10 NR MAC Thr. DL [Mbps]
11 NR PHY Thr. DL [Mbps]
12 NR SDAP Thr. UL [Mbps]
13 NR PDCP Thr. UL [Mbps]
14 NR RLC Thr. UL [Mbps]
15 NR MAC Thr. UL [Mbps]
16 NR PHY Thr. UL [Mbps]
17 NR PDSCH TotalRBCount
18 NR PDSCH SlotCount
19 NR PDSCH RBCountPerSlot
20 NR PUSCH TotalRBCount
21 NR PUSCH SlotCount
22 NR PUSCH RBCountPerSlot
23 NR PDCCH DL Grant Count
24 NR PDCCH UL Grant Count
25 NR PDSCH BLER[%]
26 NR PDSCH iBLER[%]
27 NR PDSCH Resi.BLER[%]
28 NR PUSCH BLER[%]
29 NR PUSCH iBLER[%]
30 NR PUSCH Resi.BLER[%]
31 NR PDCCH BLER[%]
32 NR Rank Avg. DL
33 NR Rank Avg. UL
34 NR MCS Avg. DL
35 NR MCS Avg. UL
36 NR Modulation Most DL
37 NR Modulation Most UL
38 NR CQI Avg.
39 NR MCC
40 NR MNC
41 NR Band
42 NR BandWidth DL
43 NR WorkMode DL
44 NR Cell ID
45 NR gNodeB ID
46 NR Sector ID
47 / 50
万思维

47 NR SubCarrierSpace
48 NR SS GSCN
49 NR SSB Freq. DL[MHz]
50 NR PointA ARFCN DL
51 NR PointA Freq. DL[MHz]
52 NR Center ARFCN DL
53 NR Center Freq. DL[MHz]
54 NR PDSCH DMRS PortIndex
55 NR PDSCH DMRS LayerIndex
56 NR PDSCH DMRS RSSI[dBm]
57 NR PDSCH DMRS SINR[dB]
58 NR PUCCH DMRS PortIndex
59 NR PUCCH DMRS LayerIndex
60 NR PUCCH DMRS RSSI[dBm]
61 NR PUCCH DMRS SINR[dB]
62 NR PDSCH TBS Avg.
63 NR PUSCH TBS Avg.
64 NR RACH Preamble ID
65 NR PUSCH TxPower
66 NR PUCCH TxPower
67 NR PRACH TxPower
68 NR PathLoss
69 NR CRNTI

附录 B:LTE 参数表

编号 参数名称
1 LTE EARFCN DL
2 LTE PCI
3 LTE RSRP[dBm]
4 LTE SINR[dB]
5 LTE MCS AVG DL
6 LTE MCS AVG UL
7 LTE Rank AVG DL
8 LTE Rank AVG UL
9 LTE PDSCH BLER[%]
10 LTE PUSCH BLER[%]
11 LTE MAC Thr. DL [Mbps]
12 LTE MAC Thr. UL [Mbps]
13 LTE PHY Thr. UL [Mbps]
14 LTE PHY Thr. DL [Mbps]

附录 C:公共参数表

编号 参数名称 备注
枚举值:
1 LTE
2 WCDMA
1 Current Network 3 TD-SCDMA
48 / 50
万思维

4 GSM
5 CDMA
9 eMTC
10 NB-IoT
11 NR5G
12 Wi-Fi
13 NR NSA
14 NR-DC
254 Unknown
255 No Service
2 Longitude
3 Latitude
4 Product Version
枚举值:
0 Inactive
1 Idle Not Camped
2 Idle Camped
3 Connecting (RRC Request)
4 Connected (RRC Complete)
5 Suspended
6 IRAT To LTE Started
7 Closing
5 RRC Status 255 Unknow
6 UE Name

附录 D:NR CA 参数表

注意:查询 NR CA 参数需要开通 NR CA 权限。


编号 参数名称 备注
1 NR SSB ARFCN DL PCell
2 NR SSB ARFCN DL SCell1
3 NR SSB ARFCN DL SCell2
4 NR SSB ARFCN DL SCell3
5 NR SSB ARFCN DL SCell4
6 NR SSB ARFCN DL SCell5
7 NR SSB ARFCN DL SCell6
8 NR SSB ARFCN DL SCell7
9 NR PCI PCell
10 NR PCI SCell1
11 NR PCI SCell2
12 NR PCI SCell3
13 NR PCI SCell4
14 NR PCI SCell5
15 NR PCI SCell6
16 NR PCI SCell7
17 NR SSB RSRP[dBm] PCell
18 NR SSB RSRP SCell1
19 NR SSB RSRP SCell2
20 NR SSB RSRP SCell3
21 NR SSB RSRP SCell4

49 / 50
万思维

22 NR SSB RSRP SCell5


23 NR SSB RSRP SCell6
24 NR SSB RSRP SCell7
25 NR SSB SINR[dBm] PCell
26 NR SSB SINR SCell1
27 NR SSB SINR SCell2
28 NR SSB SINR SCell3
29 NR SSB SINR SCell4
30 NR SSB SINR SCell5
31 NR SSB SINR SCell6
32 NR SSB SINR SCell7
33 NR PDSCH BLER PCell PCell,单位:%
34 NR PDSCH BLER SCell1
35 NR PDSCH BLER SCell2
36 NR PDSCH BLER SCell3
37 NR PDSCH BLER SCell4
38 NR PDSCH BLER SCell5
39 NR PDSCH BLER SCell6
40 NR PDSCH BLER SCell7
41 NR PUSCH BLER PCell PCell,单位:%
42 NR PUSCH BLER SCell1
43 NR PUSCH BLER SCell2
44 NR PUSCH BLER SCell3
45 NR PUSCH BLER SCell4
46 NR PUSCH BLER SCell5
47 NR PUSCH BLER SCell6
48 NR PUSCH BLER SCell7
49 NR MAC Thr. DL PCell PCell,单位:Mbps
50 NR MAC Thr. DL SCell1
51 NR MAC Thr. DL SCell2
52 NR MAC Thr. DL SCell3
53 NR MAC Thr. DL SCell4
54 NR MAC Thr. DL SCell5
55 NR MAC Thr. DL SCell6
56 NR MAC Thr. DL SCell7
57 NR MAC Thr. UL PCell PCell,单位:Mbps
58 NR MAC Thr. UL SCell1
59 NR MAC Thr. UL SCell2
60 NR MAC Thr. UL SCell3
61 NR MAC Thr. UL SCell4
62 NR MAC Thr. UL SCell5
63 NR MAC Thr. UL SCell6
64 NR MAC Thr. UL SCell7

50 / 50

You might also like