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:
78:ef3ee53cf5df
Parent:
77:d7b14688a704
Child:
81:45e1359a5c69
Child:
84:77c5ab16534d
--- a/io/MTSSerialFlowControl.cpp	Thu Dec 26 21:54:19 2013 +0000
+++ b/io/MTSSerialFlowControl.cpp	Thu Dec 26 23:32:02 2013 +0000
@@ -11,12 +11,8 @@
     serial->attach(this, &MTSSerialFlowControl::handleRead, Serial::RxIrq);
     //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 low -> start sending
-
-    cts = new DigitalOut(CTS);
+    rts = new DigitalOut(RTS);
+    cts = new DigitalIn(CTS);
     notifyStartSending();
 
     //highThreshold = MAX(rxBufSize - 10, rxBufSize * 0.85);
@@ -43,28 +39,16 @@
     serial->format(bits, parity, stop_bits);
 }
 
-void MTSSerialFlowControl::startSending()
-{
-    clearToSend = true;
-    //printf("RTS: START SENDING YOU BYTES - TX[%d]\r\n", txBuffer->size());
-}
-
-void MTSSerialFlowControl::stopSending()
-{
-    clearToSend = false;
-    //printf("RTS: STOP SENDING YOU BYTES - TX[%d]\r\n", txBuffer->size());
-}
-
 void MTSSerialFlowControl::notifyStartSending()
 {
-    cts->write(0);
-    //printf("CTS: START SENDING US BYTES - RX[%d]\r\n", rxBuffer->size());
+    rts->write(0);
+    //printf("RTS: START SENDING US BYTES - RX[%d]\r\n", rxBuffer->size());
 }
 
 void MTSSerialFlowControl::notifyStopSending()
 {
-    cts->write(1);
-    //printf("CTS: STOP SENDING US BYTES - RX[%d]\r\n", rxBuffer->size());
+    rts->write(1);
+    //printf("RTS: STOP SENDING US BYTES - RX[%d]\r\n", rxBuffer->size());
 }
 
 void MTSSerialFlowControl::handleRead()
@@ -82,7 +66,7 @@
 {
 
     while(txBuffer->size() != 0) {
-        if (serial->writeable() && clearToSend) {
+        if (serial->writeable() && cts->read() == 0) {
             char byte;
             if(txBuffer->read(byte) == 1) {
                 serial->putc(byte);