更新时间:2024-11-20 08:51:26下载pdf
涂鸦 IPC 产测 SDK 是涂鸦智能开发并提供,对接涂鸦开发者平台的解决方案代码。IPC 产测 SDK 主要为了方便客户快速对接涂鸦上位机,完成生产开发。
├── demo
│ ├── cJSON.c
│ ├── cJSON.h
│ ├── main.c
│ ├── resource
│ │ ├── speaker_test_8k.pcm
│ │ └── tuya.h264
│ ├── tool
│ │ ├── iperf-3.1.3-source.tar.gz
│ │ ├── iperf3_pc.zip
│ │ └── rtwpriv.tar.gz
│ ├── tuya_fac_cmd_demo.c
│ ├── tuya_fac_cmd_demo.h
│ └── tuya_fac_media_demo.c
├── include
│ ├── tuya_fac_cmd.h
│ ├── tuya_fac_media.h
│ ├── tuya_fac_protocol.h
│ └── tuya_fac_test.h
├── lib
│ └── libtuya_fac.a
├── Makefile
└── output
将涂鸦产测开发 SDK 解压至 ubuntu 任意目录,代码目录结构如上所示:
demo 文件夹内客户开发部分,已经给出对应的 demo 例程
include 文件夹为 SDK 所需要的头文件以及客户需要自行完成的函数。
lib 文件夹为SDK静态库
resource 文件夹为一些音视频文件夹
output 文件夹为编译和运行输出内容
tool 文件夹放置了一些产测可能需要用到的编译工具
指定编译链
修改 Makefile 文件中的参数。COMPILE_PREX = XXXX
在当前目录执行 Makefile 脚本,依次执行 make
指令便会在 output 目录生成二进制可执行程序。
需指定视音频文件和 iperf 文件输出路径,否则将加载音视频文件错误。
需要忽略 SIGPIPE 信号 signal(SIGPIPE, SIG_IGN);
老化时间入参值单位为小时
用户自行实现流媒体初始化
extern FILE *aud_save_fp;
extern FILE *aud_save_pcm_fp;
extern int data_size;
extern pthread_mutex_t mutex;
需引用以上全局变量实现音频文件数据的写入,例程参考 void *tuya_fac_media_loop(void *arg)
函数。
RTSP 为 IPC_SDK 业务,在完成流媒体初始化和 Ring Buffer 初始化之后可对 rtsp 进行初始化,参见 int tuya_fac_media_start_rtsp()
;
E_CHANNEL_VIDEO_MAIN
为视频主码流,E_CHANNEL_VIDEO_SUB
为视频子码流。
该文件是需要测试的接口的实现过程,已经给出了对应的例程,客户需要完成的是最终读写设备的操作。
功能接口,详见 tuya_fac_cmd.h
文件。
函数原型
void tuya_test_path(char *path , int verbose);
功能说明
指定可执行程序和工具运行路径,优先调用
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
Path | 指定运行路径 | Char * | 是 | 输入参数 |
Verbose | 开启日志 | Int | 是 | 输入参数 |
返回值
返回值 | 说明 |
---|---|
无 | 无 |
函数原型
int tuya_get_version(char *data);
功能说明
获取版本号,产测字段 0x01。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
data | 版本号内容 | Char * | 是 | 输入参数 |
返回值
返回值 | 说明 |
---|---|
0 | 返回版本号 |
-1 | 返回{“ret”:false} |
函数原型
int tuya_test_rw_partition();
功能说明
进入产测之前,用户可自选是否需要测试可读写分区功能。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
无 | 无 | 无 | 否 | 无 |
返回值
返回值 | 说明 |
---|---|
0 | 进入产测成功 |
-1 | 进入产测失败 |
函数原型
int tuya_test_sd_write();
功能说明
进入产测之前,用户可自选是否需要测试SD卡分区功能。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
无 | 无 | 无 | 否 | 无 |
返回值
返回值 | 说明 |
---|---|
0 | 进入产测成功 |
-1 | 进入产测失败 |
函数原型
int tuya_test_button();
功能说明
按键测试,产测字段 0x0a。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
无 | 无 | 无 | 是 | 无 |
返回值
返回值 | 说明 |
---|---|
0 | 返回{“ret”:true,“keyEvent”:“key0” } |
-1 | 返回{“ret”:false} |
函数原型
int tuya_test_led();
功能说明
指示灯测试,产测字段 0x0b。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
无 | 无 | 无 | 是 | 无 |
返回值
返回值 | 说明 |
---|---|
0 | 返回{“ret”:true} |
-1 | 返回{“ret”:false} |
函数原型
int tuya_test_video();
功能说明
视频流测试,产测字段 0x13。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
无 | 无 | 无 | 是 | 无 |
返回值
返回值 | 说明 |
---|---|
0 | 返回{“ret”:true,“rtspUrl”:“”} |
-1 | 返回{“ret”:false} |
函数原型
int tuya_test_ircut(char *str);
功能说明
ircut切换测试,产测字段 0x14。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
str | 切换次数 | Char * | 是 | 解析json |
返回值
返回值 | 说明 |
---|---|
0 | 返回{“ret”:true} |
-1 | 返回{“ret”:false} |
函数原型
int tuya_test_speaker();
功能说明
喇叭测试,产测字段 0x15。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
无 | 无 | 无 | 是 | 无 |
返回值
返回值 | 说明 |
---|---|
0 | 返回{“ret”:true} |
-1 | 返回{“ret”:false} |
函数原型
int tuya_test_mic(char *str,char *ipaddr);
功能说明
麦克风测试,产测字段 0x16。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
str | 开关 | Char * | 是 | json解析 |
ipaddr | 音频文件接收地址 | Char * | 是 | 无 |
返回值
返回值 | 说明 |
---|---|
0 | 返回{“ret”:true} |
-1 | 返回{“ret”:false} |
备注
PC 端作为服务端先开启 8095 端口等待接收文件,并发送 0x16 命令字段
设备端接收到指令后,开始录制当前环境3s音频,转化为 wav 格式文件,按 tcp/ip 方式发送给 PC 端,根据是否录制并发送成功,返回 true 或 false 字段。
若 PC 端接收到文件后,则开始循环播放,并关闭 8095 端口。
工人根据听到的声音手动判定结果。
函数原型
int tuya_test_irled();
功能说明
红外灯测试,产测字段 0x17。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
无 | 无 | 无 | 是 | 无 |
返回值
返回值 | 说明 |
---|---|
0 | 返回{“ret”:true} |
-1 | 返回{“ret”:false} |
函数原型
int tuya_write_cfg(char *data);
功能说明
写授权信息测试,产测字段 0x03。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
data | 授权信息 | Char * | 是 | 解析json |
返回值
返回值 | 说明 |
---|---|
0 | 返回{“ret”:true} |
-1 | 返回{“ret”:false} |
函数原型
int tuya_read_cfg(char *data);
功能说明
读授权信息测试,产测字段 0x04。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
data | 授权信息 | Char * | 是 | 输入参数 |
返回值
返回值 | 说明 |
---|---|
0 | 返回{“auzkey”:”xxxx”,“uuid”:”xxxx”,”pid”:”xxx”,”prod_test”:true,“ap_ssid”:”xxxx”,“ap_pwd”:“xxxx”} |
-1 | 返回{“ret”:false} |
函数原型
int tuya_write_sn(char *str);
功能说明
写SN测试,产测字段 0x0e。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
Str | SN号 | Char * | 是 | 解析json |
返回值
返回值 | 说明 |
---|---|
0 | 返回{“ret”:true} |
-1 | 返回{“ret”:false} |
函数原型
int tuya_read_sn(char *data);
功能说明
读SN测试,产测字段 0x0f。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
data | SN号 | Char * | 是 | 输入参数 |
返回值
返回值 | 说明 |
---|---|
0 | 返回{“sn”:“xxx”} |
-1 | 返回{“ret”:false} |
函数原型
int tuya_write_bsn(char *str);
功能说明
写BSN测试,产测字段 0x0c。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
Str | BSN号 | Char * | 是 | 解析json |
返回值
返回值 | 说明 |
---|---|
0 | 返回{“ret”:true} |
-1 | 返回{“ret”:false} |
函数原型
int tuya_read_bsn(char *data);
功能说明
读BSN测试,产测字段 0x0d。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
data | BSN号 | Char * | 是 | 输入参数 |
返回值
返回值 | 说明 |
---|---|
0 | 返回{“bsn”:“xxx”} |
-1 | 返回{“ret”:false} |
函数原型
int tuya_write_mac(char *str);
功能说明
写MAC测试,产测字段 0x05。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
Str | MAC地址 | Char * | 是 | 解析json |
返回值
返回值 | 说明 |
---|---|
0 | 返回{“ret”:true} |
-1 | 返回{“ret”:false} |
函数原型
int tuya_read_mac(char *data);
功能说明
读MAC测试,产测字段 0x06。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
data | MAC地址 | Char * | 是 | 输入参数 |
返回值
返回值 | 说明 |
---|---|
0 | 返回{“mac”:“xxx”} |
-1 | 返回{“ret”:false} |
函数原型
int tuya_write_cc(char *str);
功能说明
写国家码测试,产测字段 0x1c。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
Str | 国家码 | Char * | 是 | 解析json |
返回值
返回值 | 说明 |
---|---|
0 | 返回{“ret”:true} |
-1 | 返回{“ret”:false} |
函数原型
int tuya_read_cc(char *data);
功能说明
读国家码测试,产测字段 0x1d。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
data | 国家码 | Char * | 是 | 输入参数 |
返回值
返回值 | 说明 |
---|---|
0 | 返回{“country”:“xxx”} |
-1 | 返回{“ret”:false} |
函数原型
int tuya_test_iperf(char *addr ,
char *str ,
double *max,
double *avr,
double *min);
功能说明
无线速率测试,产测字段 0x12。
参数说明
参数名称 | 如何理解 | 参数类型 | 是否必选 | 如何设置 |
---|---|---|---|---|
Addr | 上位机地址 | Char * | 是 | 无 |
Str | 速率上限 | Char * | 是 | 解析json |
max | 最大速率 | Double * | 是 | 输入参数 |
avr | 平均速率 | Double * | 是 | 输入参数 |
min | 最小速率 | Double * | 是 | 输入参数 |
返回值
返回值 | 说明 |
---|---|
0 | 返回{“ret”:true, “bandwidth”:20} |
-1 | 返回{“ret”:false} |
备注
例程中已经完成了对iperf输出的解析和上报,客户需要在tool文件夹中使用对应编译链编译iperf应用。
Iperf-3.1.3编译示例:
CURDIR=\`pwd\`
tar -xzvf iperf-3.1.3-source.tar.gz
mkdir out
cd iperf-3.1.3
./configure \--host=\${HOST} \--disable-shared \--enable-static \--prefix=\${CURDIR}/out
make
make install
设备端作为客户端,PC 端作为服务端。
PC端执行 iperf3 -s
提前开启服务端,并发送 0x12 命令字段,下发测试速率上限
设备端接收到命令字,执行iperf.命令
设备解析 iperf_out.txt 内 wifi 速率数值大小,按帧格式将数据反馈给 PC 端,并根据测试情况返回 true/false。
PC端根据反馈的 true/false 结果,以及速率大小和设置的速率阈值对比,自动判断测试结果
函数原型
int tuya_fac_test_start(void** pphdl);
功能说明
开始测试,启动音视频功能
关联函数
tuya_fac_stream_start();
函数原型
int tuya_fac_test_stop(void** pphdl);
功能说明
停止测试,退出音视频功能
关联函数
tuya_fac_stream_stop();
函数原型
int tuya_fac_test_loop(void* phdl , char *path);
功能说明
基础测试,建立socket通讯,接收和回复上位机信息。
函数原型
int tuya_fac_test_loop_exit(void* phdl);
功能说明
停止基础测试。
函数原型
int tuya_fac_media_start_rtsp();
功能说明
启动rtsp服务。
函数原型
int tuya_fac_media_stop_rtsp();
功能说明
停止rtsp服务。
函数原型
int tuya_fac_media_loop(void *arg);
功能说明
获取音视频数据,写入extern FILE *aud_save_fp
extern FILE *aud_save_pcm_fp
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈