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
Dependents: LoRaWAN-demo-72-bootcamp
Fork of BufferedSerial by
Revision 13:006e7d23b08a, committed 2017-01-28
- Comitter:
- abouillot
- Date:
- Sat Jan 28 16:12:14 2017 +0000
- Parent:
- 12:a0d37088b405
- Commit message:
- Change to callback cast to comply with new mbed version prototypes
Changed in this revision
BufferedSerial.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r a0d37088b405 -r 006e7d23b08a BufferedSerial.cpp --- a/BufferedSerial.cpp Mon Mar 07 21:10:27 2016 +0000 +++ b/BufferedSerial.cpp Sat Jan 28 16:12:14 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;