1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #include "fifo.h"
- static uint16_t FifoNext( tFifo *fifo, uint16_t index )
- {
- return ( index + 1 ) % fifo->Size;
- }
- void FifoInit( tFifo *fifo, uint16_t *buffer, uint16_t size )
- { fifo->Begin = 0;
- fifo->End = 0;
- fifo->Data = buffer;
- fifo->Size = size;
- }
- void FifoPush( tFifo *fifo, uint16_t data )
- {
- fifo->End = FifoNext( fifo, fifo->End );
- fifo->Data[fifo->End] = data;
- }
- uint16_t FifoPop( tFifo *fifo )
- {
- uint16_t data = fifo->Data[FifoNext( fifo, fifo->Begin )];
- fifo->Begin = FifoNext( fifo, fifo->Begin );
- return data;
- }
- void FifoFlush( tFifo *fifo )
- {
- fifo->Begin = 0;
- fifo->End = 0;
- }
- bool IsFifoEmpty( tFifo *fifo )
- {
- return ( fifo->Begin == fifo->End );
- }
- bool IsFifoFull( tFifo *fifo )
- {
- return ( FifoNext( fifo, fifo->End ) == fifo->Begin );
- }
|