A template for ring buffer implementation
Dependents: AwsomeStation LoRaBaseStation LoRaTerminal
RingBuffer.h
- Committer:
- rba90
- Date:
- 2016-07-23
- Revision:
- 2:8949ad751081
- Parent:
- 1:5f641cf190da
- Child:
- 3:21ee07b29eb7
File content as of revision 2:8949ad751081:
#ifndef RINGBUFFER_H_ #define RINGBUFFER_H_ #define DEFAULT_MAX_BUFFER_SZ 64 #include "stdint.h" template <typename T> class CircularBuffer { private: const uint32_t buffer_size; uint32_t read_ptr; uint32_t write_ptr; uint32_t count; // mutex lock bool mux; // overflow bool is_over_flow; // container T *data; public: CircularBuffer(const uint32_t size=DEFAULT_MAX_BUFFER_SZ); ~CircularBuffer(); // psudo mutex bool isLocked(); void lock(); void unlock(); // enqueue and dequeue void enqueue(T in); T dequeue(); // pointer operation uint32_t getReadPtr(); uint32_t getWritePtr(); uint32_t getCounter(); // overflow bool getOverFlow(); void clearOverFlow(); // operation T first(); T last(); // random access T operator[](uint32_t idx); }; #endif