Zephyr API Documentation 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
shell_log_backend.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
11
12#ifndef ZEPHYR_INCLUDE_SHELL_SHELL_LOG_BACKEND_H_
13#define ZEPHYR_INCLUDE_SHELL_SHELL_LOG_BACKEND_H_
14
15#include <zephyr/kernel.h>
19#include <zephyr/sys/atomic.h>
20#ifdef __cplusplus
21extern "C" {
22#endif
23
25extern const struct log_backend_api log_backend_shell_api;
26
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,
33};
34
36struct shell_log_backend_control_block {
37 atomic_t dropped_cnt;
38 enum shell_log_backend_state state;
39};
40
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;
46 uint32_t timeout;
47 const struct mpsc_pbuf_buffer_config *mpsc_buffer_config;
48 struct mpsc_pbuf_buffer *mpsc_buffer;
49};
50
52struct shell_log_backend_msg {
53 struct log_msg *msg;
54 uint32_t timestamp;
55};
56
58
60int z_shell_log_backend_output_func(uint8_t *data, size_t length, void *ctx);
61
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,\
81 _buf, _size); \
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 = { \
86 .buf = _name##_buf, \
87 .size = ARRAY_SIZE(_name##_buf), \
88 .notify_drop = NULL, \
89 .get_wlen = log_msg_generic_get_wlen, \
90 .flags = MPSC_PBUF_MODE_OVERWRITE, \
91 }; \
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, \
100 }
101
102#define Z_SHELL_LOG_BACKEND_PTR(_name) (&_name##_log_backend)
103#else /* CONFIG_LOG */
104#define Z_SHELL_LOG_BACKEND_DEFINE(_name, _buf, _size, _queue_size, _timeout)
105#define Z_SHELL_LOG_BACKEND_PTR(_name) NULL
106#endif /* CONFIG_LOG */
107
114void z_shell_log_backend_enable(const struct shell_log_backend *backend,
115 void *ctx, uint32_t init_log_level);
116
121void z_shell_log_backend_disable(const struct shell_log_backend *backend);
122
129bool z_shell_log_backend_process(const struct shell_log_backend *backend);
130
131#ifdef __cplusplus
132}
133#endif
134
135#endif /* ZEPHYR_INCLUDE_SHELL_SHELL_LOG_BACKEND_H_ */
Header file for the Atomic operations API.
long atomic_t
Atomic integer variable.
Definition atomic_types.h:31
Public kernel APIs.
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