#ifndef RING_FIFO_H #define RING_FIFO_H #include #include typedef void (*lock_fun)(void); typedef struct { uint8_t *buf; uint32_t buf_size; uint32_t occupy_size; uint8_t *pwrite; uint8_t *pread; void (*lock)(void); void (*unlock)(void); }_fifo_t; void fifo_register(_fifo_t *pfifo, uint8_t *pfifo_buf, uint32_t size, lock_fun lock, lock_fun unlock); void fifo_release(_fifo_t *pfifo); uint32_t fifo_write(_fifo_t *pfifo, const uint8_t *pbuf, uint32_t size); uint32_t fifo_read(_fifo_t *pfifo, uint8_t *pbuf, uint32_t size); uint32_t fifo_get_total_size(_fifo_t *pfifo); uint32_t fifo_get_free_size(_fifo_t *pfifo); uint32_t fifo_get_occupy_size(_fifo_t *pfifo); #endif