Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of BufferedSerial by
Diff: BufferedSerial.cpp
- Revision:
- 3:6b76fcf27545
- Parent:
- 2:7e8a450a9101
- Child:
- 4:2ba4d2e1f05d
--- a/BufferedSerial.cpp Fri May 24 22:00:26 2013 +0000
+++ b/BufferedSerial.cpp Wed Jun 12 20:40:15 2013 +0000
@@ -53,7 +53,7 @@
int BufferedSerial::getc(void)
{
- return _rxbuf; // note: pulling from the buffer
+ return _rxbuf;
}
int BufferedSerial::putc(int c)
@@ -114,7 +114,7 @@
void BufferedSerial::rxIrq(void)
{
- // read from the peripheral and see if things are available
+ // read from the peripheral and make sure something is available
if(serial_readable(&_serial))
{
_rxbuf = serial_getc(&_serial); // if so load them into a buffer
@@ -125,8 +125,8 @@
void BufferedSerial::txIrq(void)
{
- // see if there is room in the hardware buffer and something is in the software buffer
- if(serial_writable(&_serial) && _txbuf.available())
+ // see if there is room in the hardware fifo and if something is in the software fifo
+ while(serial_writable(&_serial) && _txbuf.available())
{
serial_putc(&_serial, (int)_txbuf.get());
}
@@ -139,9 +139,9 @@
// if already busy then the irq will pick this up
if(serial_writable(&_serial))
{
- __disable_irq(); // make sure not to cause contention in the irq
- BufferedSerial::txIrq(); // prime the txirq - only write to hardware in one place
- __enable_irq();
+ Serial::attach(NULL, Serial::TxIrq); // make sure not to cause contention in the irq
+ BufferedSerial::txIrq(); // only write to hardware in one place
+ Serial::attach(this, &BufferedSerial::txIrq, Serial::TxIrq);
}
return;
