An implementation of a circular array allowing direct write and read.

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();