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:
Thu Dec 19 19:53:43 2013 +0000
Revision:
40:14342c4de476
Parent:
36:bb6b293c7495
Parent:
39:6e94520a3217
Child:
46:b30547bf07d5
merge changes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jengbrecht 0:563b70517320 1 #ifndef MTSSERIALFLOWCONTROL_H
jengbrecht 0:563b70517320 2 #define MTSSERIALFLOWCONTROL_H
jengbrecht 0:563b70517320 3
jengbrecht 0:563b70517320 4 #include "mbed.h"
jengbrecht 0:563b70517320 5 #include "MTSBufferedIO.h"
mfiore 2:8d3ea0dfce39 6
mfiore 39:6e94520a3217 7 namespace mts {
mfiore 39:6e94520a3217 8
jengbrecht 0:563b70517320 9 class MTSSerialFlowControl : public MTSBufferedIO
jengbrecht 0:563b70517320 10 {
jengbrecht 0:563b70517320 11 public:
jengbrecht 36:bb6b293c7495 12 /** Creates a new MTSSerialFlowControl object that can be used to talk to an Mbed serial
jengbrecht 36:bb6b293c7495 13 * port through internal SW buffers. Note that this class also adds the ability to use
jengbrecht 36:bb6b293c7495 14 * RTS/CTS HW Flow Conrtol through and standard Mbed DigitalIn and DigitalOut pins.
jengbrecht 36:bb6b293c7495 15 *
jengbrecht 36:bb6b293c7495 16 * @param TXD the transmit data pin on the desired Mbed serial interface.
jengbrecht 36:bb6b293c7495 17 * @param RXD the receive data pin on the desired Mbed serial interface.
jengbrecht 36:bb6b293c7495 18 * @param RTS the DigitalIn pin that RTS will be attached to.
jengbrecht 36:bb6b293c7495 19 * @param CTS the DigitalOut pin that CTS will be attached to.
jengbrecht 36:bb6b293c7495 20 * @param txBufferSize the size in bytes of the internal SW transmit buffer. The
jengbrecht 36:bb6b293c7495 21 * default is 64 bytes.
jengbrecht 36:bb6b293c7495 22 * @param rxBufferSize the size in bytes of the internal SW receive buffer. The
jengbrecht 36:bb6b293c7495 23 * default is 64 bytes.
jengbrecht 36:bb6b293c7495 24 * @param name an optional name for the serial port. The default is blank.
jengbrecht 36:bb6b293c7495 25 */
mfiore 10:2bd727a4b329 26 MTSSerialFlowControl(PinName TXD, PinName RXD, PinName RTS, PinName CTS, int txBufSize = 64, int rxBufSize = 64, char* name = "");
jengbrecht 36:bb6b293c7495 27
jengbrecht 36:bb6b293c7495 28 /** Destructs an MTSSerialFlowControl object and frees all related resources,
jengbrecht 36:bb6b293c7495 29 * including internal buffers.
jengbrecht 36:bb6b293c7495 30 */
jengbrecht 0:563b70517320 31 ~MTSSerialFlowControl();
jengbrecht 36:bb6b293c7495 32
jengbrecht 36:bb6b293c7495 33 /** This method is used to the set the baud rate of the serial port.
jengbrecht 36:bb6b293c7495 34 *
jengbrecht 36:bb6b293c7495 35 * @param baudrate the baudrate in bps as an int. The internal interface
jengbrecht 36:bb6b293c7495 36 * default is 9600 bps.
jengbrecht 36:bb6b293c7495 37 */
mfiore 10:2bd727a4b329 38 void baud(int baudrate);
jengbrecht 36:bb6b293c7495 39
mfiore 2:8d3ea0dfce39 40 void notifyStartSending();
mfiore 2:8d3ea0dfce39 41 void notifyStopSending();
jengbrecht 0:563b70517320 42
jengbrecht 0:563b70517320 43 private:
jengbrecht 36:bb6b293c7495 44 InterruptIn* rts; // Used to monitor the RTS line
jengbrecht 36:bb6b293c7495 45 DigitalOut* cts; // Used to control the CTS line
jengbrecht 36:bb6b293c7495 46 Serial* serial; // Internal Mbed Serial object
jengbrecht 36:bb6b293c7495 47 bool clearToSend; // flag determining if the CTS line is valid
jengbrecht 36:bb6b293c7495 48 int highThreshold; //
mfiore 2:8d3ea0dfce39 49 int lowThreshold;
jengbrecht 36:bb6b293c7495 50 char* if_name;
jengbrecht 36:bb6b293c7495 51
mfiore 2:8d3ea0dfce39 52 void startSending();
mfiore 2:8d3ea0dfce39 53 void stopSending();
mfiore 2:8d3ea0dfce39 54
mfiore 2:8d3ea0dfce39 55 virtual void handleRead();
mfiore 2:8d3ea0dfce39 56 virtual void handleWrite();
jengbrecht 0:563b70517320 57 };
mfiore 2:8d3ea0dfce39 58
mfiore 39:6e94520a3217 59 }
mfiore 39:6e94520a3217 60
jengbrecht 0:563b70517320 61 #endif /* MTSSERIALFLOWCONTROL */