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

Dependents:   RingBuffer_RTOS_test

Fork of RingBuffer by Yoji KURODA

Committer:
ykuroda
Date:
Thu Sep 27 13:31:29 2012 +0000
Revision:
3:9adf0d5e0522
Parent:
2:ea6d02ba96ae
RTOS support.  Mutex protected edition.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ykuroda 1:1c3a10f2eb04 1 //
ykuroda 1:1c3a10f2eb04 2 // RingBuffer.h ... General purpose ring buffer library
ykuroda 1:1c3a10f2eb04 3 //
ykuroda 1:1c3a10f2eb04 4 // Copyright 2012 Yoji KURODA
ykuroda 1:1c3a10f2eb04 5 //
ykuroda 1:1c3a10f2eb04 6 // 2009.11.13 ... Originally written in C by Y.Kuroda for Renesas H83664
ykuroda 1:1c3a10f2eb04 7 // 2012.08.31 ... Code convert for mbed in C++
ykuroda 3:9adf0d5e0522 8 // 2012.09.26 ... Pointer use
ykuroda 3:9adf0d5e0522 9 // 2012.09.27 ... RTOS proof
ykuroda 1:1c3a10f2eb04 10
ykuroda 0:db7fa84ff50e 11 #ifndef _RINGBUFFER_H
ykuroda 0:db7fa84ff50e 12 #define _RINGBUFFER_H
ykuroda 0:db7fa84ff50e 13
ykuroda 3:9adf0d5e0522 14
ykuroda 3:9adf0d5e0522 15 #include "rtos.h"
ykuroda 3:9adf0d5e0522 16
ykuroda 3:9adf0d5e0522 17
ykuroda 0:db7fa84ff50e 18 class RingBuffer {
ykuroda 0:db7fa84ff50e 19
ykuroda 0:db7fa84ff50e 20 protected:
ykuroda 0:db7fa84ff50e 21 unsigned char* buf;
ykuroda 2:ea6d02ba96ae 22 unsigned char* sp;
ykuroda 2:ea6d02ba96ae 23 unsigned char* ep;
ykuroda 3:9adf0d5e0522 24 Mutex mutex;
ykuroda 2:ea6d02ba96ae 25
ykuroda 1:1c3a10f2eb04 26 int bufsize;
ykuroda 0:db7fa84ff50e 27
ykuroda 0:db7fa84ff50e 28 public:
ykuroda 0:db7fa84ff50e 29 RingBuffer(int _bufsize=100);
ykuroda 0:db7fa84ff50e 30 ~RingBuffer();
ykuroda 0:db7fa84ff50e 31
ykuroda 1:1c3a10f2eb04 32 int save(unsigned char c);
ykuroda 0:db7fa84ff50e 33 unsigned char read(void);
ykuroda 0:db7fa84ff50e 34 int check(void);
ykuroda 1:1c3a10f2eb04 35 int buffersize(void){return bufsize;};
ykuroda 1:1c3a10f2eb04 36 int full(void){ return (check()>=bufsize-1 ? 1 : 0); };
ykuroda 0:db7fa84ff50e 37 };
ykuroda 0:db7fa84ff50e 38
ykuroda 0:db7fa84ff50e 39
ykuroda 0:db7fa84ff50e 40 #endif /* _RINGBUFFER_H */
ykuroda 0:db7fa84ff50e 41
ykuroda 0:db7fa84ff50e 42