teste de publish
Dependencies: DS1820 HighSpeedAnalogIn devices mbed
CircularBuffer.cpp
- Committer:
- brunofgc
- Date:
- 2018-06-08
- Revision:
- 38:07d3907b74e5
- Parent:
- 37:0e95c85f0160
File content as of revision 38:07d3907b74e5:
#include "CircularBuffer.h" CircularBuffer::CircularBuffer(uint16_t tamanho,bool circular) { this->circular = circular; 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)){ if(this->circular){ this->index=0; this->estouro=true; }else{this->index--;} } } 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; }