General purpose ring buffer library. RTOS proof, mutex protected.

Dependents:   RingBuffer_RTOS_test

Fork of RingBuffer by Yoji KURODA

RingBuffer.h

Committer:
ykuroda
Date:
2012-09-27
Revision:
3:9adf0d5e0522
Parent:
2:ea6d02ba96ae

File content as of revision 3:9adf0d5e0522:

//
//  RingBuffer.h ... General purpose ring buffer library
//
//  Copyright 2012  Yoji KURODA
//
//  2009.11.13 ... Originally written in C by Y.Kuroda for Renesas H83664
//  2012.08.31 ... Code convert for mbed in C++
//  2012.09.26 ... Pointer use
//  2012.09.27 ... RTOS proof

#ifndef _RINGBUFFER_H
#define _RINGBUFFER_H


#include "rtos.h"


class RingBuffer {

  protected:
    unsigned char* buf;
    unsigned char* sp;
    unsigned char* ep;
    Mutex mutex;

    int bufsize;

  public:
    RingBuffer(int _bufsize=100);
    ~RingBuffer();
    
    int save(unsigned char c);
    unsigned char read(void);
    int check(void);
    int buffersize(void){return bufsize;};
    int full(void){ return (check()>=bufsize-1 ? 1 : 0); };
};


#endif /* _RINGBUFFER_H */