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 Dec 19 21:38:01 2013 +0000
Revision:
45:40745c2036cf
Parent:
17:2d7c4ea7491b
Child:
46:b30547bf07d5
Added a ton of documentation, made the notify start and stop methods private in MTSSerialFlowControl, added format method to the serial classes, fixed an issue in the bulk write method of MTSCircularBuffer

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 45:40745c2036cf 23 void MTSSerial::format(int bits, SerialBase::Parity parity, int stop_bits)
jengbrecht 0:563b70517320 24 {
jengbrecht 0:563b70517320 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 0:563b70517320 30 while (serial->readable()) {
jengbrecht 0:563b70517320 31 rxBuffer->write(serial->getc());
jengbrecht 0:563b70517320 32 }
jengbrecht 0:563b70517320 33 }
jengbrecht 0:563b70517320 34
jengbrecht 0:563b70517320 35 // Currently uses Non-Irq based blocking write calls
jengbrecht 0:563b70517320 36 void MTSSerial::handleWrite()
jengbrecht 0:563b70517320 37 {
jengbrecht 0:563b70517320 38 while(txBuffer->available() != 0) {
jengbrecht 0:563b70517320 39 if (serial->writeable()) {
sgodinez 17:2d7c4ea7491b 40 char byte;
sgodinez 17:2d7c4ea7491b 41 if(txBuffer->read(byte) == 1) {
sgodinez 17:2d7c4ea7491b 42 serial->putc(byte);
sgodinez 17:2d7c4ea7491b 43 }
jengbrecht 0:563b70517320 44 } else {
jengbrecht 0:563b70517320 45 wait(.05);
jengbrecht 0:563b70517320 46 }
jengbrecht 0:563b70517320 47 }
jengbrecht 0:563b70517320 48 }
jengbrecht 0:563b70517320 49
jengbrecht 0:563b70517320 50 // TxIrq based, review code before using!!!
jengbrecht 0:563b70517320 51 /*
jengbrecht 0:563b70517320 52 void MTSSerial::handleWrite()
jengbrecht 0:563b70517320 53 {
jengbrecht 0:563b70517320 54 int size = writeSize;
jengbrecht 0:563b70517320 55 int available = txBuffer->available();
jengbrecht 0:563b70517320 56 if (available == 0) {
jengbrecht 0:563b70517320 57 return;
jengbrecht 0:563b70517320 58 }
jengbrecht 0:563b70517320 59 if (available < writeSize) {
jengbrecht 0:563b70517320 60 size = available;
jengbrecht 0:563b70517320 61 }
jengbrecht 0:563b70517320 62 for (int i = 0; i < size; i++) {
jengbrecht 0:563b70517320 63 serial->putc(txBuffer->read());
jengbrecht 0:563b70517320 64 }
jengbrecht 0:563b70517320 65 }
jengbrecht 0:563b70517320 66 */
jengbrecht 0:563b70517320 67 #endif /* MTSSERIAL_CPP */