14#define FIFO_GET_ELEMENT_PTR(f, i) ((void *)(f->data + (f->esize * i)))
15#define FIFO_ADVANCE_INDEX(f, k) ((k) >= ((f)->len - 1)) ? 0 : ((k) + 1)
30 memcpy(dst, item, f->
esize);
61 memcpy(item, src, f->
esize);
bool fifo_pop(Fifo *f, void *item)
#define FIFO_GET_ELEMENT_PTR(f, i)
#define FIFO_ADVANCE_INDEX(f, k)
uint32_t fifo_get_level(const Fifo *f)
bool fifo_push(Fifo *f, void const *item)
void fifo_init(Fifo *f, uint32_t len, uint32_t esize, uint8_t *data, FifoLockFn lockFn)
void() FifoLockFn(bool lock)
FIFO lock function.
uint32_t read
Next item to read.
FifoLockFn * lockFn
Locking function.
uint32_t level
FIFO utilization level.
uint32_t esize
Element size.
uint32_t len
Number of slots.
uint8_t * data
Pointer to the data pool.
uint32_t write
Next item to write.