| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- /* mbed Microcontroller Library - SerialHalfDuplex
- * Copyright (c) 2010-2011 ARM Limited. All rights reserved.
- */
- #ifndef MBED_SERIALHALFDUPLEX_H
- #define MBED_SERIALHALFDUPLEX_H
- #include "platform.h"
- #if DEVICE_SERIAL
- #include "Serial.h"
- #include "gpio_api.h"
- namespace mbed {
- /** A serial port (UART) for communication with other devices using
- * Half-Duplex, allowing transmit and receive on a single
- * shared transmit and receive line. Only one end should be transmitting
- * at a time.
- *
- * Both the tx and rx pin should be defined, and wired together.
- * This is in addition to them being wired to the other serial
- * device to allow both read and write functions to operate.
- *
- * For Simplex and Full-Duplex Serial communication, see Serial()
- *
- * Example:
- * @code
- * // Send a byte to a second HalfDuplex device, and read the response
- *
- * #include "mbed.h"
- *
- * // p9 and p10 should be wired together to form "a"
- * // p28 and p27 should be wired together to form "b"
- * // p9/p10 should be wired to p28/p27 as the Half Duplex connection
- *
- * SerialHalfDuplex a(p9, p10);
- * SerialHalfDuplex b(p28, p27);
- *
- * void b_rx() { // second device response
- * b.putc(b.getc() + 4);
- * }
- *
- * int main() {
- * b.attach(&b_rx);
- * for (int c = 'A'; c < 'Z'; c++) {
- * a.putc(c);
- * printf("sent [%c]\n", c);
- * wait(0.5); // b should respond
- * if (a.readable()) {
- * printf("received [%c]\n", a.getc());
- * }
- * }
- * }
- * @endcode
- */
- class SerialHalfDuplex : public Serial {
- public:
- /** Create a half-duplex serial port, connected to the specified transmit
- * and receive pins.
- *
- * These pins should be wired together, as well as to the target device
- *
- * @param tx Transmit pin
- * @param rx Receive pin
- */
- SerialHalfDuplex(PinName tx, PinName rx);
- protected:
- gpio_object gpio;
- virtual int _putc(int c);
- virtual int _getc(void);
- }; // End class SerialHalfDuplex
- } // End namespace
- #endif
- #endif
|