/* * fifo.c * * Created on: 25.10.2015 * Author: bernd */ #include "../util/fifo.h" void fifo_init(fifo_t * self, uint8_t* buffer, size_t size) { self->buffer = buffer; self->get = 0; self->put = 0; self->size = size; } bool fifo_put(fifo_t * self, uint8_t data) { size_t put = self->put; size_t nextput = put + 1; if (nextput == self->size) { nextput = 0; } if (nextput == self->get) { return false; } else { self->buffer[put] = data; self->put = nextput; return true; } } bool fifo_get(fifo_t * self, uint8_t* data) { size_t get = self->get; if (get == self->put) { return false; } else { *data = self->buffer[get++]; if (get == self->size) { get = 0; } self->get = get; return true; } } bool fifo_is_empty(fifo_t * self) { return (self->get == self->put); }