/* * Copyright (C) 2015-2018 Alibaba Group Holding Limited */ #ifndef _IOTX_OTA_INTERNAL_H_ #define _IOTX_OTA_INTERNAL_H_ #include #include #include #include "linkkit/infra/infra_httpc.h" #include "linkkit/infra/infra_string.h" #include "linkkit/infra/infra_md5.h" #include "linkkit/infra/infra_sha256.h" #include "linkkit/infra/infra_json_parser.h" #include "iotx_ota.h" #include "ota_api.h" #include "iotx_ota_config.h" #include "linkkit/wrappers/wrappers.h" #ifdef INFRA_MEM_STATS #include "linkkit/infra/infra_mem_stats.h" #define OTA_MALLOC(size) LITE_malloc(size, MEM_MAGIC, "ota") #define OTA_FREE(ptr) LITE_free(ptr) #define OTA_API_MALLOC(size) LITE_malloc(size, MEM_MAGIC, "ota.api") #define OTA_API_FREE(ptr) LITE_free(ptr) #else #define OTA_MALLOC(size) HAL_Malloc(size) #define OTA_FREE(ptr) \ { \ HAL_Free((void *)ptr); \ ptr = NULL; \ } #define OTA_API_MALLOC(size) HAL_Malloc(size) #define OTA_API_FREE(ptr) \ { \ HAL_Free((void *)ptr); \ ptr = NULL; \ } #endif #define OTA_SNPRINTF HAL_Snprintf #ifdef INFRA_LOG #include "linkkit/infra/infra_log.h" #define OTA_LOG_CRIT(...) log_crit("ota", __VA_ARGS__) #define OTA_LOG_ERROR(...) log_err("ota", __VA_ARGS__) #define OTA_LOG_WRN(...) log_warning("ota", __VA_ARGS__) #define OTA_LOG_INFO(...) log_info("ota", __VA_ARGS__) #define OTA_LOG_DEBUG(...) log_debug("ota", __VA_ARGS__) #else #define OTA_LOG_CRIT(...) \ do { \ HAL_Printf(__VA_ARGS__); \ HAL_Printf("\r\n"); \ } while (0) #define OTA_LOG_ERROR(...) \ do { \ HAL_Printf(__VA_ARGS__); \ HAL_Printf("\r\n"); \ } while (0) #define OTA_LOG_WRN(...) \ do { \ HAL_Printf(__VA_ARGS__); \ HAL_Printf("\r\n"); \ } while (0) #define OTA_LOG_INFO(...) \ do { \ HAL_Printf(__VA_ARGS__); \ HAL_Printf("\r\n"); \ } while (0) #define OTA_LOG_DEBUG(...) \ do { \ HAL_Printf(__VA_ARGS__); \ HAL_Printf("\r\n"); \ } while (0) #endif typedef enum { IOTX_OTA_TOPIC_TYPE_DEVICE_REQUEST = 1, IOTX_OTA_TOPIC_TYPE_DEVICE_UPGRATE = 2, IOTX_OTA_TOPIC_TYPE_CONFIG_GET = 3, IOTX_OTA_TOPIC_TYPE_CONFIG_PUSH = 4, IOTX_OTA_TOPIC_TYPE_MAX } iotx_ota_topic_types_t; typedef int (*ota_cb_fpt)(void *pcontext, const char *msg, uint32_t msg_len, iotx_ota_topic_types_t type); /* is_fetch = 0; start fetch */ /* is_fetch = 1; stop fetch */ const char *otalib_JsonValueOf(const char *json, uint32_t json_len, const char *key, uint32_t *val_len); void *otalib_MD5Init(void); void otalib_MD5Update(void *md5, const char *buf, size_t buf_len); void otalib_MD5Finalize(void *md5, char *output_str); void otalib_MD5Deinit(void *md5); void *otalib_Sha256Init(void); void otalib_Sha256Update(void *sha256, const char *buf, size_t buf_len); void otalib_Sha256Finalize(void *sha256, char *output_str); void otalib_Sha256Deinit(void *sha256); int otalib_GetFirmwareFixlenPara(const char *json_doc, size_t json_doc_len, const char *key, char *dest, size_t dest_len); int otalib_GetFirmwareVarlenPara(const char *json_doc, size_t json_doc_len, const char *key, char **dest); int otalib_GetParams(const char *json_doc, uint32_t json_len, char **url, char **version, char *md5, uint32_t *file_size); int otalib_GetConfigParams(const char *json_doc, uint32_t json_len, char **configId, uint32_t *configSize, char **sign, char **signMethod, char **url, char **getType); int otalib_GenInfoMsg(char *buf, size_t buf_len, uint32_t id, const char *version); int otalib_GenReportMsg(char *buf, size_t buf_len, uint32_t id, int progress, const char *msg_detail); void *ofc_Init(char *url, int offset); int32_t ofc_Fetch(void *handle, char *buf, uint32_t buf_len, uint32_t timeout_s); int ofc_Deinit(void **handle); #endif /* _IOTX_OTA_INTERNAL_H_ */