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