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
io/MTSSerial.cpp
- Committer:
- sgodinez
- Date:
- 2013-12-27
- Revision:
- 85:b17ad6781c5b
- Parent:
- 81:45e1359a5c69
- Parent:
- 84:77c5ab16534d
- Child:
- 86:186bbf974c7c
File content as of revision 85:b17ad6781c5b:
#include "MTSSerial.h" using namespace mts; MTSSerial::MTSSerial(PinName TXD, PinName RXD, int txBufferSize, int rxBufferSize, char* name) : MTSBufferedIO(txBufferSize, rxBufferSize), writeSize(30), if_name(name) { 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, SerialBase::Parity parity, int stop_bits) { serial->format(bits, parity, stop_bits); } void MTSSerial::handleRead() { while (serial->readable() && rxBuffer->remaining()) { rxBuffer->write(serial->getc()); } if (!rxBuffer->remaining() && serial->readable()) { printf("[WARNING] Receieve buffer full, possible data loss.\r\n"); } } // Currently uses Non-Irq based blocking write calls void MTSSerial::handleWrite() { while(txBuffer->size() != 0) { if (serial->writeable()) { char byte; if(txBuffer->read(byte) == 1) { serial->putc(byte); } } else { return; } } }