teste de publish
Dependencies: DS1820 HighSpeedAnalogIn devices mbed
CircularBuffer.cpp
00001 #include "CircularBuffer.h" 00002 CircularBuffer::CircularBuffer(uint16_t tamanho,bool circular) { 00003 this->circular = circular; 00004 this->tam = tamanho+1; 00005 this->bufIn = (char*) malloc(sizeof(char)*(this->tam)); //Cuidado extremo com uso de malloc!!! 00006 //printf("Alocados %lu caracteres para bufIn dentro do construtor CircularBuffer.\r\n",tam+1); 00007 this->index = 0; 00008 this->estouro = 0; 00009 } 00010 00011 void CircularBuffer::del(){ 00012 uint16_t i; 00013 this->index = 0; 00014 this->estouro = 0; 00015 for(i=0;i<this->tam;i++){ 00016 this->bufIn[i]=0; 00017 } 00018 } 00019 00020 void CircularBuffer::putc(char entrada){ 00021 //uint16_t i; 00022 this->bufIn[index] = entrada; 00023 this->index++; 00024 if(this->index>(this->tam-2)){ 00025 if(this->circular){ 00026 this->index=0; 00027 this->estouro=true; 00028 }else{this->index--;} 00029 } 00030 } 00031 00032 char* CircularBuffer::get(){ 00033 uint16_t nOperacoes; 00034 uint16_t i; 00035 //unsigned int x; 00036 char aux; 00037 00038 if(this->estouro){ 00039 for(nOperacoes=0;nOperacoes<index;nOperacoes++){ 00040 aux=this->bufIn[0]; 00041 for(i=0;i<this->tam;i++){ 00042 this->bufIn[i]=this->bufIn[i+1]; 00043 } 00044 this->bufIn[this->tam-2]=aux; 00045 } 00046 this->bufIn[this->tam-1]=0; 00047 this->estouro=false; 00048 }else{ 00049 this->bufIn[this->index]=0; 00050 } 00051 this->index = 0; 00052 return this->bufIn; 00053 } 00054 00055 uint16_t CircularBuffer::getLength(){ 00056 return this->index; 00057 } 00058 00059 char* CircularBuffer::getRowBuffer(){ 00060 return this->bufIn; 00061 } 00062 00063 uint16_t CircularBuffer::fill(char *buf,uint16_t cont){ 00064 uint16_t i; 00065 for(i=0;i<cont;i++){ 00066 this->putc(buf[i]); 00067 } 00068 return index; 00069 }
Generated on Wed Jul 13 2022 12:46:24 by 1.7.2