182 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			182 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | /****************************************************************************
 | ||
|  | 
 | ||
|  | Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED. | ||
|  | 
 | ||
|  | This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT | ||
|  | be copied by any method or incorporated into another program without | ||
|  | the express written consent of Aerospace C.Power. This Information or any portion | ||
|  | thereof remains the property of Aerospace C.Power. The Information contained herein | ||
|  | is believed to be accurate and Aerospace C.Power assumes no responsibility or | ||
|  | liability for its use in any way and conveys no license or title under | ||
|  | any patent or copyright and makes no representation or warranty that this | ||
|  | Information is free from patent or copyright infringement. | ||
|  | 
 | ||
|  | ****************************************************************************/ | ||
|  | 
 | ||
|  | #ifndef IOT_CLI_UPGRADE_API_H
 | ||
|  | #define IOT_CLI_UPGRADE_API_H
 | ||
|  | 
 | ||
|  | #include "os_types_api.h"
 | ||
|  | #include "iot_config_api.h"
 | ||
|  | #include "iot_cli_upgrade_status_type_def.h"
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | extern "C" { | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #if PLC_SUPPORT_CCO_ROLE
 | ||
|  | 
 | ||
|  | #if (IOT_PSRAM_SIZE >= 4)
 | ||
|  | /* 0 - cache in flash, 1 - cache in psram */ | ||
|  | #define IOT_CLI_UPGRADE_CACHE_TYPE           RUN_IN_PSRAM
 | ||
|  | #else /* (IOT_PSRAM_SIZE >= 4) */
 | ||
|  | /* 0 - cache in flash, 1 - cache in psram */ | ||
|  | #define IOT_CLI_UPGRADE_CACHE_TYPE           0
 | ||
|  | #endif /* (IOT_PSRAM_SIZE >= 4) */
 | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * maximal fw size is (444 + 256)K. maximal pib size is 64K. | ||
|  |  * since spec require  minimal supported upgrade file size is (512 + 256)K, | ||
|  |  * extra 4K is added here. | ||
|  |  */ | ||
|  | #if (IOT_PSRAM_SIZE >= 8)
 | ||
|  | /* modify 8m psram cco support sta upgrade file of 1 MB */ | ||
|  | #define IOT_CLI_UPGRADE_MAX_STA_FW_SIZE ((444 + 64 + 4 + 256 + 256) * 1024)
 | ||
|  | #else /* IOT_PSRAM_SIZE >= 8 */
 | ||
|  | #if (PLC_NETWORK_SCALE <= 1015)
 | ||
|  | #define IOT_CLI_UPGRADE_MAX_STA_FW_SIZE ((444 + 64 + 4 + 256) * 1024) /* 768k */
 | ||
|  | #else /* PLC_NETWORK_SCALE <= 1015 */
 | ||
|  | #define IOT_CLI_UPGRADE_MAX_STA_FW_SIZE ((444 + 64 + 4) * 1024) /* 512k */
 | ||
|  | #endif /* PLC_NETWORK_SCALE <= 1015 */
 | ||
|  | #endif /* IOT_PSRAM_SIZE >= 8 */
 | ||
|  | 
 | ||
|  | #if IOT_CLI_UPGRADE_CACHE_TYPE
 | ||
|  | #define IOT_CLI_UPGRADE_MAX_FILE_SIZE   IOT_CLI_UPGRADE_MAX_STA_FW_SIZE
 | ||
|  | #else
 | ||
|  | #define IOT_CLI_UPGRADE_MAX_FILE_SIZE   0
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * @brief iot_cli_upgrade_completed_handler - upgrade completed handler | ||
|  |  */ | ||
|  | typedef void(*iot_cli_upgrade_completed_handler)(); | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * @brief app upgrade handler for trigger app upgrade by CLI. | ||
|  |  * @param cmd:  cli data type. see - UPGRADE_CLI_UPGRADE_XXX. | ||
|  |  * @param data: pointer to data of upgrading file. | ||
|  |  * @param len:  length of upgrading file. | ||
|  |  * @retval:     ERR_OK if sg upgrading started. | ||
|  |  *              ERR_FAIL if failed to start app upgrading. | ||
|  |  */ | ||
|  | typedef uint32_t (*iot_cli_upgrade_app_handler)(uint8_t cmd, uint8_t *data, | ||
|  |     uint32_t len); | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * @brief: register app upgrading handler | ||
|  |  * @param handler: the handler to process app upgrading through CLI. | ||
|  |  */ | ||
|  | void iot_cli_upgrade_app_register_handler(iot_cli_upgrade_app_handler handler); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cli_upgrade_prepare - prepare for app trigger cli upgrade | ||
|  |  * @param handler:      completed handler | ||
|  |  * @param file_size:    size of upgrade file | ||
|  |  * @param data:         output para, data buffer pointer | ||
|  |  * @param file_hdr:     first block data of upgrade file | ||
|  |  * @param block_size:   block size: 100,200,300,400 | ||
|  |  * @param upgrade_type: upgrade type, see IOT_PLC_UPGRADE_XXX | ||
|  |  */ | ||
|  | uint32_t iot_cli_upgrade_prepare(iot_cli_upgrade_completed_handler handler, | ||
|  |     uint32_t file_size, uint8_t **data, uint8_t *file_hdr, uint16_t block_size, | ||
|  |     uint8_t upgrade_type); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cli_upgrade_start - app trigger cli upgrade start | ||
|  |  * @param upgrade_type: upgrade style see - IOT_PLC_UPGRADE_XXX | ||
|  |  * @param control_flag: cco controllable upgrade sta flag | ||
|  |  * @retval: 0 - success, others - error number. | ||
|  |  */ | ||
|  | uint8_t iot_cli_upgrade_start(uint8_t upgrade_type, uint8_t control_flag); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cli_upgrade_stop - app trigger cli upgrade stop, this state | ||
|  |  *        and will remain for 600ms. | ||
|  |  */ | ||
|  | void iot_cli_upgrade_stop(); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cli_upgrade_set_dst_list - app set destination node list to cli. | ||
|  |  * @param data: destination node list. | ||
|  |  * @param is_renew: 1 - clean upgrade list node, then add node to upgrade list. | ||
|  |  *                  0 - continue add node to upgrade list. | ||
|  |  * @retval: 0 - success, others - fail. | ||
|  |  */ | ||
|  | uint8_t iot_cli_upgrade_set_dst_list(iot_plc_upgrade_dst_list_t *data, | ||
|  |     uint8_t is_renew); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cli_upgrade_qr_dst_status_list - query STA upgrade status | ||
|  |  * @param start_index:             start index of STA about upgrade msg | ||
|  |  * @param count                    count of the STA upgrade msg | ||
|  |  * @param ug_progress_status       STA upgrade msg | ||
|  |  */ | ||
|  | void iot_cli_upgrade_qr_dst_status_list(uint16_t start_idx, | ||
|  |     uint8_t count, iot_plc_upgrade_dst_status_list *status_list); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cli_upgrade_qr_dst_status  search upgrade status | ||
|  |  * @param query:             upgrade msg | ||
|  |  */ | ||
|  | void iot_cli_upgrade_qr_dst_status(iot_plc_upgrade_dst_status_query *query); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cli_upgrade_write - write upgrade file data. | ||
|  |  * @param offset:       upgrade file data offset. | ||
|  |  * @param buf:          upgrade data. | ||
|  |  * @param buf_len:      upgrade data length. | ||
|  |  * @retval: 0 - success, others - fail. | ||
|  |  */ | ||
|  | uint32_t iot_cli_upgrade_write(uint32_t offset, uint8_t *buf, | ||
|  |     uint16_t buf_len); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cli_upgrade_read - read upgrade file data. | ||
|  |  * @param offset:       upgrade file data offset. | ||
|  |  * @param buf:          upgrade data. | ||
|  |  * @param buf_len:      upgrade data length. | ||
|  |  * @retval: 0 - success, others - fail. | ||
|  |  */ | ||
|  | uint32_t iot_cli_upgrade_read(uint32_t offset, uint8_t *buf, | ||
|  |     uint16_t buf_len); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cli_upgrade_get_file_limit - get support upgrade file max limit. | ||
|  |  * @param local_upgrade: 1- local upgrade, 0 - other upgrade. | ||
|  |  * @param file_hdr:      local upgrade - file header data, other - NULL. | ||
|  |  * @retval: file limit value. | ||
|  |  */ | ||
|  | uint32_t iot_cli_upgrade_get_file_limit(uint8_t local_upgrade, | ||
|  |     uint8_t *file_hdr); | ||
|  | 
 | ||
|  | #if (!IOT_SMART_GRID_ENABLE)
 | ||
|  | /**
 | ||
|  |  * @brief iot_cli_upgrade_set_renew_nodelist  renew sta upgrade list, upgrade | ||
|  |  *                           sta in phase3 progress | ||
|  |  * @param dstlist:           sta mac list | ||
|  |  * @param cnt:               sta count | ||
|  |  * @retval:                  renew sta count | ||
|  |  */ | ||
|  | uint16_t iot_cli_upgrade_set_renew_nodelist(uint8_t *dstlist, uint16_t cnt); | ||
|  | 
 | ||
|  | #endif /* end !IOT_SMART_GRID_ENABLE */
 | ||
|  | 
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | } | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #endif /* IOT_CLI_UPGRADE_API_H */
 |