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.
serialBuffer.cpp@0:dd6d74f39384, 2016-10-03 (annotated)
- Committer:
- UHSLMarcus
- Date:
- Mon Oct 03 12:34:17 2016 +0000
- Revision:
- 0:dd6d74f39384
- Child:
- 1:985b6f1c7347
first version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
UHSLMarcus | 0:dd6d74f39384 | 1 | #include "serialBuffer.h" |
UHSLMarcus | 0:dd6d74f39384 | 2 | |
UHSLMarcus | 0:dd6d74f39384 | 3 | SerialBuffer::SerialBuffer(PinName tx, PinName rx) : RawSerial(tx, rx) { |
UHSLMarcus | 0:dd6d74f39384 | 4 | RawSerial::attach(this, &SerialBuffer::rx_interrupt, Serial::RxIrq); |
UHSLMarcus | 0:dd6d74f39384 | 5 | return; |
UHSLMarcus | 0:dd6d74f39384 | 6 | } |
UHSLMarcus | 0:dd6d74f39384 | 7 | |
UHSLMarcus | 0:dd6d74f39384 | 8 | SerialBuffer::~SerialBuffer() { |
UHSLMarcus | 0:dd6d74f39384 | 9 | RawSerial::attach(NULL, RawSerial::RxIrq); |
UHSLMarcus | 0:dd6d74f39384 | 10 | return; |
UHSLMarcus | 0:dd6d74f39384 | 11 | } |
UHSLMarcus | 0:dd6d74f39384 | 12 | |
UHSLMarcus | 0:dd6d74f39384 | 13 | int SerialBuffer::readable() { |
UHSLMarcus | 0:dd6d74f39384 | 14 | return rx_buffer.readable(); |
UHSLMarcus | 0:dd6d74f39384 | 15 | } |
UHSLMarcus | 0:dd6d74f39384 | 16 | char SerialBuffer::getc() { |
UHSLMarcus | 0:dd6d74f39384 | 17 | char * output; |
UHSLMarcus | 0:dd6d74f39384 | 18 | RawSerial::attach(NULL, RawSerial::RxIrq); |
UHSLMarcus | 0:dd6d74f39384 | 19 | |
UHSLMarcus | 0:dd6d74f39384 | 20 | CircularBuffer<char>::nextItem nextChar = rx_buffer.getNext(); |
UHSLMarcus | 0:dd6d74f39384 | 21 | if (nextChar.success) |
UHSLMarcus | 0:dd6d74f39384 | 22 | output = (char*)nextChar.item; |
UHSLMarcus | 0:dd6d74f39384 | 23 | |
UHSLMarcus | 0:dd6d74f39384 | 24 | RawSerial::attach(this, &SerialBuffer::rx_interrupt, Serial::RxIrq); |
UHSLMarcus | 0:dd6d74f39384 | 25 | |
UHSLMarcus | 0:dd6d74f39384 | 26 | return *output; |
UHSLMarcus | 0:dd6d74f39384 | 27 | } |
UHSLMarcus | 0:dd6d74f39384 | 28 | |
UHSLMarcus | 0:dd6d74f39384 | 29 | void rx_interrupt(void) { |
UHSLMarcus | 0:dd6d74f39384 | 30 | if(serial_readable(&_serial) && rx_buffer.writeable()) { |
UHSLMarcus | 0:dd6d74f39384 | 31 | rx_buffer.add(serial_getc(&_serial)); |
UHSLMarcus | 0:dd6d74f39384 | 32 | } |
UHSLMarcus | 0:dd6d74f39384 | 33 | |
UHSLMarcus | 0:dd6d74f39384 | 34 | return; |
UHSLMarcus | 0:dd6d74f39384 | 35 | } |