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;
148OPERATE_RET tuya_svc_upgrade_ug_info_parse(
ty_cJSON *result, UPGRADE_TYPE_T type,
FW_UG_S *ug_info);
202 CONST GET_FILE_DATA_CB get_file_cb,
204 CONST UPGRADE_NOTIFY_CB upgrd_nofity_cb,
205 CONST BOOL_T upload_upgrade_percent,
206 CONST UINT_T download_buf_size);
248#define SVC_UPGRADE_SIGN_CONTENT_MAX_LEN 4096
251 SignContent_TYPE_USER = 0,
252 SignContent_TYPE_TUYA = 1,
257 uint8_t *pub_key_der;
258 uint32_t pub_key_der_size;
259 int8_t *pub_key_name;
263 uint32_t sign_content_len;
277 uint32_t sig_value_len;
289#if defined(ENABLE_FIRMWARE_SIGN_USER) && (ENABLE_FIRMWARE_SIGN_USER == 1)
290OPERATE_RET tuya_svc_upgrade_set_user_pub_key(uint8_t *pub_key_der, uint32_t der_size, int8_t *pub_key_name);
291OPERATE_RET tuya_svc_upgrade_set_tuya_pub_key(uint8_t *pub_key_der, uint32_t der_size, int8_t *pub_key_name);
293OPERATE_RET tuya_svc_upgrade_verify_init(
void);
294OPERATE_RET tuya_svc_upgrade_verify_process(IN CONST
FW_UG_S *fw, IN CONST UINT_T total_len, \
295 IN CONST UINT_T offset, IN CONST BYTE_T *data, \
296 IN CONST UINT_T len, OUT UINT_T *remain_len, IN PVOID_T pri_data);
297OPERATE_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:621
Definition: tuya_svc_upgrade.h:267
Definition: tuya_svc_upgrade.h:279
Definition: tuya_svc_upgrade.h:262
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:284
Definition: tuya_svc_upgrade.h:256
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_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: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)
局域网升级数据请求