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 */
 |