Zephyr API Documentation 4.4.0-rc2
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
tty.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2018 Linaro Limited
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_INCLUDE_CONSOLE_TTY_H_
8#define ZEPHYR_INCLUDE_CONSOLE_TTY_H_
9
10#include <sys/types.h>
11#include <zephyr/types.h>
12#include <zephyr/kernel.h>
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
21struct tty_serial {
23 const struct device *uart_dev;
24
25 struct k_event signal_event;
26
27 struct ring_buf rx_buf;
28 k_timeout_t rx_timeout;
29
30 struct ring_buf tx_buf;
31 k_timeout_t tx_timeout;
32 atomic_t tx_busy;
34};
35
54int tty_init(struct tty_serial *tty, const struct device *uart_dev);
55
65static inline void tty_set_rx_timeout(struct tty_serial *tty, int32_t timeout)
66{
67 tty->rx_timeout = SYS_TIMEOUT_MS(timeout);
68}
69
79static inline void tty_set_tx_timeout(struct tty_serial *tty, int32_t timeout)
80{
81 tty->tx_timeout = SYS_TIMEOUT_MS(timeout);
82}
83
95int tty_set_rx_buf(struct tty_serial *tty, void *buf, size_t size);
96
110int tty_set_tx_buf(struct tty_serial *tty, void *buf, size_t size);
111
123ssize_t tty_read(struct tty_serial *tty, void *buf, size_t size);
124
135ssize_t tty_write(struct tty_serial *tty, const void *buf, size_t size);
136
137#ifdef __cplusplus
138}
139#endif
140
141#endif /* ZEPHYR_INCLUDE_CONSOLE_TTY_H_ */
long atomic_t
Definition atomic_types.h:15
static void tty_set_rx_timeout(struct tty_serial *tty, int32_t timeout)
Set receive timeout for tty device.
Definition tty.h:65
static void tty_set_tx_timeout(struct tty_serial *tty, int32_t timeout)
Set transmit timeout for tty device.
Definition tty.h:79
int tty_init(struct tty_serial *tty, const struct device *uart_dev)
Initialize serial port object (classically known as tty).
ssize_t tty_read(struct tty_serial *tty, void *buf, size_t size)
Read data from a tty device.
int tty_set_rx_buf(struct tty_serial *tty, void *buf, size_t size)
Set receive buffer for tty device.
ssize_t tty_write(struct tty_serial *tty, const void *buf, size_t size)
Write data to tty device.
int tty_set_tx_buf(struct tty_serial *tty, void *buf, size_t size)
Set transmit buffer for tty device.
#define SYS_TIMEOUT_MS(ms)
System-wide macro to convert milliseconds to kernel timeouts.
Definition time_units.h:50
Public kernel APIs.
__SIZE_TYPE__ ssize_t
Definition types.h:28
__INT32_TYPE__ int32_t
Definition stdint.h:74
Runtime device structure (in ROM) per driver instance.
Definition device.h:513
Event Structure.
Definition kernel.h:2651
Kernel timeout type.
Definition clock.h:65
A structure to represent a ring buffer.
Definition ring_buffer.h:50
serial port object (classically known as tty).
Definition tty.h:21