Marcus Lee / SerialBuffer

Dependencies:   LinearArray

Committer:
UHSLMarcus
Date:
Tue Oct 04 09:18:23 2016 +0000
Revision:
1:985b6f1c7347
Parent:
0:dd6d74f39384
Child:
6:ca024bcee813
working so far

Who changed what in which revision?

UserRevisionLine numberNew contents of line
UHSLMarcus 0:dd6d74f39384 1 #include "serialBuffer.h"
UHSLMarcus 0:dd6d74f39384 2
UHSLMarcus 1:985b6f1c7347 3 utils::SerialBuffer::SerialBuffer(PinName tx, PinName rx) : RawSerial(tx, rx), rx_buffer(255) {
UHSLMarcus 1:985b6f1c7347 4 RawSerial::attach(this, &utils::SerialBuffer::rx_interrupt, Serial::RxIrq);
UHSLMarcus 0:dd6d74f39384 5 return;
UHSLMarcus 0:dd6d74f39384 6 }
UHSLMarcus 0:dd6d74f39384 7
UHSLMarcus 1:985b6f1c7347 8 utils::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 1:985b6f1c7347 13 int utils::SerialBuffer::readable() {
UHSLMarcus 0:dd6d74f39384 14 return rx_buffer.readable();
UHSLMarcus 0:dd6d74f39384 15 }
UHSLMarcus 1:985b6f1c7347 16
UHSLMarcus 1:985b6f1c7347 17 char utils::SerialBuffer::getc() {
UHSLMarcus 0:dd6d74f39384 18 char * output;
UHSLMarcus 0:dd6d74f39384 19 RawSerial::attach(NULL, RawSerial::RxIrq);
UHSLMarcus 0:dd6d74f39384 20
UHSLMarcus 0:dd6d74f39384 21 CircularBuffer<char>::nextItem nextChar = rx_buffer.getNext();
UHSLMarcus 0:dd6d74f39384 22 if (nextChar.success)
UHSLMarcus 0:dd6d74f39384 23 output = (char*)nextChar.item;
UHSLMarcus 0:dd6d74f39384 24
UHSLMarcus 1:985b6f1c7347 25 RawSerial::attach(this, &utils::SerialBuffer::rx_interrupt, Serial::RxIrq);
UHSLMarcus 0:dd6d74f39384 26
UHSLMarcus 0:dd6d74f39384 27 return *output;
UHSLMarcus 0:dd6d74f39384 28 }
UHSLMarcus 0:dd6d74f39384 29
UHSLMarcus 1:985b6f1c7347 30 void utils::SerialBuffer::rx_interrupt(void) {
UHSLMarcus 0:dd6d74f39384 31 if(serial_readable(&_serial) && rx_buffer.writeable()) {
UHSLMarcus 0:dd6d74f39384 32 rx_buffer.add(serial_getc(&_serial));
UHSLMarcus 0:dd6d74f39384 33 }
UHSLMarcus 0:dd6d74f39384 34
UHSLMarcus 0:dd6d74f39384 35 return;
UHSLMarcus 0:dd6d74f39384 36 }