Files
kunlun/driver/extern/virtualchannel/inc/vc_upgrade.h
2024-09-28 14:24:04 +08:00

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