Zephyr API
4.4.99
A Scalable Open Source RTOS
Toggle main menu visibility
Loading...
Searching...
No Matches
shell_uart.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2018 Nordic Semiconductor ASA
3
*
4
* SPDX-License-Identifier: Apache-2.0
5
*/
6
12
13
#ifndef ZEPHYR_INCLUDE_SHELL_SHELL_UART_H_
14
#define ZEPHYR_INCLUDE_SHELL_SHELL_UART_H_
15
16
#include <
zephyr/drivers/serial/uart_async_rx.h
>
17
#include <
zephyr/mgmt/mcumgr/transport/smp_shell.h
>
18
#include <
zephyr/shell/shell.h
>
19
20
#ifdef __cplusplus
21
extern
"C"
{
22
#endif
23
25
extern
const
struct
shell_transport_api
shell_uart_transport_api;
26
27
#ifndef CONFIG_SHELL_BACKEND_SERIAL_RX_RING_BUFFER_SIZE
28
#define CONFIG_SHELL_BACKEND_SERIAL_RX_RING_BUFFER_SIZE 0
29
#endif
30
31
#ifndef CONFIG_SHELL_BACKEND_SERIAL_TX_RING_BUFFER_SIZE
32
#define CONFIG_SHELL_BACKEND_SERIAL_TX_RING_BUFFER_SIZE 0
33
#endif
34
35
#ifndef CONFIG_SHELL_BACKEND_SERIAL_ASYNC_RX_BUFFER_COUNT
36
#define CONFIG_SHELL_BACKEND_SERIAL_ASYNC_RX_BUFFER_COUNT 0
37
#endif
38
39
#ifndef CONFIG_SHELL_BACKEND_SERIAL_ASYNC_RX_BUFFER_SIZE
40
#define CONFIG_SHELL_BACKEND_SERIAL_ASYNC_RX_BUFFER_SIZE 0
41
#endif
42
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))
46
47
struct
shell_uart_common {
48
const
struct
device *dev;
49
shell_transport_handler_t
handler;
50
void
*context;
51
bool
blocking_tx;
52
#ifdef CONFIG_MCUMGR_TRANSPORT_SHELL
53
struct
smp_shell_data smp;
54
#endif
/* CONFIG_MCUMGR_TRANSPORT_SHELL */
55
};
56
57
struct
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;
64
atomic_t
tx_busy;
65
};
66
67
struct
shell_uart_async {
68
struct
shell_uart_common common;
69
struct
k_sem tx_sem;
70
struct
uart_async_rx async_rx;
71
struct
uart_async_rx_config async_rx_config;
72
atomic_t
pending_rx_req;
73
uint8_t
rx_data[ASYNC_RX_BUF_SIZE];
74
};
75
76
struct
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;
81
};
82
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
87
#else
88
#define SHELL_UART_STRUCT struct shell_uart_int_driven
89
#endif
91
98
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, \
110
}
111
120
const
struct
shell
*
shell_backend_uart_get_ptr
(
void
);
121
127
struct
smp_shell_data
*
shell_uart_smp_shell_data_get_ptr
(
void
);
128
130
131
#ifdef __cplusplus
132
}
133
#endif
134
135
#endif
/* ZEPHYR_INCLUDE_SHELL_SHELL_UART_H_ */
atomic_t
long atomic_t
Atomic integer variable.
Definition
atomic_types.h:31
shell_transport_handler_t
void(* shell_transport_handler_t)(enum shell_transport_evt evt, void *context)
Shell transport event handler callback.
Definition
shell.h:831
shell_uart_smp_shell_data_get_ptr
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.
shell_backend_uart_get_ptr
const struct shell * shell_backend_uart_get_ptr(void)
This function provides pointer to the shell UART backend instance.
shell.h
Header file for the shell subsystem.
smp_shell.h
Shell transport for the mcumgr SMP protocol.
uint8_t
__UINT8_TYPE__ uint8_t
Definition
stdint.h:88
shell_transport_api
Unified shell transport interface.
Definition
shell.h:863
shell
Shell instance internals.
Definition
shell.h:1129
smp_shell_data
Data used by SMP shell.
Definition
smp_shell.h:32
uart_async_rx.h
Helper module for receiving using UART Asynchronous API.
zephyr
shell
shell_uart.h
Generated on
for Zephyr API by
1.17.0