#define FOOLOS_MODULE_NAME "fifo" #include "fifo.h" #include "ringbuffer.h" #include "kernel.h" #include static ringbuffer fifo_ringbuffers[FIFO_MAX_RINGBUFFERS]; static ringbuffer_c=0; bool fifo_put(fifo* f,uint8_t c) { return f->put(f->data,c); } uint8_t fifo_get(fifo* f) { return f->get(f->data); } bool fifo_has(fifo* f) { return f->has(f->data); } fifo fifo_create_buffered(uint8_t size) { if (ringbuffer_c>=FIFO_MAX_RINGBUFFERS) panic(FOOLOS_MODULE_NAME,"ran out of ringbuffers for fifos"); fifo f; fifo_ringbuffers[ringbuffer_c]=ringbuffer_init(size); f.data=&fifo_ringbuffers[ringbuffer_c]; ringbuffer_c++; f.put=ringbuffer_put; f.get=ringbuffer_get; f.has=ringbuffer_has; return f; }