You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
729 B
C

#include "fifo.h"
uint8_t fifo_push(Fifo_t * fifo, uint8_t byte)
{
//if (fifo.write >= FIFO_SIZE)
// fifo.write = 0; // erhöht sicherheit
if ( ( fifo->write + 1 == fifo->read ) ||
( fifo->read == 0 && fifo->write + 1 == FIFO_SIZE ) )
return FIFO_FAIL; // voll
fifo->data[fifo->write] = byte;
fifo->write++;
if (fifo->write >= FIFO_SIZE)
fifo->write = 0;
return FIFO_SUCCESS;
}
uint8_t fifo_pop(Fifo_t * fifo, uint8_t *pByte)
{
if (fifo->read == fifo->write){
return FIFO_FAIL;
}
*pByte = fifo->data[fifo->read];
fifo->read++;
if (fifo->read >= FIFO_SIZE)
fifo->read = 0;
return FIFO_SUCCESS;
}
uint8_t fifo_peek(Fifo_t * fifo){
return fifo->data[fifo->read];
}