Serial library for MTS Socket Modem Arduino Shield devices from Multi-Tech Systems
Dependents: mDot_AT_firmware mtsas mtsas MTDOT-EVB-LinkCheck-AL ... more
MTSSerial.cpp
00001 #include "mbed.h" 00002 #include "MTSSerial.h" 00003 #include "MTSLog.h" 00004 00005 using namespace mts; 00006 00007 MTSSerial::MTSSerial(PinName TXD, PinName RXD, int txBufferSize, int rxBufferSize) 00008 : MTSBufferedIO(txBufferSize, rxBufferSize) 00009 , _serial(new RawSerial(TXD,RXD)), 00010 _baudrate(9600), 00011 _bits(8), 00012 _parity(mbed::SerialBase::None), 00013 _stop_bits(1) 00014 { 00015 _serial->attach(callback(this, &MTSSerial::handleRead), Serial::RxIrq); 00016 } 00017 00018 MTSSerial::~MTSSerial() 00019 { 00020 } 00021 00022 00023 00024 void MTSSerial::baud(int baudrate) 00025 { 00026 _baudrate = baudrate; 00027 _serial->baud(_baudrate); 00028 } 00029 00030 void MTSSerial::format(int bits, SerialBase::Parity parity, int stop_bits) 00031 { 00032 _bits = bits; 00033 _parity = parity; 00034 _stop_bits = stop_bits; 00035 _serial->format(_bits, _parity, _stop_bits); 00036 } 00037 00038 void MTSSerial::handleRead() 00039 { 00040 rxBuffer.write(_serial->getc()); 00041 } 00042 00043 void MTSSerial::handleWrite() 00044 { 00045 while(txBuffer.size() != 0) { 00046 if (_serial->writeable()) { 00047 char byte; 00048 if(txBuffer.read(byte) == 1) { 00049 _serial->attach(NULL, Serial::RxIrq); 00050 _serial->putc(byte); 00051 _serial->attach(callback(this, &MTSSerial::handleRead), Serial::RxIrq); 00052 } 00053 } else { 00054 return; 00055 } 00056 } 00057 } 00058 00059 void mts::MTSSerial::reattach(PinName TXD, PinName RXD) { 00060 delete _serial; 00061 _serial = new RawSerial(TXD, RXD); 00062 _serial->attach(callback(this, &MTSSerial::handleRead), Serial::RxIrq); 00063 _serial->baud(_baudrate); 00064 _serial->format(_bits, _parity, _stop_bits); 00065 rxBuffer.clear(); 00066 txBuffer.clear(); 00067 } 00068 00069 void mts::MTSSerial::sendBreak() { 00070 _serial->send_break(); 00071 }
Generated on Thu Jul 14 2022 05:10:02 by 1.7.2