teste de publish

Dependencies:   DS1820 HighSpeedAnalogIn devices mbed

CircularBuffer.cpp

Committer:
brunofgc
Date:
2017-03-24
Revision:
0:1c0a769988ee
Child:
2:55b7b466e742

File content as of revision 0:1c0a769988ee:

#include "CircularBuffer.h"
CircularBuffer::CircularBuffer(uint16_t tamanho) {
  tam = tamanho+1;
  bufIn = (char*) malloc(sizeof(char)*(tam)); //Cuidado extremo com uso de malloc!!!  
  //printf("Alocados %lu caracteres para bufIn dentro do construtor CircularBuffer.\r\n",tam+1);
  index = 0;
  estouro = 0;
}

void CircularBuffer::del(){
    uint16_t i;
    this->index = 0;
    this->estouro = 0;
    for(i=0;i<tam;i++){
        this->bufIn[i]=0;
    }
}

void CircularBuffer::putc(char entrada){
 //uint16_t i;
 bufIn[index] = entrada;       
 index++;
 if(index>(tam-2)){
  index=0;
  estouro=true;
 }
}

char* CircularBuffer::get(){
     uint16_t nOperacoes;
     uint16_t i;
     //unsigned int x;     
     char aux;
     
     if(estouro){         
         for(nOperacoes=0;nOperacoes<index;nOperacoes++){      
          aux=bufIn[0];     
          for(i=0;i<tam;i++){
           bufIn[i]=bufIn[i+1];
          }                       
          bufIn[tam-2]=aux;      
         }              
         bufIn[tam-1]=0;         
         estouro=false;     
     }else{
       bufIn[index]=0;
      }     
     index = 0;
     return bufIn;
}

uint16_t CircularBuffer::getLength(){
    return index;    
}

char* CircularBuffer::getRowBuffer(){
    return bufIn;    
}

uint16_t CircularBuffer::fill(char *buf,uint16_t cont){
    uint16_t i;
    for(i=0;i<cont;i++){
        this->putc(buf[i]);   
    }
    return index;
}