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:
Mon Dec 09 15:29:35 2013 +0000
Revision:
0:563b70517320
Child:
2:8d3ea0dfce39
Initial Commit Library!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jengbrecht 0:563b70517320 1 #ifndef MTSBUFFEREDIO_CPP
jengbrecht 0:563b70517320 2 #define MTSBUFFEREDIO_CPP
jengbrecht 0:563b70517320 3
jengbrecht 0:563b70517320 4 #include "MTSBufferedIO.h"
jengbrecht 0:563b70517320 5
jengbrecht 0:563b70517320 6 MTSBufferedIO::MTSBufferedIO(int txBufferSize, int rxBufferSize)
jengbrecht 0:563b70517320 7 {
jengbrecht 0:563b70517320 8 txBuffer = new MTSCircularBuffer(txBufferSize);
jengbrecht 0:563b70517320 9 rxBuffer = new MTSCircularBuffer(rxBufferSize);
jengbrecht 0:563b70517320 10 }
jengbrecht 0:563b70517320 11
jengbrecht 0:563b70517320 12 MTSBufferedIO::~MTSBufferedIO()
jengbrecht 0:563b70517320 13 {
jengbrecht 0:563b70517320 14 delete txBuffer;
jengbrecht 0:563b70517320 15 delete rxBuffer;
jengbrecht 0:563b70517320 16 }
jengbrecht 0:563b70517320 17
jengbrecht 0:563b70517320 18 int MTSBufferedIO::write(char* data, int length)
jengbrecht 0:563b70517320 19 {
jengbrecht 0:563b70517320 20 int tmp = txBuffer->write(data, length);
jengbrecht 0:563b70517320 21 handleWrite();
jengbrecht 0:563b70517320 22 return tmp;
jengbrecht 0:563b70517320 23 }
jengbrecht 0:563b70517320 24
jengbrecht 0:563b70517320 25 int MTSBufferedIO::write(char data)
jengbrecht 0:563b70517320 26 {
jengbrecht 0:563b70517320 27 int tmp = txBuffer->write(data);
jengbrecht 0:563b70517320 28 handleWrite();
jengbrecht 0:563b70517320 29 return tmp;
jengbrecht 0:563b70517320 30 }
jengbrecht 0:563b70517320 31
jengbrecht 0:563b70517320 32 int MTSBufferedIO::read(char* data, int length)
jengbrecht 0:563b70517320 33 {
jengbrecht 0:563b70517320 34 return rxBuffer->read(data, length);
jengbrecht 0:563b70517320 35 }
jengbrecht 0:563b70517320 36
jengbrecht 0:563b70517320 37 int MTSBufferedIO::read()
jengbrecht 0:563b70517320 38 {
jengbrecht 0:563b70517320 39 return rxBuffer->read();
jengbrecht 0:563b70517320 40 }
jengbrecht 0:563b70517320 41
jengbrecht 0:563b70517320 42 template<typename T>
jengbrecht 0:563b70517320 43 void MTSBufferedIO::attach(T *tptr, void(T::*mptr)(void), int threshold, Vars::RelationalOperator op, Serial::IrqType type)
jengbrecht 0:563b70517320 44 {
jengbrecht 0:563b70517320 45 if (type == Serial::TxIrq) {
jengbrecht 0:563b70517320 46 txBuffer->attach(tptr, mptr, threshold, op);
jengbrecht 0:563b70517320 47 } else if (type == Serial::RxIrq) {
jengbrecht 0:563b70517320 48 rxBuffer->attach(tptr, mptr, threshold, op);
jengbrecht 0:563b70517320 49 }
jengbrecht 0:563b70517320 50 }
jengbrecht 0:563b70517320 51
jengbrecht 0:563b70517320 52 void MTSBufferedIO::attach(void(*fptr)(void), int threshold, Vars::RelationalOperator op, Serial::IrqType type)
jengbrecht 0:563b70517320 53 {
jengbrecht 0:563b70517320 54 if (type == Serial::TxIrq) {
jengbrecht 0:563b70517320 55 txBuffer->attach(fptr, threshold, op);
jengbrecht 0:563b70517320 56 } else if (type == Serial::RxIrq) {
jengbrecht 0:563b70517320 57 rxBuffer->attach(fptr, threshold, op);
jengbrecht 0:563b70517320 58 }
jengbrecht 0:563b70517320 59 }
jengbrecht 0:563b70517320 60
jengbrecht 0:563b70517320 61 bool MTSBufferedIO::txEmpty()
jengbrecht 0:563b70517320 62 {
jengbrecht 0:563b70517320 63 return txBuffer->isEmpty();
jengbrecht 0:563b70517320 64 }
jengbrecht 0:563b70517320 65
jengbrecht 0:563b70517320 66 bool MTSBufferedIO::rxEmpty()
jengbrecht 0:563b70517320 67 {
jengbrecht 0:563b70517320 68 return rxBuffer->isEmpty();
jengbrecht 0:563b70517320 69 }
jengbrecht 0:563b70517320 70
jengbrecht 0:563b70517320 71 bool MTSBufferedIO::txFull()
jengbrecht 0:563b70517320 72 {
jengbrecht 0:563b70517320 73 return txBuffer->isFull();
jengbrecht 0:563b70517320 74 }
jengbrecht 0:563b70517320 75
jengbrecht 0:563b70517320 76 bool MTSBufferedIO::rxFull()
jengbrecht 0:563b70517320 77 {
jengbrecht 0:563b70517320 78 return rxBuffer->isFull();
jengbrecht 0:563b70517320 79 }
jengbrecht 0:563b70517320 80
jengbrecht 0:563b70517320 81 void MTSBufferedIO::txClear()
jengbrecht 0:563b70517320 82 {
jengbrecht 0:563b70517320 83 txBuffer->clear();
jengbrecht 0:563b70517320 84 }
jengbrecht 0:563b70517320 85
jengbrecht 0:563b70517320 86 void MTSBufferedIO::rxClear()
jengbrecht 0:563b70517320 87 {
jengbrecht 0:563b70517320 88 rxBuffer->clear();
jengbrecht 0:563b70517320 89 }
jengbrecht 0:563b70517320 90
jengbrecht 0:563b70517320 91 int MTSBufferedIO::txAvailable()
jengbrecht 0:563b70517320 92 {
jengbrecht 0:563b70517320 93 return txBuffer->available();
jengbrecht 0:563b70517320 94 }
jengbrecht 0:563b70517320 95
jengbrecht 0:563b70517320 96 int MTSBufferedIO::rxAvailable()
jengbrecht 0:563b70517320 97 {
jengbrecht 0:563b70517320 98 return rxBuffer->available();
jengbrecht 0:563b70517320 99 }
jengbrecht 0:563b70517320 100
jengbrecht 0:563b70517320 101 int MTSBufferedIO::txCapacity()
jengbrecht 0:563b70517320 102 {
jengbrecht 0:563b70517320 103 return txBuffer->capacity();
jengbrecht 0:563b70517320 104 }
jengbrecht 0:563b70517320 105
jengbrecht 0:563b70517320 106 int MTSBufferedIO::rxCapacity()
jengbrecht 0:563b70517320 107 {
jengbrecht 0:563b70517320 108 return rxBuffer->capacity();
jengbrecht 0:563b70517320 109 }
jengbrecht 0:563b70517320 110
jengbrecht 0:563b70517320 111 #endif /* MTSBUFFEREDSERIAL_CPP */