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:
sgodinez
Date:
Fri Dec 27 16:20:32 2013 +0000
Revision:
85:b17ad6781c5b
Parent:
81:45e1359a5c69
Parent:
84:77c5ab16534d
Child:
86:186bbf974c7c
Merge

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jengbrecht 0:563b70517320 1 #include "MTSSerial.h"
jengbrecht 0:563b70517320 2
mfiore 39:6e94520a3217 3 using namespace mts;
mfiore 39:6e94520a3217 4
mfiore 10:2bd727a4b329 5 MTSSerial::MTSSerial(PinName TXD, PinName RXD, int txBufferSize, int rxBufferSize, char* name) : MTSBufferedIO(txBufferSize, rxBufferSize), writeSize(30), if_name(name)
jengbrecht 0:563b70517320 6 {
jengbrecht 0:563b70517320 7 serial = new Serial(TXD, RXD);
jengbrecht 0:563b70517320 8 serial->attach(this, &MTSSerial::handleRead, Serial::RxIrq);
jengbrecht 0:563b70517320 9 //serial->attach(this, &MTSSerial::handleWrite, Serial::TxIrq);
jengbrecht 0:563b70517320 10 }
jengbrecht 0:563b70517320 11
jengbrecht 0:563b70517320 12 MTSSerial::~MTSSerial()
jengbrecht 0:563b70517320 13 {
jengbrecht 0:563b70517320 14 delete serial;
jengbrecht 0:563b70517320 15 }
jengbrecht 0:563b70517320 16
jengbrecht 0:563b70517320 17 void MTSSerial::baud(int baudrate)
jengbrecht 0:563b70517320 18 {
jengbrecht 0:563b70517320 19 serial->baud(baudrate);
jengbrecht 0:563b70517320 20 }
jengbrecht 0:563b70517320 21
jengbrecht 45:40745c2036cf 22 void MTSSerial::format(int bits, SerialBase::Parity parity, int stop_bits)
jengbrecht 0:563b70517320 23 {
jengbrecht 0:563b70517320 24 serial->format(bits, parity, stop_bits);
jengbrecht 0:563b70517320 25 }
jengbrecht 45:40745c2036cf 26
jengbrecht 0:563b70517320 27 void MTSSerial::handleRead()
jengbrecht 0:563b70517320 28 {
jengbrecht 81:45e1359a5c69 29 while (serial->readable() && rxBuffer->remaining()) {
jengbrecht 0:563b70517320 30 rxBuffer->write(serial->getc());
jengbrecht 0:563b70517320 31 }
jengbrecht 81:45e1359a5c69 32 if (!rxBuffer->remaining() && serial->readable()) {
jengbrecht 81:45e1359a5c69 33 printf("[WARNING] Receieve buffer full, possible data loss.\r\n");
jengbrecht 81:45e1359a5c69 34 }
jengbrecht 0:563b70517320 35 }
jengbrecht 0:563b70517320 36
jengbrecht 0:563b70517320 37 // Currently uses Non-Irq based blocking write calls
jengbrecht 0:563b70517320 38 void MTSSerial::handleWrite()
jengbrecht 0:563b70517320 39 {
sgodinez 67:1003b410f781 40 while(txBuffer->size() != 0) {
jengbrecht 0:563b70517320 41 if (serial->writeable()) {
sgodinez 17:2d7c4ea7491b 42 char byte;
sgodinez 17:2d7c4ea7491b 43 if(txBuffer->read(byte) == 1) {
sgodinez 17:2d7c4ea7491b 44 serial->putc(byte);
sgodinez 17:2d7c4ea7491b 45 }
jengbrecht 0:563b70517320 46 } else {
jengbrecht 81:45e1359a5c69 47 return;
jengbrecht 0:563b70517320 48 }
jengbrecht 0:563b70517320 49 }
jengbrecht 0:563b70517320 50 }
jengbrecht 0:563b70517320 51