90 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.7 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_CRYPTO_SHARE_H_
 | |
| #define _IOT_CRYPTO_SHARE_H_
 | |
| 
 | |
| /* os shim includes */
 | |
| #include "os_types.h"
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| typedef struct _iot_crypto_share_fifo {
 | |
|     /* fifo size */
 | |
|     uint16_t size;
 | |
|     /* write index */
 | |
|     uint8_t wr_idx;
 | |
|     /* read index */
 | |
|     uint8_t rd_idx;
 | |
|     /* fifo crypto data buffer list */
 | |
|     uint8_t **buf;
 | |
| } iot_crypto_share_fifo_t;
 | |
| 
 | |
| typedef struct _iot_crypto_share {
 | |
|     /* crypto current data buffer */
 | |
|     uint8_t *cur_buf;
 | |
|     /* crypto share request fifo */
 | |
|     iot_crypto_share_fifo_t req;
 | |
|     /* crypto share response fifo */
 | |
|     iot_crypto_share_fifo_t rsp;
 | |
| } iot_crypto_share_t;
 | |
| 
 | |
| #define iot_crypto_share_is_enable(p_share)      ((p_share) != NULL)
 | |
| 
 | |
| /**
 | |
|  * @brief                   get the number of elements in the fifo
 | |
|  * @param fifo:             fifo address
 | |
|  *
 | |
|  * @retval:                 the number of elements in the fifo
 | |
|  */
 | |
| uint8_t iot_crypto_share_fifo_elements(iot_crypto_share_fifo_t *fifo);
 | |
| 
 | |
| /**
 | |
|  * @brief                   write a buffer into the fifo
 | |
|  * @param fifo:             fifo address
 | |
|  * @param buf:              buffer address
 | |
|  *
 | |
|  * @retval:                 error code, see ERR_XXX
 | |
|  */
 | |
| uint32_t iot_crypto_share_fifo_put(iot_crypto_share_fifo_t *fifo,
 | |
|     uint8_t *buf);
 | |
| 
 | |
| /**
 | |
|  * @brief                   read buffer from the fifo
 | |
|  * @param fifo:             fifo address
 | |
|  *
 | |
|  * @retval:                 buffer address
 | |
|  */
 | |
| uint8_t *iot_crypto_share_fifo_get(iot_crypto_share_fifo_t *fifo);
 | |
| 
 | |
| /**
 | |
|  * @brief                   init crypto share fifo context
 | |
|  * @param fifo:             fifo address
 | |
|  * @param size:             fifo list buffer size
 | |
|  * @param buf_list:         fifo list buffer
 | |
|  *
 | |
|  * @retval:                 buffer address
 | |
|  */
 | |
| void iot_crypto_share_fifo_init(iot_crypto_share_fifo_t *fifo, uint8_t size,
 | |
|     uint8_t **buf_list);
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif // _IOT_CRYPTO_SHARE_H_
 |