Marcus Lee / SerialBuffer

Dependencies:   LinearArray

Committer:
UHSLMarcus
Date:
Fri Mar 17 11:46:54 2017 +0000
Revision:
9:8010dd8b4742
Parent:
8:93d1469f3f6d
larger buffer

Who changed what in which revision?

UserRevisionLine numberNew contents of line
UHSLMarcus 0:dd6d74f39384 1 #include "serialBuffer.h"
UHSLMarcus 0:dd6d74f39384 2
UHSLMarcus 9:8010dd8b4742 3 SerialBuffer::SerialBuffer(PinName tx, PinName rx) : RawSerial(tx, rx), rx_buffer(512, "serial") {
UHSLMarcus 8:93d1469f3f6d 4 RawSerial::attach(callback(this, &SerialBuffer::rx_interrupt), Serial::RxIrq);
UHSLMarcus 0:dd6d74f39384 5 return;
UHSLMarcus 0:dd6d74f39384 6 }
UHSLMarcus 0:dd6d74f39384 7
UHSLMarcus 8:93d1469f3f6d 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 8:93d1469f3f6d 13 int SerialBuffer::readable() {
UHSLMarcus 6:ca024bcee813 14 return rx_buffer.count() > 0;
UHSLMarcus 0:dd6d74f39384 15 }
UHSLMarcus 1:985b6f1c7347 16
UHSLMarcus 8:93d1469f3f6d 17 char SerialBuffer::getc() {
UHSLMarcus 0:dd6d74f39384 18 RawSerial::attach(NULL, RawSerial::RxIrq);
UHSLMarcus 0:dd6d74f39384 19
UHSLMarcus 6:ca024bcee813 20 char nextChar = rx_buffer.pop();
UHSLMarcus 0:dd6d74f39384 21
UHSLMarcus 8:93d1469f3f6d 22 RawSerial::attach(callback(this, &SerialBuffer::rx_interrupt), Serial::RxIrq);
UHSLMarcus 0:dd6d74f39384 23
UHSLMarcus 6:ca024bcee813 24 return nextChar;
UHSLMarcus 0:dd6d74f39384 25 }
UHSLMarcus 0:dd6d74f39384 26
UHSLMarcus 8:93d1469f3f6d 27 void SerialBuffer::rx_interrupt(void) {
UHSLMarcus 6:ca024bcee813 28 if(serial_readable(&_serial) && !rx_buffer.full()) {
UHSLMarcus 6:ca024bcee813 29 rx_buffer.push(serial_getc(&_serial));
UHSLMarcus 0:dd6d74f39384 30 }
UHSLMarcus 0:dd6d74f39384 31
UHSLMarcus 0:dd6d74f39384 32 return;
UHSLMarcus 6:ca024bcee813 33 }