| | |
| | | fifo->rd = 0; |
| | | } |
| | | |
| | | bool_t fifo_push(fifo_t * fifo, int16_t value) { |
| | | bool_t fifo_add(fifo_t * fifo, int16_t value) { |
| | | /* FIFO full? */ |
| | | if (fifo->wr == ((fifo->rd + fifo->size) % (fifo->size + 1))) { |
| | | return FALSE; |
| | | fifo_remove(fifo, NULL); |
| | | } |
| | | |
| | | fifo->data[fifo->wr] = value; |
| | |
| | | return TRUE; |
| | | } |
| | | |
| | | bool_t fifo_pop(fifo_t * fifo, int16_t * value) { |
| | | bool_t fifo_remove(fifo_t * fifo, int16_t * value) { |
| | | /* FIFO empty? */ |
| | | if (fifo->wr == fifo->rd) { |
| | | return FALSE; |
| | | } |
| | | |
| | | *value = fifo->data[fifo->rd]; |
| | | if(value) { |
| | | *value = fifo->data[fifo->rd]; |
| | | } |
| | | |
| | | fifo->rd = (fifo->rd + 1) % (fifo->size + 1); |
| | | |