sistemaMicrontrolador3

Dependencies:   mbed

RingBuffer/Bufferinguint.cpp

Committer:
JuanManuelAmador
Date:
2016-12-19
Revision:
0:390287d3dcb6

File content as of revision 0:390287d3dcb6:

#include "Bufferinguint.h"
 
Bufferinguint::Bufferinguint()
{
    for(int i = 0; i < BUFFERSIZE; i++){
        data[i] = 0;
    }
    windex = 0;
    rindex = 0;
    full = false;
    empty = true;
    bufSize = BUFFERSIZE;
}
 
void Bufferinguint::put(unsigned int 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 int Bufferinguint::get()
{  
    unsigned int 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 Bufferinguint::isFull()
{
    return full;
}
 
bool Bufferinguint::isEmpty()
{
    return empty;
}
 
int Bufferinguint::getSize()
{
    return bufSize;
}
 
unsigned int Bufferinguint::getWritingIndex()
{
    return windex;
}

unsigned int Bufferinguint::getReadingIndex()
{
    return rindex;
}   

unsigned int Bufferinguint::getDif()
{
        unsigned int dif = 0;
        if((int)(windex-rindex)>=0) { dif = windex-rindex; }
        else { dif = bufSize+windex-rindex; }   
        return dif;
}