Inherit from Serial and use software buffers for TX and RX. This allows the UART peripherals to operate in a IRQ driven mode. Overrides most (but not all) stdio functions as Serial did
Fork of BufferedSerial by
Revision 13:e1a43340f8e3, committed 2017-01-25
- Comitter:
- loverdeg
- Date:
- Wed Jan 25 18:56:06 2017 +0000
- Parent:
- 12:a0d37088b405
- Commit message:
- update attach references
Changed in this revision
BufferedSerial.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r a0d37088b405 -r e1a43340f8e3 BufferedSerial.cpp --- a/BufferedSerial.cpp Mon Mar 07 21:10:27 2016 +0000 +++ b/BufferedSerial.cpp Wed Jan 25 18:56:06 2017 +0000 @@ -26,7 +26,7 @@ BufferedSerial::BufferedSerial(PinName tx, PinName rx, uint32_t buf_size, uint32_t tx_multiple, const char* name) : RawSerial(tx, rx) , _rxbuf(buf_size), _txbuf((uint32_t)(tx_multiple*buf_size)) { - RawSerial::attach(this, &BufferedSerial::rxIrq, Serial::RxIrq); + RawSerial::attach(callback(this, &BufferedSerial::rxIrq), Serial::RxIrq); this->_buf_size = buf_size; this->_tx_multiple = tx_multiple; return; @@ -149,7 +149,7 @@ if(serial_writable(&_serial)) { RawSerial::attach(NULL, RawSerial::TxIrq); // make sure not to cause contention in the irq BufferedSerial::txIrq(); // only write to hardware in one place - RawSerial::attach(this, &BufferedSerial::txIrq, RawSerial::TxIrq); + RawSerial::attach(callback(this, &BufferedSerial::txIrq), RawSerial::TxIrq); } return;