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_PIB_API_H
							 | 
						||
| 
								 | 
							
								#define IOT_PIB_API_H
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* os shim includes */
							 | 
						||
| 
								 | 
							
								#include "os_types_api.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* common includes */
							 | 
						||
| 
								 | 
							
								#include "iot_module_api.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								extern "C" {
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* pack for the structures in the whole file */
							 | 
						||
| 
								 | 
							
								#pragma pack(push)  // save the pack status
							 | 
						||
| 
								 | 
							
								#pragma pack(1)     // 1 byte align
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define CCO_PIB_TYPE                    (0)
							 | 
						||
| 
								 | 
							
								#define STA_PIB_TYPE                    (1)
							 | 
						||
| 
								 | 
							
								#define MAX_PIB_TYPE                    STA_PIB_TYPE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define iot_pib_type_t                  uint8_t
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define IOT_PIB_CCO_APP_READ_SECTION_SIZE   (32)
							 | 
						||
| 
								 | 
							
								#define IOT_PIB_STA_APP_READ_SECTION_SIZE   (32)
							 | 
						||
| 
								 | 
							
								#define IOT_PIB_BOARD_SECTION_SIZE          (128)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if RUN_IN_PSRAM
							 | 
						||
| 
								 | 
							
								#define IOT_PIB_CCO_APP_WRITE_SECTION_SIZE  (7416 + 8192 + 4132)
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								#define IOT_PIB_CCO_APP_WRITE_SECTION_SIZE  (1272)
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#define IOT_PIB_STA_APP_WRITE_SECTION_SIZE  (312 + 512)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* get section in read only memory */
							 | 
						||
| 
								 | 
							
								#define IOT_PIB_APP_GET_READ_SECTION        (0)
							 | 
						||
| 
								 | 
							
								/* get section in writable memory */
							 | 
						||
| 
								 | 
							
								#define IOT_PIB_APP_GET_WRITE_SECTION       (1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* commit request received */
							 | 
						||
| 
								 | 
							
								#define IOT_PIB_APP_STATUS_COMMIT_REC       1
							 | 
						||
| 
								 | 
							
								/* commit request done */
							 | 
						||
| 
								 | 
							
								#define IOT_PIB_APP_STATUS_COMMIT_DONE      2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* 16 bits, should +1 when pib written part format not compatible */
							 | 
						||
| 
								 | 
							
								#define IOT_PIB_VERSION_MAJOR (11)
							 | 
						||
| 
								 | 
							
								/* 16 bits, should +1 when pib written part format change and compatible */
							 | 
						||
| 
								 | 
							
								#define IOT_PIB_VERSION_MINOR (8)
							 | 
						||
| 
								 | 
							
								/* numerically encoded version */
							 | 
						||
| 
								 | 
							
								#define IOT_PIB_VERSION_HEX                 ((IOT_PIB_VERSION_MAJOR << 16) |  \
							 | 
						||
| 
								 | 
							
								                                             (IOT_PIB_VERSION_MINOR))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** \defgroup PIB_APIs PIB APIs
							 | 
						||
| 
								 | 
							
								  * @brief WQ30x1 Product Information Block
							 | 
						||
| 
								 | 
							
								  *
							 | 
						||
| 
								 | 
							
								  * System configuration parameters save in chip flash
							 | 
						||
| 
								 | 
							
								  *
							 | 
						||
| 
								 | 
							
								  */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** @addtogroup PIB_APIs
							 | 
						||
| 
								 | 
							
								  * @{
							 | 
						||
| 
								 | 
							
								  */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief  iot_pib_get_app_section() - function used to get app section address.
							 | 
						||
| 
								 | 
							
								 * @param  psection:  return pointer to app section start address.
							 | 
						||
| 
								 | 
							
								 * @param  pibtype:   return pib type.
							 | 
						||
| 
								 | 
							
								 * @param  rw:        get section in read only memory or writable memory,
							 | 
						||
| 
								 | 
							
								 *                    see IOT_PIB_APP_GET_XXX_SECTION.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @return            0          -   success.
							 | 
						||
| 
								 | 
							
								 * @return            otherwise  -   error code.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint32_t iot_pib_get_app_section(uint8_t **psection, iot_pib_type_t *pibtype,
							 | 
						||
| 
								 | 
							
								    uint8_t rw);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief  iot_pib_acquire_app_commit_ref() - function to hold pib commit
							 | 
						||
| 
								 | 
							
								 *                         execute until free commit reference. app should call
							 | 
						||
| 
								 | 
							
								 *                         this function before pib modification.
							 | 
						||
| 
								 | 
							
								 * @param  cur_refcount:   current app pib reference counter, unless
							 | 
						||
| 
								 | 
							
								 *                         this value is 0, commit won't take effect.
							 | 
						||
| 
								 | 
							
								 * @return                 0           -   success.
							 | 
						||
| 
								 | 
							
								 * @return                 otherwise   -   error.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint32_t iot_pib_acquire_app_commit_ref(uint8_t *cur_refcount);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief iot_pib_release_app_commit_ref() - function to release pib commit
							 | 
						||
| 
								 | 
							
								 *                       referecne count. app should call this function after
							 | 
						||
| 
								 | 
							
								 *                       pib modification.
							 | 
						||
| 
								 | 
							
								 * @param cur_refcount:  current app pib reference counter, unless this
							 | 
						||
| 
								 | 
							
								 *                       value is 0, commit won't take effect.
							 | 
						||
| 
								 | 
							
								 * @return               0           -   success.
							 | 
						||
| 
								 | 
							
								 * @return               otherwise   -   error.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint32_t iot_pib_release_app_commit_ref(uint8_t *cur_refcount);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief  iot_pib_app_commit() - function used by app to trigger write pib
							 | 
						||
| 
								 | 
							
								 *                         to flash.
							 | 
						||
| 
								 | 
							
								 * @param  commit_ticket:  pib assigned commit request id. can be used in
							 | 
						||
| 
								 | 
							
								 *                         commit callback function to adjust whether
							 | 
						||
| 
								 | 
							
								 *                         request done.
							 | 
						||
| 
								 | 
							
								 * @return                 0           -   success.
							 | 
						||
| 
								 | 
							
								 * @return                 otherwise   -   error.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint32_t iot_pib_app_commit(uint16_t* commit_ticket);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief  iot_pib_app_report_commit_status_func_t() - function callback for
							 | 
						||
| 
								 | 
							
								 *         app to receive pib commit status.
							 | 
						||
| 
								 | 
							
								 * @param status:   pib commit status. see IOT_PIB_APP_STATUS_COMMIT_XXX.
							 | 
						||
| 
								 | 
							
								 * @param commit_ticket:    commit ticket number which already done saving
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								typedef void(*iot_pib_app_report_commit_status_func_t)(uint8_t status,
							 | 
						||
| 
								 | 
							
								    uint16_t commit_ticket);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief   iot_pib_register_commit_cb() - register pib commit status callback
							 | 
						||
| 
								 | 
							
								 *               function.
							 | 
						||
| 
								 | 
							
								 * @param   cb:  callback function provide by app to receive pib commit status.
							 | 
						||
| 
								 | 
							
								 * @return       0             - success.
							 | 
						||
| 
								 | 
							
								 * @return       otherwise     - error.
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								uint32_t iot_pib_register_app_commit_cb(
							 | 
						||
| 
								 | 
							
								    iot_pib_app_report_commit_status_func_t cb);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief   iot_pib_app_get_crc_status(uint8_t *r_crc, uint8_t* w_crc) - get
							 | 
						||
| 
								 | 
							
								 *                      read/write section crc status. caller module
							 | 
						||
| 
								 | 
							
								 *                      should not use cfg data if crc is wrong
							 | 
						||
| 
								 | 
							
								 * @param  r_crc:       0 -crc wrong. 1 - crc valid
							 | 
						||
| 
								 | 
							
								 * @param  w_crc:       0 -crc wrong. 1 - crc valid
							 | 
						||
| 
								 | 
							
								 * @return              0         - success.
							 | 
						||
| 
								 | 
							
								 * @return              otherwise - fail.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void iot_pib_app_get_crc_status(uint8_t* r_crc, uint8_t* w_crc);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief   iot_pib_upgrade_app_cfg(void) - upgrade app cfg pib section
							 | 
						||
| 
								 | 
							
								 * @param               No params
							 | 
						||
| 
								 | 
							
								 * @return              0         - success.
							 | 
						||
| 
								 | 
							
								 * @return              otherwise - fail.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint32_t iot_pib_upgrade_app_cfg(void);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief   iot_pib_app_upgrade_flag(void) - get upgrade flag
							 | 
						||
| 
								 | 
							
								 * @param               No params
							 | 
						||
| 
								 | 
							
								 * @return              true/false
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								bool_t iot_pib_app_upgrade_flag(void);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								  * @}
							 | 
						||
| 
								 | 
							
								  */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#pragma pack(pop)   // restore the pack status
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* IOT_PIB_API_H */
							 |