#ifndef FIFO_H #define FIFO_H // --------------------------------------------------------- // Constants // --------------------------------------------------------- #define FIFO_BLOCK 1 #define FIFO_NONBLOCK 0 // --------------------------------------------------------- // Types // --------------------------------------------------------- typedef struct _sfifo_t { uint32_t size; uint8_t *pBuf; uint8_t * volatile pPtr_wr, * volatile pPtr_rd; } fifo_t; // --------------------------------------------------------- // Functions // --------------------------------------------------------- uint32_t fifo_alloc(fifo_t *pObj, uint32_t size); uint32_t fifo_free(fifo_t *pObj); uint32_t fifo_flush(fifo_t *pObj); uint32_t fifo_is_full(fifo_t *pObj); uint32_t fifo_is_empty(fifo_t *pObj); uint32_t fifo_read(fifo_t *pObj, uint8_t *pData, uint32_t size, uint32_t timeout, uint32_t do_block); uint32_t fifo_write(fifo_t *pObj, uint8_t *pData, uint32_t size, uint32_t timeout, uint32_t do_block); #endif // FIFO_H