diff options
Diffstat (limited to 'tmk_core/tool/mbed/mbed-sdk/libraries/tests/libs/SerialHalfDuplex/SerialHalfDuplex.h')
-rw-r--r-- | tmk_core/tool/mbed/mbed-sdk/libraries/tests/libs/SerialHalfDuplex/SerialHalfDuplex.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/tmk_core/tool/mbed/mbed-sdk/libraries/tests/libs/SerialHalfDuplex/SerialHalfDuplex.h b/tmk_core/tool/mbed/mbed-sdk/libraries/tests/libs/SerialHalfDuplex/SerialHalfDuplex.h new file mode 100644 index 0000000000..0ba13d38e5 --- /dev/null +++ b/tmk_core/tool/mbed/mbed-sdk/libraries/tests/libs/SerialHalfDuplex/SerialHalfDuplex.h @@ -0,0 +1,82 @@ +/* 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 |