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;
}