1 /* USER CODE BEGIN Header */ 2 /** 3 ****************************************************************************** 4 * @file fifo.h 5 * @author VMA RF Application Team 6 * @version V1.0.0 7 * @date July-2015 8 * @brief 9 ****************************************************************************** 10 * @attention 11 * 12 * Copyright (c) 2024 STMicroelectronics. 13 * All rights reserved. 14 * 15 * This software is licensed under terms that can be found in the LICENSE file 16 * in the root directory of this software component. 17 * If no LICENSE file comes with this software, it is provided AS-IS. 18 * 19 ****************************************************************************** 20 */ 21 /* USER CODE END Header */ 22 23 #include <stdint.h> 24 #ifndef __FIFO_H__ 25 #define __FIFO_H__ 26 27 typedef struct circular_fifo_s { 28 uint16_t tail; 29 uint16_t head; 30 uint16_t max_size; 31 uint8_t *buffer; 32 uint8_t alignment; 33 } circular_fifo_t; 34 35 void fifo_init(circular_fifo_t *fifo, uint16_t max_size, uint8_t *buffer, uint8_t alignment); 36 uint16_t fifo_size(circular_fifo_t *fifo); 37 uint8_t fifo_put(circular_fifo_t *fifo, uint16_t size, const uint8_t *buffer); 38 uint8_t fifo_put_var_len_item(circular_fifo_t *fifo, uint16_t size1, const uint8_t *buffer1, uint16_t size2, const uint8_t *buffer2); 39 uint8_t fifo_get(circular_fifo_t *fifo, uint16_t size, uint8_t *buffer); 40 uint8_t fifo_discard(circular_fifo_t *fifo, uint16_t size); 41 uint8_t fifo_get_ptr(circular_fifo_t *fifo, uint16_t size, uint8_t **ptr); 42 uint8_t fifo_get_var_len_item(circular_fifo_t *fifo, uint16_t *size, uint8_t *buffer); 43 uint8_t fifo_get_ptr_var_len_item(circular_fifo_t *fifo, uint16_t *size, uint8_t **ptr); 44 uint8_t fifo_discard_var_len_item(circular_fifo_t *fifo); 45 void fifo_flush(circular_fifo_t *fifo); 46 void fifo_roll_back(circular_fifo_t *fifo, uint16_t size); 47 #endif /* __FIFO_H__ */ 48