blob: a01b968a27a2da402fd8751f49e7318fd013cc5d [file] [log] [blame]
/**
* @file bt_shell_private.c
* @brief Bluetooth shell private module
*
* Provide common function which can be shared using privately inside Bluetooth shell.
*/
/*
* Copyright (c) 2024 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/shell/shell_backend.h>
#include "bt_shell_private.h"
static void wall_vfprintf(enum shell_vt100_color color, const char *fmt, va_list args)
{
int count;
const struct shell *sh;
count = shell_backend_count_get();
for (int i = 0; i < count; i++) {
va_list args_copy;
va_copy(args_copy, args); /* Create a copy of 'args' to safely reuse */
sh = shell_backend_get(i);
shell_vfprintf(sh, color, fmt, args_copy);
va_end(args_copy); /* Clean up to prevent resource leaks */
}
}
void bt_shell_hexdump(const uint8_t *data, size_t len)
{
int count;
const struct shell *sh;
count = shell_backend_count_get();
for (int i = 0; i < count; i++) {
sh = shell_backend_get(i);
shell_hexdump(sh, data, len);
}
}
void bt_shell_fprintf(enum shell_vt100_color color,
const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
wall_vfprintf(color, fmt, args);
va_end(args);
}
void bt_shell_fprintf_info(const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
wall_vfprintf(SHELL_INFO, fmt, args);
va_end(args);
}
void bt_shell_fprintf_print(const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
wall_vfprintf(SHELL_NORMAL, fmt, args);
va_end(args);
}
void bt_shell_fprintf_warn(const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
wall_vfprintf(SHELL_WARNING, fmt, args);
va_end(args);
}
void bt_shell_fprintf_error(const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
wall_vfprintf(SHELL_ERROR, fmt, args);
va_end(args);
}