10#ifndef __TUYA_SVC_UPGRADE_H__
11#define __TUYA_SVC_UPGRADE_H__
13#include "tuya_cloud_types.h"
14#include "tuya_cloud_com_defs.h"
21#ifndef STACK_SIZE_UPGRADE
22#define STACK_SIZE_UPGRADE (4096)
25typedef BYTE_T TI_UPGRD_STAT_S;
28#define TUS_UPGRD_FINI 3
29#define TUS_UPGRD_EXEC 4
31#define TUS_DOWNLOAD_START 10
32#define TUS_DOWNLOAD_COMPLETE 11
33#define TUS_UPGRADE_START 12
34#define TUS_UPGRADE_SUCCESS 3
36#define TUS_DOWNLOAD_ERROR_UNKONW 40
37#define TUS_DOWNLOAD_ERROR_LOW_BATTERY 41
38#define TUS_DOWNLOAD_ERROR_STORAGE_NOT_ENOUGH 42
39#define TUS_DOWNLOAD_ERROR_MALLOC_FAIL 43
40#define TUS_DOWNLOAD_ERROR_TIMEOUT 44
41#define TUS_DOWNLOAD_ERROR_HMAC 45
42#define TUS_UPGRADE_ERROR_LOW_BATTERY 46
43#define TUS_UPGRADE_ERROR_MALLOC_FAIL 47
44#define TUS_UPGRADE_ERROR_VERSION 48
45#define TUS_UPGRADE_ERROR_HMAC 49
51typedef OPERATE_RET(*UPGRADE_GET_DEV)(OUT CHAR_T dev_id[DEV_ID_LEN + 1]);
61typedef VOID (*UPGRADE_DETECT_RESULT)(IN BOOL_T is_err, IN BOOL_T is_exe, IN UINT_T detect_interval);
67 UPGRADE_GET_DEV upgrade_get_dev;
68 UPGRADE_DETECT_RESULT upgrade_detect_result;
124TUYA_OTA_PATH_E tuya_upgrade_get_path(VOID);
156OPERATE_RET tuya_svc_upgrade_ug_info_parse(
ty_cJSON *result, UPGRADE_TYPE_T type,
FW_UG_S *ug_info);
210 CONST GET_FILE_DATA_CB get_file_cb,
212 CONST UPGRADE_NOTIFY_CB upgrd_nofity_cb,
213 CONST BOOL_T upload_upgrade_percent,
214 CONST UINT_T download_buf_size);
259#define SVC_UPGRADE_SIGN_CONTENT_MAX_LEN 4096
262 SignContent_TYPE_USER = 0,
263 SignContent_TYPE_TUYA = 1,
268 uint8_t *pub_key_der;
269 uint32_t pub_key_der_size;
270 int8_t *pub_key_name;
274 uint32_t sign_content_len;
288 uint32_t sig_value_len;
300#if defined(ENABLE_FIRMWARE_SIGN_USER) && (ENABLE_FIRMWARE_SIGN_USER == 1)
301OPERATE_RET tuya_svc_upgrade_set_user_pub_key(uint8_t *pub_key_der, uint32_t der_size, int8_t *pub_key_name);
302OPERATE_RET tuya_svc_upgrade_set_tuya_pub_key(uint8_t *pub_key_der, uint32_t der_size, int8_t *pub_key_name);
304OPERATE_RET tuya_svc_upgrade_verify_init(
void);
305OPERATE_RET tuya_svc_upgrade_verify_process(IN CONST
FW_UG_S *fw, IN CONST UINT_T total_len, \
306 IN CONST UINT_T offset, IN CONST BYTE_T *data, \
307 IN CONST UINT_T len, OUT UINT_T *remain_len, IN PVOID_T pri_data);
308OPERATE_RET tuya_svc_upgrade_verify_end(IN CONST
FW_UG_S *fw, IN CONST INT_T download_result, IN PVOID_T pri_data);
tuya sdk ota firmware info
Definition: tuya_cloud_com_defs.h:663
Definition: tuya_svc_upgrade.h:278
Definition: tuya_svc_upgrade.h:290
Definition: tuya_svc_upgrade.h:273
Definition of firmware upgrade workload
Definition: tuya_svc_upgrade.h:66
Definition of firmware upgrade handler
Definition: tuya_svc_upgrade.h:100
SUBDEV_UPGRADE_INFORM_CB pre_subdev_upgrade_cb
Definition: tuya_svc_upgrade.h:108
SUBDEV_UPGRADE_INFORM_CB subdev_upgrade_cb
Definition: tuya_svc_upgrade.h:104
DEV_UPGRADE_INFORM_CB dev_upgrade_cb
Definition: tuya_svc_upgrade.h:102
DEV_UPGRADE_INFORM_CB pre_dev_upgrade_cb
Definition: tuya_svc_upgrade.h:106
Definition: tuya_svc_upgrade.h:295
Definition: tuya_svc_upgrade.h:267
Definition: ty_cJSON.h:104
VOID(* DEV_UPGRADE_PRE_INFORM_CB)(BOOL_T *handled, CONST FW_UG_S *fw)
Handler of pre-process inform
Definition: tuya_svc_upgrade.h:81
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_lan_upgrade_data_proc(BYTE_T *p_data_block, UINT_T u_data_block_len)
局域网升级数据处理
OPERATE_RET tuya_svc_upgrade_continue(VOID_T)
Continue to process multi section upgrade
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:95
VOID tuya_svc_upgrade_enable_mqtt_notify()
enable mqtt notify
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
BOOL_T tuya_svc_devos_get_upgrade(VOID)
Need upgrade or not(multi-section ota)
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:88
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
OPERATE_RET tuya_lan_upgrade_start(ty_cJSON *p_upgrade_info)
局域网升级启动
INT_T(* DEV_UPGRADE_INFORM_CB)(CONST FW_UG_S *fw)
Handler of GW upgrade inform
Definition: tuya_svc_upgrade.h:76
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
OPERATE_RET tuya_lan_upgrade_data_request_string(CHAR_T *request_string)
局域网升级数据请求