with 36errors
Dependencies: MTS-Serial libxDot-dev-mbed5-deprecated
Fork of Dot-AT-Firmware by
Diff: ATSerialFlowControl.h
- Revision:
- 9:ff62b20f7000
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ATSerialFlowControl.h Mon Apr 04 09:00:31 2016 -0500
@@ -0,0 +1,60 @@
+#ifndef ATSERIALFLOWCONTROL_H
+#define ATSERIALFLOWCONTROL_H
+
+#include "ATSerial.h"
+
+namespace mts
+{
+
+/** This class derives from MTSBufferedIO/ATSerial and provides a buffered wrapper to the
+* standard mbed Serial class along with generic RTS/CTS HW flow control. Since it
+* depends only on the mbed Serial, DigitalOut and DigitalIn classes for accessing
+* the serial data, this class is inherently portable accross different mbed platforms
+* and provides HW flow control even when not natively supported by the processors
+* serial port. If HW flow control is not needed, use ATSerial instead. It should also
+* be noted that the RTS/CTS functionality in this class is implemented as a DTE device.
+*/
+class ATSerialFlowControl : public ATSerial
+{
+public:
+ /** Creates a new ATSerialFlowControl object that can be used to talk to an mbed serial
+ * port through internal SW buffers. Note that this class also adds the ability to use
+ * RTS/CTS HW Flow Conrtol through and standard mbed DigitalIn and DigitalOut pins.
+ * The RTS and CTS functionality assumes this is a DTE device.
+ *
+ * @param TXD the transmit data pin on the desired mbed serial interface.
+ * @param RXD the receive data pin on the desired mbed serial interface.
+ * @param RTS the DigitalOut pin that RTS will be attached to. (DTE)
+ * @param CTS the DigitalIn pin that CTS will be attached to. (DTE)
+ * @param txBufferSize the size in bytes of the internal SW transmit buffer. The
+ * default is 256 bytes.
+ * @param rxBufferSize the size in bytes of the internal SW receive buffer. The
+ * default is 256 bytes.
+ */
+ ATSerialFlowControl(PinName TXD, PinName RXD, PinName RTS, PinName CTS, int txBufSize = 256, int rxBufSize = 256);
+
+ /** Destructs an ATSerialFlowControl object and frees all related resources.
+ */
+ virtual ~ATSerialFlowControl();
+
+ //Overriden from MTSBufferedIO to support flow control correctly
+ virtual void rxClear();
+
+private:
+ void notifyStartSending(); // Used to set cts start signal
+ void notifyStopSending(); // Used to set cts stop signal
+
+ //This device acts as a DTE
+ bool rxReadyFlag; //Tracks state change for rts signaling
+ DigitalOut rts; // Used to tell DCE to send or not send data
+ DigitalIn cts; // Used to check if DCE is ready for data
+ int highThreshold; // High water mark for setting cts to stop
+ int lowThreshold; // Low water mark for setting cts to start
+
+ virtual void handleRead(); // Method for handling data to be read
+ virtual void handleWrite(); // Method for handling data to be written
+};
+
+}
+
+#endif /* MTSSERIALFLOWCONTROL */
