ENEL400 / Mbed 2 deprecated Aloha

Dependencies:   SX1276Lib mbed

Fork of SX1276PingPong by Semtech

Buffer.h

Committer:
rba90
Date:
2016-05-31
Revision:
15:f790f35839db

File content as of revision 15:f790f35839db:

#ifndef BUFFER_H_
#define BUFFER_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