ENEL400 / Mbed 2 deprecated Aloha

Dependencies:   SX1276Lib mbed

Fork of SX1276PingPong by Semtech

Committer:
rba90
Date:
Tue May 31 09:52:21 2016 +0000
Revision:
15:f790f35839db
Initial prototype

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rba90 15:f790f35839db 1 #ifndef BUFFER_H_
rba90 15:f790f35839db 2 #define BUFFER_H_
rba90 15:f790f35839db 3
rba90 15:f790f35839db 4 #define DEFAULT_MAX_BUFFER_SZ 64
rba90 15:f790f35839db 5
rba90 15:f790f35839db 6 #include "stdint.h"
rba90 15:f790f35839db 7
rba90 15:f790f35839db 8 template <typename T>
rba90 15:f790f35839db 9 class CircularBuffer
rba90 15:f790f35839db 10 {
rba90 15:f790f35839db 11 private:
rba90 15:f790f35839db 12 const uint32_t buffer_size;
rba90 15:f790f35839db 13 uint32_t read_ptr;
rba90 15:f790f35839db 14 uint32_t write_ptr;
rba90 15:f790f35839db 15 uint32_t count;
rba90 15:f790f35839db 16
rba90 15:f790f35839db 17 // mutex lock
rba90 15:f790f35839db 18 bool mux;
rba90 15:f790f35839db 19
rba90 15:f790f35839db 20 // overflow
rba90 15:f790f35839db 21 bool is_over_flow;
rba90 15:f790f35839db 22
rba90 15:f790f35839db 23 // container
rba90 15:f790f35839db 24 T *data;
rba90 15:f790f35839db 25
rba90 15:f790f35839db 26
rba90 15:f790f35839db 27 public:
rba90 15:f790f35839db 28 CircularBuffer(const uint32_t size=DEFAULT_MAX_BUFFER_SZ);
rba90 15:f790f35839db 29 ~CircularBuffer();
rba90 15:f790f35839db 30
rba90 15:f790f35839db 31 // psudo mutex
rba90 15:f790f35839db 32 bool isLocked();
rba90 15:f790f35839db 33 void lock();
rba90 15:f790f35839db 34 void unlock();
rba90 15:f790f35839db 35
rba90 15:f790f35839db 36 // enqueue and dequeue
rba90 15:f790f35839db 37 void enqueue(T in);
rba90 15:f790f35839db 38 T dequeue();
rba90 15:f790f35839db 39
rba90 15:f790f35839db 40 // pointer operation
rba90 15:f790f35839db 41 uint32_t getReadPtr();
rba90 15:f790f35839db 42 uint32_t getWritePtr();
rba90 15:f790f35839db 43 uint32_t getCounter();
rba90 15:f790f35839db 44
rba90 15:f790f35839db 45 // overflow
rba90 15:f790f35839db 46 bool getOverFlow();
rba90 15:f790f35839db 47 void clearOverFlow();
rba90 15:f790f35839db 48
rba90 15:f790f35839db 49 // operation
rba90 15:f790f35839db 50 T first();
rba90 15:f790f35839db 51 T last();
rba90 15:f790f35839db 52
rba90 15:f790f35839db 53 // random access
rba90 15:f790f35839db 54 T operator[](uint32_t idx);
rba90 15:f790f35839db 55 };
rba90 15:f790f35839db 56
rba90 15:f790f35839db 57 #endif