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
io/MTSSerialFlowControl.h@40:14342c4de476, 2013-12-19 (annotated)
- 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?
User | Revision | Line number | New 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 */ |