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:
jengbrecht
Date:
Thu Jan 02 20:59:09 2014 +0000
Revision:
129:3aa470877c59
Parent:
86:186bbf974c7c
Child:
140:bf0c8288eb78
Updated MTSSerial handle read call to look more like MTSSerialFlowControl

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
sgodinez 86:186bbf974c7c 5 MTSSerial::MTSSerial(PinName TXD, PinName RXD, int txBufferSize, int rxBufferSize)
sgodinez 86:186bbf974c7c 6 : MTSBufferedIO(txBufferSize, rxBufferSize)
sgodinez 86:186bbf974c7c 7 , serial(TXD,RXD)
jengbrecht 0:563b70517320 8 {
sgodinez 86:186bbf974c7c 9 serial.attach(this, &MTSSerial::handleRead, Serial::RxIrq);
sgodinez 86:186bbf974c7c 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 {
sgodinez 86:186bbf974c7c 15
jengbrecht 0:563b70517320 16 }
jengbrecht 0:563b70517320 17
jengbrecht 0:563b70517320 18 void MTSSerial::baud(int baudrate)
jengbrecht 0:563b70517320 19 {
sgodinez 86:186bbf974c7c 20 serial.baud(baudrate);
jengbrecht 0:563b70517320 21 }
jengbrecht 0:563b70517320 22
jengbrecht 45:40745c2036cf 23 void MTSSerial::format(int bits, SerialBase::Parity parity, int stop_bits)
jengbrecht 0:563b70517320 24 {
sgodinez 86:186bbf974c7c 25 serial.format(bits, parity, stop_bits);
jengbrecht 0:563b70517320 26 }
jengbrecht 45:40745c2036cf 27
jengbrecht 0:563b70517320 28 void MTSSerial::handleRead()
jengbrecht 0:563b70517320 29 {
jengbrecht 129:3aa470877c59 30 while (serial.readable()) {
jengbrecht 129:3aa470877c59 31 char byte = serial.getc();
jengbrecht 129:3aa470877c59 32 if(rxBuffer.write(byte) != 1) {
jengbrecht 129:3aa470877c59 33 printf("[ERROR] Serial Rx Byte Dropped [%c][0x%02X]\r\n", byte, byte);
jengbrecht 129:3aa470877c59 34 return;
jengbrecht 129:3aa470877c59 35 }
jengbrecht 81:45e1359a5c69 36 }
jengbrecht 0:563b70517320 37 }
jengbrecht 0:563b70517320 38
jengbrecht 0:563b70517320 39 // Currently uses Non-Irq based blocking write calls
jengbrecht 0:563b70517320 40 void MTSSerial::handleWrite()
jengbrecht 0:563b70517320 41 {
sgodinez 86:186bbf974c7c 42 while(txBuffer.size() != 0) {
sgodinez 86:186bbf974c7c 43 if (serial.writeable()) {
sgodinez 17:2d7c4ea7491b 44 char byte;
sgodinez 86:186bbf974c7c 45 if(txBuffer.read(byte) == 1) {
sgodinez 86:186bbf974c7c 46 serial.putc(byte);
sgodinez 17:2d7c4ea7491b 47 }
jengbrecht 0:563b70517320 48 } else {
jengbrecht 81:45e1359a5c69 49 return;
jengbrecht 0:563b70517320 50 }
jengbrecht 0:563b70517320 51 }
jengbrecht 0:563b70517320 52 }
jengbrecht 0:563b70517320 53