From 52b3d2b671d29eaac2b0f2ffe4fbaa5d3c9699ca Mon Sep 17 00:00:00 2001 From: Anas Nashif Date: Tue, 25 Jun 2019 12:08:50 -0400 Subject: [PATCH] cleanup: include/: move tty.h to console/tty.h move tty.h to console/tty.h and create a shim for backward-compatibility. No functional changes to the headers. A warning in the shim can be controlled with CONFIG_COMPAT_INCLUDES. Related to #16539 Signed-off-by: Anas Nashif --- include/console/tty.h | 139 +++++++++++++++++++++++++++++++++++++++ include/tty.h | 132 ++----------------------------------- subsys/console/getchar.c | 2 +- subsys/console/tty.c | 2 +- 4 files changed, 145 insertions(+), 130 deletions(-) create mode 100644 include/console/tty.h diff --git a/include/console/tty.h b/include/console/tty.h new file mode 100644 index 00000000000..40c2d540dda --- /dev/null +++ b/include/console/tty.h @@ -0,0 +1,139 @@ +/* + * Copyright (c) 2018 Linaro Limited + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_CONSOLE_TTY_H_ +#define ZEPHYR_INCLUDE_CONSOLE_TTY_H_ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct tty_serial { + struct device *uart_dev; + + struct k_sem rx_sem; + u8_t *rx_ringbuf; + u32_t rx_ringbuf_sz; + u16_t rx_get, rx_put; + s32_t rx_timeout; + + struct k_sem tx_sem; + u8_t *tx_ringbuf; + u32_t tx_ringbuf_sz; + u16_t tx_get, tx_put; + s32_t tx_timeout; +}; + +/** + * @brief Initialize serial port object (classically known as tty). + * + * "tty" device provides support for buffered, interrupt-driven, + * timeout-controlled access to an underlying UART device. For + * completeness, it also support non-interrupt-driven, busy-polling + * access mode. After initialization, tty is in the "most conservative" + * unbuffered mode with infinite timeouts (this is guaranteed to work + * on any hardware). Users should configure buffers and timeouts as + * they need using functions tty_set_rx_buf(), tty_set_tx_buf(), + * tty_set_rx_timeout(), tty_set_tx_timeout(). + * + * @param tty tty device structure to initialize + * @param uart_dev underlying UART device to use (should support + * interrupt-driven operation) + * + * @return 0 on success, error code (<0) otherwise + */ +int tty_init(struct tty_serial *tty, struct device *uart_dev); + +/** + * @brief Set receive timeout for tty device. + * + * Set timeout for getchar() operation. Default timeout after + * device initialization is K_FOREVER. + * + * @param tty tty device structure + * @param timeout timeout in milliseconds, or K_FOREVER, or K_NO_WAIT + */ +static inline void tty_set_rx_timeout(struct tty_serial *tty, s32_t timeout) +{ + tty->rx_timeout = timeout; +} + +/** + * @brief Set transmit timeout for tty device. + * + * Set timeout for putchar() operation, for a case when output buffer is full. + * Default timeout after device initialization is K_FOREVER. + * + * @param tty tty device structure + * @param timeout timeout in milliseconds, or K_FOREVER, or K_NO_WAIT + */ +static inline void tty_set_tx_timeout(struct tty_serial *tty, s32_t timeout) +{ + tty->tx_timeout = timeout; +} + +/** + * @brief Set receive buffer for tty device. + * + * Set receive buffer or switch to unbuffered operation for receive. + * + * @param tty tty device structure + * @param buf buffer, or NULL for unbuffered operation + * @param size buffer buffer size, 0 for unbuffered operation + * @return 0 on success, error code (<0) otherwise: + * EINVAL: unsupported buffer (size) + */ +int tty_set_rx_buf(struct tty_serial *tty, void *buf, size_t size); + +/** + * @brief Set transmit buffer for tty device. + * + * Set transmit buffer or switch to unbuffered operation for transmit. + * Note that unbuffered mode is implicitly blocking, i.e. behaves as + * if tty_set_tx_timeout(K_FOREVER) was set. + * + * @param tty tty device structure + * @param buf buffer, or NULL for unbuffered operation + * @param size buffer buffer size, 0 for unbuffered operation + * @return 0 on success, error code (<0) otherwise: + * EINVAL: unsupported buffer (size) + */ +int tty_set_tx_buf(struct tty_serial *tty, void *buf, size_t size); + +/** + * @brief Read data from a tty device. + * + * @param tty tty device structure + * @param buf buffer to read data to + * @param size maximum number of bytes to read + * @return >0, number of actually read bytes (can be less than size param) + * =0, for EOF-like condition (e.g., break signaled) + * <0, in case of error (e.g. -EAGAIN if timeout expired). errno + * variable is also set. + */ +ssize_t tty_read(struct tty_serial *tty, void *buf, size_t size); + +/** + * @brief Write data to tty device. + * + * @param tty tty device structure + * @param buf buffer containing data + * @param size maximum number of bytes to write + * @return =>0, number of actually written bytes (can be less than size param) + * <0, in case of error (e.g. -EAGAIN if timeout expired). errno + * variable is also set. + */ +ssize_t tty_write(struct tty_serial *tty, const void *buf, size_t size); + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_CONSOLE_TTY_H_ */ diff --git a/include/tty.h b/include/tty.h index 942c4c92f68..7962dfdedbc 100644 --- a/include/tty.h +++ b/include/tty.h @@ -1,139 +1,15 @@ /* - * Copyright (c) 2018 Linaro Limited + * Copyright (c) 2019 Intel Corporation * * SPDX-License-Identifier: Apache-2.0 */ - #ifndef ZEPHYR_INCLUDE_TTY_H_ #define ZEPHYR_INCLUDE_TTY_H_ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { +#ifndef CONFIG_COMPAT_INCLUDES +#warning "This header file has moved, include instead." #endif -struct tty_serial { - struct device *uart_dev; - - struct k_sem rx_sem; - u8_t *rx_ringbuf; - u32_t rx_ringbuf_sz; - u16_t rx_get, rx_put; - s32_t rx_timeout; - - struct k_sem tx_sem; - u8_t *tx_ringbuf; - u32_t tx_ringbuf_sz; - u16_t tx_get, tx_put; - s32_t tx_timeout; -}; - -/** - * @brief Initialize serial port object (classically known as tty). - * - * "tty" device provides support for buffered, interrupt-driven, - * timeout-controlled access to an underlying UART device. For - * completeness, it also support non-interrupt-driven, busy-polling - * access mode. After initialization, tty is in the "most conservative" - * unbuffered mode with infinite timeouts (this is guaranteed to work - * on any hardware). Users should configure buffers and timeouts as - * they need using functions tty_set_rx_buf(), tty_set_tx_buf(), - * tty_set_rx_timeout(), tty_set_tx_timeout(). - * - * @param tty tty device structure to initialize - * @param uart_dev underlying UART device to use (should support - * interrupt-driven operation) - * - * @return 0 on success, error code (<0) otherwise - */ -int tty_init(struct tty_serial *tty, struct device *uart_dev); - -/** - * @brief Set receive timeout for tty device. - * - * Set timeout for getchar() operation. Default timeout after - * device initialization is K_FOREVER. - * - * @param tty tty device structure - * @param timeout timeout in milliseconds, or K_FOREVER, or K_NO_WAIT - */ -static inline void tty_set_rx_timeout(struct tty_serial *tty, s32_t timeout) -{ - tty->rx_timeout = timeout; -} - -/** - * @brief Set transmit timeout for tty device. - * - * Set timeout for putchar() operation, for a case when output buffer is full. - * Default timeout after device initialization is K_FOREVER. - * - * @param tty tty device structure - * @param timeout timeout in milliseconds, or K_FOREVER, or K_NO_WAIT - */ -static inline void tty_set_tx_timeout(struct tty_serial *tty, s32_t timeout) -{ - tty->tx_timeout = timeout; -} - -/** - * @brief Set receive buffer for tty device. - * - * Set receive buffer or switch to unbuffered operation for receive. - * - * @param tty tty device structure - * @param buf buffer, or NULL for unbuffered operation - * @param size buffer buffer size, 0 for unbuffered operation - * @return 0 on success, error code (<0) otherwise: - * EINVAL: unsupported buffer (size) - */ -int tty_set_rx_buf(struct tty_serial *tty, void *buf, size_t size); - -/** - * @brief Set transmit buffer for tty device. - * - * Set transmit buffer or switch to unbuffered operation for transmit. - * Note that unbuffered mode is implicitly blocking, i.e. behaves as - * if tty_set_tx_timeout(K_FOREVER) was set. - * - * @param tty tty device structure - * @param buf buffer, or NULL for unbuffered operation - * @param size buffer buffer size, 0 for unbuffered operation - * @return 0 on success, error code (<0) otherwise: - * EINVAL: unsupported buffer (size) - */ -int tty_set_tx_buf(struct tty_serial *tty, void *buf, size_t size); - -/** - * @brief Read data from a tty device. - * - * @param tty tty device structure - * @param buf buffer to read data to - * @param size maximum number of bytes to read - * @return >0, number of actually read bytes (can be less than size param) - * =0, for EOF-like condition (e.g., break signaled) - * <0, in case of error (e.g. -EAGAIN if timeout expired). errno - * variable is also set. - */ -ssize_t tty_read(struct tty_serial *tty, void *buf, size_t size); - -/** - * @brief Write data to tty device. - * - * @param tty tty device structure - * @param buf buffer containing data - * @param size maximum number of bytes to write - * @return =>0, number of actually written bytes (can be less than size param) - * <0, in case of error (e.g. -EAGAIN if timeout expired). errno - * variable is also set. - */ -ssize_t tty_write(struct tty_serial *tty, const void *buf, size_t size); - -#ifdef __cplusplus -} -#endif +#include #endif /* ZEPHYR_INCLUDE_TTY_H_ */ diff --git a/subsys/console/getchar.c b/subsys/console/getchar.c index cc10a81f348..7d805556d38 100644 --- a/subsys/console/getchar.c +++ b/subsys/console/getchar.c @@ -7,7 +7,7 @@ #include #include #include -#include +#include static struct tty_serial console_serial; diff --git a/subsys/console/tty.c b/subsys/console/tty.c index 5f1767c76f7..e8b92aa8f37 100644 --- a/subsys/console/tty.c +++ b/subsys/console/tty.c @@ -7,7 +7,7 @@ #include #include #include -#include +#include static int tty_irq_input_hook(struct tty_serial *tty, u8_t c); static int tty_putchar(struct tty_serial *tty, u8_t c);