Zephyr Project API 3.7.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
tty.h File Reference
#include <sys/types.h>
#include <zephyr/types.h>
#include <zephyr/kernel.h>

Go to the source code of this file.

Data Structures

struct  tty_serial
 

Functions

int tty_init (struct tty_serial *tty, const struct device *uart_dev)
 Initialize serial port object (classically known as tty).
 
static void tty_set_rx_timeout (struct tty_serial *tty, int32_t timeout)
 Set receive timeout for tty device.
 
static void tty_set_tx_timeout (struct tty_serial *tty, int32_t timeout)
 Set transmit timeout for tty device.
 
int tty_set_rx_buf (struct tty_serial *tty, void *buf, size_t size)
 Set receive buffer for tty device.
 
int tty_set_tx_buf (struct tty_serial *tty, void *buf, size_t size)
 Set transmit buffer for tty device.
 
ssize_t tty_read (struct tty_serial *tty, void *buf, size_t size)
 Read data from a tty device.
 
ssize_t tty_write (struct tty_serial *tty, const void *buf, size_t size)
 Write data to tty device.
 

Function Documentation

◆ tty_init()

int tty_init ( struct tty_serial tty,
const struct device uart_dev 
)

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().

Parameters
ttytty device structure to initialize
uart_devunderlying UART device to use (should support interrupt-driven operation)
Returns
0 on success, error code (<0) otherwise

◆ tty_read()

ssize_t tty_read ( struct tty_serial tty,
void *  buf,
size_t  size 
)

Read data from a tty device.

Parameters
ttytty device structure
bufbuffer to read data to
sizemaximum number of bytes to read
Returns
>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.

◆ tty_set_rx_buf()

int tty_set_rx_buf ( struct tty_serial tty,
void *  buf,
size_t  size 
)

Set receive buffer for tty device.

Set receive buffer or switch to unbuffered operation for receive.

Parameters
ttytty device structure
bufbuffer, or NULL for unbuffered operation
sizebuffer buffer size, 0 for unbuffered operation
Returns
0 on success, error code (<0) otherwise: EINVAL: unsupported buffer (size)

◆ tty_set_rx_timeout()

static void tty_set_rx_timeout ( struct tty_serial tty,
int32_t  timeout 
)
inlinestatic

Set receive timeout for tty device.

Set timeout for getchar() operation. Default timeout after device initialization is SYS_FOREVER_MS.

Parameters
ttytty device structure
timeouttimeout in milliseconds, or 0, or SYS_FOREVER_MS.

◆ tty_set_tx_buf()

int tty_set_tx_buf ( struct tty_serial tty,
void *  buf,
size_t  size 
)

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(SYS_FOREVER_MS) was set.

Parameters
ttytty device structure
bufbuffer, or NULL for unbuffered operation
sizebuffer buffer size, 0 for unbuffered operation
Returns
0 on success, error code (<0) otherwise: EINVAL: unsupported buffer (size)

◆ tty_set_tx_timeout()

static void tty_set_tx_timeout ( struct tty_serial tty,
int32_t  timeout 
)
inlinestatic

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 SYS_FOREVER_MS.

Parameters
ttytty device structure
timeouttimeout in milliseconds, or 0, or SYS_FOREVER_MS.

◆ tty_write()

ssize_t tty_write ( struct tty_serial tty,
const void *  buf,
size_t  size 
)

Write data to tty device.

Parameters
ttytty device structure
bufbuffer containing data
sizemaximum number of bytes to write
Returns
=>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.