/* * FIFO_COM.c * * Created on: 14 mai 2019 * Author: e_rcluze */ #include "FIFO_COM.h" void initFIFO(FIFO_COM *f){ f->pt_read = 0; f->pt_write = 0; } uint8_t readFirst(FIFO_COM *f) { return f->Fifo[f->pt_read]; } void readFifo(FIFO_COM *f, uint8_t *r, uint8_t nb) { for (uint8_t i = 0; i < nb;i++) { if (f->pt_read + i >= NBFIFO) r[i] = f->Fifo[f->pt_read + i - NBFIFO]; else r[i] = f->Fifo[f->pt_read + i]; } if (f->pt_read + nb >= NBFIFO) f->pt_read = f->pt_read + nb - NBFIFO; else f->pt_read = f->pt_read + nb; } void writeFifo(FIFO_COM *f, uint8_t *r, uint8_t nb) { uint8_t i; for (i = 0; i < nb;i++) { if (f->pt_write + i >= NBFIFO) f->Fifo[f->pt_write + i - NBFIFO] = r[i]; else f->Fifo[f->pt_write + i] = r[i]; } if (f->pt_write + nb >= NBFIFO) f->pt_write = f->pt_write + nb - NBFIFO; else f->pt_write = f->pt_write + nb; } uint8_t FIFO_nbRead(FIFO_COM *f) { if (f->pt_read <= f->pt_write) return f->pt_write - f->pt_read; else return f->pt_write + NBFIFO - f->pt_read; }