版本 | 编写/修订说明 | 修订日期 | 备注 |
---|---|---|---|
1.0.0 | 创建文档 | 20200310 | |
1.0.1 | 支持工程部署 | 20200405 | |
1.0.2 | 优化文档,添加指示灯 | 20200417 | |
1.0.3 | 添加 AP & EZ 模式切换 | 20200425 | |
1.0.4 | 添加安防功能 | 20200515 | |
1.0.5 | 移除指示灯接口,添加状态指示接口 | 20200713 | |
1.0.6 | 一键配网功能改为接口调用的形式 | 20200730 |
涂鸦网关扩展 SDK 是涂鸦网关技术部门开发并提供,是对接涂鸦云平台的解决方案代码。SDK 封装了网关与 Zigbee 模块、网关与涂鸦云 & 涂鸦 APP 的通信,第三方系统开发者无需关心通信层的实现,可以完全专注于其业务的开发,很大程度上降低了网关的开发门槛。
基于该 SDK 可以开发多种形态的网关产品,以增强产品的差异性。产品形态包括但不局限于:
Zigbee 网关;
SDK 赋予第三方系统具备 Zigbee 网关能力,集成 Zigbee 设备控制和管理功能。
Zigbee 扩展网关;
SDK 赋予第三方系统具备接入非涂鸦生态的 Zigbee 设备的能力,开发者可以把非涂鸦生态的 Zigbee 子设备接入到涂鸦云。
多协议融合网关;
SDK 赋予第三方系统具备接入多协议设备的能力(如 Zigbee + 443, Zigbee + 443 + ZWave 等多协议组合),将非 Zigbee 协议的设备接入到涂鸦云。
多功能网关;
SDK 赋予第三方系统具备多功能网关的能力,如系统接小夜灯、声光报警器等外设,搭配各种传感器实现多种智能场景。
总体结构如下图所示,涂鸦网关扩展 SDK 下行与 Zigbee 模块通信,上行与涂鸦云 & 涂鸦 APP 通信。第三方系统开发者基于涂鸦网关扩展 SDK 开发其应用。
在开发之前,第三方系统开发者需要先注册涂鸦 IoT 平台账号,获取设备开发阶段的必要信息,如 PID、授权码等。具体操作指导,请参见涂鸦文档中心,如有疑问请与涂鸦商务联系。
涂鸦网关扩展 SDK 是以 C 语言动态链接库(.so)或者静态库(.a)的形式提供给用户,因此,需要用户提供其系统的交叉编译工具链来打包 SDK。
同时,涂鸦网关扩展 SDK 的产物托管在 GitHub,找到对应的交叉编译工具链可直接下载使用,如有问题请联系涂鸦技术支持。
├── CHANGE_LOG.md # 版本信息
├── Makefile
├── README.md # 使用说明
├── build_app.sh # 编译脚本
├── demos # 示例代码目录
├── tools # 工具代码目录,如Zigbee射频测试工具
└── sdk
├── include # SDK头文件
└── lib # SDK库文件
用户应用是由第三方系统开发者基于涂鸦网关扩展 SDK 开发,为了降低开发者的开发成本,开发指南的章节按功能划分。基础功能章节是网关的基础,是网关开发必选章节,而其余章节,开发者只需要关注其业务所涉及的功能对应的章节。
产品类型 | 功能开发章节 |
---|---|
Zigbee 网关 | 基础功能 |
多功能 Zigbee 网关 | 基础功能 + 设备功能点 |
多协议融合网关 | 基础功能 + 设备功能点 + 其他设备接入 |
Zigbee 扩展网关 | 基础功能 + 设备功能点 + Zigbee设备接入 |
说明一下,网关支持三种配网方式,分别是有线配网、无线配网、有线+无线配网。由于无线部分每个平台操作都不同,所以配网方式选择无线配网
或有线+无线配网
时,开发者需要实现 hal_wifi.c
的接口,接口说明请参见配网功能。
工程部署和安防功能默认是没有开启的,如需要支持工程部署功能或者安防功能,请与涂鸦商务联系。
基本功能是开发网关产品的基础,包含了必选功能和可选功能。必选功能是基于涂鸦网关扩展 SDK 进行二次开发必须要实现的功能,可选功能是用户可以根据实际需求来选择是否需要实现。
SDK 初始化、网关本地日志、网关应用重启、网关升级、网关重置,其他为可选功能。
!注意,网关本地日志功能是用于网关设备量产出货后,可以从涂鸦运营平台上拉取网关的本地日志进行分析定位问题,此功能对故障分析非常重要,强烈建议开发者实现该功能。
SDK 初始化用于申请 SDK 运行时需要的系统资源,以及初始化网关基本业务。
uuid
和 authkey
参数;pk
参数;对于量产的网关产品,可以通过涂鸦运营平台拉取本地日志进行故障分析。当在运营平台上拉取日志时,会触发网关本地日志回调,第三方系统开发者要在回调中实现获取本地日志的功能。
path
变量,路径和文件名的总长度不能超过 path_len
;gw_fetch_local_log_cb
成员变量。网关完成 Zigbee 模块升级、网关重置等操作时,需要重启网关应用。当需要重启网关应用时,会触发网关应用重启回调,第三方系统开发者要在回调中实现重启网关应用的功能。
gw_reboot_cb
成员变量。当网关有新版本可升级时,在涂鸦 APP 上触发网关升级,网关会自动下载固件,校验通过后会触发网关升级回调,第三方系统开发者要在回调中实现网关升级的功能。
img
变量获取固件文件,执行升级操作;gw_upgrade_cb
成员变量。当在涂鸦 APP 恢复网关出厂设置时,会触发网关重置回调,第三方系统开发者可以在回调中实现其重置业务。
gw_reset_cb
成员变量。当网关成功绑定或者解绑涂鸦云时,会触发网关激活通知回调,第三方系统开发者可以在回调中处理其业务(如控制指示灯)。
status
变量获取网关当前的激活状态,处理相应的业务;gw_active_state_changed_cb
成员变量。当网关成功连接涂鸦云或连接断开时,会触发网关上线通知回调,第三方系统开发者可以在回调中处理其业务(如控制指示灯)。
registered
和 online
变量获取网关在线或离线状态,处理相应的业务;gw_online_status_changed_cb
成员变量。当网关模式发生变化时,会触发网关模式通知回调。网关包含两种模式:设备配网开始、设备配网结束(超时)。第三方系统开发者可以在回调中实现指示灯控制逻辑。
mode
变量获取网关当前模式来控制指示灯;gw_configure_op_mode_cb
成员变量。工程部署模式用于离线部署,搭配涂鸦施工 APP 使用。部署完成后切换到普通模式,用户绑定网关后会同步工程部署的子设备、场景以及自动化。为了方便施工,工程模式仅支持 AP 配网。注意,工程部署模式默认是没有开启的,如需要使用工程部署模式,请与涂鸦商务联系。
在 SDK 初始化之前,将结构体 ty_gw_attr_s 的 is_engr
成员变量赋值为 1(0 表示进入普通模式,1 表示进入工程模式);
完成 AP 配网功能开发,请参见 [AP 配网功能](#AP 配网功能);
实现 gw_engineer_finished_cb 回调函数,在函数中重启网关应用,以普通模式运行;
开发建议,可以设置系统标志,根据系统标志来启动网关应用,工作在普通模式运行还是工程模式。系统首次启动标志为工程模式,直到工程部署完成回调被触发,将标志改为普通模式。
将该回调函数赋值给网关基础回调结构体 ty_gw_infra_cbs_s 的 gw_engineer_finished_cb
成员变量。
SDK 留有本地绑定网关的能力,第三方系统开发者可以用有效的 token 将网关绑定到涂鸦云。常见的有蓝牙配网,设备端通过手机 APP 蓝牙通信获取激活 token,或者通过云云对接从涂鸦云获取激活 token。
SDK 留有本地解绑网关的能力,第三方系统开发者可通过按键等方式解绑网关。
SDK 留有本地控制子设备入网的能力,第三方系统开发者可通过按键等方式进行开启或关闭子设备入网。
int tuya_user_iot_init(ty_gw_attr_s *attr,
ty_gw_infra_cbs_s *cbs)
功能说明( Summary )
初始化 SDK 基本业务的接口。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
attr | 参考 ty_gw_attr_s 结构体说明 |
cbs | 参考 ty_gw_infra_cbs_s 接口体说明 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int tuya_user_iot_active_gw(const char *token);
功能说明( Summary )
本地绑定网关的接口。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
token | 绑定网关的 token |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int tuya_user_iot_unactive_gw(void);
功能说明( Summary )
本地解绑网关的接口。
参数说明( Parameters )
无
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int tuya_user_iot_permit_join(bool permit);
功能说明( Summary )
本地控制子设备入网的接口。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
permit | 0:关闭; 1:开启。 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*get_uuid_authkey_cb)(char *uuid,
int uuid_size,
char *authkey,
int authkey_size);
功能说明( Summary )
获取设备 UUID 和 Authkey 的回调函数,第三方开发者要在此回调函数中把在涂鸦 IoT 平台上创建产品获取到的 UUID 和 Authkey 赋值给 uuid 和 authkey 变量。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
uuid | 将 UUID 赋值给该变量 |
uuid_size | uuid 对应的 buf 大小 |
authkey | 将 Authkey 赋值给该变量 |
authkey_size | authkey 对应的 buf 大小 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*get_product_key_cb)(char *pk,
int pk_size);
功能说明( Summary )
获取设备 PID 的回调函数,第三方开发者要在此回调函数中把在涂鸦 IoT 平台上创建产品获取到的 PID 赋值给 pk 变量。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
pk | 将 PID 赋值给该变量 |
pk_size | pk 对应的 buf 大小 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*gw_reboot_cb)(void);
功能说明( Summary )
重启涂鸦应用的回调函数。
参数说明( Parameters )
无
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*gw_reset_cb)(void);
功能说明( Summary )
重置网关的回调函数,第三方系统开发者在此回调函数中实现实现清空网关数据的功能。
参数说明( Parameters )
无
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*gw_upgrade_cb)(const char *img);
功能说明( Summary )
涂鸦应用升级的回调函数,第三方系统开发者在此回调函数中实现升级的功能。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
img | 网关固件文件所在的路径 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*gw_fetch_local_log_cb)(char *path,
int path_len);
功能说明( Summary )
从涂鸦运营平台拉取设备日志的回调函数。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
path | 把日志文件的路径赋值给该变量 |
path_len | file 变量的长度 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*gw_engineer_finished_cb)(void);
功能说明( Summary )
工程部署完成的回调函数,第三方系统开发者在此回调函数中实现重启涂鸦应用,并切换到普通模式。
参数说明( Parameters )
无
返回值(Return Values)
无
int (*gw_online_status_changed_cb)(bool registered, bool online);
功能说明( Summary )
网关上下线状态变化的回调函数,第三方系统开发者可以在此回调函数中根据网关上线或下线处理其特定业务。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
registered | 网关是否已激活 |
online | 网关在线状态。 0:离线; 1:在线。 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*gw_active_status_changed_cb)(ty_gw_status_t status);
功能说明( Summary )
网关成功绑定或解绑涂鸦云的通知回调函数,第三方系统开发者可以在此回调函数中根据网关成功绑定或解绑处理其特定业务。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
status | 网关激活状态。 0:未绑定; 1:已绑定。 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*gw_configure_op_mode_cb)(ty_op_mode_t mode);
功能说明( Summary )
网关操作模式通知回调函数,第三方系统开发者可以在此回调函数中实现其业务功能。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
mode | 操作模式。 TY_OP_MODE_ADD_START:设备配网开始; TY_OP_MODE_ADD_STOP:设备配网结束。 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
typedef struct {
char *storage_path;
char *cache_path;
char *tty_device;
int tty_baudrate;
char *eth_ifname;
char *ssid;
char *password;
char *ver;
int is_engr;
char *uz_cfg;
ty_conn_mode_t wifi_mode;
ty_log_lovel_t log_level;
} ty_gw_attr_s;
功能说明(Summary)
初始化 SDK 的基本属性。
成员说明
成员名称 | 说明 |
---|---|
storage_path | 存储路径是系统存储 SDK 数据库等文件的路径,所指定的路径必须有可读写权限,缺省是当前路径。 注意,存储路径必须以反斜杠结束。例如,若存储路径指定为 “/etc”,storage_path 则要被赋值为 “/etc/”。 |
cache_path | 临时路径是系统保存临时文件的路径,必须有可读写权限,缺省是 /tmp |
tty_device | 网关与 Zigbee 模块的串口通讯所使用的串口设备,如 /dev/ttyS1 |
tty_baudrate | 网关与 Zigbee 模块的串口通讯所使用的串口波特率,仅支持 115200 和 57600。 波特率为 115200 需要硬件流控 波特率为 57600 不需要硬件流控 |
eth_ifname | 广播 UDP 报文的接口,用于有线网关局域网发现 |
ssid | AP 配网模式,指定网关 AP 的 SSID |
password | AP 配网模式,指定网关 AP 的 Password |
ver | 网关应用的版本号,用于固件升级,必须是“x.x.x”的格式 |
is_engr | 0:普通模式; 1:工程模式 |
uz_cfg | 指定过滤 Zigbee 子设备的策略配置文件。policy 表示策略:0. 不过滤;1. 过滤部分;2. 过滤全部。当 policy = 1 时,也就是过滤部分,用户需要将设备的厂商名和型号记录到 devices 字段,示例配置文件: { “policy”: 1, “devices”: [ {“manufacture”: “test1_name”, “model_id”: “test1_id”}, {“manufacture”: “test2_name”, “model_id”: “test2_id”} ] } |
wifi_mode | 无线配网可以指定网关工作以哪种模式启动。 TY_CONN_MODE_AP_ONLY:仅工作在 AP 模式; TY_CONN_MODE_EZ_ONLY:仅工作在 EZ 模式; TY_CONN_MODE_AP_FIRST:支持 AP & EZ 模式,首次工作在 AP 模式,解绑或重置网关时切换; TY_CONN_MODE_EZ_FIRST:支持 AP & EZ 模式,首次工作在 EZ 模式,解绑或重置网关时切换。 |
log_level | 设置 log 打印等级,开发阶段可开启 debug 模式 |
typedef struct {
int (*get_uuid_authkey_cb)(char *uuid, int uuid_size, char *authkey, int authkey_size);
int (*get_product_key_cb)(char *pk, int pk_size);
int (*gw_upgrade_cb)(const char *img_file);
void (*gw_reboot_cb)(void);
void (*gw_reset_cb)(void);
void (*gw_engineer_finished_cb)(void);
int (*gw_fetch_local_log_cb)(char *path, int path_len);
int (*gw_configure_op_mode_cb)(ty_op_mode_t mode);
int (*gw_active_status_changed_cb)(ty_gw_status_t status);
int (*gw_online_status_changed_cb)(bool registered, bool online);
} ty_gw_infra_cbs_s;
功能说明(Summary)
网关相关的回调。
成员说明
成员名称 | 说明 |
---|---|
get_uuid_authkey_cb | 获取 UUID 和 Authkey 回调 |
get_product_key_cb | 获取 PID 回调 |
gw_upgrade_cb | 网关升级回调 |
gw_reboot_cb | 网关应用重启回调 |
gw_reset_cb | 网关重置回调 |
gw_engineer_finished_cb | 网关工程部署完成回调 |
gw_fetch_local_log_cb | 网关本地日志回调 |
gw_configure_op_mode_cb | 网关操作模式通知回调 |
gw_active_status_changed_cb | 网关激活状态通知回调 |
gw_online_status_changed_cb | 网关在线状态通知回调 |
涂鸦对设备功能进行了抽象,屏蔽了具体协议,以功能点的形式呈现给开发者,支持数值型、布尔型、枚举型、字符串型、故障型,RAW 型数据,像定义 C 变量一样简单。
开发者需要根据设备功能在涂鸦开发者平台创建对应的功能点,详细可以参考新建功能点说明。
通过设备功能点控制设备需要第三方系统开发者实现,涂鸦网关扩展 SDK 采用回调函数的方式,使用此接口注册回调函数。
实现相关的回调函数,并将它们填充到回调结构体 ty_dev_cmd_cbs_s;
在 SDK 初始化之前,调用 tuya_user_iot_reg_dev_cmd_cb 接口,把 ty_dev_cmd_cbs_s 结构体作为输入参数。
通过涂鸦 APP 控制设备时,会触发设备指令下发回调。第三方系统开发者要把功能点格式转成具体的设备可识别的数据,进行设备控制。
实现 dev_obj_cmd_cb / dev_raw_cmd_cb 回调函数,在函数中根据 dp
变量解析接收到的功能点信息,将其转成具体设备的协议,把控制指令下发给设备;
obj 类型的功能点不满足用户的需求时,可以定义 raw 类型的功能点,raw 为透传数据。
将该回调函数赋值给设备功能点回调结构体 ty_dev_cmd_cbs_s 的 dev_obj_cmd_cb
/dev_raw_cmd_cb
成员变量;
调用注册设备功能点回调 tuya_user_iot_reg_dev_cmd_cb 时,把设备功能点回调结构体作为输入参数。
当设备本地状态变化时,要上报新的状态到涂鸦云,用于同步设备状态。
int tuya_user_iot_reg_dev_cmd_cb(ty_dev_cmd_cbs_s *cbs);
功能说明( Summary )
注册指令下发回调。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
cbs | 参考 ty_dev_cmd_cbs_s 结构体说明 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int tuya_user_iot_report_obj_dp(const char *dev_id,
ty_dp_s *dps,
uint32_t dps_cnt);
功能说明( Summary )
上报设备属性值(obj)到涂鸦云。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
dev_id | dev_id == NULL,表示网关功能点; dev_id != NULL,表示子设备功能点,且 dev_id 为子设备的 MAC 地址 |
dps | 参考 ty_dp_s 结构体说明 |
dps_cnt | 功能点数量 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int tuya_user_iot_report_raw_dp(const char *dev_id,
uint32_t dpid,
uint8_t *data,
uint32_t len);
功能说明( Summary )
上报设备属性值(raw)到涂鸦云。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
dev_id | dev_id == NULL,表示网关功能点; dev_id != NULL,表示子设备功能点,且 dev_id 为子设备的 MAC 地址 |
dpid | 对应在涂鸦 IoT 平台上创建产品时定义的功能点编号 |
data | 透传的数据 |
len | 透传的数据长度 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*dev_obj_cmd_cb)(ty_obj_cmd_s *dp);
功能说明( Summary )
控制设备功能点(obj)的回调函数。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
dp | 参考 ty_obj_cmd_s 结构体说明 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*dev_raw_cmd_cb)(ty_raw_cmd_s *dp);
功能说明( Summary )
控制设备功能点(raw)的回调。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
dp | 参考 ty_raw_cmd_s 结构体说明 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
typedef struct {
int (*dev_obj_cmd_cb)(ty_obj_cmd_s *dp);
int (*dev_raw_cmd_cb)(ty_raw_cmd_s *dp);
} ty_dev_cmd_cbs_s;
功能说明(Summary)
设备功能点的回调。
成员说明
成员名称 | 说明 |
---|---|
dev_obj_cmd_cb | obj 类型功能点的回调 |
dev_raw_cmd_cb | raw 类型功能点的回调 |
typedef struct {
uint8_t cmd_tp;
uint8_t dtt_tp;
char *cid;
char *mb_id;
uint32_t dps_cnt;
ty_dp_s dps[0];
} ty_obj_cmd_s;
功能说明(Summary)
控制设备(json)的命令格式。
成员说明
成员名称 | 说明 |
---|---|
cmd_tp | 指令类型。 0:LAN 触发; 1:MQTT 触发; 2:本地定时触发; 3:场景联动触发; 4:重发 |
dtt_tp | 传输方式。 0:单播; 1:广播; 2:组播; 3:场景 |
cid | cid == NULL,表示网关功能点; cid != NULL,表示子设备功能点,cid 为子设备的 MAC 地址 |
mb_id | 群组 ID,只有当 dtt_tp = 2 时,该字段才有效 |
dps_cnt | 下发的功能点数量,即 dps 的长度 |
dps | 参见 ty_dp_s 结构体说明 |
typedef struct {
uint8_t dpid;
uint8_t type;
union {
int dp_value;
uint32_t dp_enum;
char *dp_str;
int dp_bool;
uint32_t dp_bitmap;
} value;
uint32_t time_stamp;
} ty_dp_s;
功能说明(Summary)
dp 功能点的信息。
成员说明
成员名称 | 说明 |
---|---|
dpid | 对应在涂鸦 IoT 平台上创建产品时定义的功能点编号 |
type | 功能点的数据类型,支持的数据类型请参见涂鸦文档中心的功能点定义 |
value | 功能点的值,数据类型对应 type |
time_stamp | 时间戳 |
typedef struct {
uint8_t cmd_tp;
uint8_t dtt_tp;
char *cid;
uint8_t dpid;
char *mb_id;
uint32_t len;
uint8_t data[0];
} ty_raw_cmd_s;
功能说明(Summary)
控制设备(raw)的命令格式。
成员说明
成员名称 | 说明 |
---|---|
cmd_tp | 指令类型。 0:LAN 触发; 1:MQTT 触发; 2:本地定时触发; 3:场景联动触发; 4:重发 |
dtt_tp | 传输方式。 0:单播; 1:广播; 2:组播; 3:场景 |
cid | cid == NULL,表示网关功能点; cid != NULL,表示子设备功能点,cid 为子设备的 MAC 地址 |
dpid | 对应在涂鸦 IoT 平台上创建产品时定义的功能点编号 |
mb_id | 群组 ID,只有当 dtt_tp = 2 时,该字段才有效 |
len | 透传的数据长度 |
data | 透传的数据 |
一键配网是网关通过按键的方式,给 WiFi 类型的 IoT 设备配网,网关要支持无线功能才能使用一键配网功能。这一章节对一键配网相关接口进行说明。
int tuya_user_iot_smconfig_init(const char *ifname, int (*cb)(char *ssid, \
uint32_t ssid_size, \
char *passwd, \
uint32_t passwd_size));
功能说明( Summary )
一键配网初始化接口,申请相关资源。第三方开发者需要指定 2.4G 无线接口以及实现获取 SSID 和密码的回调。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
ifname | 2.4G 无线接口 |
cb | 获取 SSID 和密码的回调 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int tuya_user_iot_smconfig_start(uint32_t timeout);
功能说明( Summary )
开启一键配网,调用该接口发送无线空中包。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
timeout | 超时时间,单位是秒。超时后自动关闭一键配网 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int tuya_user_iot_smconfig_stop(void);
功能说明( Summary )
关闭一键配网初始化接口,调用该接口停止发送无线空中包。
参数说明( Parameters )
无
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
涂鸦网关扩展 SDK 赋能第三方系统开发者将其他协议的子设备接入涂鸦云。通过本章节的介绍,开发者能了解接入其他协议子设备的流程以及接口使用。
接入其他协议子设备需要第三方系统开发者实现,涂鸦网关扩展 SDK 采用回调函数的方式,使用此接口注册回调函数。
实现相关的回调函数,并将它们填充到回调结构体 ty_misc_dev_cbs_s;
在 SDK 初始化之前,调用 tuya_user_iot_reg_misc_dev_cb 接口,把 ty_misc_dev_cbs_s 结构体作为输入参数。
当在涂鸦 APP 添加子设备时,会触发添加设备回调。第三方系统开发者要完成添加设备的业务逻辑。
permit
参数允许或禁止子设备入网;result
参数获取设备绑定结果,处理其特定业务;misc_dev_add_cb
和 misc_dev_bind_ifm_cb
赋值给回调结构体 ty_misc_dev_cbs_s 的对应成员变量。涂鸦平台子设备的在线和离线状态是通过心跳机制来实现的,需要定时上报子设备的心跳保活。
当在涂鸦 APP 删除子设备时,会触发设备删除回调。第三方系统开发者要在回调中实现删除设备的功能。
misc_dev_del_cb
赋值给 ty_misc_dev_cbs_s 结构体的 misc_dev_del_cb
成员变量。当在涂鸦 APP 重置子设备时,会触发设备复位回调。第三方系统开发者要在回调中实现将设备恢复出厂设置的功能 。
misc_dev_reset_cb
赋值给 ty_misc_dev_cbs_s 结构体的 misc_dev_reset_cb
成员变量。当在涂鸦 APP 控制子设备时,会触发设备指令下发回调。第三方系统开发者需要实现协议转换功能。
当子设备的功能值发生变化时,子设备要将新的功能值上报到网关,第三方系统开发者将子设备的通讯协议转成涂鸦功能点同步到涂鸦云。
OTA 作为设备升级与维护的最重要途径之一,当有固件需要升级时,通过涂鸦 APP 升级设备,涂鸦网关扩展 SDK 会下载设备固件,校验成功后通知第三方系统开发者进行 OTA 升级。
img
参数获取固件文件,以及 dev_id
参数找到要升级的设备,完成设备升级功能;misc_dev_upgrade_cb
赋值给 ty_misc_dev_cbs_s 结构体的 misc_dev_upgrade_cb
成员变量。int tuya_user_iot_reg_misc_dev_cb(ty_misc_dev_cbs_s *cbs);
功能说明( Summary )
注册接入其他子设备相关回调的接口。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
cbs | 参考 ty_misc_dev_cbs_s 结构体说明 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int tuya_user_iot_misc_dev_bind(uint32_t uddd,
const char *dev_id,
const char *pid,
const char *ver);
功能说明( Summary )
绑定子设备到涂鸦云的接口。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
uddd | 用户自定义,可用于区分不同类型的设备 |
dev_id | 子设备的 MAC 地址 |
pid | 在涂鸦 IoT 平台上创建子设备产品得到的 PID |
ver | 子设备的软件版本,用于固件升级 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int tuya_user_iot_misc_dev_unbind(const char *dev_id);
功能说明( Summary )
将子设备从涂鸦云上解绑的接口。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
dev_id | 子设备的 MAC 地址 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int tuya_user_iot_misc_dev_fresh_hb(const char *dev_id,
uint32_t timeout);
功能说明( Summary )
刷新子设备在涂鸦云在线状态的接口。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
dev_id | 子设备的 MAC 地址 |
timeout | 间隔在线的超时时间,单位是秒 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*misc_dev_add_cb)(bool permit, uint32_t timeout);
功能说明( Summary )
添加设备的回调函数。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
permit | 允许 or 禁止子设备入网 |
timeout | 允许配网的时间,单位为秒 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*misc_dev_del_cb)(const char *dev_id);
功能说明( Summary )
删除设备的回调函数。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
dev_id | 子设备的 MAC 地址 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*misc_dev_bind_ifm_cb)(const char *dev_id,
int result);
功能说明( Summary )
子设备绑定涂鸦云结果通知的回调函数。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
dev_id | 子设备的 MAC 地址 |
result | 绑定结果。 0:绑定成功; 1:绑定失败 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*misc_dev_reset_cb)(const char *dev_id);
功能说明( Summary )
重置设备的回调函数。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
dev_id | 子设备的 MAC 地址 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*misc_dev_upgrade_cb)(const char *dev_id, const char *img);
功能说明( Summary )
通知子设备升级的回调函数。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
dev_id | 子设备的 MAC 地址 |
img | 固件文件所在的路径 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
typedef struct {
int (*misc_dev_add_cb)(bool permit, uint32_t timeout);
int (*misc_dev_del_cb)(const char *dev_id);
int (*misc_dev_bind_ifm_cb)(const char *dev_id, int result);
int (*misc_dev_upgrade_cb)(const char *dev_id, const char *img);
int (*misc_dev_reset_cb)(const char *dev_id);
} ty_misc_dev_cbs_s;
功能说明(Summary)
接入其他子设备相关的回调。
成员说明
成员名称 | 说明 |
---|---|
misc_dev_add_cb | 添加设备的回调 |
misc_dev_del_cb | 删除设备的回调 |
misc_dev_bind_ifm_cb | 绑定结果通知回调 |
misc_dev_upgrade_cb | 升级通知的回调 |
misc_dev_reset_cb | 重置设备的回调 |
涂鸦网关扩展 SDK 赋予第三方系统具备接入非涂鸦生态的 Zigbee 设备的能力,把非涂鸦生态的 Zigbee 子设备接入到涂鸦云。通过本章节的介绍,开发者能了解接入第三方 Zigbee 子设备的流程以及接口使用。另外,接口也适用于本地控制 Zigbee 设备。
接入 Zigbee 协议子设备需要第三方系统开发者实现,涂鸦网关扩展 SDK 采用回调函数的方式,使用此接口注册回调函数。
实现相关的回调函数,并将它们填充到回调结构体 ty_z3_dev_cbs_s;
在 SDK 初始化之前,调用 tuya_user_iot_reg_z3_dev_cb 接口,把 ty_z3_dev_cbs_s 结构体作为输入参数。
符合 Zigbee3.0 标准协议的子设备加入到网关的 Zigbee 网络后,如果设备是用户关心的设备,会触发设备入网回调,第三方系统开发者要在回调中实现设备入网的功能。
在 SDK 初始化之前,将设备接入的策略配置文件赋值给结构体 ty_gw_attr_s 的 uz_cfg
成员变量,参数的详细使用请参见 ty_gw_attr_s;
实现 z3_dev_join_cb 回调函数,在函数中解析子设备的基本信息,调用 tuya_user_iot_z3_dev_bind 接口将子设备绑定到涂鸦云;
实现 z3_dev_active_state_changed_cb 回调函数,在函数中根据 state
变量获取子设备是绑定或解绑状态,处理相应的业务;若是绑定状态,将读取设备的属性信息封装成 ZCL 数据帧,调用 tuya_user_iot_z3_dev_send_zcl_cmd 接口读取子设备的属性信息;
实现 z3_dev_zcl_report_cb 回调函数,在函数中解析读取子设备的属性响应信息(Read Attributes Response),将 ZCL 数据帧转换成涂鸦功能点调用 tuya_user_iot_report_obj_dp 接口把设备当前功能值(如开关是开还是关)同步到涂鸦云;
在调用回调注册接口之前,将 z3_dev_join_cb
,z3_dev_active_state_changed_cb
和 z3_dev_zcl_report_cb
赋值给回调结构体 ty_z3_dev_cbs_s 对应的成员变量。
符合 Zigbee3.0 标准协议的子设备离开网关的 Zigbee 网络后,会触发设备离网回调,第三方系统开发者可以在回调中实现其特定业务处理。
实现 z3_dev_leave_cb 回调函数,在函数中实现其特定业务;
在调用回调注册接口之前,将此回调赋值给回调结构体 ty_z3_dev_cbs_s 的 z3_dev_leave_cb
成员变量。
当子设备上报数据时,会触发状态上报回调,第三方系统开发者要在回调中实现 ZCL 数据帧的解析功能。
z3_dev_zcl_report_cb
成员变量。当在涂鸦 APP 控制子设备时,会触发设备指令下发回调。第三方系统开发者要在回调中实现将涂鸦功能点转成 ZCL 数据帧功能。
Zigbee 模块启动成功后,会触发状态同步回调,第三方系统开发者要在回调中实现读取所有接入的子设备属性值功能。
z3_dev_init_data_cb
赋值给回调结构体 ty_z3_dev_cbs_s 的 z3_dev_init_data_cb
成员变量。SDK 留有本地升级设备的能力,第三方系统开发者可以通过调用设备升级接口升级 Zigbee 子设备。
SDK 留有本地移除设备的能力,第三方系统开发者可以通过调用设备移除接口将子设备从网关 Zigbee 网络中移除。
int tuya_user_iot_reg_z3_dev_cb(ty_z3_dev_cbs_s *cbs);
功能说明( Summary )
注册接入 Zigbee 子设备相关回调的接口。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
cbs | 参考 ty_z3_dev_cbs_s 结构体说明 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int tuya_user_iot_z3_dev_bind(uint32_t uddd,
const char *dev_id,
const char *pid,
const char *ver);
功能说明( Summary )
将 Zigbee 子设备绑定到涂鸦云的接口。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
uddd | 用户自定义,可用于区分不同类型的设备 |
dev_id | 子设备的 MAC 地址 |
pid | 在涂鸦 IoT 平台上创建子设备产品得到的 PID |
ver | 子设备的软件版本,用于固件升级 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int tuya_user_iot_z3_dev_send_zcl_cmd(ty_z3_aps_frame_s *frame);
功能说明( Summary )
下发 ZCL 数据帧给 Zigbee 子设备。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
frame | 参考 ty_z3_aps_frame_s 结构体说明 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int tuya_user_iot_z3_dev_del(const char *id);
功能说明( Summary )
本地移除 Zigbee 子设备的接口。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
id | 子设备的 MAC 地址 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int tuya_user_iot_z3_dev_upgrade(const char *id, const char *img);
功能说明( Summary )
本地升级 Zigbee 子设备的接口。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
id | 子设备的 MAC 地址 |
img | Zigbee 子设备固件文件所在的路径 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*z3_dev_join_cb)(ty_z3_desc_s *desc);
功能说明( Summary )
用户处理的 Zigbee 子设备入网的回调。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
desc | 参考 ty_z3_desc_s 结构体说明 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*z3_dev_leave_cb)(const char *id);
功能说明( Summary )
用户处理的 Zigbee 子设备离网的回调。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
id | 子设备的 MAC 地址 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*z3_dev_active_state_changed_cb)(const char *id, int state);
功能说明( Summary )
所有 Zigbee 子设备成功绑定或解绑涂鸦云时的通知回调。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
id | 子设备的 MAC 地址 |
state | 子设备激活状态。 0:解绑; 1:绑定。 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*z3_dev_zcl_report_cb)(ty_z3_aps_frame_s *frame);
功能说明( Summary )
用户处理的 Zigbee 子设备状态上报的回调。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
frame | 参考 ty_z3_aps_frame_s 结构体说明 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int (*z3_dev_init_data_cb)(void);
功能说明( Summary )
通知读取子设备属性值的回调。
参数说明( Parameters )
无
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
typedef struct {
int (*z3_dev_active_state_changed_cb)(const char *id, int state);
int (*z3_dev_init_data_cb)(void);
int (*z3_dev_join_cb)(ty_z3_desc_s *desc);
int (*z3_dev_leave_cb)(const char *id);
int (*z3_dev_zcl_report_cb)(ty_z3_aps_frame_s *frame);
} ty_z3_dev_cbs_s;
功能说明(Summary)
接入 Zigbee 子设备相关的回调。
成员说明
成员名称 | 说明 |
---|---|
z3_dev_active_state_changed_cb | Zigbee 子设备成功绑定或解绑涂鸦云的通知回调 |
z3_dev_init_data_cb | 通知读取用户处理的 Zigbee 子设备的属性值回调 |
z3_dev_join_cb | 用户处理的 Zigbee 子设备入网回调 |
z3_dev_leave_cb | 用户处理的 Zigbee 子设备离网回调 |
z3_dev_zcl_report_cb | 用户处理的 Zigbee 子设备状态上报回调 |
typedef struct {
char id[Z3_DEV_ID_LEN+1];
uint16_t node_id;
char manu_name[MANU_NAME_LEN+1];
char model_id[MODEL_ID_LEN+1];
char rejoin_flag;
} ty_z3_desc_s;
功能说明(Summary)
Zigbee 子设备的基本信息。
成员说明
成员名称 | 说明 |
---|---|
id | 子设备的 MAC 地址 |
node_id | 子设备的短地址 |
manu_name | 厂商名称 |
model_id | 设备型号 |
rejoin_flag | 重新入网标记 |
typedef struct {
char id[Z3_DEV_ID_LEN+1];
uint16_t node_id;
uint16_t profile_id;
uint16_t cluster_id;
uint8_t src_endpoint;
uint8_t dst_endpoint;
uint16_t group_id;
uint8_t cmd_type;
uint8_t cmd_id;
uint8_t frame_type;
char disable_ack;
uint16_t msg_length;
uint8_t *message;
} ty_z3_aps_frame_s;
功能说明(Summary)
涂鸦封装的 Zigbee ZCL 数据帧。
成员说明
成员名称 | 说明 |
---|---|
id | 子设备的 MAC 地址 |
node_id | 子设备的短地址 |
profile_id | Zigbee Profile ID |
cluster_id | Zigbee Cluster ID |
src_endpoint | 源 endpoint |
dst_endpoint | 目的 endpoint |
group_id | 组 ID,组播才需要 |
cmd_type | ZCL 命令类型。 1 表示 global; 2 表示特定 cluster |
cmd_id | ZCL Command ID |
frame_type | 传输类型。 0 表示单播; 1 表示组播; 2 表示广播 |
disable_ack | 禁止响应。 1 表示禁止响应; 0 表示使能响应 |
msg_length | ZCL payload 的长度 |
message | ZCL payload |
硬件相关控制需要第三方系统开发者实现,如布防撤防、报警声音控制或指示灯控制,涂鸦网关扩展 SDK 采用回调函数的方式,使用此接口注册回调函数。
实现相关的回调函数,并将它们填充到回调结构体 ty_home_security_cbs_s;
在 SDK 初始化之前,调用 tuya_user_iot_reg_home_security_cb 接口,把 ty_home_security_cbs_s 结构体作为输入参数。
int tuya_user_iot_reg_home_security_cb(ty_home_security_cbs_s *cbs);
功能说明( Summary )
注册安防硬件相关控制回调的接口。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
frame | 参考 ty_z3_aps_frame_s 结构体说明 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
void (*home_security_alarm_cb)(void);
功能说明( Summary )
报警回调,第三方开发者在此函数控制声音或者指示灯。
参数说明( Parameters )
无
返回值(Return Values)
无
void (*home_security_alarm_cancel_cb)(void);
功能说明( Summary )
取消报警回调,第三方开发者在此函数控制声音或者指示灯。
参数说明( Parameters )
无
返回值(Return Values)
无
void (*home_security_disarmed_cb)(void);
功能说明( Summary )
进入撤防状态的回调,第三方开发者在此函数控制声音或者指示灯。
参数说明( Parameters )
无
返回值(Return Values)
无
void (*home_security_away_armed_cb)(void);
功能说明( Summary )
进入离家布防状态的回调,第三方开发者在此函数控制声音或者指示灯。
参数说明( Parameters )
无
返回值(Return Values)
无
void (*home_security_stay_armed_cb)(void);
功能说明( Summary )
进入在家布防状态的回调,第三方开发者在此函数控制声音或者指示灯。
参数说明( Parameters )
无
返回值(Return Values)
无
void (*home_security_arm_ignore_cb)(void);
功能说明( Summary )
忽略布防的回调,第三方开发者在此函数控制声音或者指示灯。
参数说明( Parameters )
无
返回值(Return Values)
无
void (*home_security_arm_countdown_cb)(uint32_t time);
功能说明( Summary )
延时布防的回调,第三方开发者在此函数控制声音或者指示灯。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
time | 倒计时持续的时间 |
返回值(Return Values)
无
void (*home_security_alarm_countdown_cb)(uint32_t time);
功能说明( Summary )
延时报警的回调,第三方开发者在此函数控制声音或者指示灯。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
time | 倒计时持续的时间 |
返回值(Return Values)
无
void (*home_security_door_opened_cb)(uint32_t time);
功能说明( Summary )
门磁打开的回调,第三方开发者在此函数控制声音或者指示灯。
参数说明( Parameters )
无
返回值(Return Values)
无
void (*home_security_alarm_dev_cb)(char *dev);
功能说明( Summary )
设备报警的回调,第三方开发者在此函数获取哪个设备报警。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
dev | 设备名称 |
返回值(Return Values)
无
typedef struct {
void (*home_security_alarm_cb)(void);
void (*home_security_alarm_cancel_cb)(void);
void (*home_security_disarmed_cb)(void);
void (*home_security_away_armed_cb)(void);
void (*home_security_stay_armed_cb)(void);
void (*home_security_arm_ignore_cb)(void);
void (*home_security_arm_countdown_cb)(uint32_t time);
void (*home_security_alarm_countdown_cb)(uint32_t time);
void (*home_security_door_opened_cb)(void);
void (*home_security_alarm_dev_cb)(char *dev);
} ty_home_security_cbs_s;
功能说明(Summary)
安防硬件相关控制的回调。
成员说明
成员名称 | 说明 |
---|---|
home_security_alarm_cb | 报警的回调 |
home_security_alarm_cancel_cb | 取消报警的回调 |
home_security_disarmed_cb | 进入撤防状态的回调 |
home_security_away_armed_cb | 进入离家布防状态的回调 |
home_security_stay_armed_cb | 进入在家布防状态的回调 |
home_security_arm_ignore_cb | 忽略布防的回调 |
home_security_arm_countdown_cb | 延迟布防的回调 |
home_security_alarm_countdown_cb | 延迟报警的回调 |
home_security_door_opened_cb | 门磁打卡的回调 |
home_security_alarm_dev_cb | 设备报警的回调 |
涂鸦网关扩展 SDK 搭建了一套完整的用以引导设备配网的框架,开发者只需要实现对应的函数即可。此章节主要阐述配网的流程以及各函数的用途,建议开发者按照文档介绍,实现 hal_wifi.c
文件的接口。
注意,如果同时支持 AP & EZ 配网,需要在初始化时指定
wifi_mode
,解绑或重置网关时会自动切换模式。举例,假设
wifi_mode
指定为TY_CONN_MODE_AP_FIRST
,首次使用网关会工作在 AP 模式,只有当网关被解绑或重置时,重启后自动切换到 EZ 模式。再进行解绑或重置时,重启后自动切换回 AP 模式,这样交替工作。建议开发者通过指示灯来标识当前的工作模式,AP 模式可以在hal_wifi_ap_start
接口控制指示灯,EZ 模式可以在hal_wifi_set_sniffer
接口控制指示灯。
WiFi 快速配网是涂鸦 APP 直接通过无线发送包含 Wi-Fi 用户名和 Wi-Fi 密码的广播包,网关的无线接口处于监听模式,抓取无线广播包并解密出 Wi-Fi 用户名和密码,然后发起连接。
在网关初始化之前,设置 ty_gw_attr_s 的 wifi_mode
成员变量的值为 TY_CONN_MODE_EZ
;
实现 hal_wifi_get_work_mode 接口,在函数中根据实际情况获取网关的 WiFi 的工作模式;
实现 hal_wifi_set_cur_channel 接口,在函数中根据 channel
参数设置 WiFi 的工作信道;
实现 hal_wifi_scan_all_ap 接口,在函数中把扫描到的 WiFi 信息填充到 ap_scan_info_s 结构体;
实现 hal_wifi_set_sniffer 接口,在函数中根据实际情况,实现接收空口包功能,并通过 cb
参数把接收到的数据回传给 SDK;
实现 hal_wifi_set_work_mode 接口,在函数中根据参数 mode
设置 WiFi 的工作模式;
实现 hal_wifi_get_cur_channel 接口,在函数中根据实际情况获取网关的 WiFi 的当前信道;
实现 hal_wifi_connect_station 接口,在函数中根据参数 ssid
和 passwd
实现联网操作;
实现 hal_wifi_get_station_conn_stat 接口,在函数中获取 Station 工作模式的状态,并将结果赋值到 stat
参数;
网关开启 AP,涂鸦 APP 连接到网关的 AP,通过 UDP 广播包含将要配置的 Wi-Fi 用户名和 Wi-Fi 密码,网关收到 UDP 广播包并解析出 Wi-Fi 用户名和密码,然后发起连接。
在网关初始化之前,设置 ty_gw_attr_s 的 wifi_mode
成员变量的值为 TY_CONN_MODE_AP
,同时,也可以通过 ssid
和 password
成员变量指定 AP 的 SSID 和密码;
实现 hal_wifi_get_work_mode 接口,在函数中根据实际情况获取网关的 WiFi 的工作模式;
实现 hal_wifi_ap_start 接口,在函数中根据 ap_cfg_info_s 结构体参数的信息,打开 AP 模式;
实现 hal_wifi_set_work_mode 接口,在函数中根据参数 mode
设置 WiFi 的工作模式;
实现 hal_wifi_connect_station 接口,在函数中根据参数 ssid
和 passwd
实现联网操作;
实现 hal_wifi_get_station_conn_stat 接口,在函数中获取 Station 工作模式的状态,并将结果赋值到 stat
参数;
实现 hal_wifi_ap_stop 接口,在函数中关闭网关的 AP。
int hal_wifi_scan_all_ap(ap_scan_info_s **aps,
uint32_t *num)
功能说明( Summary )
扫描当前环境所有的 AP。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
aps | 参见 ap_scan_info_s 结构体说明 |
num | 当前环境 AP 信息列表长度 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int hal_wifi_scan_assigned_ap(char *ssid,
ap_scan_info_s **aps)
功能说明( Summary )
扫描当前环境特定的 AP。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
ssid | 指定 AP 的 SSID |
aps | 参见 ap_scan_info_s 结构体说明 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int hal_wifi_release_ap(ap_scan_info_s *ap)
功能说明( Summary )
若扫描接口把扫描到的 AP 信息存放在堆栈空间,则在此接口释放。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
ap | 参见 ap_scan_info_s 结构体说明 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int hal_wifi_set_cur_channel(uint8_t channel)
功能说明( Summary )
设置 WiFi 的工作信道。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
channel | 信道值 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int hal_wifi_get_cur_channel(uint8_t *channel)
功能说明( Summary )
获取 WiFi 当前的工作信道。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
channel | 信道值 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int hal_wifi_set_sniffer(int enable,
sniffer_callback cb)
功能说明( Summary )
设计混杂模式。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
enable | 使能/关闭 sniffer 模式 |
cb | 调用该回调将抓取到的 802.11 数据帧发送给 SDK |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int hal_wifi_get_ip(wifi_type_t type,
ip_info_s *ip)
功能说明( Summary )
获取 WiFi 接口的 IP 信息。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
type | WiFi 工作模式。 0:表示 STATION 模式; 1:表示 AP 模式 |
ip | 参见 ip_info_s 结构体说明 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int hal_wifi_get_mac(wifi_type_t type,
mac_info_t *mac)
功能说明( Summary )
获取 WiFi 接口的 MAC 信息。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
type | WiFi 工作模式。 0:表示 STATION 模式; 1:表示 AP 模式 |
mac | 参见 mac_info_s 结构体说明 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int hal_wifi_set_work_mode(wifi_work_mode_t mode)
功能说明( Summary )
设置 WiFi 工作模式。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
mode | 工作模式。 0:低功耗模式; 1:混杂模式; 2:STATION 模式; 3:AP 模式; 4:STATION + AP 模式 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int hal_wifi_get_work_mode(wifi_work_mode_t *mode)
功能说明( Summary )
获取 WiFi 工作模式。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
mode | 工作模式。 0:低功耗模式; 1:混杂模式; 2:STATION 模式; 3:AP 模式; 4:STATION + AP 模式 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int hal_wifi_connect_station(char *ssid,
char *passwd)
功能说明( Summary )
连接到上级 AP。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
ssid | 上级 AP 的 SSID |
passwd | 上级 AP 的 密码 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int hal_wifi_disconnect_station(void)
功能说明( Summary )
断开与上级 AP 的连接。
参数说明( Parameters )
无
返回值(Return Values)
参数名称 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int hal_wifi_get_station_rssi(char *rssi)
功能说明( Summary )
获取 Station 模式与上级 AP 连接的信号强度。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
rssi | 信号强度值 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int hal_wifi_get_station_conn_stat(station_conn_stat_t *stat)
功能说明( Summary )
获取 Station 模式与上级 AP 的连接状态。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
stat | 连接状态值。 STAT_IDLE: 无连接; STAT_CONNECTING: 正在连接; STAT_PASSWD_WRONG: 密码错误; STAT_NO_AP_FOUND: 没找到 AP; STAT_CONN_FAIL: 连接失败; STAT_CONN_SUCCESS: 连接成功; STAT_GOT_IP: 连接成功并分配到了 IP 地址 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int hal_wifi_ap_start(ap_cfg_info_s *cfg)
功能说明( Summary )
开启 AP。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
cfg | 参见 ap_cfg_info_s 结构体说明 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int hal_wifi_ap_stop(void)
功能说明( Summary )
关闭 AP。
参数说明( Parameters )
无
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
int hal_wifi_set_country_code(char *code)
功能说明( Summary )
设置 WiFi 的国家码。
参数说明( Parameters )
参数名称 | 说明 |
---|---|
code | 国家码 |
返回值(Return Values)
返回值 | 说明 |
---|---|
0 | 成功 |
非0 | 失败 |
typedef struct {
uint8_t channel;
char rssi;
uint8_t bssid[BSSID_MAX_LEN];
uint8_t ssid[SSID_MAX_LEN+1];
uint8_t s_len;
} ap_scan_info_s;
功能说明(Summary)
扫描到的 AP 信息。
成员说明
成员名称 | 说明 |
---|---|
channel | 扫描到的某个 AP 的信道 |
rssi | 扫描到的某个 AP 的信号强度 |
bssid | 扫描到的某个 AP 的 MAC 地址 |
ssid | 扫描到的某个 AP 的 SSID |
s_len | 扫描到的某个 AP 的 SSID 长度 |
typedef struct {
char ip[ADDR_MAX_LEN];
char mask[ADDR_MAX_LEN];
char gateway[ADDR_MAX_LEN];
} ip_info_s;
功能说明(Summary)
网络接口的 IP 信息。
成员说明
成员名称 | 说明 |
---|---|
ip | IP 地址 |
mask | 子网掩码 |
gateway | 网关 IP 地址 |
typedef struct {
uint8_t mac[MAC_MAX_LEN];
} mac_info_s;
功能说明(Summary)
网络接口的 MAC 信息。
成员说明
成员名称 | 说明 |
---|---|
mac | MAC 地址 |
typedef struct {
uint8_t ssid[SSID_MAX_LEN+1];
uint8_t s_len;
uint8_t key[KEY_MAX_LEN+1];
uint8_t p_len;
uint8_t channel;
ap_encryption_type_t type;
uint8_t hidden;
uint8_t max_conn;
uint16_t ms_interval;
} ap_cfg_info_s;
功能说明(Summary)
设置网关为 AP 模式的配置。
成员说明
成员名称 | 说明 |
---|---|
ssid | SSID |
s_len | SSID 长度 |
password | 密码 |
p_len | 密码长度 |
channel | 工作信道 |
encryption | 加密方式 |
hidden | 是否隐藏 SSID |
max_conn | 最大连接数 |
ms_interval | beacon 的间隔 |