Toshihisa T
/
S1315FLogger
Skytraq S1315F-RAW-EVK Logger
Diff: libT/mbed/tserialbuffer.h
- Revision:
- 0:e0ec137da369
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libT/mbed/tserialbuffer.h Sat Dec 18 11:17:21 2010 +0000 @@ -0,0 +1,49 @@ + +#ifndef __TSERIALBUFFER_H +#define __TSERIALBUFFER_H + +#include "mbed.h" +#include "libT/portable/tringbuffer.h" +#include "libT/portable/tversion.h" + +namespace libT { + +class tSerialBuffer : public tRingBuffer<unsigned char> , public Serial , public tVersion { + +public: + tSerialBuffer(PinName _tx, PinName _rx) : Serial(_tx,_rx) , tVersion(0x20100720/* 2010-07-20 */,0x00000001UL){} + + void recvStart(void){ + Serial::attach(this,&tSerialBuffer::recvHandler,Serial::RxIrq); + } + void recvStop(void){ + Serial::attach(0,Serial::RxIrq); + } + + int readable(void){ + return tRingBuffer::readable(); + } + + int getc(void){ + unsigned char _c; + int retval = -1; + if(tRingBuffer::readable()){ + (void)tRingBuffer::read(&_c); + retval = static_cast<int>(_c); + } + return retval; + } + +private: + void recvHandler(void){ + if(Serial::readable()){ + tRingBuffer::write(static_cast<unsigned char>(Serial::getc())); + } + } + +}; + +}; + +#endif /* __TSERIALBUFFER_H */ +