Serial library for MTS Socket Modem Arduino Shield devices from Multi-Tech Systems

Dependents:   mDot_AT_firmware mtsas mtsas MTDOT-EVB-LinkCheck-AL ... more

Revision:
1:d34b566d6f47
Child:
4:d348d001283b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MTSSerial.cpp	Mon May 19 11:18:10 2014 -0500
@@ -0,0 +1,52 @@
+#include "MTSSerial.h"
+
+#include "MTSLog.h"
+
+using namespace mts;
+
+MTSSerial::MTSSerial(PinName TXD, PinName RXD, int txBufferSize, int rxBufferSize)
+    : MTSBufferedIO(txBufferSize, rxBufferSize)
+    , serial(TXD,RXD)
+{
+    serial.attach(this, &MTSSerial::handleRead, Serial::RxIrq);
+}
+
+MTSSerial::~MTSSerial()
+{
+}
+
+void MTSSerial::baud(int baudrate)
+{
+    serial.baud(baudrate);
+}
+
+void MTSSerial::format(int bits, SerialBase::Parity parity, int stop_bits)
+{
+    serial.format(bits, parity, stop_bits);
+}
+
+void MTSSerial::handleRead()
+{
+    char byte = serial.getc();
+    if(rxBuffer.write(byte) != 1) {
+        logError("Serial Rx Byte Dropped [%c][0x%02X]", byte, byte);
+    }
+}
+
+void MTSSerial::handleWrite()
+{
+    while(txBuffer.size() != 0) {
+        if (serial.writeable()) {
+            char byte;
+            if(txBuffer.read(byte) == 1) {
+                serial.attach(NULL, Serial::RxIrq);
+                serial.putc(byte);
+                serial.attach(this, &MTSSerial::handleRead, Serial::RxIrq);
+            }
+        } else {
+            return;
+        }
+    }
+}
+
+