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
Diff: io/MTSSerialFlowControl.cpp
- 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);