A library for talking to Multi-Tech's Cellular SocketModem Devices.

Dependents:   M2X_dev axeda_wrapper_dev MTS_M2x_Example1 MTS_Cellular_Connect_Example ... more

Revision:
0:563b70517320
Child:
10:2bd727a4b329
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/io/MTSSerial.cpp	Mon Dec 09 15:29:35 2013 +0000
@@ -0,0 +1,65 @@
+#ifndef MTSSERIAL_CPP
+#define MTSSERIAL_CPP
+
+#include "MTSSerial.h"
+
+MTSSerial::MTSSerial(PinName TXD, PinName RXD, int txBufferSize, int rxBufferSize) : MTSBufferedIO(txBufferSize, rxBufferSize), writeSize(30)
+{
+    serial = new Serial(TXD, RXD);
+    serial->attach(this, &MTSSerial::handleRead, Serial::RxIrq);
+    //serial->attach(this, &MTSSerial::handleWrite, Serial::TxIrq);
+}
+
+MTSSerial::~MTSSerial()
+{
+    delete serial;
+}
+
+void MTSSerial::baud(int baudrate)
+{
+    serial->baud(baudrate);
+}
+
+/*
+void MTSSerial::format(int bits=8, Parity parity=SerialBase::None, int stop_bits=1)
+{
+    serial->format(bits, parity, stop_bits);
+}
+*/
+void MTSSerial::handleRead()
+{
+    while (serial->readable()) {
+        rxBuffer->write(serial->getc());
+    }
+}
+
+// Currently uses Non-Irq based blocking write calls
+void MTSSerial::handleWrite()
+{
+    while(txBuffer->available() != 0) {
+        if (serial->writeable()) {
+            serial->putc(txBuffer->read());
+        } else {
+            wait(.05);
+        }
+    }
+}
+
+// TxIrq based, review code before using!!!
+/*
+void MTSSerial::handleWrite()
+{
+    int size = writeSize;
+    int available = txBuffer->available();
+    if (available == 0) {
+        return;
+    }
+    if (available < writeSize) {
+        size = available;
+    }
+    for (int i = 0; i < size; i++) {
+        serial->putc(txBuffer->read());
+    }
+}
+*/
+#endif /* MTSSERIAL_CPP */
\ No newline at end of file