General purpose ring buffer library. RTOS proof, mutex protected.
Dependents: RingBuffer_RTOS_test
Fork of RingBuffer by
RingBuffer.h@3:9adf0d5e0522, 2012-09-27 (annotated)
- 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?
| User | Revision | Line number | New 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 |
Yoji KURODA
