33 lines
1.0 KiB
C
33 lines
1.0 KiB
C
#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
|