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:
10:2bd727a4b329
Parent:
3:0caed9526d24
Child:
17:2d7c4ea7491b
--- a/io/MTSSerialFlowControl.cpp	Wed Dec 11 20:19:53 2013 +0000
+++ b/io/MTSSerialFlowControl.cpp	Fri Dec 13 14:53:08 2013 +0000
@@ -3,19 +3,19 @@
 
 #include "MTSSerialFlowControl.h"
 
-MTSSerialFlowControl::MTSSerialFlowControl(PinName TXD, PinName RXD, PinName RTS, PinName CTS, int txBufSize, int rxBufSize) : MTSBufferedIO(txBufSize, rxBufSize)
+MTSSerialFlowControl::MTSSerialFlowControl(PinName TXD, PinName RXD, PinName RTS, PinName CTS, int txBufSize, int rxBufSize, char* name) : MTSBufferedIO(txBufSize, rxBufSize), if_name(name)
 {
     serial = new Serial(TXD, RXD);
     serial->attach(this, &MTSSerialFlowControl::handleRead, Serial::RxIrq);
-    serial->attach(this, &MTSSerialFlowControl::handleWrite, Serial::TxIrq);
+    //serial->attach(this, &MTSSerialFlowControl::handleWrite, Serial::TxIrq);
     
     clearToSend = true;
     rts = new InterruptIn(RTS);
     rts->rise(this, &MTSSerialFlowControl::stopSending); // active low -> stop sending
-    rts->fall(this, &MTSSerialFlowControl::startSending); // active high -> start sending
+    rts->fall(this, &MTSSerialFlowControl::startSending); // active low -> start sending
     
     cts = new DigitalOut(CTS);
-    cts = 0;
+    notifyStartSending();
     
     highThreshold = rxBufSize * 0.85;
     lowThreshold = rxBufSize * 0.3;
@@ -29,6 +29,10 @@
     delete serial;
 }
 
+void MTSSerialFlowControl::baud(int baudrate) {
+    serial->baud(baudrate);
+}
+
 void MTSSerialFlowControl::startSending() {
     clearToSend = true;
 }
@@ -48,10 +52,9 @@
 void MTSSerialFlowControl::handleRead() {
     if (rxBuffer->available() > highThreshold) {
         notifyStopSending();
-    } else {
-        while (serial->readable()) {
-            rxBuffer->write(serial->getc());
-        }
+    }
+    while (serial->readable()) {
+        rxBuffer->write(serial->getc());
     }
 }