An implementation of a circular array allowing direct write and read.
Diff: CircularArray.h
- Revision:
- 1:5036a532fe62
- Parent:
- 0:28766f5a758e
diff -r 28766f5a758e -r 5036a532fe62 CircularArray.h --- a/CircularArray.h Tue Feb 11 18:41:26 2014 +0000 +++ b/CircularArray.h Wed Feb 12 15:51:51 2014 +0000 @@ -1,8 +1,9 @@ #ifndef _CIRCULAR_ARRAY_H_ #define _CIRCULAR_ARRAY_H_ +#include <stdint.h> -template<typename T> class CircularArray +class CircularArray { private: unsigned int m_capacity; @@ -10,13 +11,17 @@ volatile unsigned int r; volatile bool m_full; volatile bool m_empty; - volatile T * data; + volatile uint8_t * data; + volatile uint8_t * readerBuffer; + uint16_t sizeRB; + volatile uint8_t * writerBuffer; + uint16_t sizeWB; public: CircularArray(unsigned int capacity); ~CircularArray(); - T * getWritePointer(); - T * getReadPointer(T * buffer=0,unsigned int num=0); + uint8_t * getWritePointer(); + uint8_t * getReadPointer(uint16_t num); void writeElements(unsigned int num); void readElements(unsigned int num); unsigned int fillCapacity();