通用 Wi-Fi SDK 说明

更新时间:2023-11-23 03:00:43下载pdf

TuyaOS 是涂鸦独创 IoT OS 操作系统,提供了按照业务需求选择组件,定制 SDK 的能力,是涂鸦开发者的利剑,具备轻量级、互联互通、安全传输、组件丰富、快速开发等关键能力,有效降低开发门槛、缩短开发周期,可广泛应用于可穿戴设备、视频监控、中控网关、智能音箱、智能家电、智能门锁等智能家居领域设备。

Tuya 通用 Wi-Fi SDK 是基于 TuyaOS 技术体系按照物联网 Wi-Fi 应用场景,进行裁剪、定制得到的,适用于任意一款按照涂鸦平台导入规范进行适配导入的 Wi-Fi 芯片平台。

SDK 目录结构说明

涂鸦通用 Wi-Fi SDK的产物目录说明如下表所示:

目录 子目录 描述 备注
apps / 存放客户应用程序和涂鸦通用 Wi-Fi SDK 的 demo,每个应用或者demo应使用单独的文件夹保存 参照涂鸦通用 Wi-Fi SDK demo 使用说明
oem_rtlbn_1_plug_demo 一个示例demo 一般会提供一个或者多个 demo
sdk / 存放涂鸦通用 Wi-Fi SDK 的头文件和库文件 参照后续的功能接口说明
include 涂鸦通用 Wi-Fi SDK 提供的 API 接口
lib 涂鸦通用 Wi-Fi SDK 编译得到的 libtuya_iot.a文件
platforms / 涂鸦通用 Wi-Fi SDK 的开发编译环境和工具链,默认是空的,在编译的时候,会通过build_app.sh下载相应的工具链
build_app.sh / 应用、demo 的编译入口 进行环境准备,以及编译
CHANGELOG.md / 版本修改的记录
README.md / 涂鸦通用 Wi-Fi SDK 介绍文档

初始化

流程描述

初始化流程是涂鸦设备在上电之后,自动加载、运行固件,对设备进行初始化的流程。由于 Tuya 通用 Wi-Fi SDK 是平台无关的,针对不同的产品,其初始化流程是有一些差异的,此处我们以灯具的 Wi-Fi SoC 为例,描述其初始化流程如下图所示。

通用 Wi-Fi SDK 说明

Tuya 通用 Wi-Fi SDK 的初始化流程主要是在 user_main() 函数里进行,主要包含以下几个阶段:

  • pre_init_process:
    • 此阶段是在初始化 Wi-Fi SDK 之前需要做的一些工作,用户根据自己的需求去实现,也可以不实现。不实现就不会进行。目前 pre_init_process 主要适用于灯具产品,需要尽快点亮,给客户更好的体验而实现的。在这个阶段,一般会进行:
      • pre_device_init:打印一些信息,设置日志级别。
      • tuya_cnt_rst_judge:一些开关计数处理。
      • tuya_iot_kv_init:初始化数据库,用于存储一些 pre_init_process 需要的数据。
      • 用户自己定义的一些实现,如订阅一些事件等。
  • tuya_iot_init:
    • 此阶段是在初始化 Tuya 通用 Wi-Fi SDK 内部一些必要的功能。分配一些必要的资源。
  • app_init
    • 应用代码初始化,设置工作模式。
  • device_init
    • 根据工作模式,进行特殊的处理。
    • 根据产品类型的不同,进行特殊的初始化处理。
      • SoC 类产品:使用 tuya_iot_wf_soc_dev_init 接口进行初始化。
      • MCU 通用对接类产品:使用 tuya_iot_wf_mcu_dev_init 接口进行初始化。
      • 网关类产品:使用 tuya_iot_wf_gw_dev_init 接口进行初始化。
      • 初始化产品功能,此处需要提供product_keyfirmware_key,配网模式等数据。

工作模式说明

在初始化过程的 app_init 阶段,用户需要根据自己的需求,选择一个合适的工作模式。工作模式决定了产品的初始化、配网、重置等行为的特性。

GWCM_OLD 模式

目前主要使用在串口对接类型的固件上。

  • 产测

    设备只有在 MCU 发起产测的情况下,才可以扫描产测路由器。产测在任意时间都可以发起。

  • 备注

    SoC 固件如果使用该模式,无法进入产测模式。

GWCM_LOW_POWER模式

目前主要使用在SoC插座上。

  • 配网前
    • 上电低功耗常亮状态,需要手工切换才能够进入配网状态。
    • 如果10s内未配网,手工重启,保持上次配网状态
    • 如果10s后未配网,手工重启后,自动进入低功耗常亮状态
    • 3分钟未配网,自动进入低功耗常亮状态
  • 配网激活后
    • APP移除
      • 设备自动重启,然后自动进入配网状态,默认EZ配网模式,擦除已经保持的SSID和PassWD。
    • 手工移除
      • 设备自动重启,然后自动进入配网状态,擦除已经保持的SSID和PassWD。
    • 未配网
      • 如果10s内未配网,手工重启,保持上次配网状态
      • 如果10s后未配网,手工重启后,自动进入低功耗常亮状态
      • 3分钟未配网,自动进入低功耗常亮状态
    • 配网
      • 重新激活绑定
  • 产测
    • 设备只有在低功耗常亮状态下,重启才会扫描产测路由,进入产测模式

GWCM_SPCL_MODE模式

目前主要使用在SoC照明上。

  • 配网前
    • 上电低功耗常亮状态,需要手工切换才能够进入配网状态。
    • 未配网:
      • 如果10s内未配网,手工重启,保持上次配网状态。
      • 如果10s后未配网,手工重启后,自动进入低功耗常亮状态。
      • 3分钟未配网,自动进入低功耗常亮状态。
  • 配网激活后
    • APP移除
      • 设备自动重启,然后自动进入配网状态,默认EZ配网模式,擦除已经保持的SSID和PassWD。
      • 未配网:
    • 如果10s内未配网,手工重启,保持上次配网状态。
    • 如果10s后未配网,手工重启后,自动进入低功耗常亮状态。
    • 3分钟未配网,自动进入低功耗常亮状态。
    • 手工移除
      • 设备自动重启,然后自动进入配网状态,进入防误触模式,不擦除已经保持的SSID和PassWD。
      • 未配网:
    • 如果10s内未配网,手工重启,保持上次配网状态。
    • 如果10s后未配网,手工重启后,立即连接已经配网路由器。
    • 3分钟未配网,立即连接已经配网路由器。
    • 配网
      • 重新激活绑定
  • 产测
    • 设备只有在低功耗常亮状态下,重启才会扫描产测路由,进入产测模式

GWCM_OLD_CPT模式

目前主要使用在SoC电工、照明上。上电即可进入配网模式,且一直处于配网状态。

  • 产测
    • 设备在配网状态下,重启设备都会主动扫描路由器,扫描成功即可进入产测模式。

GWCM_LOW_POWER_AUTO_CFG模式

主要应用于SoC电工,要求上电快闪,默认3分钟进入低功耗状态。

  • 配网前

    • 上电直接进入EZ配置状态,EZ、AP来回切换。
    • 未配网:
      • 3分钟内重启,保持上次配网状态。
      • 3分钟未配网,自动进入低功耗常亮状态。
  • 配网激活后

    • APP移除
      • 设备自动重启,然后自动进入配网状态,默认EZ配网模式,擦除已经保持的SSID和PassWD。
    • 手工移除
      • 设备自动重启,然后自动进入配网状态,默认EZ配网模式,不擦除已经保持的SSID和PassWD。
    • 未配网
      • 3分钟未配网,进入低功耗常亮状态。
    • 配网
      • 重新激活绑定
  • 产测

    设备在配网状态下,重启都会主动扫描路由,进入产测模式。

GWCM_SPCL_AUTOCFG模式

目前主要使用在SoC照明上。

  • 配网前

    • 上电进入快闪配网状态,3mins 后常亮。
    • 未配网:
      • 3分钟内重启,保持上次配网状态。
      • 3分钟未配网,自动进入低功耗常亮状态。
  • 配网激活后

    • APP移除
      • 设备自动重启,然后自动进入配网状态,默认EZ配网模式,擦除已经保持的SSID和PassWD。
      • 未配网:
    • 3分钟内未配网,手工重启,保持上次配网状态。
    • 3分钟未配网,自动进入低功耗常亮状态。
    • 手工移除
      • 设备自动重启,然后自动进入配网状态,进入防误触模式,不擦除已经保持的SSID和PassWD。
      • 未配网:
    • 如果10s内未配网,手工重启,保持上次配网状态。
    • 如果10s后未配网,手工重启后,立即连接已经配网路由器。
    • 3分钟未配网,立即连接已经配网路由器。
    • 配网
      • 重新激活绑定
  • 产测

    • 设备只有在低功耗常亮状态下,重启才会扫描产测路由,进入产测模式

接口说明

TY_IOT_CBS_S

在初始的过程的app_init阶段,用户需要根据自己的需求,提供一些回调。SDK会在相应的阶段,通过回调来通知应用相应的状态变化。

typedef struct {
    GW_STATUS_CHANGED_CB 	gw_status_cb;
    GW_UG_INFORM_CB 		gw_ug_cb;
    GW_RESET_IFM_CB 		gw_reset_cb;
    DEV_OBJ_DP_CMD_CB 		dev_obj_dp_cb;
    DEV_RAW_DP_CMD_CB 		dev_raw_dp_cb;
    DEV_DP_QUERY_CB 		dev_dp_query_cb;
    ACTIVE_SHORTURL_CB 		active_shorturl;
}TY_IOT_CBS_S;

功能说明(Summary)

SDK 用户回调接口

成员说明

成员名称 原型 说明
gw_status_cb VOID (*GW_STATUS_CHANGED_CB)(IN CONST GW_STATUS_E status); SDK 内部状态变化的时候会进行调用
gw_ug_cb int (*GW_UG_INFORM_CB)(IN CONST FW_UG_S *fw); SDK 检测到的时候会进行调用
gw_reset_cb VOID (*GW_RESET_IFM_CB)(GW_RESET_TYPE_E type); SDK 进行设备重置的时候进行调用
dev_obj_dp_cb VOID (*DEV_OBJ_DP_CMD_CB)(IN CONST TY_RECV_OBJ_DP_S *dp); SDK 收到DP的时候进行调用
dev_raw_dp_cb VOID (*DEV_RAW_DP_CMD_CB)(IN CONST TY_RECV_RAW_DP_S *dp); SDK 收到RAW DP的时候进行调用
dev_dp_query_cb VOID (*DEV_DP_QUERY_CB)(IN CONST TY_DP_QUERY_S *dp_qry); SDK 收到DP查询命令的时候进行调用

tuya_iot_init

函数原型

OPERATE_RET tuya_iot_init(IN CONST CHAR_T *fs_storge_path)

功能说明

用于 tuya iot 系统的初始化,必须最先调用

参数说明

参数名称 说明 参数类型 是否必选 备注
fs_storge_path 为 SDK 分配可读写的文件分区 CHAR_T 路径长度不能大于 110 个字节。

返回值

返回值 说明
OPRT_OK 成功
错误码 失败返回错误码

tuya_iot_get_sdk_info

函数原型

CHAR_T *tuya_iot_get_sdk_info(VOID);

功能说明

获取 tuya iot SDK 版本信息。

参数说明

参数名称 说明 参数类型 是否必选 备注
VOID 没有返回值

返回值

返回值 说明
SDK 信息字符串 SDK 信息包含 SDK 的编译时间,平台,以及版本号,使能的功能属性等。

tuya_iot_sys_mag_hb_init

函数原型

OPERATE_RET tuya_iot_sys_mag_hb_init(IN CONST DEV_HEARTBEAT_SEND_CB hb_send_cb);

功能说明

启动子设备心跳管理能力。

参数说明

参数名称 说明 参数类型 是否必选 备注
hb_send_cb 网关每隔 3 秒检查所有的子设备。如果子设备在心跳包超时内,子设备没有发送心跳给网关,则网关会设置子设备为离线,通过 hb_send_cb 通知用户至少三次。 hb_send_cb 回调函数

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_iot_set_wf_gw_prod_info

函数原型

OPERATE_RET tuya_iot_set_wf_gw_prod_info(IN CONST WF_GW_PROD_INFO_S *wf_prod_info);

功能说明

设置配置类 Wi-Fi 设备的授权信息,授权信息需通过涂鸦获取,否则设备无法正常使用。

参数说明

参数名称 说明 参数类型 是否必选 备注
wf_prod_info 该结构体包含设备信息:1)uuid 以及 authkey 2) WiFi 的 ssid 以及密码。 WF_GW_PROD_INFO_S * 开发者需要把该信息传递给 SDK。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_iot_wf_mcu_dev_init

函数原型

OPERATE_RET tuya_iot_wf_mcu_dev_init(IN CONST GW_WF_CFG_MTHD_SEL cfg, IN CONST GW_WF_START_MODE start_mode, 
 IN CONST TY_IOT_CBS_S *cbs, IN CONST CHAR_T *p_firmware_key, 
 IN CONST CHAR_T *product_key, IN CONST CHAR_T *wf_sw_ver, IN CONST CHAR_T *mcu_sw_ver);

功能说明

联网模块 + MCU 设备初始化接口。

参数说明

参数名称 说明 参数类型 是否必选 备注
cfg WiFi设备的工作方式。工作方式: 1)非低功耗模式。 2)低功耗模式。 3)特别的低功耗模式。 GW_WF_CFG_MTHD_SEL
start_mode Wifi 配网模式: 1)仅工作在ap 配置模式。 2)仅smart config 模式式。 3)ap 以及smart config 模式,默认ap 模式。 4)ap 以及 smart config 模式。默认 smart config模式。 根据实际需要选择模式。 GW_WF_START_MODE
cbs Wifi SDK 用户回调函数 TY_IOT_CBS_S *
p_firmware_key 固件key。固件上传至涂鸦平台,都会有固件key。 字符串
product_key 涂鸦平台创建产品时获取 字符串
wf_sw_ver Wifi 软件版本号 字符串
mcu_sw_ver Mcu 固件版本号 字符串

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_iot_wf_soc_dev_init

函数原型

OPERATE_RET tuya_iot_wf_soc_dev_init(IN CONST GW_WF_CFG_MTHD_SEL cfg, IN CONST GW_WF_START_MODE start_mode,
 IN CONST TY_IOT_CBS_S *cbs, IN CONST CHAR_T *product_key, IN CONST CHAR_T *wf_sw_ver);

功能说明

Wi-Fi SOC 设备初始化接口。

参数说明

参数名称 说明 参数类型 是否必选 备注
cfg WiFi设备的工作方式。工作方式: 1)非低功耗模式。 2)低功耗模式。 3)特殊低功耗模式。 GW_WF_CFG_MTHD_SEL
start_mode Wi-Fi 配网模式: 1)仅工作在ap 配置模式。 2)仅smart config 模式式。 3)ap 以及smart config 模式,默认ap 模式。 4)ap 以及 smart config 模式。默认 smart config模式。 根据实际需要选择模式。 GW_WF_START_MODE
cbs Wi-Fi SDK 用户回调函数 TY_IOT_CBS_S *
product_key 涂鸦平台创建产品时获取 字符串
wf_sw_ver 软件版本号 字符串 xx.xx.xx

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_iot_wf_gw_init

函数原型

OPERATE_RET tuya_iot_wf_gw_init(IN CONST GW_WF_CFG_MTHD_SEL cfg, IN CONST GW_WF_START_MODE start_mode, 
    IN CONST TY_IOT_CBS_S *cbs, IN CONST TY_IOT_GW_CBS_S *gw_cbs, 
    IN CONST CHAR_T *product_key, IN CONST CHAR_T *wf_sw_ver, IN CONST GW_ATTACH_ATTR_T *attr, 
    IN CONST UINT_T attr_num);

功能说明

Wi-Fi 网关初始化接口

参数说明

参数名称 说明 参数类型 是否必选 备注
cfg WiFi设备的工作方式。工作方式: 1)非低功耗模式。 2)低功耗模式。 3)特殊低功耗模式。 GW_WF_CFG_MTHD_SEL
start_mode Wi-Fi 配网模式: 1)仅工作在ap 配置模式。 2)仅smart config 模式式。 3)ap 以及smart config 模式,默认ap 模式。 4)ap 以及 smart config 模式。默认 smart config模式。 GW_WF_START_MODE
cbs 涂鸦WiFi SDK 用户回调 TY_IOT_CBS_S *
gw_cbs 涂鸦网关用户回调 TY_IOT_GW_CBS_S *
product_key 涂鸦平台创建产时获取 字符串
wf_sw_ver 软件版本号 字符串
attr 网关属性数组 GW_ATTACH_ATTR_T *
attr_num 网关属性长度 UINT_T

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_iot_wf_gw_dev_init

函数原型

OPERATE_RET tuya_iot_wf_gw_dev_init(IN CONST GW_WF_CFG_MTHD_SEL cfg, IN CONST GW_WF_START_MODE start_mode, 
    IN CONST TY_IOT_CBS_S *cbs, IN CONST TY_IOT_GW_CBS_S *gw_cbs, IN CONST CHAR_T *product_key, 
    IN CONST CHAR_T *wf_sw_ver, IN CONST GW_ATTACH_ATTR_T *attr, IN CONST UINT_T attr_num);

功能说明

Wi-Fi 网关加设备初始化接口,相比与 tuya_iot_wf_gw_init,该函数使得网关具有设备的属性,可以设置功能点等。

参数说明

参考 tuya_iot_wf_gw_init 接口说明

返回值

参考 tuya_iot_wf_gw_init 接口说明

tuya_iot_reg_get_wf_nw_stat_cb

函数原型

OPERATE_RET tuya_iot_reg_get_wf_nw_stat_cb(IN CONST GET_NW_STAT_CB nw_stat_cb);

功能说明

获取 Wi-Fi 状态接口。

参数说明

参数名称 说明 参数类型 是否必选 备注
nw_stat_cb 涂鸦 SDK 网络检测回调,回调函数的参数为网络状态。 nw_stat_cb 详见 DEMO

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

配网

流程描述

设备在初始化化完成之后,还需要后续进行一些工作,才能够使用完整的功能,其中最重要的是需要对其进行网络连接配置,使得设备能够通过路由器连接到云端,并在云端进行激活。如果设备已经配置过网络,再次启动、初始化之后不需要再进行网络连接配置。

用户需要先确定 Wi-Fi 网卡支持的工作模式,然后在 tuya_iot_wf_soc_dev_init 或者 tuya_iot_wf_gw_dev_init 接口初始化时告知 SDK 需要以何种配网模式进行配网。具体参考该接口的 start_mode 参数说明。用户在设备配网的过程中,需要使用手机APP和设备进行交互,把ssid、pswd、token等信息,通过编码的方式,发送广播包、组播包,直到配网过程完成。

EZ配网

EZ 也称为快速配网,是设备的 Wi-Fi 处于 monitor 工作模式下,在该模式下,设备的 Wi-Fi 能够获取手机 APP 发出的无线空口报文,接收并且会解析这些报文,并从中获取配置信息,然后切换为 station 工作模式进行联网。

通用 Wi-Fi SDK 说明

AP配网

AP 配网过程相对复杂,是指设备开启 AP 热点,手机连接上,通过局域网发送配置信息,设备获取配置信息之后,切换为 station 工作模式,进行联网。

其他配网方式

Tuya 通用 Wi-Fi SDK 还支持一些其他的配网能力,此类配网设备用户层通过其他方式获取路由器的 ssid、passwd 和配网 token,直接调用接口申请设备激活。

  • 二维码配网,设备通过摄像头扫描 APP 上生成的二维码获取 ssid/passwd/token 信息。
  • 无感配网,设备通过路由器获取ssid/passwd/token等信息。
  • FFS配网,通过第三方设备echo获取ssid/passwd/token等信息。
  • 声波配网:通过串口、声波编码解析传递 s sid/passwd/token等信息。
  • 蓝牙配网:通过蓝牙传递 ssid/passwd/token 等信息。

配网模式说明

用户根据自己的需求,在 device_init() 指定配网模式。

WF_START_AP_ONLY:仅工作在ap 配置模式。

WF_START_SMART_ONLY:仅smart config 模式式。

WF_START_AP_FIRST: AP 以及smart config 模式,默认ap 模式。

WF_START_SMART_FIRST:AP 以及 smart config 模式。默认 smart config模式。

WF_START_SMART_AP_CONCURRENT:AP和Smart config共存模式。

接口说明

tuya_hal_wifi_all_ap_scan

函数原型

OPERATE_RET tuya_hal_wifi_all_ap_scan(OUT AP_IF_S **ap_ary, OUT UINT_T *num);

功能说明

扫描所有 AP。

参数说明

参数名称 说明 参数类型 是否必选 备注
ap_ary 当前环境 AP 信息列表。 AP_IF_S ** 作为输出参数
num 当前环境 AP 信息列表长度。 UINT_T 作为输出参数

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_hal_wifi_assign_ap_scan

函数原型

OPERATE_RET tuya_hal_wifi_assign_ap_scan(IN CONST CHAR_T *ssid, OUT AP_IF_S **ap);

功能说明

扫描指定的 AP。

参数说明

参数名称 说明 参数类型 是否必选 备注
ssid 指定的 AP 的 ssid。 字符串 输入参数
ap 获取指定 AP 信息。 AP_IF_S ** 输出

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_hal_wifi_release_ap

函数原型

OPERATE_RET tuya_hal_wifi_release_ap(IN AP_IF_S *ap);

功能说明

资源的释放处理。

参数说明

参数名称 说明 参数类型 是否必选 备注
ap 当ap 信息没用的时候,释放在 tuya_hal_wifi_all_ap_scan 以及 tuya_hal_wifi_assign_ap_scan 申请的内存。 AP_IF_S *

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_hal_wifi_set_cur_channel

函数原型

OPERATE_RET tuya_hal_wifi_set_cur_channel(IN CONST BYTE_T chan);

功能说明

设置 Wi-Fi 工作信道。

参数说明

参数名称 说明 参数类型 是否必选 备注
chan 要设置的 Wi-Fi 工作信道 BYTE_T

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_hal_wifi_get_cur_channel

函数原型

OPERATE_RET tuya_hal_wifi_get_cur_channel(OUT BYTE_T *chan);

功能说明

获取当前工作信道。

参数说明

参数名称 说明 参数类型 是否必选 备注
nw_stat_cb 网络改变回调函数,回调函数的参数为网络状态 nw_stat_cb 详见 DEMO。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_hal_wifi_sniffer_set

函数原型

OPERATE_RET tuya_hal_wifi_sniffer_set(IN CONST BOOL_T en, IN CONST SNIFFER_CALLBACK cb);

功能说明

Wi-Fi 设备混杂模式设置。

参数说明

参数名称 说明 参数类型 是否必选 备注
en 使能/关闭 WiFi 的sniffer模式。 nw_stat_cb
cb 通知回调函数。抓取到的空中802.11数据包包含frame头。 SNIFFER_CALLBACK

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_hal_wifi_get_ip

函数原型

OPERATE_RET tuya_hal_wifi_get_ip(IN CONST WF_IF_E wf, OUT NW_IP_S *ip);

功能说明

获取Wi-Fi设备ip信息。

参数说明

参数名称 说明 参数类型 是否必选 备注
wf WiFi 的工作模式。AP 以及 station。 WF_IF_E
ip 保存获取的Ip信息结构体,信息包含IP,submask,gateway。 NW_IP_S * 输出参数

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_hal_wifi_get_mac

函数原型

OPERATE_RET tuya_hal_wifi_get_mac(IN CONST WF_IF_E wf, OUT NW_MAC_S *mac);

功能说明

获取 WiFi 设备 MAC 地址。

参数说明

参数名称 说明 参数类型 是否必选 备注
wf WiFi 的工作模式。AP 以及 station。 nw_stat_cb
mac 保存获取到的 MAC 地址。 NW_MAC_S * 作为输出参数

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_hal_wifi_set_mac

函数原型

OPERATE_RET tuya_hal_wifi_set_mac(IN CONST WF_IF_E wf,IN CONST NW_MAC_S *mac);

功能说明

设置 Wi-Fi 设备 MAC 地址,可选实现。

参数说明

参数名称 说明 参数类型 是否必选 备注
wf WiFi 的工作模式。AP 以及 station。 WF_IF_E 输入参数
mac 设置的 MAC 地址。 NW_MAC_S * 输入参数

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_hal_wifi_wk_mode_set

函数原型

OPERATE_RET tuya_hal_wifi_wk_mode_set(IN CONST WF_WK_MD_E mode);

功能说明

设置Wi-Fi工作模式。

参数说明

参数名称 说明 参数类型 是否必选 备注
mode 设置WiFi 工作模式: 1. 低功耗模式 2. 混杂模式 3. station 模式 4. ap 模式 5. ap + station 模式 WF_WK_MD_E

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_hal_wifi_wk_mode_get

函数原型

OPERATE_RET tuya_hal_wifi_wk_mode_get(OUT WF_WK_MD_E *mode);

功能说明

获取 Wi-Fi 工作模式。

参数说明

参数名称 说明 参数类型 是否必选 备注
mode 同 tuya_hal_wifi_wk_mode_set 中 参数 mode 含义一致。 WF_WK_MD_E 输出参数

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_hal_wifi_station_connect

函数原型

OPERATE_RET tuya_hal_wifi_station_connect(IN CONST CHAR_T *ssid, IN CONST CHAR_T *passwd);

功能说明

设置 Wi-Fi 设备建立与 AP/热点/WiFi 路由器的连接。

参数说明

参数名称 说明 参数类型 是否必选 备注
ssid 连接 ap/热点/WiFi路由器的 ssid。 字符串
password 连接 ap/热点/WiFi路由器的 password。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_hal_wifi_station_disconnect

函数原型

OPERATE_RET tuya_hal_wifi_station_disconnect(VOID);

功能说明

断开 Wi-Fi 设备与 AP/热点/Wi-Fi路由器 的连接。

参数说明

参数名称 说明 参数类型 是否必选 备注

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_hal_wifi_station_get_conn_ap_rssi

函数原型

OPERATE_RET tuya_hal_wifi_station_get_conn_ap_rssi(OUT SCHAR_T *rssi);

功能说明

获取作为station 模式的Wi-Fi设备与AP连接的信号强度。

参数说明

参数名称 说明 参数类型 是否必选 备注
rssi 获取到的rssi SCHAR_T* 输出参数

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_hal_wifi_station_stat_get

函数原型

OPERATE_RET tuya_hal_wifi_station_stat_get(OUT WF_STATION_STAT_E *stat);

功能说明

获取station模式下Wi-Fi设备的连接状态。

参数说明

参数名称 说明 参数类型 是否必选 备注
stat Station模式下WiFi 与 ap 连接状态。 1. 未连接 2. 正在连接 3. 密码不对 4. ap 未发现 5. 连接失败 6. 成功连接 7. 成功获取 WF_STATION_STAT_E * 输出参数

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_hal_wifi_set_country_code

函数原型

OPERATE_RET tuya_hal_wifi_set_country_code(IN CONST CHAR_T *p_country_code);

功能说明

设置Wi-Fi 的国家码。

参数说明

参数名称 说明 参数类型 是否必选 备注
p_country_code WiFi 设备不同的国家工作的频率以及信道信号强度不相同。 CHAR_T *

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_hal_wifi_ap_start

函数原型

OPERATE_RET tuya_hal_wifi_ap_start(IN CONST WF_AP_CFG_IF_S *cfg);

功能说明

启动 Wi-Fi AP 热点。

参数说明

参数名称 说明 参数类型 是否必选 备注
cfg 启动作为ap 模式下的配置参数。包含: 1. ssid 2. password 3. 信道 4. 加密方式 5. 是否隐藏 ssid 6. 最大连接数 WF_AP_CFG_IF_S *

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_hal_wifi_ap_stop

函数原型

OPERATE_RET tuya_hal_wifi_ap_stop(VOID);

功能说明

停止 Wi-Fi AP 热点。

参数说明

参数名称 说明 参数类型 是否必选 备注

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_iot_gw_wf_user_cfg

函数原型

OPERATE_RET tuya_iot_gw_wf_user_cfg(IN CONST CHAR_T *ssid, IN CONST CHAR_T *passwd,IN CONST CHAR_T *token);

功能说明

当通过其他模式配网时(非 AP/EZ),比如摄像头的二维码配网、声波配网等,调用此接口处理。

参数说明

参数名称 说明 参数类型 是否必选 备注
ssid AP 模式下配网使用的 ssid。 字符串
passwd AP 模式下配网使用的 password。 字符串
token AP 模式下配网使用的 token。 字符串

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

设备重置

APP 重置

用户可通过 APP 重置,APP重置命令会通过MQTT发送重置消息,重置设备。

本地重置

SDK 留有本地重置网关能力,用户可通过按键等方式本地重置设备,SDK提供了API供应用调用。

tuya_iot_wf_gw_unactive
OPERATE_RET tuya_iot_gw_unactive(VOID);

功能说明( Summary )

重置设备,解除网关有 APP 的绑定关系,使得网关处于非激活(待配网)状态。

注意:该函数为异步,执行后会触发gw_reset_cb回调,只需在该回调中处理进程重启

参数说明( Parameters )

参数名称 说明
VOID

返回值(Return Values)

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

固件升级

流程描述

固件包配置说明

  • 网关或子设备配网成功后,从 APP 上获取设备信息里的虚拟 ID,作为固件升级的白名单
  • 编译出要升级的固件包,固件版本要高于设备中运行的固件版本
  • 登录 开发者平台 ,到对应创建的产品下,上传配置固件包

升级开始的方式

设备固件上传到云端后,设备不会立即收到升级消息,目前涂鸦支持以下几种方式:

  • APP 提醒升级: 用户首次打开设备面板时,会收到升级提醒弹框,可选择升级或不升级。
  • APP 静默升级: 即设备静默升级,设备重启后,会向云端请求一次是否有静默升级任务,有的话直接进行升级。如果用户去打开设备面板,此时会有进度框显示,此时设备是无法操作的。
  • APP 强制升级: 用户首次打开设备面板时,会收到升级提醒弹框,只有确定可选,负责设备无法操作。
  • APP 检测升级: 即 APP 用户主动点击对应设备的面板,然后点击右上角进入设备信息界面,检测设备固件版本,主动更新。

固件升级交互流程

通用 Wi-Fi SDK 说明

接口说明

tuya_iot_upgrade_gw_notify

函数原型

OPERATE_RET tuya_iot_upgrade_gw(IN CONST FW_UG_S *fw, IN CONST GET_FILE_DATA_CB get_file_cb, 
    IN CONST UPGRADE_NOTIFY_CB upgrd_nofity_cb, IN CONST PVOID_T pri_data, 
    BOOL_T notify, UINT_T download_buf_size);

功能说明

联网模块固件升级处理接口。

参数说明

参数名称 说明 参数类型 是否必选 备注
fw 固件信息 FW_UG_S 结构体指针
get_file_cb 下载内容存储 回调函数
upgrd_nofity_cb 通知应用的升级状态 回调函数
pri_data 传递给 get_file_cb 以及 upgrd_nofity_cb 的参数 指针 如果不传参数,则设置为 NULL 。
notify 选择是否由 SDK 上报升级进度 布尔型 TRUE 为 SDK 上报,FALSE 为应用层上报
download_buf_size 下载最大缓存,单位字节 UINT_T 传入 0 , SDK 默认缓存大小

返回值

返回值 说明
OPRT_OK 成功
错误码 失败返回错误码

tuya_iot_dev_upgd_progress_rept

函数原型

OPERATE_RET tuya_iot_dev_upgd_progress_rept(IN CONST UINT_T percent, IN CONST CHAR_T *devid, IN CONST DEV_TYPE_T tp);

功能说明

上报升级进度。

参数说明

参数名称 说明 参数类型 是否必选 备注
percent 升级进度值 UINT_T 0~99
devid 子设备时,传入子设备的 devid ; 网关时,传入NULL CHAR_T * 参考 DEMO
tp 设备类型 DEV_TYPE_T 参考 DEMO

返回值

返回值 说明
OPRT_OK 成功
错误码 失败返回错误码

设备功能点

流程描述

涂鸦提供基于 MQTT 网络应用协议,实现设备控制和状态上报,MQTT 是一个轻量的发布订阅模式消息传输协议,专门针对低带宽和不稳定网络环境的物联网应用设计。

tuya_SDK 封装了 MQTT 协议层实现,以功能点(以下称为 dp 点)的形式呈现,支持数值型、布尔型、枚举型、字符串型、故障型,RAW 型数据,像定义 C 变量一样简单。

开发者需要根据设备功能在涂鸦开发者平台创建对应的功能点。

特点

  • 目前支持每个产品最多创建 35 个dp,复杂功能请用 RAW 型数据实现。
  • obj 型:布尔型(bool)、数值型(value)、字符串型(string)、枚举型(enum)、故障型(bitmap),tuya_SDK 会对连续上报的数值进行过滤,相同则不予上传。

接口说明

dev_obj_dp_cb

函数原型

VOID dev_obj_dp_cb(IN CONST TY_RECV_OBJ_DP_S *dp)。

功能说明

OBJ 功能点信息命令回调。

参数说明

参数名称 说明 参数类型 是否必选 备注
dp TY_RECV_OBJ_DP_S 中包含: 1)dp 命令类型。 2)dp 点控制的设备id。 3)当dtt_tp 为多播时,则mb_id 群组id。 4)功能点结构体数组长度。 5)功能点结构体数组。 参见 tuya_cloud_com_defs.h TY_RECV_OBJ_DP_S* 开发者重点处理功能点结构体数组。功能点在涂鸦平台上有定义。

返回值

返回值 说明
无返回值
错误码 失败返回错误码

dev_raw_dp_cb

函数原型

VOID dev_raw_dp_cb(IN CONST TY_RECV_RAW_DP_S *dp);

功能说明

透传类功能点信息命令回调。

参数说明

参数名称 说明 参数类型 是否必选 备注
dp 该结构体中包含: 1)dp 命令类型。 2)dp 点控制的设备id。 3)当dtt_tp 为多播时,则mb_id 群组id。 4)透传数据字节个数。 5)透传数据。 参见 tuya_cloud_com_defs.h TY_RECV_RAW_DP_S*

返回值

返回值 说明
VOID 无返回值

dev_dp_query_cb

函数原型

VOID dev_dp_query_cb(IN CONST TY_DP_QUERY_S *dp_qry);

功能说明

设备特定数据查询入口。可选实现。

参数说明

参数名称 说明 参数类型 是否必选 备注
dp_qry TY_DP_QUERY_S*

返回值

返回值 说明
VOID 无返回值

dev_report_dp_json_async

函数原型

OPERATE_RET dev_report_dp_json_async(IN CONST CHAR_T *dev_id, IN CONST TY_OBJ_DP_S *dp_data,IN CONST UINT_T cnt);

功能说明

异步方式,上报功能点信息。

参数说明

参数名称 说明 参数类型 是否必选 备注
dev_id 设备 id 字符串 如果是子设备,则该参数为子设备的 id。如果是网关/mcu,则该参数为NULL。
dp_data 功能点数据结构体 TY_OBJ_DP_S 结构体数组指针
cnt dp_data 结构体数组个数 UINT_T

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

dev_report_dp_raw_sync

函数原型

OPERATE_RET dev_report_dp_raw_sync (IN CONST CHAR_T *dev_id, IN CONST BYTE_T dpid, IN CONST BYTE_T *data,IN CONST UINT_T len, 
    IN CONST UINT_T timeout);

功能说明

设备透传数据同步上报接口,由调用者保障数据上报的可靠性

参数说明

参数名称 说明 参数类型 是否必选 备注
dev_id 设备 id 字符串 如果是子设备,则该参数为子设备的 id。如果是网关/mcu,则该参数为NULL。
dpid 功能点id UINT_T
data 数据 BYTE_T *
len 数据长度 UINT_T
timeout 函数柱塞超时时间 UINT_T 单位为秒

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

dev_report_dp_stat_sync

函数原型

OPERATE_RET dev_report_dp_stat_sync(IN CONST CHAR_T *dev_id, IN CONST TY_OBJ_DP_S *dp_data, IN CONST UINT_T cnt, 
    IN CONST UINT_T timeout);

功能说明

设备结构化数据同步上报接口,由调用者保障数据上报的可靠性,通常用于统计类数据的上报。

参数说明

参数名称 说明 参数类型 是否必选 备注
dev_id 设备 id 字符串 如果是子设备,则该参数为子设备的 id。如果是网关/mcu,则该参数为NULL。
dp_data 功能点信息结构体数组 TY_OBJ_DP_S *
cnt Dp状态数组长度 UINT_T
timeout 函数柱塞超时时间 UINT_T 单位为秒

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

日志管理

TuyaOS 日志管理支持日志的输出、重定向功能。默认情况下,TuyaOS SDK的日志是输出到标准输出终端的,在需求的时候,可以进行重定向,比如说输出到文件,输出云端等。

AddOutputTerm

函数原型

OPERATE_RET AddOutputTerm(IN CONST CHAR_T *name,IN CONST LOG_OUTPUT term);

功能说明

为 tuya_SDK 日志新增一个输出回调,用于将日志写到文件。

参数说明

参数名称 说明 参数类型 是否必选 备注
name 日志回调名称。 字符串 用于 DelOutputTerm 注销此回调
term LOG_OUTPUT 回调

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

DelOutputTerm

函数原型

VOID DelOutputTerm(IN CONST CHAR_T *name);

功能说明

注销 AddOutputTerm 接口注册的日志回调。

参数说明

参数名称 说明 参数类型 是否必选 备注
name 日志回调名称。 字符串 注销AddOutputTerm接口注册的日志回调

返回值 VOID

SetLogManageAttr

函数原型

OPERATE_RET SetLogManageAttr(IN CONST LOG_LEVEL curLogLevel);

功能说明

设置日志等级。

参数说明

参数名称 说明 参数类型 是否必选 备注
curLogLevel 日志等级 UINT 参考 uni_log.h 说明

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

定时器

添加一个系统定时器

函数原型

OPERATE_RET sys_add_timer(IN CONST P_TIMER_FUNC pTimerFunc,
IN CONST PVOID pTimerArg, OUT TIMER_ID *p_timerID);

功能说明

添加一个系统定时器。

参数说明

参数名称 说明 参数类型 是否必选 备注
pTimerFunc 定时器处理函数 P_TIMER_FUNC 定时器老化调用的回调函数指针。
pTimerArg 定时器处理参数 PVOID 定时器的相关参数,具体类型由回调函数内部决定
p_timerID 定时器ID编号 TIMER_ID * 输出参数,添加成功返回timer id

返回值

返回值 说明
OPERATE_RET 错误码信息

sys_stop_timer

函数原型

OPERATE_RET sys_stop_timer(IN CONST TIMER_ID timerID));

功能说明

停止一个定时器。

参数说明

参数名称 说明 参数类型 是否必选 备注
timerID 定时器ID编号 TIMER_ID * 需要停止的定时器timer id

返回值

返回值 说明
OPERATE_RET 错误码信息

IsThisSysTimerRun

函数原型

BOOL IsThisSysTimerRun(IN CONST TIMER_ID timerID);

功能说明

判断一个定时器是否运行。

参数说明

参数名称 说明 参数类型 是否必选 备注
timerID 定时器ID编号 TIMER_ID * 需要判断是否运行的定时器timer id

返回值

返回值 说明
BOOL 定时是否运行

sys_start_timer

函数原型

OPERATE_RET sys_start_timer(IN CONST TIMER_ID timerID, IN CONST TIME_MS timeCycle, IN CONST TIMER_TYPE timer_type);

功能说明

启动一个定时器。

参数说明

参数名称 说明 参数类型 是否必选 备注
timerID 定时器ID编号 TIMER_ID * 需要判断是否运行的定时器timer id
timeCycle 定时周期 TIME_MS 定时的周期,(单位毫秒)
timer_type 定时器类型 TIMER_TYPE <1>TIMER_ONCE 单次执行 <2>TIMER_CYCLE 循环执行

返回值

返回值 说明
BOOL 定时是否运行

消息队列

CreateMsgQueAndInit

函数原型

OPERATE_RET CreateMsgQueAndInit(OUT MSG_QUE_HANDLE *pMsgQueHandle);

功能说明

消息队列创建。

参数说明

参数名称 说明 参数类型 是否必选 备注
pMsgQueHandle 消息管理结构句柄 MSG_QUE_HANDLE * 输出参数,创建成功返回句柄

返回值

返回值 说明
OPERATE_RET 错误码信息

AddMsgNodeToQueue

函数原型

OPERATE_RET AddMsgNodeToQueue(IN CONST MSG_QUE_HANDLE msgQueHandle, IN CONST MSG_ID msgID, IN CONST P_MSG_DATA pMsgData,IN CONST MSG_DATA_LEN msgDataLen, IN CONST MSG_TYPE msgType);

功能说明

消息队列创建。

参数说明

参数名称 说明 参数类型 是否必选 备注
pMsgQueHandle 消息管理结构句柄 MSG_QUE_HANDLE 创建成功返回的句柄
msgID 消息ID MSG_ID
pMsgData 消息数据 P_MSG_DATA
msgDataLen 消息数据长度 MSG_DATA_LEN
msgType 消息类型 MSG_TYPE

返回值

返回值 说明
OPERATE_RET 错误码信息

GetMsgNodeFromQueue

函数原型

OPERATE_RET GetMsgNodeFromQueue(IN CONST MSG_QUE_HANDLE msgQueHandle, IN CONST MSG_ID msgID, OUT P_MSG_LIST *ppMsgListNode);

功能说明

获取指定ID的消息节点。

参数说明

参数名称 说明 参数类型 是否必选 备注
pMsgQueHandle 消息管理结构句柄 MSG_QUE_HANDLE 创建成功返回的句柄
msgID 消息ID MSG_ID
pMsgListNode 消息节点 P_MSG_LIST * 输出参数,获取到的消息节点

返回值

返回值 说明
OPERATE_RET 错误码信息

GetFirstMsgFromQueue

函数原型

OPERATE_RET GetFirstMsgFromQueue(IN CONST MSG_QUE_HANDLE msgQueHandle, OUT P_MSG_LIST *ppMsgListNode);

功能说明

获取首先入链的消息节点。

参数说明

参数名称 说明 参数类型 是否必选 备注
pMsgQueHandle 消息管理结构句柄 MSG_QUE_HANDLE 创建成功返回的句柄
pMsgListNode 消息节点 P_MSG_LIST * 输出参数,获取到的消息节点

返回值

返回值 说明
OPERATE_RET 错误码信息

GetMsgNodeNum

函数原型

OPERATE_RET GetMsgNodeNum(IN CONST MSG_QUE_HANDLE msgQueHandle,OUT PINT pMsgNodeNum);

功能说明

获取链表中的消息节点总数。

参数说明

参数名称 说明 参数类型 是否必选 备注
pMsgQueHandle 消息管理结构句柄 MSG_QUE_HANDLE 创建成功返回的句柄
pMsgNodeNum 消息节点总数 PINT 输出参数,获取到的消息节点总数

返回值

返回值 说明
OPERATE_RET 错误码信息

DelAndFreeMsgNodeFromQueue

函数原型

OPERATE_RET DelAndFreeMsgNodeFromQueue(IN CONST MSG_QUE_HANDLE msgQueHandle, IN CONST P_MSG_LIST pMsgListNode);

功能说明

从链中删除消息节点并释放消息节点内存。

参数说明

参数名称 说明 参数类型 是否必选 备注
pMsgQueHandle 消息管理结构句柄 MSG_QUE_HANDLE 创建成功返回的句柄
pMsgListNode 删除的消息节点 P_MSG_LIST 删除的消息节点

返回值

返回值 说明
OPERATE_RET 错误码信息

ReleaseMsgQue

函数原型

OPERATE_RET ReleaseMsgQue(IN CONST MSG_QUE_HANDLE msgQueHandle);

功能说明

释放消息队列所占用内存。

参数说明

参数名称 说明 参数类型 是否必选 备注
pMsgQueHandle 消息管理结构句柄 MSG_QUE_HANDLE 创建成功返回的句柄

返回值

返回值 说明
OPERATE_RET 错误码信息

PostMessage

函数原型

OPERATE_RET PostMessage(IN CONST MSG_QUE_HANDLE msgQueHandle, IN CONST MSG_ID msgID, IN CONST P_MSG_DATA pMsgData, IN CONST MSG_DATA_LEN msgDataLen);

功能说明

递送一个消息至模块(消息先进先执行)。

参数说明

参数名称 说明 参数类型 是否必选 备注
msgQueHandle 消息处理句柄 MSG_QUE_HANDLE 创建成功返回的句柄
msgID 消息ID MSG_ID
pMsgData 消息数据 P_MSG_DATA
msgDataLen 消息数据长度 MSG_DATA_LEN

返回值

返回值 说明
OPERATE_RET 错误码信息

PostInstancyMsg

函数原型

OPERATE_RET PostInstancyMsg(IN CONST MSG_QUE_HANDLE msgQueHandle, IN CONST MSG_ID msgID, IN CONST P_MSG_DATA pMsgData, IN CONST MSG_DATA_LEN msgDataLen);

功能说明

投递紧急消息(消息立刻执行)。

参数说明

参数名称 说明 参数类型 是否必选 备注
msgQueHandle 消息处理句柄 MSG_QUE_HANDLE 创建成功返回的句柄
msgID 消息ID MSG_ID
pMsgData 消息数据 P_MSG_DATA
msgDataLen 消息数据长度 MSG_DATA_LEN

返回值

返回值 说明
OPERATE_RET 错误码信息

WaitMessage

函数原型

OPERATE_RET WaitMessage(IN CONST MSG_QUE_HANDLE msgQueHandle, OUT P_MSG_LIST *ppMsgListNode);

功能说明

投递紧急消息(消息立刻执行)。WaitMessage成功需调用,消息处理完后需调用DelAndFreeMsgNodeFromQueue释放消息

参数说明

参数名称 说明 参数类型 是否必选 备注
msgQueHandle 消息处理句柄 MSG_QUE_HANDLE 创建成功返回的句柄
ppMsgListNode 消息节点 P_MSG_LIST * 输出参数,收到的消息节点

返回值

返回值 说明
OPERATE_RET 错误码信息

任务队列

CreateAndStart

函数原型

OPERATE_RET CreateAndStart(OUT THRD_HANDLE *pThrdHandle, IN CONST P_THRD_FUNC pThrdFunc,
IN CONST PVOID pThrdFuncArg, IN CONST STACK_SIZE stack_size,IN CONST TRD_PRI pri,
IN CONST CHAR *thrd_name);

功能说明

任务创建

参数说明

参数名称 说明 参数类型 是否必选 备注
pThrdHandle pThrdHandle 任务句柄 MSG_QUE_HANDLE 创建成功返回句柄
pThrdFunc 任务处理函数 P_THRD_FUNC
pThrdFuncArg 任务参数 PVOID
stack_size 指定任务堆栈大小 STACK_SIZE
pri 任务优先级 TRD_PRI
thrd_name 任务名称 CHAR *

返回值

返回值 说明
OPERATE_RET 错误码信息

ThrdJoin

函数原型

OPERATE_RET ThrdJoin(IN CONST THRD_HANDLE thrdHandle, OUT VOID **ppThrdRet);

功能说明

任务创建

参数说明

参数名称 说明 参数类型 是否必选 备注
thrdHandle pThrdHandle 任务句柄 MSG_QUE_HANDLE 创建成功返回句柄
ppThrdRet 任务退出码 VOID **

返回值

返回值 说明
OPERATE_RET 错误码信息

HAL接口

TuyaOS 是一款平台无关的端云 SDK,为了实现平台无关系,需要用户对根据其系统的不同,进行底层抽象接口的实现,具体的实现需要参照Tuya_通用_Wi-Fi_SDK 开发环境适配说明

附录

错误码

错误码名称 错误码值
OPRT_OK (0)
OPRT_COM_ERROR (-1)
OPRT_INVALID_PARM (-2)
OPRT_MALLOC_FAILED (-3)
OPRT_NOT_SUPPORTED (-4)
OPRT_NETWORK_ERROR (-5)
OPRT_TIMEOUT (-6)
OPRT_FILE_NOT_FIND (-7)
OPRT_INIT_MORE_THAN_ONCE (-8)
OPRT_INDEX_OUT_OF_BOUND (-9)
OPRT_RESOURCE_NOT_READY (-10)
OPRT_INIT_MUTEX_ATTR_FAILED (-101)
OPRT_SET_MUTEX_ATTR_FAILED (-102)
OPRT_DESTROY_MUTEX_ATTR_FAILED (-103)
OPRT_INIT_MUTEX_FAILED (-104)
OPRT_MUTEX_LOCK_FAILED (-105)
OPRT_MUTEX_TRYLOCK_FAILED (-106)
OPRT_MUTEX_LOCK_BUSY (-107)
OPRT_MUTEX_UNLOCK_FAILED (-108)
OPRT_MUTEX_RELEASE_FAILED (-109)
OPRT_CR_MUTEX_ERR (-110)
OPRT_MEM_PARTITION_EMPTY (-111)
OPRT_MEM_PARTITION_FULL (-112)
OPRT_MEM_PARTITION_NOT_FOUND (-113)
OPRT_DONOT_FOUND_MODULE (-114)
OPRT_INIT_SEM_FAILED (-201)
OPRT_WAIT_SEM_FAILED (-202)
OPRT_POST_SEM_FAILED (-203)
OPRT_THRD_STA_UNVALID (-301)
OPRT_THRD_CR_FAILED (-302)
OPRT_THRD_JOIN_FAILED (-303)
OPRT_THRD_SELF_CAN_NOT_JOIN (-304)
OPRT_TIMERID_EXIST (-401)
OPRT_TIMERID_NOT_FOUND (-402)
OPRT_TIMERID_UNVALID (-403)
OPRT_GET_IDLE_TIMERID_ERROR (-404)
OPRT_MSG_NOT_FOUND (-501)
OPRT_MSG_LIST_EMPTY (-502)
OPRT_WIFI_SCAN_FAIL (-601)
OPRT_WF_MAC_SET_FAIL (-602)
OPRT_WF_CONN_FAIL (-603)
OPRT_WF_NW_CFG_FAIL (-604)
OPRT_WF_AP_SACN_FAIL (-605)
OPRT_WF_NOT_FIND_ASS_AP (-606)
OPRT_DISCONNECTED_WITH_ROUTER (-607)
OPRT_SOCK_ERR (-701)
OPRT_SET_SOCK_ERR (-702)
OPRT_SOCK_CONN_ERR (-703)
OPRT_BUF_NOT_ENOUGH (-704)
OPRT_URL_PARAM_OUT_LIMIT (-705)
OPRT_HTTP_OS_ERROR (-706)
OPRT_HTTP_PR_REQ_ERROR (-707)
OPRT_HTTP_SD_REQ_ERROR (-708)
OPRT_HTTP_RD_ERROR (-709)
OPRT_HTTP_AD_HD_ERROR (-710)
OPRT_HTTP_GET_RESP_ERROR (-711)
OPRT_HTTP_AES_INIT_ERR (-712)
OPRT_HTTP_AES_OPEN_ERR (-713)
OPRT_HTTP_AES_SET_KEY_ERR (-714)
OPRT_HTTP_AES_ENCRYPT_ERR (-715)
OPRT_CR_HTTP_URL_H_ERR (-716)
OPRT_HTTPS_HANDLE_FAIL (-717)
OPRT_HTTPS_RESP_UNVALID (-718)
OPRT_HTTPS_NO_SUPPORT_RANGE (-719)
OPRT_HTTPS_NOT_ENCRYPT_RET (-720)
OPRT_CR_CJSON_ERR (-801)
OPRT_CJSON_PARSE_ERR (-802)
OPRT_CJSON_GET_ERR (-803)
OPRT_NOT_FOUND (-901)
OPRT_DP_ATTR_ILLEGAL (-902)
OPRT_DP_TYPE_PROP_ILLEGAL (-903)
OPRT_DP_REPORT_CLOUD_ERR (-904)
OPRT_NO_NEED_SET_PRODINFO (-905)
OPRT_NW_INVALID (-906)
OPRT_SELECT_ERR (-907)
OPRT_SELECT_TM (-908)
OPRT_SEND_ERR (-909)
OPRT_DEV_NOT_BIND (-910)
OPRT_FW_UG_FAILED (-911)
OPRT_VER_FMT_ERR (-912)
OPRT_FW_NOT_EXIST (-913)
OPRT_SEM_CR_ERR (-914)
OPRT_SELECT_TIMEOUT (-915)
OPRT_GW_MQ_OFFLILNE (-916)
OPRT_NOT_SPT_CLX_DP (-917)
OPRT_RECV_ERR (-918)
OPRT_UG_PKG_NOT_ENOUGH (-919)
OPRT_SCMA_INVALID (-920)
OPRT_PRODECT_KEY_NULL (-921)
OPRT_DEVICE_VER_NULL (-922)
OPRT_MSG_OUT_OF_LMT (-923)
OPRT_NOT_FOUND_AUTH_SSID (-924)
OPRT_SOCKET_FAULT (-925)
OPRT_MQ_PUBLISH_TIMEOUT (-926)
OPRT_GW_NOT_EXIST (-927)
OPRT_GW_SCHEMA_SIZE_LMT_OUT (-928)
OPRT_DEV_DP_CNT_INVALID (-929)
OPRT_TOKEN_OVERTIME (-930)
OPRT_WF_NW_CFG_RECV_CONTINUE (-931)
OPRT_RECV_DA_NOT_ENOUGH (-932)
OPRT_SERV_VRFY_FAIL (-933)
OPRT_KVS_WR_FAIL (-934)
OPRT_KVS_RD_FAIL (-935)
OPRT_NO_AUTHENTICATION (-936)
OPRT_CMD_OUT_OF_TIME_NOT_EXEC (-937)
OPRT_CMD_NOT_EXEC (-938)
OPRT_CRC32_FAILED (-939)
OPRT_LAN_NO_CLIENT (-940)
OPRT_WF_INTF_LACK_REG_CB (-941)
OPRT_WF_INTF_NO_REG_CB (-942)
OPRT_STORAGE_UPLOAD (-943)
OPRT_DP_ID_NOT_FOUND (-944)
OPRT_DP_TP_NOT_MATCH (-945)
OPRT_DEV_NEED_REGISTER (-946)
OPRT_DEV_RESET_FACTORY (-947)
OPRT_API_VERSION_WRONG (-948)
OPRT_DEV_ALREADY_BIND (-949)
OPRT_API_DECODE_FAILED (-950)
OPRT_API_TOKEN_EXPIRE (-951)
OPRT_NOT_EXISTS (-952)
OPRT_DP_ALREADY_PROCESS (-953)
OPRT_API_VERIFY_FAILED (-954)
OPRT_FILE_IS_FULL (-999)
OPRT_WRITE_FILE_FAILED (-1000)
OPRT_OPEN_FILE_FAILED (-1001)
OPRT_PRINT_LOG_LEVEL_HIGHER (-1002)
OPRT_FORMAT_STRING_FAILED (-1003)
OPRT_STRING_TOO_LONG (-1004)
OPRT_WR_FLASH_ERROR (-1005)
OPRT_ROUTER_NOT_FIND (-1006)
OPRT_EXCEED_UPPER_LIMIT (-1007)
OPRT_SECURITY_VERIFY_NOT_OK (-1008)
OPRT_FLASH_NOT_ENOUGH_PAGE (-1009)
OPRT_ERASE_FLASH_ERROR (-1088)
OPRT_OSS_OPERATION_INIT_FAILED (-1100)
OPRT_OSS_OPERATION_UPDATE_FAILED (-1101)
OPRT_OSS_OPERATION_UPLOAD_FAILED (-1102)
OPRT_MOTION_DETECTION_ALARM_PACK_REPORT_FAILED (-1103)
OPRT_TRANSFER_INIT_FAILED (-1104)
OPRT_LOG_SEQ_LOCKED (-1200)
OPRT_LOG_SEQ_DONT_LOCKED (-1201)
OPRT_LOCAL_LINK_IGNORE (-1300)
OPRT_LOCAL_LINK_CONTINUE (-1301)
OPRT_IMG_PROC_IMG_TYPE (-1201)
OPRT_IMG_PROC_IMG_SIZE (-1202)
OPRT_IMG_PROC_PTR_NULL (-1203)
OPRT_IMG_PROC_ARRAY_SIZE (-1204)
OPRT_IMG_PROC_SCALE_SIZE (-1205)
OPRT_IMG_PROC_PARA_ERROR (-1206)
OPRT_EVENT_STATUS_INVALID (-2000)
OPRT_ENCRYPT_KEY_UPDATED (-2001)
OPRT_ORDER_EXPIRE (-2002)
OPRT_NO_MORE_DATA (-2003)
OPRT_CLOUD_STORAGE_OFF (-2004)
OPRT_CLOUD_STORAGE_STATUS_INVALID (-2005)
OPRT_REMOTE_API_RUN_UNKNOW_FAILED (-2006)
OPRT_DEVICE_REMOVED (-2007)
OPRT_SIGNATURE_ERROR (-2008)
OPRT_DEVICE_NOT_WRONG (-2009)
OPRT_WORK_NUM_EXIST (-2010)
OPRT_SERVER_NOT_CONNECTED (-2011)
OPRT_AUTH_FAIL (-2012)
OPRT_LOCAL_AI_FACE_NOT_INIT (-2013)
OPRT_LOCAL_AI_FACE_DB_ERROR (-2014)
OPRT_WARN_LIVING_CHROMECAST (148)
OPRT_WARN_LIVING_ECHOSHOW (149)
OPRT_INFO_QUIT_CHROMECAST (150)
OPRT_INFO_QUIT_ECHOSHOW (151)
MQTT_DEF_ERR (-3000)
MQTT_INVALID_PARM (-3001)
MQTT_MALLOC_FAILED (-3002)
MQTT_DNS_PARSED_FAILED (-3010)
MQTT_SOCK_CREAT_FAILED (-3011)
MQTT_SOCK_CET_FAILED (-3012)
MQTT_TCP_CONNECD_FAILED (-3013)
MQTT_TCP_TLS_CONNECD_FAILED (-3014)
MQTT_PACK_SEND_FAILED (-3015)
MQTT_RECV_DATA_FORMAT_WRONG (-3016)
MQTT_RECV_DATA_MSGID_NOT_MATCH (-3017)
MQTT_START_TM_MSG_ERR (-3018)
MQTT_OVER_MAX_MESSAGE_LEN (-3019)
MQTT_PING_SEND_ERR (-3020)