usb: cdc_acm: disable logging if used for shell with logging

This prevents recursive logging loop when USB CDC ACM is used for shell
with logging.

Change affects both USB stacks.

Signed-off-by: Xudong Zheng <7pkvm5aw@slicealias.com>
This commit is contained in:
Xudong Zheng 2024-09-15 12:46:48 -04:00 committed by Fabio Baltieri
commit e8c4867806
2 changed files with 13 additions and 9 deletions

View file

@ -56,15 +56,17 @@
/* definitions */
#include <zephyr/logging/log.h>
#if DT_NODE_HAS_COMPAT(DT_CHOSEN(zephyr_console), zephyr_cdc_acm_uart) \
&& defined(CONFIG_LOG_BACKEND_UART) \
&& defined(CONFIG_USB_CDC_ACM_LOG_LEVEL) \
&& CONFIG_USB_CDC_ACM_LOG_LEVEL != LOG_LEVEL_NONE
/* Prevent endless recursive logging loop and warn user about it */
#if defined(CONFIG_USB_CDC_ACM_LOG_LEVEL) && CONFIG_USB_CDC_ACM_LOG_LEVEL != LOG_LEVEL_NONE
#define CHOSEN_CONSOLE DT_NODE_HAS_COMPAT(DT_CHOSEN(zephyr_console), zephyr_cdc_acm_uart)
#define CHOSEN_SHELL DT_NODE_HAS_COMPAT(DT_CHOSEN(zephyr_shell_uart), zephyr_cdc_acm_uart)
#if (CHOSEN_CONSOLE && defined(CONFIG_LOG_BACKEND_UART)) || \
(CHOSEN_SHELL && defined(CONFIG_SHELL_LOG_BACKEND))
#warning "USB_CDC_ACM_LOG_LEVEL forced to LOG_LEVEL_NONE"
#undef CONFIG_USB_CDC_ACM_LOG_LEVEL
#define CONFIG_USB_CDC_ACM_LOG_LEVEL LOG_LEVEL_NONE
#endif
#endif
LOG_MODULE_REGISTER(usb_cdc_acm, CONFIG_USB_CDC_ACM_LOG_LEVEL);
/* 115200bps, no parity, 1 stop bit, 8bit char */

View file

@ -21,15 +21,17 @@
#include "usbd_msg.h"
#include <zephyr/logging/log.h>
#if DT_NODE_HAS_COMPAT(DT_CHOSEN(zephyr_console), zephyr_cdc_acm_uart) \
&& defined(CONFIG_LOG_BACKEND_UART) \
&& defined(CONFIG_USBD_CDC_ACM_LOG_LEVEL) \
&& CONFIG_USBD_CDC_ACM_LOG_LEVEL != LOG_LEVEL_NONE
/* Prevent endless recursive logging loop and warn user about it */
#warning "USB_CDC_ACM_LOG_LEVEL forced to LOG_LEVEL_NONE"
#if defined(CONFIG_USBD_CDC_ACM_LOG_LEVEL) && CONFIG_USBD_CDC_ACM_LOG_LEVEL != LOG_LEVEL_NONE
#define CHOSEN_CONSOLE DT_NODE_HAS_COMPAT(DT_CHOSEN(zephyr_console), zephyr_cdc_acm_uart)
#define CHOSEN_SHELL DT_NODE_HAS_COMPAT(DT_CHOSEN(zephyr_shell_uart), zephyr_cdc_acm_uart)
#if (CHOSEN_CONSOLE && defined(CONFIG_LOG_BACKEND_UART)) || \
(CHOSEN_SHELL && defined(CONFIG_SHELL_LOG_BACKEND))
#warning "USBD_CDC_ACM_LOG_LEVEL forced to LOG_LEVEL_NONE"
#undef CONFIG_USBD_CDC_ACM_LOG_LEVEL
#define CONFIG_USBD_CDC_ACM_LOG_LEVEL LOG_LEVEL_NONE
#endif
#endif
LOG_MODULE_REGISTER(usbd_cdc_acm, CONFIG_USBD_CDC_ACM_LOG_LEVEL);
UDC_BUF_POOL_DEFINE(cdc_acm_ep_pool,