Ring Buffer reconciled with RTOS. If with using RTOS, this lib is enabled Mutex. Default RingBuffer size is 256 Bytes, Max size is 1024 Bytes.
Dependents: RN41 HC05 HC05 mySerial ... more
RingBuffer.cpp
- Committer:
- AkinoriHashimoto
- Date:
- 2015-10-30
- Revision:
- 0:5373472190f5
- Child:
- 1:8f2a3144902b
File content as of revision 0:5373472190f5:
#include "RingBuffer.h" RingBuffer::RingBuffer(unsigned int size) { empty= true; idxF= idxR= 0; buf= new char[size]; bufSize= size; } RingBuffer::~RingBuffer() { delete [] buf; } bool RingBuffer::set(string &str) { int size= str.size(); for(int idx= 0; idx < size; idx++) if(this->set( (char)str[idx] )) // True:FULL return true; return false; } bool RingBuffer::set(char chr) { if((idxR == idxF) && !empty) // R==F: empty or full return true; // means FULL // mutex for RTOS #ifdef RTOS_H mutex.lock(); #endif buf[idxR] = chr; idxR++; idxR %= bufSize; empty= false; #ifdef RTOS_H mutex.unlock(); #endif if(idxR == idxF) return true; return false; } string RingBuffer::get() { if(empty) return ""; string str; // int idx= idxF; while(!empty) { str += buf[idxF]; idxF++; idxF %= bufSize; if(idxF == idxR) empty= true; } return str; } //eof