mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-09-16 06:41:56 +00:00
Change assertion messaged printed from printing expression to printing the line and file name. This provides more context as the same expression could be asserted upon multiple times and would then not provide enough clarity in the message. Also using a formatted string would save code space as we can use the same string for all messages instead of creating a unique one for each condition. Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
97 lines
2.6 KiB
C
97 lines
2.6 KiB
C
/** @file
|
|
* @brief Bluetooth subsystem logging helpers.
|
|
*/
|
|
|
|
/*
|
|
* Copyright (c) 2017 Nordic Semiconductor ASA
|
|
* Copyright (c) 2015-2016 Intel Corporation
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
#ifndef __BT_LOG_H
|
|
#define __BT_LOG_H
|
|
|
|
#include <linker/sections.h>
|
|
#include <offsets.h>
|
|
#include <zephyr.h>
|
|
#include <logging/log.h>
|
|
#include <sys/__assert.h>
|
|
|
|
#include <bluetooth/bluetooth.h>
|
|
#include <bluetooth/uuid.h>
|
|
#include <bluetooth/hci.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if !defined(BT_DBG_ENABLED)
|
|
#define BT_DBG_ENABLED 1
|
|
#endif
|
|
|
|
#if BT_DBG_ENABLED
|
|
#define LOG_LEVEL LOG_LEVEL_DBG
|
|
#else
|
|
#define LOG_LEVEL CONFIG_BT_LOG_LEVEL
|
|
#endif
|
|
|
|
LOG_MODULE_REGISTER(LOG_MODULE_NAME, LOG_LEVEL);
|
|
|
|
#define BT_DBG(fmt, ...) LOG_DBG(fmt, ##__VA_ARGS__)
|
|
#define BT_ERR(fmt, ...) LOG_ERR(fmt, ##__VA_ARGS__)
|
|
#define BT_WARN(fmt, ...) LOG_WRN(fmt, ##__VA_ARGS__)
|
|
#define BT_INFO(fmt, ...) LOG_INF(fmt, ##__VA_ARGS__)
|
|
|
|
#if defined(CONFIG_BT_ASSERT_VERBOSE)
|
|
#define BT_ASSERT_PRINT(test) __ASSERT_LOC(test)
|
|
#else
|
|
#define BT_ASSERT_PRINT(test)
|
|
#endif /* CONFIG_BT_ASSERT_VERBOSE */
|
|
|
|
#if defined(CONFIG_BT_ASSERT_PANIC)
|
|
#define BT_ASSERT_DIE k_panic
|
|
#else
|
|
#define BT_ASSERT_DIE k_oops
|
|
#endif /* CONFIG_BT_ASSERT_PANIC */
|
|
|
|
#if defined(CONFIG_BT_ASSERT)
|
|
#define BT_ASSERT(cond) \
|
|
do { \
|
|
if (!(cond)) { \
|
|
BT_ASSERT_PRINT(cond); \
|
|
BT_ASSERT_DIE(); \
|
|
} \
|
|
} while (0)
|
|
#else
|
|
#define BT_ASSERT(cond) __ASSERT_NO_MSG(cond)
|
|
#endif/* CONFIG_BT_ASSERT*/
|
|
|
|
#define BT_HEXDUMP_DBG(_data, _length, _str) \
|
|
LOG_HEXDUMP_DBG((const u8_t *)_data, _length, _str)
|
|
|
|
/* NOTE: These helper functions always encodes into the same buffer storage.
|
|
* It is the responsibility of the user of this function to copy the information
|
|
* in this string if needed.
|
|
*
|
|
* NOTE: These functions are not thread-safe!
|
|
*/
|
|
const char *bt_hex_real(const void *buf, size_t len);
|
|
const char *bt_addr_str_real(const bt_addr_t *addr);
|
|
const char *bt_addr_le_str_real(const bt_addr_le_t *addr);
|
|
const char *bt_uuid_str_real(const struct bt_uuid *uuid);
|
|
|
|
/* NOTE: log_strdup does not guarantee a duplication of the string.
|
|
* It is therefore still the responsibility of the user to handle the
|
|
* restrictions in the underlying function call.
|
|
*/
|
|
#define bt_hex(buf, len) log_strdup(bt_hex_real(buf, len))
|
|
#define bt_addr_str(addr) log_strdup(bt_addr_str_real(addr))
|
|
#define bt_addr_le_str(addr) log_strdup(bt_addr_le_str_real(addr))
|
|
#define bt_uuid_str(uuid) log_strdup(bt_uuid_str_real(uuid))
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __BT_LOG_H */
|