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

Committer:
mfiore
Date:
Fri Dec 13 14:53:08 2013 +0000
Revision:
10:2bd727a4b329
Parent:
0:563b70517320
Child:
17:2d7c4ea7491b
tested and verified flow control code; added .h files to test serial code (loopback and passthrough)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jengbrecht 0:563b70517320 1 #ifndef MTSSERIAL_CPP
jengbrecht 0:563b70517320 2 #define MTSSERIAL_CPP
jengbrecht 0:563b70517320 3
jengbrecht 0:563b70517320 4 #include "MTSSerial.h"
jengbrecht 0:563b70517320 5
mfiore 10:2bd727a4b329 6 MTSSerial::MTSSerial(PinName TXD, PinName RXD, int txBufferSize, int rxBufferSize, char* name) : MTSBufferedIO(txBufferSize, rxBufferSize), writeSize(30), if_name(name)
jengbrecht 0:563b70517320 7 {
jengbrecht 0:563b70517320 8 serial = new Serial(TXD, RXD);
jengbrecht 0:563b70517320 9 serial->attach(this, &MTSSerial::handleRead, Serial::RxIrq);
jengbrecht 0:563b70517320 10 //serial->attach(this, &MTSSerial::handleWrite, Serial::TxIrq);
jengbrecht 0:563b70517320 11 }
jengbrecht 0:563b70517320 12
jengbrecht 0:563b70517320 13 MTSSerial::~MTSSerial()
jengbrecht 0:563b70517320 14 {
jengbrecht 0:563b70517320 15 delete serial;
jengbrecht 0:563b70517320 16 }
jengbrecht 0:563b70517320 17
jengbrecht 0:563b70517320 18 void MTSSerial::baud(int baudrate)
jengbrecht 0:563b70517320 19 {
jengbrecht 0:563b70517320 20 serial->baud(baudrate);
jengbrecht 0:563b70517320 21 }
jengbrecht 0:563b70517320 22
jengbrecht 0:563b70517320 23 /*
jengbrecht 0:563b70517320 24 void MTSSerial::format(int bits=8, Parity parity=SerialBase::None, int stop_bits=1)
jengbrecht 0:563b70517320 25 {
jengbrecht 0:563b70517320 26 serial->format(bits, parity, stop_bits);
jengbrecht 0:563b70517320 27 }
jengbrecht 0:563b70517320 28 */
jengbrecht 0:563b70517320 29 void MTSSerial::handleRead()
jengbrecht 0:563b70517320 30 {
jengbrecht 0:563b70517320 31 while (serial->readable()) {
jengbrecht 0:563b70517320 32 rxBuffer->write(serial->getc());
jengbrecht 0:563b70517320 33 }
jengbrecht 0:563b70517320 34 }
jengbrecht 0:563b70517320 35
jengbrecht 0:563b70517320 36 // Currently uses Non-Irq based blocking write calls
jengbrecht 0:563b70517320 37 void MTSSerial::handleWrite()
jengbrecht 0:563b70517320 38 {
jengbrecht 0:563b70517320 39 while(txBuffer->available() != 0) {
jengbrecht 0:563b70517320 40 if (serial->writeable()) {
jengbrecht 0:563b70517320 41 serial->putc(txBuffer->read());
jengbrecht 0:563b70517320 42 } else {
jengbrecht 0:563b70517320 43 wait(.05);
jengbrecht 0:563b70517320 44 }
jengbrecht 0:563b70517320 45 }
jengbrecht 0:563b70517320 46 }
jengbrecht 0:563b70517320 47
jengbrecht 0:563b70517320 48 // TxIrq based, review code before using!!!
jengbrecht 0:563b70517320 49 /*
jengbrecht 0:563b70517320 50 void MTSSerial::handleWrite()
jengbrecht 0:563b70517320 51 {
jengbrecht 0:563b70517320 52 int size = writeSize;
jengbrecht 0:563b70517320 53 int available = txBuffer->available();
jengbrecht 0:563b70517320 54 if (available == 0) {
jengbrecht 0:563b70517320 55 return;
jengbrecht 0:563b70517320 56 }
jengbrecht 0:563b70517320 57 if (available < writeSize) {
jengbrecht 0:563b70517320 58 size = available;
jengbrecht 0:563b70517320 59 }
jengbrecht 0:563b70517320 60 for (int i = 0; i < size; i++) {
jengbrecht 0:563b70517320 61 serial->putc(txBuffer->read());
jengbrecht 0:563b70517320 62 }
jengbrecht 0:563b70517320 63 }
jengbrecht 0:563b70517320 64 */
jengbrecht 0:563b70517320 65 #endif /* MTSSERIAL_CPP */