144 lines
4.6 KiB
C
144 lines
4.6 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_BSRM_UPGRADE_H
|
|
#define IOT_BSRM_UPGRADE_H
|
|
|
|
#if IOT_BSRM_MODE
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* bsrm upgrade state */
|
|
#define IOT_BSRM_UPGRADE_ST_INVALID 0
|
|
#define IOT_BSRM_UPGRADE_ST_IDLE 1
|
|
#define IOT_BSRM_UPGRADE_ST_RECEIVE 2
|
|
#define IOT_BSRM_UPGRADE_ST_RECV_DONE 3
|
|
#define IOT_BSRM_UPGRADE_ST_EXECUTE 4
|
|
|
|
/* bsrm upgrade file max bitmap size */
|
|
#define IOT_BSRM_BM_SIZE (1024)
|
|
/* bsrm upgrade file max size */
|
|
#define IOT_BSRM_MAX_SIZE (512 * 1024)
|
|
|
|
/* opo device upgrade descriptor */
|
|
typedef struct _iot_bsrm_upgrade {
|
|
/* current running part */
|
|
uint32_t current_part;
|
|
/* index bitmap for bsrm receive block. */
|
|
uint8_t block_bitmap[IOT_BSRM_BM_SIZE];
|
|
/* upgrade status */
|
|
uint8_t state;
|
|
/* upgrade id */
|
|
uint32_t upgrade_id;
|
|
/* total block cnt */
|
|
uint32_t total_block_cnt;
|
|
/* block size */
|
|
uint32_t block_size;
|
|
/* upgrade file crc value */
|
|
uint32_t crc;
|
|
/* skip upgrade flag */
|
|
uint8_t skip;
|
|
/* received data size */
|
|
uint32_t received_size;
|
|
/* total received block */
|
|
uint32_t rec_block_cnt;
|
|
/* window time of upgrade - unit: s */
|
|
uint32_t window_tm;
|
|
} iot_bsrm_upgrade_t;
|
|
|
|
typedef struct _iot_bsrm_upgrade_info {
|
|
/* bsrm upgrade status see - IOT_BSRM_UPGRADE_ST_XXX */
|
|
uint32_t state;
|
|
/* total block count of the upgrading file */
|
|
uint32_t block_cnt;
|
|
/* upgrade file crc value. */
|
|
uint32_t crc;
|
|
/* received block count */
|
|
uint32_t recv_cnt;
|
|
} iot_bsrm_upgrade_info_t;
|
|
|
|
/**
|
|
* @brief: init bsrm device upgrade.
|
|
* @retval: init upgrade result, ERR_OK - init successful, others - fail.
|
|
*/
|
|
uint32_t iot_bsrm_upgrade_init();
|
|
|
|
/**
|
|
* @brief: deinit bsrm device upgrade.
|
|
* @param bsrm_upgrade_handle: bsrm upgrade handle.
|
|
*/
|
|
void iot_bsrm_upgrade_deinit();
|
|
|
|
/**
|
|
* @brief: start bsrm device upgrade.
|
|
* @param total_block_cnt: upgrade file total block count.
|
|
* @param block_size: block size.
|
|
* @retval: ERR_OK - successful, others - fail.
|
|
*/
|
|
uint32_t iot_bsrm_upgrade_start(uint32_t total_block_cnt, uint32_t block_size);
|
|
|
|
/**
|
|
* @brief: handle upgrade data.
|
|
* @param block_index: current upgrade data block index.
|
|
* @param block_len: current upgrade data block length.
|
|
* @param data: current upgrade data ptr.
|
|
* @retval: ERR_OK - successful handle upgrade data, others - fail.
|
|
*/
|
|
uint32_t iot_bsrm_upgrade_data(uint32_t block_index, uint32_t block_len,
|
|
uint8_t *data);
|
|
|
|
/**
|
|
* @brief: stop upgrade.
|
|
* @retval: ERR_OK - successful handle upgrade data, others - fail.
|
|
*/
|
|
uint32_t iot_bsrm_upgrade_stop();
|
|
|
|
/**
|
|
* @brief: exe upgrade, commit data, reset module.
|
|
* @retval: ERR_OK - successful handle upgrade data, others - fail.
|
|
*/
|
|
uint32_t iot_bsrm_upgrade_exe();
|
|
|
|
/**
|
|
* @brief: psrm upgrade windows, stop upgrade when upgrade timeout.
|
|
*/
|
|
void iot_bsrm_upgrade_windows();
|
|
|
|
/**
|
|
* @brief: query bsrm upgrade info.
|
|
* @retval: ERR_OK - successful, others - fail.
|
|
*/
|
|
uint32_t iot_bsrm_query_upgrade_info(iot_bsrm_upgrade_info_t *query_info);
|
|
|
|
/**
|
|
* @brief: get the upgrade file segment bitmap info,
|
|
* invalid bitmap data set 0.
|
|
* @param bitmap: dec bitmap address.
|
|
* @param start_index: file segment bitmap offset address, start offset is 0.
|
|
* @param size: size of the dec bitmap.
|
|
* @return: valid dec bitmap size.
|
|
*/
|
|
uint32_t iot_bsrm_upgrade_query_bitmap_info(uint8_t *bitmap,
|
|
uint32_t start_index, uint32_t size);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* IOT_BSRM_MODE */
|
|
|
|
#endif /* IOT_BSRM_UPGRADE_H */
|