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