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:
Tue Sep 02 18:38:55 2014 +0000
Revision:
152:9a2c7ed27744
Parent:
145:6a65bc3e1310
Wifi: fix compatibility break with old shields by checking for both old and new style responses to "show connection" command

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kranjan 141:571e0ef6c8dc 1 /* Universal Socket Modem Interface Library
kranjan 141:571e0ef6c8dc 2 * Copyright (c) 2013 Multi-Tech Systems
kranjan 141:571e0ef6c8dc 3 *
kranjan 141:571e0ef6c8dc 4 * Licensed under the Apache License, Version 2.0 (the "License");
kranjan 141:571e0ef6c8dc 5 * you may not use this file except in compliance with the License.
kranjan 141:571e0ef6c8dc 6 * You may obtain a copy of the License at
kranjan 141:571e0ef6c8dc 7 *
kranjan 141:571e0ef6c8dc 8 * http://www.apache.org/licenses/LICENSE-2.0
kranjan 141:571e0ef6c8dc 9 *
kranjan 141:571e0ef6c8dc 10 * Unless required by applicable law or agreed to in writing, software
kranjan 141:571e0ef6c8dc 11 * distributed under the License is distributed on an "AS IS" BASIS,
kranjan 141:571e0ef6c8dc 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kranjan 141:571e0ef6c8dc 13 * See the License for the specific language governing permissions and
kranjan 141:571e0ef6c8dc 14 * limitations under the License.
kranjan 141:571e0ef6c8dc 15 */
kranjan 141:571e0ef6c8dc 16
jengbrecht 0:563b70517320 17 #include "MTSSerial.h"
jengbrecht 0:563b70517320 18
mfiore 39:6e94520a3217 19 using namespace mts;
mfiore 39:6e94520a3217 20
jengbrecht 140:bf0c8288eb78 21 MTSSerial::MTSSerial(PinName TXD, PinName RXD, int txBufferSize, int rxBufferSize)
jengbrecht 140:bf0c8288eb78 22 : MTSBufferedIO(txBufferSize, rxBufferSize)
jengbrecht 140:bf0c8288eb78 23 , serial(TXD,RXD)
jengbrecht 0:563b70517320 24 {
sgodinez 86:186bbf974c7c 25 serial.attach(this, &MTSSerial::handleRead, Serial::RxIrq);
sgodinez 86:186bbf974c7c 26 //serial.attach(this, &MTSSerial::handleWrite, Serial::TxIrq);
jengbrecht 0:563b70517320 27 }
jengbrecht 0:563b70517320 28
jengbrecht 0:563b70517320 29 MTSSerial::~MTSSerial()
jengbrecht 0:563b70517320 30 {
sgodinez 86:186bbf974c7c 31
jengbrecht 0:563b70517320 32 }
jengbrecht 0:563b70517320 33
jengbrecht 0:563b70517320 34 void MTSSerial::baud(int baudrate)
jengbrecht 0:563b70517320 35 {
sgodinez 86:186bbf974c7c 36 serial.baud(baudrate);
jengbrecht 0:563b70517320 37 }
jengbrecht 0:563b70517320 38
jengbrecht 45:40745c2036cf 39 void MTSSerial::format(int bits, SerialBase::Parity parity, int stop_bits)
jengbrecht 0:563b70517320 40 {
sgodinez 86:186bbf974c7c 41 serial.format(bits, parity, stop_bits);
jengbrecht 0:563b70517320 42 }
jengbrecht 45:40745c2036cf 43
jengbrecht 0:563b70517320 44 void MTSSerial::handleRead()
jengbrecht 0:563b70517320 45 {
jengbrecht 144:52cb5b6667cc 46 char byte = serial.getc();
jengbrecht 144:52cb5b6667cc 47 if(rxBuffer.write(byte) != 1) {
jengbrecht 144:52cb5b6667cc 48 printf("[ERROR] Serial Rx Byte Dropped [%c][0x%02X]\r\n", byte, byte);
jengbrecht 81:45e1359a5c69 49 }
jengbrecht 0:563b70517320 50 }
jengbrecht 0:563b70517320 51
jengbrecht 0:563b70517320 52 // Currently uses Non-Irq based blocking write calls
jengbrecht 0:563b70517320 53 void MTSSerial::handleWrite()
jengbrecht 0:563b70517320 54 {
sgodinez 86:186bbf974c7c 55 while(txBuffer.size() != 0) {
sgodinez 86:186bbf974c7c 56 if (serial.writeable()) {
sgodinez 17:2d7c4ea7491b 57 char byte;
sgodinez 86:186bbf974c7c 58 if(txBuffer.read(byte) == 1) {
jengbrecht 144:52cb5b6667cc 59 serial.attach(NULL, Serial::RxIrq);
sgodinez 86:186bbf974c7c 60 serial.putc(byte);
jengbrecht 145:6a65bc3e1310 61 serial.attach(this, &MTSSerial::handleRead, Serial::RxIrq);
sgodinez 17:2d7c4ea7491b 62 }
jengbrecht 0:563b70517320 63 } else {
jengbrecht 81:45e1359a5c69 64 return;
jengbrecht 0:563b70517320 65 }
jengbrecht 0:563b70517320 66 }
jengbrecht 0:563b70517320 67 }
jengbrecht 0:563b70517320 68
kranjan 141:571e0ef6c8dc 69