13#ifndef ZEPHYR_INCLUDE_SHELL_SHELL_UART_H_
14#define ZEPHYR_INCLUDE_SHELL_SHELL_UART_H_
27#ifndef CONFIG_SHELL_BACKEND_SERIAL_RX_RING_BUFFER_SIZE
28#define CONFIG_SHELL_BACKEND_SERIAL_RX_RING_BUFFER_SIZE 0
31#ifndef CONFIG_SHELL_BACKEND_SERIAL_TX_RING_BUFFER_SIZE
32#define CONFIG_SHELL_BACKEND_SERIAL_TX_RING_BUFFER_SIZE 0
35#ifndef CONFIG_SHELL_BACKEND_SERIAL_ASYNC_RX_BUFFER_COUNT
36#define CONFIG_SHELL_BACKEND_SERIAL_ASYNC_RX_BUFFER_COUNT 0
39#ifndef CONFIG_SHELL_BACKEND_SERIAL_ASYNC_RX_BUFFER_SIZE
40#define CONFIG_SHELL_BACKEND_SERIAL_ASYNC_RX_BUFFER_SIZE 0
43#define ASYNC_RX_BUF_SIZE (CONFIG_SHELL_BACKEND_SERIAL_ASYNC_RX_BUFFER_COUNT * \
44 (CONFIG_SHELL_BACKEND_SERIAL_ASYNC_RX_BUFFER_SIZE + \
45 UART_ASYNC_RX_BUF_OVERHEAD))
47struct shell_uart_common {
48 const struct device *dev;
52#ifdef CONFIG_MCUMGR_TRANSPORT_SHELL
53 struct smp_shell_data smp;
57struct shell_uart_int_driven {
58 struct shell_uart_common common;
59 struct ring_buf tx_ringbuf;
60 struct ring_buf rx_ringbuf;
61 uint8_t tx_buf[CONFIG_SHELL_BACKEND_SERIAL_TX_RING_BUFFER_SIZE];
62 uint8_t rx_buf[CONFIG_SHELL_BACKEND_SERIAL_RX_RING_BUFFER_SIZE];
63 struct k_timer dtr_timer;
67struct shell_uart_async {
68 struct shell_uart_common common;
70 struct uart_async_rx async_rx;
71 struct uart_async_rx_config async_rx_config;
73 uint8_t rx_data[ASYNC_RX_BUF_SIZE];
76struct shell_uart_polling {
77 struct shell_uart_common common;
78 struct ring_buf rx_ringbuf;
79 uint8_t rx_buf[CONFIG_SHELL_BACKEND_SERIAL_RX_RING_BUFFER_SIZE];
80 struct k_timer rx_timer;
83#ifdef CONFIG_SHELL_BACKEND_SERIAL_API_POLLING
84#define SHELL_UART_STRUCT struct shell_uart_polling
85#elif defined(CONFIG_SHELL_BACKEND_SERIAL_API_ASYNC)
86#define SHELL_UART_STRUCT struct shell_uart_async
88#define SHELL_UART_STRUCT struct shell_uart_int_driven
105#define SHELL_UART_DEFINE(_name, ...) \
106 static SHELL_UART_STRUCT _name##_shell_uart; \
107 struct shell_transport _name = { \
108 .api = &shell_uart_transport_api, \
109 .ctx = (struct shell_telnet *)&_name##_shell_uart, \
long atomic_t
Atomic integer variable.
Definition atomic_types.h:31
void(* shell_transport_handler_t)(enum shell_transport_evt evt, void *context)
Shell transport event handler callback.
Definition shell.h:831
struct smp_shell_data * shell_uart_smp_shell_data_get_ptr(void)
This function provides pointer to the smp shell data of the UART shell transport.
const struct shell * shell_backend_uart_get_ptr(void)
This function provides pointer to the shell UART backend instance.
Header file for the shell subsystem.
Shell transport for the mcumgr SMP protocol.
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
Unified shell transport interface.
Definition shell.h:863
Shell instance internals.
Definition shell.h:1128
Data used by SMP shell.
Definition smp_shell.h:32
Helper module for receiving using UART Asynchronous API.