Ringbuffer class

Committer:
chris215
Date:
Wed Jan 13 02:34:23 2016 +0000
Revision:
1:fa4c2377a741
Parent:
0:fed94e516719
Child:
2:959aad917307
Contains various bug fixes;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chris215 0:fed94e516719 1
chris215 0:fed94e516719 2 #ifndef FIFO_H
chris215 0:fed94e516719 3 #define FIFO_H
chris215 0:fed94e516719 4
chris215 0:fed94e516719 5 #include <stdint.h>
chris215 0:fed94e516719 6 #include <string.h>
chris215 0:fed94e516719 7
chris215 0:fed94e516719 8 template <typename T>
chris215 0:fed94e516719 9 class RingBuffer
chris215 0:fed94e516719 10 {
chris215 0:fed94e516719 11 private:
chris215 0:fed94e516719 12 T *m_buf;
chris215 0:fed94e516719 13 T *m_LatchedBuf;
chris215 0:fed94e516719 14 volatile uint32_t m_wloc;
chris215 0:fed94e516719 15 volatile uint32_t m_rloc;
chris215 0:fed94e516719 16 volatile uint32_t m_ActualCapacity;
chris215 0:fed94e516719 17 uint32_t m_size;
chris215 0:fed94e516719 18 bool m_SetBufferToReadOnly; //Put ring buffer into readonly mode, this way we can acces the underlying raw data with less
chris215 0:fed94e516719 19 //risk of behing overriten (Deprecated ... to be removed)
chris215 0:fed94e516719 20 public:
chris215 0:fed94e516719 21 RingBuffer(uint32_t size = 128);
chris215 0:fed94e516719 22 void clear(void);
chris215 0:fed94e516719 23 uint32_t getSize(); //Return the size of the ring buffer
chris215 0:fed94e516719 24
chris215 0:fed94e516719 25 uint32_t getCapacity(); //Return the number of elements stored in the buffer
chris215 0:fed94e516719 26
chris215 0:fed94e516719 27
chris215 1:fa4c2377a741 28 void LatchBuffer(T* DstBuffer);
chris215 0:fed94e516719 29
chris215 0:fed94e516719 30 ~RingBuffer();
chris215 0:fed94e516719 31
chris215 0:fed94e516719 32 void put(T data);
chris215 0:fed94e516719 33
chris215 0:fed94e516719 34 T get(void);
chris215 0:fed94e516719 35
chris215 0:fed94e516719 36
chris215 0:fed94e516719 37
chris215 0:fed94e516719 38 };
chris215 0:fed94e516719 39
chris215 0:fed94e516719 40 #endif