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/MTSSerial.cpp
- 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