12#ifndef ZEPHYR_INCLUDE_SHELL_SHELL_LOG_BACKEND_H_
13#define ZEPHYR_INCLUDE_SHELL_SHELL_LOG_BACKEND_H_
28enum shell_log_backend_state {
29 SHELL_LOG_BACKEND_UNINIT,
30 SHELL_LOG_BACKEND_ENABLED,
31 SHELL_LOG_BACKEND_DISABLED,
32 SHELL_LOG_BACKEND_PANIC,
36struct shell_log_backend_control_block {
38 enum shell_log_backend_state
state;
42struct shell_log_backend {
43 const struct log_backend *backend;
44 const struct log_output *log_output;
45 struct shell_log_backend_control_block *control_block;
47 const struct mpsc_pbuf_buffer_config *mpsc_buffer_config;
48 struct mpsc_pbuf_buffer *mpsc_buffer;
52struct shell_log_backend_msg {
60int z_shell_log_backend_output_func(
uint8_t *
data,
size_t length,
void *ctx);
77#ifdef CONFIG_SHELL_LOG_BACKEND
78#define Z_SHELL_LOG_BACKEND_DEFINE(_name, _buf, _size, _queue_size, _timeout) \
79 LOG_BACKEND_DEFINE(_name##_backend, log_backend_shell_api, false); \
80 LOG_OUTPUT_DEFINE(_name##_log_output, z_shell_log_backend_output_func,\
82 static struct shell_log_backend_control_block _name##_control_block; \
83 static uint32_t __aligned(Z_LOG_MSG_ALIGNMENT) \
84 _name##_buf[_queue_size / sizeof(uint32_t)]; \
85 const struct mpsc_pbuf_buffer_config _name##_mpsc_buffer_config = { \
87 .size = ARRAY_SIZE(_name##_buf), \
88 .notify_drop = NULL, \
89 .get_wlen = log_msg_generic_get_wlen, \
90 .flags = MPSC_PBUF_MODE_OVERWRITE, \
92 struct mpsc_pbuf_buffer _name##_mpsc_buffer; \
93 static const struct shell_log_backend _name##_log_backend = { \
94 .backend = &_name##_backend, \
95 .log_output = &_name##_log_output, \
96 .control_block = &_name##_control_block, \
97 .timeout = _timeout, \
98 .mpsc_buffer_config = &_name##_mpsc_buffer_config, \
99 .mpsc_buffer = &_name##_mpsc_buffer, \
102#define Z_SHELL_LOG_BACKEND_PTR(_name) (&_name##_log_backend)
104#define Z_SHELL_LOG_BACKEND_DEFINE(_name, _buf, _size, _queue_size, _timeout)
105#define Z_SHELL_LOG_BACKEND_PTR(_name) NULL
114void z_shell_log_backend_enable(
const struct shell_log_backend *backend,
115 void *ctx,
uint32_t init_log_level);
121void z_shell_log_backend_disable(
const struct shell_log_backend *backend);
129bool z_shell_log_backend_process(
const struct shell_log_backend *backend);
Header file for the Atomic operations API.
long atomic_t
Atomic integer variable.
Definition atomic_types.h:31
state
Definition parser_state.h:29
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
Logger backend API.
Definition log_backend.h:63
uint8_t data[]
Definition log_msg.h:103