TuyaOS
初始化(Wired)

有线产品是指通过有线的方式连接网络,或者是开发自己维护网络连接,不需要涂鸦TuyaOS关心网络连接的方式和配置。

初始化是指设备上电、启动之后,调用一系列接口,完成设备硬件环境的初始化、涂鸦TuyaOS软件的初始化、应用功能初始化等工作。

一般来说,软件启动会执行main函数,对于涂鸦TuyaOS来说,不同场景,入口不一样,比如说在Linux操作系统环境下,我们需要自己实现main函数;在RTOS系统下,我们需要实现user_main函数。并在user main函数里对TuyaOS软件和设备应用能力进行初始化。

接口描述

TuyaOS初始化

OPERATE_RET tuya_iot_init_params(IN CONST CHAR_T *fs_storge_path, IN CONST TY_INIT_PARAMS_S *p_param);
Definition of TUYA DevOS init param
Definition: tuya_cloud_com_defs.h:163
OPERATE_RET tuya_iot_init_params(IN CONST CHAR_T *fs_storge_path, IN CONST TY_INIT_PARAMS_S *p_param)
tuya_iot_init_params @desc init tuya_iot_sdk

此接口是涂鸦TuyaOS的初始化接口,不区分模式,有线、Wi-FiWi-Fi&BLE、蜂窝网络都会使用。接口内部会对TuyaOS的内部基础功能进行资源分配、初始化。一般来说,这个接口会第一个调用,但是在一些场景下,可以在此接口之前进行一些功能配置、事件关注等工作,可以在TuyaOS初始化过程中进行一些特殊的业务逻辑处理。例如在开发照明产品的时候,需要基础功能初始化完成之后立即将灯点亮,则可以在调用此接口之前关注一下early_init事件,并在此事件回调里执行点灯逻辑,就可以实现此功能。

有线设备初始化

OPERATE_RET tuya_iot_dev_init(IN CONST TY_IOT_CBS_S *cbs, IN CONST CHAR_T *firmware_key,
IN CONST CHAR_T *product_key, IN CONST CHAR_T *sw_ver,
IN CONST GW_ATTACH_ATTR_T *attr, IN CONST UINT_T attr_num);
Definition of attach moudule attribute
Definition: tuya_cloud_com_defs.h:175
Definition of gateway callback funtions
Definition: tuya_cloud_com_defs.h:726
OPERATE_RET tuya_iot_dev_init(IN CONST TY_IOT_CBS_S *cbs, IN CONST CHAR_T *firmware_key, IN CONST CHAR_T *product_key, IN CONST CHAR_T *sw_ver, IN CONST DEV_TYPE_T tp, IN CONST GW_ATTACH_ATTR_T *attr, IN CONST UINT_T attr_num)
tuya_iot_dev_init

此接口用来初始化设备能力。在涂鸦物联网开发五步走步骤,会对产品进行定义,得到产品的PID等信息;PID信息在涂鸦云端对应了产品的功能信息,以及设备上其他的附属固件、文件等配置信息。在这个接口里,会对这些信息进行校验,并向尝试网络连接、连接云端,进行设备的激活绑定,在设备激活之后,启动各种涂鸦TuyaOS服务,并连接涂鸦云,进行正常的业务交互。

有线通用对接初始化

OPERATE_RET tuya_iot_mcu_dev_init(IN CONST TY_IOT_CBS_S *cbs,IN CONST CHAR_T *product_key, IN CONST CHAR_T *p_firmware_key,\
IN CONST CHAR_T *sw_ver,IN CONST CHAR_T *mcu_sw_ver);
OPERATE_RET tuya_iot_mcu_dev_init(IN CONST TY_IOT_CBS_S *cbs, IN CONST CHAR_T *product_key, IN CONST CHAR_T *p_firmware_key, IN CONST CHAR_T *sw_ver, IN CONST CHAR_T *mcu_sw_ver)
tuya_iot_mcu_dev_init @desc init tuya-sdk (wired version, [mcu] mode)

此接口对tuya_iot_dev_init进行了封装,实现了专门用于mcu通用对接的初始化接口。在mcu通用对接场景下,可以使用该接口,在收到mcu通过串口发送过来的product keymcu版本信息,对设备进行初始化。

有线SOC初始化

OPERATE_RET tuya_iot_soc_init_param(IN CONST TY_IOT_CBS_S *cbs,IN CONST CHAR_T *product_key,IN CONST CHAR_T *firmware_key,\
IN CONST CHAR_T *sw_ver);
OPERATE_RET tuya_iot_soc_init_param(IN CONST TY_IOT_CBS_S *cbs, IN CONST CHAR_T *product_key, IN CONST CHAR_T *firmware_key, IN CONST CHAR_T *sw_ver)
tuya_iot_soc_init_param @desc init tuya-sdk (wired version, [soc] mode)

此接口对tuya_iot_dev_init进行了封装,实现了专门用于soc方案的初始化接口。在soc场景下,可以使用该接口,用本地保存的product key和固件版本信息,对设备进行初始化。

有线网络回调设置

OPERATE_RET tuya_iot_reg_get_nw_stat_cb_params(IN CONST GET_NW_STAT_CB nw_stat_cb, IN CONST INT_T min_interval_s);
OPERATE_RET tuya_iot_reg_get_nw_stat_cb_params(IN CONST GET_NW_STAT_CB nw_stat_cb, IN CONST INT_T min_interval_s)
tuya_iot_reg_get_nw_stat_cb_params @desc enable tuya-sdk network check. sdk will check the network ev...
VOID(* GET_NW_STAT_CB)(IN CONST GW_BASE_NW_STAT_T stat)
Handler when network state error happens(wired)
Definition: tuya_svc_wired.h:37

此接口注册网络状态变化回调函数。TuyaOS在网络状态变化的时候,调用此接口注册进来的nw_stat_cb,通知应用进行相应的处理。

示例代码

#define UUID "f2***************b0"
#define AUTHKEY "6P******************MX"
#define PRODUCT_KEY "U0****************Zy" //DP控制开关
#define USER_SW_VER "1.0.0"
#define CFG_STORAGE_PATH "./tuya_db_files/"
STATIC VOID __soc_dev_rev_upgrade_info_cb(IN CONST FW_UG_S *fw);// SOC设备升级入口
STATIC VOID __soc_dev_status_changed_cb(IN CONST GW_STATUS_E status);// SOC设备云端状态变更回调
STATIC VOID __soc_dev_dp_query_cb(IN CONST TY_DP_QUERY_S *dp_qry);// SOC设备特定数据查询入口
STATIC VOID __soc_dev_obj_dp_cmd_cb(IN CONST TY_RECV_OBJ_DP_S *dp);// SOC设备格式化指令数据下发入口
STATIC VOID __soc_dev_raw_dp_cmd_cb(IN CONST TY_RECV_RAW_DP_S *dp);// SOC设备透传指令数据下发入口
STATIC VOID __soc_dev_restart_req_cb(GW_RESET_TYPE_E type);// SOC设备进程重启请求入口
STATIC VOID __soc_dev_net_status_cb(IN CONST GW_BASE_NW_STAT_T stat);// SOC外网状态变动回调
STATIC VOID __soc_dev_reset_cb(event_raw_data_t *data);
int main(int argc, char *argv[])
{
int rt = OPRT_OK;
// 此处为涂鸦TuyaOS初始化之前的一些特殊工作,代码每一个应用场景可能不同,按需实现
// TBD
// 此处为涂鸦TuyaOS基础功能初始化,为TuyaOS分配资源,并启动一些最基础的能力
TUYA_CALL_ERR_RETURN(tuya_iot_init(CFG_STORAGE_PATH, NULL));
// 此处为涂鸦TuyaOS授权信息写入,仅在Linux Demo代码使用,因为正式产品是在生产测试的时候写入授权信息
// 此处代码是为了避免使用产测授权
GW_PROD_INFO_S prod_info = {UUID, AUTHKEY};
TUYA_CALL_ERR_RETURN(tuya_iot_set_gw_prod_info(&prod_info));
// 此处为设备初始化,实现了一些基础的回调功能,满足一个设备的基本能力需求,并注册获取连接状态回调函数
TY_IOT_CBS_S iot_cbs = {0};
iot_cbs.gw_status_cb = __soc_dev_status_changed_cb;
iot_cbs.gw_ug_cb = __soc_dev_rev_upgrade_info_cb;
iot_cbs.gw_reset_cb = __soc_dev_restart_req_cb;
iot_cbs.dev_obj_dp_cb = __soc_dev_obj_dp_cmd_cb;
iot_cbs.dev_raw_dp_cb = __soc_dev_raw_dp_cmd_cb;
iot_cbs.dev_dp_query_cb = __soc_dev_dp_query_cb;
TUYA_CALL_ERR_RETURN(tuya_iot_soc_init_param(&iot_cbs, PRODUCT_KEY, NULL, USER_SW_VER));
TUYA_CALL_ERR_RETURN(tuya_iot_reg_get_nw_stat_cb_params(__soc_dev_net_status_cb, 1));
// 此处为设备初始化后的一些设备应用功能初始化,,代码每一个应用场景可能不同,按需实现
// TBD
// demo状态监控
while (1)
{
sleep(10);
// 监控设备状态,打印状态提示
ty_devos_monitor();
}
return 0;
}
tuya sdk ota firmware info
Definition: tuya_cloud_com_defs.h:584
Definition of product info(wired)
Definition: tuya_svc_wired.h:27
Definition of DP query
Definition: tuya_cloud_com_defs.h:497
GW_RESET_IFM_CB gw_reset_cb
Definition: tuya_cloud_com_defs.h:732
DEV_RAW_DP_CMD_CB dev_raw_dp_cb
Definition: tuya_cloud_com_defs.h:736
DEV_DP_QUERY_CB dev_dp_query_cb
Definition: tuya_cloud_com_defs.h:738
DEV_OBJ_DP_CMD_CB dev_obj_dp_cb
Definition: tuya_cloud_com_defs.h:734
GW_STATUS_CHANGED_CB gw_status_cb
Definition: tuya_cloud_com_defs.h:728
GW_UG_INFORM_CB gw_ug_cb
Definition: tuya_cloud_com_defs.h:730
Definition of recved structured dp
Definition: tuya_cloud_com_defs.h:459
Definition of recved raw dp
Definition: tuya_cloud_com_defs.h:477
the event dispatch raw data
Definition: base_event.h:50
OPERATE_RET tuya_iot_set_gw_prod_info(IN CONST GW_PROD_INFO_S *prod_info)
tuya_iot_set_gw_prod_info @desc set tuya-sdk product info (wired version)