Changes to allow for SPI communication. MTS_SPI_Slave.cpp replaces MTSSerial.cpp. AT_SPI_Slave.ccp replaces ATSerial.cpp.
Dependencies: MTS_SPI libmDot-dev-mbed5-deprecated
Fork of Dot-AT-Firmware by
ATSerialFlowControl.h@9:ff62b20f7000, 2016-04-04 (annotated)
- Committer:
- Mike Fiore
- Date:
- Mon Apr 04 09:00:31 2016 -0500
- Revision:
- 9:ff62b20f7000
update to version 1.0.8 of AT firmware
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Mike Fiore |
9:ff62b20f7000 | 1 | #ifndef ATSERIALFLOWCONTROL_H |
Mike Fiore |
9:ff62b20f7000 | 2 | #define ATSERIALFLOWCONTROL_H |
Mike Fiore |
9:ff62b20f7000 | 3 | |
Mike Fiore |
9:ff62b20f7000 | 4 | #include "ATSerial.h" |
Mike Fiore |
9:ff62b20f7000 | 5 | |
Mike Fiore |
9:ff62b20f7000 | 6 | namespace mts |
Mike Fiore |
9:ff62b20f7000 | 7 | { |
Mike Fiore |
9:ff62b20f7000 | 8 | |
Mike Fiore |
9:ff62b20f7000 | 9 | /** This class derives from MTSBufferedIO/ATSerial and provides a buffered wrapper to the |
Mike Fiore |
9:ff62b20f7000 | 10 | * standard mbed Serial class along with generic RTS/CTS HW flow control. Since it |
Mike Fiore |
9:ff62b20f7000 | 11 | * depends only on the mbed Serial, DigitalOut and DigitalIn classes for accessing |
Mike Fiore |
9:ff62b20f7000 | 12 | * the serial data, this class is inherently portable accross different mbed platforms |
Mike Fiore |
9:ff62b20f7000 | 13 | * and provides HW flow control even when not natively supported by the processors |
Mike Fiore |
9:ff62b20f7000 | 14 | * serial port. If HW flow control is not needed, use ATSerial instead. It should also |
Mike Fiore |
9:ff62b20f7000 | 15 | * be noted that the RTS/CTS functionality in this class is implemented as a DTE device. |
Mike Fiore |
9:ff62b20f7000 | 16 | */ |
Mike Fiore |
9:ff62b20f7000 | 17 | class ATSerialFlowControl : public ATSerial |
Mike Fiore |
9:ff62b20f7000 | 18 | { |
Mike Fiore |
9:ff62b20f7000 | 19 | public: |
Mike Fiore |
9:ff62b20f7000 | 20 | /** Creates a new ATSerialFlowControl object that can be used to talk to an mbed serial |
Mike Fiore |
9:ff62b20f7000 | 21 | * port through internal SW buffers. Note that this class also adds the ability to use |
Mike Fiore |
9:ff62b20f7000 | 22 | * RTS/CTS HW Flow Conrtol through and standard mbed DigitalIn and DigitalOut pins. |
Mike Fiore |
9:ff62b20f7000 | 23 | * The RTS and CTS functionality assumes this is a DTE device. |
Mike Fiore |
9:ff62b20f7000 | 24 | * |
Mike Fiore |
9:ff62b20f7000 | 25 | * @param TXD the transmit data pin on the desired mbed serial interface. |
Mike Fiore |
9:ff62b20f7000 | 26 | * @param RXD the receive data pin on the desired mbed serial interface. |
Mike Fiore |
9:ff62b20f7000 | 27 | * @param RTS the DigitalOut pin that RTS will be attached to. (DTE) |
Mike Fiore |
9:ff62b20f7000 | 28 | * @param CTS the DigitalIn pin that CTS will be attached to. (DTE) |
Mike Fiore |
9:ff62b20f7000 | 29 | * @param txBufferSize the size in bytes of the internal SW transmit buffer. The |
Mike Fiore |
9:ff62b20f7000 | 30 | * default is 256 bytes. |
Mike Fiore |
9:ff62b20f7000 | 31 | * @param rxBufferSize the size in bytes of the internal SW receive buffer. The |
Mike Fiore |
9:ff62b20f7000 | 32 | * default is 256 bytes. |
Mike Fiore |
9:ff62b20f7000 | 33 | */ |
Mike Fiore |
9:ff62b20f7000 | 34 | ATSerialFlowControl(PinName TXD, PinName RXD, PinName RTS, PinName CTS, int txBufSize = 256, int rxBufSize = 256); |
Mike Fiore |
9:ff62b20f7000 | 35 | |
Mike Fiore |
9:ff62b20f7000 | 36 | /** Destructs an ATSerialFlowControl object and frees all related resources. |
Mike Fiore |
9:ff62b20f7000 | 37 | */ |
Mike Fiore |
9:ff62b20f7000 | 38 | virtual ~ATSerialFlowControl(); |
Mike Fiore |
9:ff62b20f7000 | 39 | |
Mike Fiore |
9:ff62b20f7000 | 40 | //Overriden from MTSBufferedIO to support flow control correctly |
Mike Fiore |
9:ff62b20f7000 | 41 | virtual void rxClear(); |
Mike Fiore |
9:ff62b20f7000 | 42 | |
Mike Fiore |
9:ff62b20f7000 | 43 | private: |
Mike Fiore |
9:ff62b20f7000 | 44 | void notifyStartSending(); // Used to set cts start signal |
Mike Fiore |
9:ff62b20f7000 | 45 | void notifyStopSending(); // Used to set cts stop signal |
Mike Fiore |
9:ff62b20f7000 | 46 | |
Mike Fiore |
9:ff62b20f7000 | 47 | //This device acts as a DTE |
Mike Fiore |
9:ff62b20f7000 | 48 | bool rxReadyFlag; //Tracks state change for rts signaling |
Mike Fiore |
9:ff62b20f7000 | 49 | DigitalOut rts; // Used to tell DCE to send or not send data |
Mike Fiore |
9:ff62b20f7000 | 50 | DigitalIn cts; // Used to check if DCE is ready for data |
Mike Fiore |
9:ff62b20f7000 | 51 | int highThreshold; // High water mark for setting cts to stop |
Mike Fiore |
9:ff62b20f7000 | 52 | int lowThreshold; // Low water mark for setting cts to start |
Mike Fiore |
9:ff62b20f7000 | 53 | |
Mike Fiore |
9:ff62b20f7000 | 54 | virtual void handleRead(); // Method for handling data to be read |
Mike Fiore |
9:ff62b20f7000 | 55 | virtual void handleWrite(); // Method for handling data to be written |
Mike Fiore |
9:ff62b20f7000 | 56 | }; |
Mike Fiore |
9:ff62b20f7000 | 57 | |
Mike Fiore |
9:ff62b20f7000 | 58 | } |
Mike Fiore |
9:ff62b20f7000 | 59 | |
Mike Fiore |
9:ff62b20f7000 | 60 | #endif /* MTSSERIALFLOWCONTROL */ |