Lines Matching refs:fifo
43 inline void DataFifoInit(struct DataFifo *fifo, uint32_t size, void *data)
45 fifo->rdIdx = 0;
46 fifo->wrIdx = 0;
47 fifo->size = size;
48 fifo->data = data;
51 inline bool DataFifoIsInitialized(struct DataFifo * const fifo)
53 return fifo->size != 0;
56 inline void DataFifoReset(struct DataFifo * const fifo)
58 fifo->rdIdx = fifo->wrIdx = 0;
61 inline uint32_t DataFifoLen(struct DataFifo * const fifo)
63 return fifo->wrIdx - fifo->rdIdx;
66 inline bool DataFifoIsEmpty(struct DataFifo * const fifo)
68 return fifo->wrIdx == fifo->rdIdx;
71 inline bool DataFifoIsFull(struct DataFifo * const fifo)
73 return DataFifoLen(fifo) > (fifo->size - 1);
76 inline uint32_t DataFifoAvailSize(struct DataFifo * const fifo)
78 return fifo->size - DataFifoLen(fifo);
81 inline void DataFifoSkip(struct DataFifo * const fifo, uint32_t size)
83 fifo->rdIdx += size;
86 inline uint32_t DataFifoWrite(struct DataFifo *fifo, uint8_t *data, uint32_t size)
88 uint32_t mask = fifo->size - 1;
89 uint8_t *buf = (uint8_t *)fifo->data;
92 size = MIN(size, DataFifoAvailSize(fifo));
95 buf[fifo->wrIdx++ & mask] = *data++;
100 inline uint32_t DataFifoRead(struct DataFifo *fifo, uint8_t *data, uint32_t size)
102 uint32_t mask = fifo->size - 1;
103 uint8_t *buf = (uint8_t *)fifo->data;
106 size = MIN(size, DataFifoLen(fifo));
109 *data++ = buf[fifo->rdIdx++ & mask];