网关扩展 SDK 产测

更新时间:2022-11-24 09:20:08下载pdf

网关产测 SDK 是为了使产测平台化,减少重复的产测开发,提高开发效率。该 SDK 封装了传输和帧解析的细节,能让使用者专注于产测的业务开发,只需要实现相关业务接口即可。

获取 SDK

请前往 GitHub 获取网关产测 SDK tuya_gw_pts_sdk.git,SDK 使用方法参考仓库中的 README.md 文件和 demo/demo.c 文件。

目录结构

├── CHANGE_LOG.md
├── demo
│   └── demo.c
├── Makefile
├── README.md
└── sdk
    ├── include
    │   ├── tuya_prod_test.h
    │   └── tuya_testframe_handle.h
    └── lib
        ├── shared
        │   ├── libtuya_prodtest.so
        │   └── libtuya_prodtest.so.stripped
        └── static
            ├── libtuya_prodtest.a
            └── libtuya_prodtest.a.stripped

产测库

支持静态库和动态库,以及 strip 库,您根据需要选择相应的库,默认选择静态库未 strip 版本。产测库在 sdk/lib/ 目录中。

编译

  • 生成demo:

    make
  • 清除:

    make clean
  • 生成物:生成物在output/bin

支持的产测项

命令字 功能说明
0x00 进入产测模式
0x01 读取主固件版本信息
0x02 读取次固件版本信息
0x03 写配置信息(如授权信息等)
0x04 读取配置信息
0x05 写主固件MAC地址
0x06 读主固件MAC地址
0x07 写次固件MAC地址
0x08 读次固件MAC地址
0x0a 按键测试
0x0b LED测试
0x0c 写BSN
0X0d 读BSN
0X0e 写SN
0x0f 读SN
0x11 次固件性能测试
0x15 扬声器测试
0x1c 写国家码
0x1d 读国家码
0x23 产测升级指定次固件升级
0x1e 产测升级配置
0x1f 产测升级开始
0x20 产测升级接受数据
0x21 产测升级结束
0x22 重启设备
0x29 lte测试
0x2a 板载标志检测
0x2b 读取SIM卡CCID

函数接口说明

tuya_testframe_set_tcp_port

#include "tuya_testframe_handle.h" void tuya_testframe_set_tcp_port(int tcp_port);

功能说明

设置TCP端口号,注意需要在tuya_testframe_handle_init之前调用,否则不会生效。

参数说明

参数名称 说明
tcp_port 设置TCP端口号,如果不调用此接口,则默认12130端口

返回值

VOID

tuya_testframe_handle_init

#include "tuya_testframe_handle.h" int tuya_testframe_handle_init(TUYA_PRODTEST_MODE mode, int port, TYTEST_FRAME_CBS_S *cbs);

功能说明

产测初始化函数,会启动产测线程用于产测交互。

参数说明

参数名称 说明
mode 产测传输模式,参考TUYA_PRODTEST_MODE结构体说明
port TCP产测端口号,需要用户指定
cbs 用户需要实现的回调函数列表,参考TYTEST_FRAME_CBS_S结构体说明

返回值

返回值 说明
0 成功
-1 失败

注意

  • mode如果不合法,默认选择TCP传输。
  • port 端口号要注意不要与程序中已经存在的冲突。

tuya_testframe_handle_deinit

#include "tuya_testframe_handle.h" int tuya_testframe_handle_deinit();

功能说明

产测退出函数,退出产测模式。

参数说明

VOID

返回值

返回值 说明
0 成功
-1 失败

tuya_testframe_rep_key_event

#include "tuya_testframe_handle.h" int tuya_testframe_rep_key_event(int index, unsigned int key_num);

功能说明

产测按键异步上报接口,key_num为按键测试成功的数量

参数说明

参数名称 说明
index index说明
key_num 按键测试成功的数量

返回值

返回值 说明
0 成功
-1 失败

tuya_testframe_rep_zigbeeRf_event

#include "tuya_testframe_handle.h" int tuya_testframe_rep_zigbeeRf_event(int index, unsigned int receive_num);

功能说明

Zigbee RF异步上报接口,receive_num为收到的报文数量。

参数说明

参数名称 说明
index 请参考 index 说明
receive_num 接受到的报文数量

返回值

返回值 说明
0 成功
-1 失败

结构体及接口说明

TUYA_PRODTEST_MODE

// 传输数据的方式 目前支持TCP,可扩展 typedef enum { TPM_TCP = 0, TPM_SERIAL, TPM_MAX } TUYA_PRODTEST_MODE;

结构体说明

目前只支持TCP传输,预留了串口的接口,可扩展。

TYTEST_FRAME_CBS_S

typedef struct { TYTEST_F_COMMON_HANDL enter_prodtest_frame_cb; //1.enter prodtest TYTEST_F_COMMON_HANDL exit_prodtest_frame_cb; //1.exit prodtest TYTEST_F_WR_HANDL master_firm_frame_cb; //2.master_firm TYTEST_F_WR_HANDL slave_firm_frame_cb; //3.slave firm TYTEST_F_W_CFG_HANDL w_cfg_frame_cb; //4.write cfd info TYTEST_F_R_CFG_HANDL r_cfg_frame_cb; //5.read cfg info TYTEST_F_WR_HANDL w_master_mac_frame_cb; //6.write master mac TYTEST_F_WR_HANDL r_master_mac_frame_cb; //7.read master mac TYTEST_F_WR_SLAVEMAC_HANDL w_slave_mac_frame_cb; //8.write slave mac TYTEST_F_WR_SLAVEMAC_HANDL r_slave_mac_frame_cb; //9.read slave mac TYTEST_F_WR_HANDL w_bsn_frame_cb; //10.write bsn TYTEST_F_WR_HANDL r_bsn_frame_cb; //11.read bsn TYTEST_F_WR_HANDL w_sn_frame_cb; //12.write sn TYTEST_F_WR_HANDL r_sn_frame_cb; //13.read sn TYTEST_F_WR_HANDL w_country_frame_cb; //14.write country TYTEST_F_WR_HANDL r_country_frame_cb; //15.read country TYTEST_F_KEY_HANDL key_frame_cb; //16.key test TYTEST_F_LED_HANDL led_frame_cb; //17.led test TYTEST_F_ZIGBEE_RF_HANDL zigbee_rf_frame_cb; //18.zigbee wifi ble rf test TYTEST_F_WIFIBLE_RF_HANDL wifi_rf_frame_cb; TYTEST_F_WIFIBLE_RF_HANDL ble_rf_frame_cb; TYTEST_F_UG_SLAVE_HANDL upgrade_slave_frame_cb; //19.slave upgrade TYTEST_F_UG_CFG_HANDL upgrade_cfg_frame_cb; //20.upgrade cfg TYTEST_F_COMMON_HANDL upgrade_start_frame_cb; //21.upgrade start TYTEST_F_UG_REV_HANDL upgrade_rev_packet_frame_cb; //22.upgrade receive TYTEST_F_COMMON_HANDL upgrade_end_frame_cb; //23.upgrade end TYTEST_F_COMMON_VOID_HANDL reboot_frame_cb; //24.reboot TYTEST_F_SPEAKER_HANDL speaker_frame_cb; //25.speaker TYTEST_F_LTE_HANDL lte_test_frame_cb; //26.lte test TYTEST_F_R_CCID_HANDL r_ccid_frame_cb; //27.read ccid TYTEST_F_R_FLAGTYPE_HANDL flag_dect_frame_cb; //28.flag dectect TYTEST_F_CUSTOMIZE_HANDL customize_frame_cb; //29.customize handle TYTEST_F_KEY_ASYNC_HANDL key_async_frame_cb; //30.key test }TYTEST_FRAME_CBS_S;

结构体说明

用户需要实现的相关接口。

功能说明

SDK 用户回调接口。

成员说明

成员名称 说明
enter_prodtest_frame_cb 请参考 enter_prodtest_frame_cb
exit_prodtest_frame_cb 请参考 exit_prodtest_frame_cb
master_firm_frame_cb 请参考 master_firm_frame_cb
slave_firm_frame_cb 请参考 slave_firm_frame_cb
w_cfg_frame_cb 请参考 w_cfg_frame_cb
r_cfg_frame_cb 请参考 r_cfg_frame_cb
w_master_mac_frame_cb 请参考 w_master_mac_frame_cb
r_master_mac_frame_cb 请参考 r_master_mac_frame_cb
w_bsn_frame_cb 请参考 w_bsn_frame_cb
r_bsn_frame_cb 请参考 r_bsn_frame_cb
w_sn_frame_cb 请参考 w_sn_frame_cb
r_sn_frame_cb 请参考 r_sn_frame_cb
w_country_frame_cb 请参考 w_country_frame_cb
r_country_frame_cb 请参考 r_country_frame_cb
key_frame_cb 请参考 key_frame_cb
led_frame_cb 请参考 led_frame_cb
zigbee_rf_frame_cb 请参考 zigbee_rf_frame_cb
wifi_rf_frame_cb 请参考 wifi_rf_frame_cb
ble_rf_frame_cb 请参考 ble_rf_frame_cb
upgrade_slave_frame_cb 请参考 upgrade_slave_frame_cb
upgrade_cfg_frame_cb 请参考 upgrade_cfg_frame_cb
upgrade_start_frame_cb 请参考 upgrade_start_frame_cb
upgrade_rev_packet_frame_cb 请参考 upgrade_rev_packet_frame_cb
upgrade_end_frame_cb 请参考 upgrade_end_frame_cb
reboot_frame_cb 请参考 reboot_frame_cb
speaker_frame_cb 请参考 speaker_frame_cb
lte_test_frame_cb 请参考 lte_test_frame_cb
r_ccid_frame_cb 请参考 r_ccid_frame_cb
flag_dect_frame_cb 请参考 flag_dect_frame_cb
customize_frame_cb 请参考 customize_frame_cb
key_async_frame_cb 请参考 key_async_frame_cb

enter_prodtest_frame_cb

int (*enter_prodtest_frame_cb)(void);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 enter_prodtest_frame_cb。进入产测用户层需要实现的业务,如果没有直接返回0。

参数说明

VOID

返回值

返回值 说明
0 成功
-1 失败

exit_prodtest_frame_cb

int (*exit_prodtest_frame_cb)(void);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 exit_prodtest_frame_cb。退出产测用户层需要实现的业务,如果没有直接返回0。

参数说明

VOID

返回值

返回值 说明
0 成功
-1 失败

master_firm_frame_cb

int (*master_firm_frame_cb)(char *buf);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 master_firm_frame_cb。读取主固件信息,将信息存放到buf当中。

参数说明

参数名称 说明
buf 主固件信息存放的位置,由用户存放

返回值

返回值 说明
0 成功
-1 失败

slave_firm_frame_cb

int (*slave_firm_frame_cb)(char *buf);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 slave_firm_frame_cb。读取次固件信息,将信息存放到buf当中。

参数说明

参数名称 说明
buf 次固件信息存放的位置,由用户存放

返回值

返回值 说明
0 成功
-1 失败

w_cfg_frame_cb

int (*w_cfg_frame_cb)(char *auzkey, char *uuid, char *pid, int prodtest, char *ap_ssid, char *ap_pwd);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 w_cfg_frame_cb。写入固件配置信息,写入auzkey,uuid,pid,prodtest以及ap模式需要的ssid和password。

参数说明

参数名称 说明
auzkey 设备授权码的auzkey
uuid 设备授权码的uuid
pid 设备的产品id
prodtest 已经废弃不用
ap_ssid 无线产品ap配网模式的ssid
ap_pwd 无线产品ap配网模式的password

返回值

返回值 说明
0 成功
-1 失败

r_cfg_frame_cb

int (*r_cfg_frame_cb)(char *auzkey, char *uuid, char *pid, int *prodtest, char *ap_ssid, char *ap_pwd);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 r_cfg_frame_cb。读取固件配置信息,读到auzkey,uuid,pid,prodtest以及ap模式需要的ssid和password的指针指向的内存。

参数说明

参数名称 说明
auzkey 存放auzkey的地址
uuid 存放uuid的地址
pid 存放设备的产品id的地址
prodtest 已经废弃不用
ap_ssid 存放无线产品ap配网模式ssid的地址
ap_pwd 存放无线产品ap配网模式password的地址

返回值

返回值 说明
0 成功
-1 失败

w_master_mac_frame_cb

int (*w_master_mac_frame_cb)(char *buf);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 w_master_mac_frame_cb。写入主Mac地址。

参数说明

参数名称 说明
buf 主Mac地址

返回值

返回值 说明
0 成功
-1 失败

r_master_mac_frame_cb

int (*r_master_mac_frame_cb)(char *buf);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 r_master_mac_frame_cb。读取主Mac地址。

参数说明

参数名称 说明
buf 用来存放主Mac地址

返回值

返回值 说明
0 成功
-1 失败

w_slave_mac_frame_cb

int (*w_slave_mac_frame_cb)(int cpunum,char *mac);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 w_slave_mac_frame_cb。写入次固件Mac地址。

参数说明

参数名称 说明
cpunum 用来识别次固件,cpunum = 1代表是Zigbee Mac地址
buf 次固件Mac地址

返回值

返回值 说明
0 成功
-1 失败

r_slave_mac_frame_cb

int (*r_slave_mac_frame_cb)(int cpunum,char *mac);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 r_slave_mac_frame_cb。读取次固件Mac地址。

参数说明

参数名称 说明
cpunum 用来识别次固件,cpunum = 1代表是Zigbee Mac地址
buf 用来存放次固件Mac地址

返回值

返回值 说明
0 成功
-1 失败

w_bsn_frame_cb

int (*w_bsn_frame_cb)(char *buf);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 w_bsn_frame_cb。写入bsn。

参数说明

参数名称 说明
buf bsn序列号

返回值

返回值 说明
0 成功
-1 失败

r_bsn_frame_cb

int (*r_bsn_frame_cb)(char *buf);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 r_bsn_frame_cb。读取bsn。

参数说明

参数名称 说明
buf 用来存放bsn序列号

返回值

返回值 说明
0 成功
-1 失败

w_sn_frame_cb

int (*w_sn_frame_cb)(char *buf);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 w_sn_frame_cb。写入sn。

参数说明

参数名称 说明
buf sn序列号

返回值

返回值 说明
0 成功
-1 失败

r_sn_frame_cb

int (*r_sn_frame_cb)(char *buf);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 r_sn_frame_cb。读取sn。

参数说明

参数名称 说明
buf 存放sn序列号

返回值

返回值 说明
0 成功
-1 失败

w_country_frame_cb

int (*w_country_frame_cb)(char *buf);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 w_country_frame_cb。写入国家码。

参数说明

参数名称 说明
buf 国家码

返回值

返回值 说明
0 成功
-1 失败

r_country_frame_cb

int (*r_country_frame_cb)(char *buf);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 r_country_frame_cb。读取国家码。

参数说明

参数名称 说明
buf 用来存放国家码

返回值

返回值 说明
0 成功
-1 失败

key_frame_cb

int (*key_frame_cb)(unsigned int *response_key_num);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 key_frame_cb。按键测试,阻塞接口。
如果同时实现了key_frame_cbkey_async_frame_cb,默认调用key_async_frame_cb,如果只实现了key_frame_cb,则会调用key_frame_cb

参数说明

参数名称 说明
response_key_num 用来存放按键测试,测试成功的按键数量

返回值

返回值 说明
0 成功
-1 失败

led_frame_cb

void (*led_frame_cb)(TYPT_LED_STATE state);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 led_frame_cb。led测试。

参数说明

参数名称 说明
state led的状态,亮、灭、闪烁
// 灯状态 typedef enum { TYPT_LED_ALL_ON = 0, TYPE_LED_ALL_OFF, TYPT_LED_FLASH }TYPT_LED_STATE;

返回值

返回值 说明
0 成功
-1 失败

zigbee_rf_frame_cb

int (*zigbee_rf_frame_cb)(int index, int channel, int num, unsigned int *receive_num);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 zigbee_rf_frame_cb。Zigbee RF测试,可阻塞。

参数说明

参数名称 说明
index index说明
channel 发测试报文所在的信道
num 发射报文的数量
receive_num 存放收到报文的数量

返回值

返回值 说明
0 成功
-1 失败

wifi_rf_frame_cb

int (*wifi_rf_frame_cb)(char *ssid, int *rssi);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 wifi_rf_frame_cb。Wi-Fi RF测试,检测某个SSID的RSSI。

参数说明

参数名称 说明
ssid 无线ssid
rssi 存放该ssid的信号强度

返回值

返回值 说明
0 成功
-1 失败

ble_rf_frame_cb

int (*ble_rf_frame_cb)(char *ssid, int *rssi);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 ble_rf_frame_cb。BLE RF测试,检测某个ble的RSSI。

参数说明

参数名称 说明
ssid ble的名称
rssi 用来存放该ble的信号强度

返回值

返回值 说明
0 成功
-1 失败

upgrade_slave_frame_cb

int (*upgrade_slave_frame_cb)(int image_type);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 upgrade_slave_frame_cb。用来指定升级类型为次固件升级,如果不执行此产测项,默认升级类型是主固件升级。

参数说明

参数名称 说明
image_type 次固件升级类型,image_type = 1代表Zigbee固件

返回值

返回值 说明
0 成功
-1 失败

upgrade_cfg_frame_cb

int (*upgrade_cfg_frame_cb)(unsigned long baud, unsigned long crc32, unsigned long size);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 upgrade_cfg_frame_cb。产测升级配置。

参数说明

参数名称 说明
baud 用来指定串口波特率,Linux平台 TCP产测未用来此项,不处理
crc32 升级固件的crc32校验值
size 升级固件的大小

返回值

返回值 说明
0 成功
-1 失败

upgrade_start_frame_cb

int (*upgrade_start_frame_cb)(void);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 upgrade_start_frame_cb。产测升级开始的标志,返回成功后下一步开始传输升级固件。

参数说明

VOID

返回值

返回值 说明
0 成功
-1 失败

upgrade_rev_packet_frame_cb

int (*upgrade_rev_packet_frame_cb)(char *data, unsigned int data_len);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 upgrade_rev_packet_frame_cb。产测升级传输升级固件,每次最高1024字节。

参数说明

参数名称 说明
data 升级固件的数据
data_len 升级固件数据长度

返回值

返回值 说明
0 成功
-1 失败

upgrade_end_frame_cb

int (*upgrade_end_frame_cb)(void);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 upgrade_end_frame_cb。产测升级结束,一般的做法是用户层校验升级固件,然后执行升级过程,然后返回升级结果。

参数说明

VOID

返回值

返回值 说明
0 成功
-1 失败

reboot_frame_cb

void (*reboot_frame_cb)(void);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 reboot_frame_cb。重启设备。

参数说明

VOID

返回值

VOID

speaker_frame_cb

void (*speaker_frame_cb)(TYPT_SOUND_STATE state);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 speaker_frame_cb。扬声器测试。

参数说明

参数名称 说明
state 扬声器 开,关的状态,开代表播放一段音频,关代表停止播放
//扬声器的开关 typedef enum { TYPT_SOUND_OFF = 0, TYPT_SOUND_ON }TYPT_SOUND_STATE;

返回值

VOID

lte_test_frame_cb

int (*lte_test_frame_cb)(TYPT_LTE_TEST state);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 lte_test_frame_cb。lte测试,一般是在3个频段上进行测试。

参数说明

参数名称 说明
state lte测试的每个阶段
// lte测试步骤 typedef enum{ TYPT_LTE_ENTER_TEST = 1, TYPT_LTE_EXIT_TEST, TYPT_LTE_TEST_MODE1, TYPT_LTE_TEST_MODE2, TYPT_LTE_TEST_MODE3, }TYPT_LTE_TEST;

三个MODE代表lte测试的三个频段,每个频段要测试rf。

返回值

返回值 说明
0 成功
-1 失败

r_ccid_frame_cb

int (*r_ccid_frame_cb)(char *ccid);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 r_ccid_frame_cb。读取SIM卡的CCID。

参数说明

参数名称 说明
ccid 用来存放ccid

返回值

返回值 说明
0 成功
-1 失败

flag_dect_frame_cb

int (*flag_dect_frame_cb)(TYPT_FLAG_TYPE type);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 flag_dect_frame_cb。板载标识符检测,用来判断设备是否经过预产测或者Wi-Fi校准产测。

参数说明

参数名称 说明
type 检测的类型,目前有Wi-Fi射频检测和预产测检测
// 板载flag检测 typedef enum{ TYPT_FLAG_WIFIRF = 0, TYPT_FLAG_BOARDTEST = 1, }TYPT_FLAG_TYPE;

返回值

返回值 说明
0 成功
-1 失败

customize_frame_cb

int (*customize_frame_cb)(char *data, char *out_buf);

功能说明

用户注册 TYTEST_FRAME_CBS_S 的回调函数 customize_frame_cb。用户私有协议处理,如果不是标准涂鸦产测协议,可用这个进行扩展。

参数说明

参数名称 说明
data 产测帧的data字段
out_buf 返回给上位机的产测帧的data字段

返回值

返回值 说明
0 成功
-1 失败

key_async_frame_cb

int (*key_async_frame_cb)(int index);

功能说明

参数说明

参数名称 说明
index 请参考 index说明

返回值

返回值 说明
0 成功
-1 失败

index

index 是用来异步上报的标志值,调用异步上报的接口需要传递这个参数,所以用户需要保存这个值,用来异步上报。