Programa mbed1 excelencia
Dependencies: mbed
RingBuffer/BufferBig.cpp
- Committer:
- JuanManuelAmador
- Date:
- 2017-01-18
- Revision:
- 0:a5908bca4740
File content as of revision 0:a5908bca4740:
#include "BufferBig.h" BufferBig::BufferBig() { for(int i = 0; i < BUFFERSIZE; i++){ data[i] = 0; } windex = 0; rindex = 0; full = false; empty = true; bufSize = BUFFERSIZE; } void BufferBig::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 BufferBig::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 BufferBig::isFull() { return full; } bool BufferBig::isEmpty() { return empty; } int BufferBig::getSize() { return bufSize; } unsigned int BufferBig::getWritingIndex() { return windex; } unsigned int BufferBig::getReadingIndex() { return rindex; } unsigned int BufferBig::getDif() { unsigned int dif = 0; if((int)(windex-rindex)>=0) { dif = windex-rindex; } else { dif = bufSize+windex-rindex; } return dif; }