104 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			104 lines
		
	
	
		
			3.5 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 _VC_UPGRADE_H_
							 | 
						||
| 
								 | 
							
								#define _VC_UPGRADE_H_
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "os_types_api.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define uart baudrate for STM32 upgrade */
							 | 
						||
| 
								 | 
							
								#define VC_UPGRD_UART_BAUDRATE  460800
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define stm32 start-up model */
							 | 
						||
| 
								 | 
							
								typedef enum _vc_upgrade_reset_flag_e_ {
							 | 
						||
| 
								 | 
							
								    /* start from ROM after reset, then update the user program */
							 | 
						||
| 
								 | 
							
								    VC_UPGRD_RESET_TO_DOWNLOAD,
							 | 
						||
| 
								 | 
							
								    /* start from flash after reset, then start the user program */
							 | 
						||
| 
								 | 
							
								    VC_UPGRD_RESET_TO_POWERUP,
							 | 
						||
| 
								 | 
							
								    /* invalid value */
							 | 
						||
| 
								 | 
							
								    VC_UPGRD_RESET_MAX,
							 | 
						||
| 
								 | 
							
								} vc_upgrade_reset_flag;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief vc_upgrd_send_func - Function pointer to send upgrading data to stm32.
							 | 
						||
| 
								 | 
							
								 * @param p_buf: Pointer of a buffer holding sending data.
							 | 
						||
| 
								 | 
							
								 * @param len: Length of buffer.
							 | 
						||
| 
								 | 
							
								 * @return ERR_FAIL -- Operation failed.
							 | 
						||
| 
								 | 
							
								 * @return ERR_OK -- Operation Successful.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								typedef uint32_t (*vc_upgrd_send_func)(uint8_t *p_buf, uint32_t len);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief vc_upgrd_receive_func - receiving function registered to VC
							 | 
						||
| 
								 | 
							
								 * @param p_buf: Pointer of a buffer received data.
							 | 
						||
| 
								 | 
							
								 * @param len: Length of buffer.
							 | 
						||
| 
								 | 
							
								 * @return ERR_FAIL -- Operation failed.
							 | 
						||
| 
								 | 
							
								 * @return ERR_OK -- Operation Successful.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint32_t vc_upgrd_receive_func(uint8_t *p_buf, uint32_t len);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief vc_upgrade_module_init - init resources required in upgrade process.
							 | 
						||
| 
								 | 
							
								 * @return ERR_OK -- init Successful.
							 | 
						||
| 
								 | 
							
								 * @return other -- see iot_errno_api.h.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint32_t vc_upgrade_module_init(void);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief vc_upgrade_modele_deinit - release resources used in the upgrade.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void vc_upgrade_modele_deinit(void);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief vc_upgrd_ext_chip_reset - reset the external chip
							 | 
						||
| 
								 | 
							
								 * and enter the specified mode.
							 | 
						||
| 
								 | 
							
								 * @param flag: the specified mode, see vc_upgrade_reset_flag.
							 | 
						||
| 
								 | 
							
								 * @return ERR_OK -- Upgrade Successful.
							 | 
						||
| 
								 | 
							
								 * @return other -- see iot_errno_api.h.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint32_t vc_upgrd_ext_chip_reset(uint8_t flag);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief vc_upgrd_start - Start upgrading slaver. Before calling this API,
							 | 
						||
| 
								 | 
							
								 * the slaver must be a state of waiting for upgrading.
							 | 
						||
| 
								 | 
							
								 * @param p_func: Pointer of a function to send upgrading data to stm32.
							 | 
						||
| 
								 | 
							
								 * @return ERR_FAIL -- Upgrade failed.
							 | 
						||
| 
								 | 
							
								 * @return ERR_OK -- Upgrade Successful.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint32_t vc_upgrd_set_start(vc_upgrd_send_func p_func);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief vc_upgrd_stop - Stop the current upgrading of stm32.
							 | 
						||
| 
								 | 
							
								 * @return ERR_FAIL -- Stop failed.
							 | 
						||
| 
								 | 
							
								 * @return ERR_OK -- Stop Successful.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint32_t vc_upgrd_set_stop(void);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief vc_upgrd_get_state - Get the state of upgrade module.
							 | 
						||
| 
								 | 
							
								 * @return State.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								vc_upgrd_state_e vc_upgrd_get_state(void);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief vc_upgrd_get_percentage - Get the percentage of sending firmware.
							 | 
						||
| 
								 | 
							
								 * @return Percentage. e.g. 80 -> 80%.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint32_t vc_upgrd_get_percentage(void);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								uint32_t vc_upgrd_get_firmware_info(vc_fw_ver_t *p_fw);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* _VC_UPGRADE_H_ */
							 |