无感配网接口

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

本文介绍了综合 SDK 的无感配网接口。

结构体定义

TUYA_PEGASUS_CBS_S

typedef struct {
    TY_PEGASUS_EVENT_CB event_cb;
    TY_PEGASUS_SEND_FRAME_CB send_frame_cb;
    TY_PEGASUS_GET_SSID_PWD_CB get_ssid_pwd_cb;
    TY_PEGASUS_GET_MAC_CB get_mac_cb;
    TY_PEGASUS_SET_OUI_CB set_oui_cb;
} TUYA_PEGASUS_CBS_S;

功能说明(Summary)

无感配网回调注册。

成员说明

成员名称 说明
event_cb 详见 TY_PEGASUS_EVENT_CB
send_frame_cb 详见 TY_PEGASUS_SEND_FRAME_CB
get_ssid_pwd_cb 详见 TY_PEGASUS_GET_SSID_PWD_CB
get_mac_cb 详见 TY_PEGASUS_GET_MAC_CB
set_oui_cb 详见 TY_PEGASUS_SET_OUI_CB

接口说明

tuya_thing_config_init

OPERATE_RET tuya_thing_config_init(CONST CHAR_T *ifname, CONST TY_THING_CONFIG_GET_INFO_CB cb);

功能说明

一键配网初始化函数。

参数说明

参数名称 说明
ifname 网络接口。在什么网络接口上发送一键配网数据包。比如:“eth0”
cb 注册回调。在回调函数中,用户需输入无线路由器 ssid 以及 password。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 错误码定义参考头文件 tuya_error_code.h

tuya_thing_config_start

OPERATE_RET tuya_thing_config_start(UINT_T timeout);

功能说明

开启一键配网功能。

参数说明

参数名称 说明
timeout 一键配网超时时间,单位为秒。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 错误码定义参考头文件 tuya_error_code.h

tuya_thing_config_stop

OPERATE_RET tuya_thing_config_stop(VOID);

功能说明

关闭一键配网功能。

参数说明

参数名称 说明
VOID /

返回值

返回值 说明
OPRT_OK 操作成功
错误码 错误码定义参考头文件 tuya_error_code.h

tuya_pegasus_svc_init

OPERATE_RET tuya_pegasus_svc_init(TUYA_PEGASUS_CBS_S *p_cbs, UINT_T probe_intr_ms);

功能说明

无感配网服务初始化函数,注册所需回调。

参数说明

参数名称 说明
p_cbs 无感配网回调结构体指针
get_probe_intr_ms 轮询 Probe 帧的间隔

返回值

返回值 说明
OPRT_OK 操作成功
错误码 错误码定义参考头文件 tuya_error_code.h

回调接口

TY_PEGASUS_EVENT_CB

 VOID (*TY_PEGASUS_EVENT_CB)(IN CONST TY_PEGASUS_EVENT_E event);

功能说明

开发者注册 回调函数。无感配网相关事件上报,比如上报待配网设备的Probe Request。

该接口内容由用户实现。

在 event 为 TY_PEGASUS_GET_PROBE_START 状态时,上报待配网设备发送的带有涂鸦 OUI 的 Probe Request 帧,在上报时,应注意以下几点:

  • 待配网设备会每间隔 250ms(每次连续发送 5 帧)发送配网请求,5s 超时

  • 路由器接收到的待配网设备发送的数据帧存在内容相同的情况,相同帧没必要上报,可以过滤掉,建议使用 crc 等校验方式,记录前后帧 crc 值,只要值不一样就上报。

  • 路由器在处理待配网设备的数据帧的时候,还是比较耗性能的,建议上报做成异步的方式,平时处于阻塞状态,只有在 TY_PEGASUS_GET_PROBE_START 状态,且接收到需要上报的数据帧的时候,才去上报,数据帧的提取参照第一点,避免出现找不到而出现配网失败的情况。

参数说明

参数名称 说明
event TY_PEGASUS_START,开启无感配网
TY_PEGASUS_STOP,停止无感配网
TY_PEGASUS_GET_PROBE_START,上报Probe帧
TY_PEGASUS_EVENT_INVALD 无效事件

返回值

返回值 说明
VOID /

TY_PEGASUS_SEND_FRAME_CB

OPERATE_RET (*TY_PEGASUS_SEND_FRAME_CB)(IN CONST TY_FRAME_TYPE_E type,
						  IN CONST UINT8_T *vsie, 
						  IN CONST UINT_T vsie_len,
                          IN NW_MAC_S *srcmac, 
                          IN NW_MAC_S *dstmac);

功能说明

开发者注册回调函数。发送 Probe Response 帧、Beacon 帧。

该接口内容由用户实现。路由器在发送 Probe Response 帧、Beacon 帧时,用户只需将数据分别进行转发和广播,无需关心具体数据格式。

参数说明

参数名称 说明
type frame 类型,TY_FRAME_TYPE_E 定义如下:
TY_FRAME_TP_BEACON
TY_FRAME_TP_PROBE_REQ
TY_FRAME_TP_PROBE_RESP
vsie vsie 内存地址
vsie_len vsie 长度
srcmac 路由器 MAC 地址
dstmac 待配网设备 MAC 地址

返回值

返回值 说明
VOID

TY_PEGASUS_GET_SSID_PWD_CB

OPERATE_RET (*TY_PEGASUS_GET_SSID_PWD_CB)(OUT UINT8_T *ssid, 
                                          IN INT_T slen, 
                                          OUT UINT8_T *pwd, 
                                          IN INT_T plen);

功能说明

开发者注册回调函数。获取 2.4G Wi-Fi 的 SSID 和 passwd。

参数说明

参数名称 说明
ssid 路由器 AP 的 SSID
slen SSID 的长度
pwd 路由器 AP 的 密码
plen 密码的长度

返回值

返回值 说明
OPRT_OK 操作成功

TY_PEGASUS_GET_MAC_CB

OPERATE_RET (*TY_PEGASUS_GET_MAC_CB)(OUT NW_MAC_S *mac);

功能说明

开发者注册回调函数。获取 AP 的 MAC 地址。

参数说明

参数名称 说明
mac 路由器 MAC 地址

返回值

返回值 说明
OPRT_OK 操作成功
错误码 错误码定义参考头文件 tuya_error_code.h

TY_PEGASUS_SET_OUI_CB

OPERATE_RET (*TY_PEGASUS_SET_OUI_CB)(IN BYTE_T *oui, IN BYTE_T oui_len);

功能说明

开发者注册的回调函数,用于设置涂鸦 OUI。

该接口内容由 SDK 使用者实现。

路由器无感配网只处理带有涂鸦 OUI 的 Probe 帧,涂鸦 OUI 为 0x68,0x57,0x2d。

参数说明

参数名称 说明
oui 涂鸦 OUI
oui_len OUI 长度

返回值

返回值 说明
OPRT_OK 操作成功
错误码 错误码定义参考头文件 tuya_error_code.h