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:
- jengbrecht
- Date:
- 2013-12-19
- Revision:
- 46:b30547bf07d5
- Parent:
- 45:40745c2036cf
- Parent:
- 39:6e94520a3217
- Child:
- 67:1003b410f781
File content as of revision 46:b30547bf07d5:
#ifndef MTSSERIAL_CPP #define MTSSERIAL_CPP #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->write(serial->getc()); } } // Currently uses Non-Irq based blocking write calls void MTSSerial::handleWrite() { while(txBuffer->available() != 0) { if (serial->writeable()) { char byte; if(txBuffer->read(byte) == 1) { serial->putc(byte); } } 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 */