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:
- 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()); } }