teste de publish

Dependencies:   DS1820 HighSpeedAnalogIn devices mbed

CircularBuffer.cpp

Committer:
brunofgc
Date:
2017-05-10
Revision:
2:55b7b466e742
Parent:
0:1c0a769988ee
Child:
37:0e95c85f0160

File content as of revision 2:55b7b466e742:

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

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

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

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

uint16_t CircularBuffer::getLength(){
    return this->index;    
}

char* CircularBuffer::getRowBuffer(){
    return this->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;
}