TuyaOS
tuya_svc_upgrade.h
浏览该文件的文档.
1
10#ifndef __TUYA_SVC_UPGRADE_H__
11#define __TUYA_SVC_UPGRADE_H__
12
13#include "tuya_cloud_types.h"
14#include "tuya_cloud_com_defs.h"
15#include "ty_cJSON.h"
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
21typedef BYTE_T TI_UPGRD_STAT_S;
22#define TUS_RD 1 // ready
23#define TUS_UPGRDING 2 // upgrading
24#define TUS_UPGRD_FINI 3 // finish
25#define TUS_UPGRD_EXEC 4 // error
26
27#define TUS_DOWNLOAD_START 10 // download start
28#define TUS_DOWNLOAD_COMPLETE 11 // download complete
29#define TUS_UPGRADE_START 12 // upgrade start
30#define TUS_UPGRADE_SUCCESS 3 //upgrade success
31
32#define TUS_DOWNLOAD_ERROR_UNKONW 40 // unknown error
33#define TUS_DOWNLOAD_ERROR_LOW_BATTERY 41 // low battery
34#define TUS_DOWNLOAD_ERROR_STORAGE_NOT_ENOUGH 42 // storage not enough
35#define TUS_DOWNLOAD_ERROR_MALLOC_FAIL 43 // malloc fail
36#define TUS_DOWNLOAD_ERROR_TIMEOUT 44 // download timeout
37#define TUS_DOWNLOAD_ERROR_HMAC 45 // hmac not match
38#define TUS_UPGRADE_ERROR_LOW_BATTERY 46 // low battery
39#define TUS_UPGRADE_ERROR_MALLOC_FAIL 47 // malloc fail
40#define TUS_UPGRADE_ERROR_VERSION 48 // version invalid
41#define TUS_UPGRADE_ERROR_HMAC 49 // hmac not match
42
43/*
44* @param[out] dev_id device id for gw or nodeId for subdev
45* @return OPERATE_RET OPRT_OK indicates a valid device need detect
46*/
47typedef OPERATE_RET(*UPGRADE_GET_DEV)(OUT CHAR_T dev_id[DEV_ID_LEN + 1]);
48
49/*
50* @param[in] is_err TRUE indicates error happen, detect process is over
51* @param[in] is_exe valid when !is_err
52 TRUE indicates upgrade is got and notified
53 FALSE indicates upgrade is got but execute time not arrival
54* @param[in] detect_interval valid when !is_err && !is_exe
55 upgrade should be detected again after detect_interval(s)
56*/
57typedef VOID (*UPGRADE_DETECT_RESULT)(IN BOOL_T is_err, IN BOOL_T is_exe, IN UINT_T detect_interval);
58
62typedef struct {
63 UPGRADE_GET_DEV upgrade_get_dev;
64 UPGRADE_DETECT_RESULT upgrade_detect_result;
66
72typedef INT_T(*DEV_UPGRADE_INFORM_CB)(CONST FW_UG_S *fw);
73
77typedef VOID (*DEV_UPGRADE_PRE_INFORM_CB)(BOOL_T *handled, CONST FW_UG_S *fw);
78
84typedef INT_T(*SUBDEV_UPGRADE_INFORM_CB)(CONST CHAR_T *dev_id, CONST FW_UG_S *fw);
85
91typedef INT_T (*dev_upgrade_mq15_inform_cb)(ty_cJSON *root_json);
92
96typedef struct {
106
113
119OPERATE_RET tuya_svc_upgrade_active(VOID_T);
120
129
136
137OPERATE_RET tuya_svc_upgrade_ug_info_parse(ty_cJSON *result, UPGRADE_TYPE_T type, FW_UG_S *ug_info);
138
145
153OPERATE_RET tuya_svc_upgrade_detect_reset(CONST INT_T upgrade_interval);
154
163OPERATE_RET tuya_svc_upgrade_refuse(CONST FW_UG_S *fw, CONST CHAR_T *dev_id);
164
174OPERATE_RET tuya_svc_upgrade_result_report(CONST CHAR_T *dev_id, CONST DEV_TYPE_T type, CONST int result);
175
189OPERATE_RET tuya_svc_upgrade_start(CONST CHAR_T *dev_id,
190 CONST FW_UG_S *fw,
191 CONST GET_FILE_DATA_CB get_file_cb,
192 VOID *pri_data,
193 CONST UPGRADE_NOTIFY_CB upgrd_nofity_cb,
194 CONST BOOL_T upload_upgrade_percent,
195 CONST UINT_T download_buf_size);
196
204OPERATE_RET tuya_svc_upgrade_mqtt_notify(CHAR_T *dev_id, DEV_TYPE_T tp);
205
206#ifdef __cplusplus
207}
208#endif
209
210#endif
tuya sdk ota firmware info
Definition: tuya_cloud_com_defs.h:584
Definition of firmware upgrade workload
Definition: tuya_svc_upgrade.h:62
Definition of firmware upgrade handler
Definition: tuya_svc_upgrade.h:96
SUBDEV_UPGRADE_INFORM_CB pre_subdev_upgrade_cb
Definition: tuya_svc_upgrade.h:104
SUBDEV_UPGRADE_INFORM_CB subdev_upgrade_cb
Definition: tuya_svc_upgrade.h:100
DEV_UPGRADE_INFORM_CB dev_upgrade_cb
Definition: tuya_svc_upgrade.h:98
DEV_UPGRADE_INFORM_CB pre_dev_upgrade_cb
Definition: tuya_svc_upgrade.h:102
Definition: ty_cJSON.h:45
VOID(* DEV_UPGRADE_PRE_INFORM_CB)(BOOL_T *handled, CONST FW_UG_S *fw)
Handler of pre-process inform
Definition: tuya_svc_upgrade.h:77
VOID tuya_svc_upgrade_register_pre_cb(DEV_UPGRADE_PRE_INFORM_CB pre_ug_cb)
Register pre-precess handler to replace the default one
OPERATE_RET tuya_svc_upgrade_result_report(CONST CHAR_T *dev_id, CONST DEV_TYPE_T type, CONST int result)
Sync dowload result to cloud
OPERATE_RET tuya_svc_upgrade_detect_register(TUYA_UPGRADE_DETECT_T *detect)
Register a new firmware upgrade workload
INT_T(* dev_upgrade_mq15_inform_cb)(ty_cJSON *root_json)
Handler of process inform for some upgrade type
Definition: tuya_svc_upgrade.h:91
VOID tuya_svc_upgrade_register_mq15_cb(dev_upgrade_mq15_inform_cb mq15_cb)
Register process handler for some upgrade type
OPERATE_RET tuya_svc_upgrade_start(CONST CHAR_T *dev_id, CONST FW_UG_S *fw, CONST GET_FILE_DATA_CB get_file_cb, VOID *pri_data, CONST UPGRADE_NOTIFY_CB upgrd_nofity_cb, CONST BOOL_T upload_upgrade_percent, CONST UINT_T download_buf_size)
Start to download the specific firmware
INT_T(* SUBDEV_UPGRADE_INFORM_CB)(CONST CHAR_T *dev_id, CONST FW_UG_S *fw)
Handler of sub-device upgrade inform
Definition: tuya_svc_upgrade.h:84
OPERATE_RET tuya_svc_upgrade_active(VOID_T)
Run firmware upgrade framework, workloads registered will be executed
OPERATE_RET tuya_svc_upgrade_refuse(CONST FW_UG_S *fw, CONST CHAR_T *dev_id)
Refuse to download the specific firmware
INT_T(* DEV_UPGRADE_INFORM_CB)(CONST FW_UG_S *fw)
Handler of GW upgrade inform
Definition: tuya_svc_upgrade.h:72
OPERATE_RET tuya_svc_upgrade_mqtt_notify(CHAR_T *dev_id, DEV_TYPE_T tp)
Notify to upgrade immediately like mqtt15
OPERATE_RET tuya_svc_upgrade_detect_reset(CONST INT_T upgrade_interval)
Reset firmware upgrade check interval
OPERATE_RET tuya_svc_upgrade_init(TUYA_UPGRADE_PARAM_T *ota_param)
Initilize firmware upgrade framework