Programa mbed1 excelencia
Dependencies: mbed
RingBuffer/Buffering.cpp
- Committer:
- JuanManuelAmador
- Date:
- 2017-01-18
- Revision:
- 0:a5908bca4740
File content as of revision 0:a5908bca4740:
#include "Buffering.h" Buffering::Buffering() { for(int i = 0; i < BUFFERSIZEBIG; i++){ data[i] = 0; } windex = 0; rindex = 0; full = false; empty = true; bufSize = BUFFERSIZEBIG; } void Buffering::put(unsigned char val) { if(!full) { data[windex] = val; windex++; empty = false; if(windex >= bufSize) { windex = 0; } if(getDif() >= bufSize - 1){ full = true; } /*if(windex >= rindex) { full = true; }*/ } } unsigned char Buffering::get() { unsigned char temp = 0; if(!empty) { temp = data[rindex]; data[rindex] = 0; full = false; rindex++; if(rindex >= bufSize) { rindex = 0; } if(getDif() == 0){ empty = true; } /*if(rindex >= windex) { empty = true; }*/ } return temp; } bool Buffering::isFull() { return full; } bool Buffering::isEmpty() { return empty; } int Buffering::getSize() { return bufSize; } unsigned int Buffering::getWritingIndex() { return windex; } unsigned int Buffering::getReadingIndex() { return rindex; } unsigned int Buffering::getDif() { unsigned int dif = 0; if((int)(windex-rindex)>=0) { dif = windex-rindex; } else { dif = bufSize+windex-rindex; } return dif; }