00001 00024 #ifndef BUFFEREDSERIAL_H 00025 #define BUFFEREDSERIAL_H 00026 00027 #include "mbed.h" 00028 #include "Buffer.h" 00029 00071 class BufferedSerial : public RawSerial 00072 { 00073 private: 00074 Buffer <char> _rxbuf; 00075 Buffer <char> _txbuf; 00076 uint32_t _buf_size; 00077 uint32_t _tx_multiple; 00078 00079 void rxIrq(void); 00080 void txIrq(void); 00081 void prime(void); 00082 00083 public: 00092 BufferedSerial(PinName tx, PinName rx, uint32_t buf_size = 256, uint32_t tx_multiple = 4,const char* name=NULL); 00093 00096 virtual ~BufferedSerial(void); 00097 00101 virtual int readable(void); 00102 00106 virtual int writeable(void); 00107 00112 virtual int getc(void); 00113 00118 virtual int putc(int c); 00119 00124 virtual int puts(const char *s); 00125 00130 virtual int printf(const char* format, ...); 00131 00137 virtual ssize_t write(const void *s, std::size_t length); 00138 }; 00139 00140 #endif