teste de publish
Dependencies: DS1820 HighSpeedAnalogIn devices mbed
Diff: CircularBuffer.cpp
- Revision:
- 0:1c0a769988ee
- Child:
- 2:55b7b466e742
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CircularBuffer.cpp Fri Mar 24 15:54:41 2017 +0000 @@ -0,0 +1,66 @@ +#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; +}