/* * Copyright (c) 2019 Intel corporation * * SPDX-License-Identifier: Apache-2.0 */ #ifndef ZEPHYR_INCLUDE_TRACING_TRACING_FORMAT_H #define ZEPHYR_INCLUDE_TRACING_TRACING_FORMAT_H #include #ifdef __cplusplus extern "C" { #endif /** * @brief A structure to represent tracing data format. */ typedef struct tracing_data { uint8_t *data; uint32_t length; } __packed tracing_data_t; /** * @brief Macro to trace a message in string format. */ #define TRACING_STRING(fmt, ...) \ do { \ tracing_format_string(fmt, ##__VA_ARGS__); \ } while (false) /** * @brief Macro to format data to tracing data format. */ #define TRACING_FORMAT_DATA(x) \ ((struct tracing_data){.data = (uint8_t *)&(x), .length = sizeof((x))}) /** * @brief Macro to trace a message in tracing data format. * * All the parameters should be struct tracing_data. */ #define TRACING_DATA(...) \ do { \ struct tracing_data arg[] = {__VA_ARGS__}; \ \ tracing_format_data(arg, sizeof(arg) / \ sizeof(struct tracing_data)); \ } while (false) /** * @brief Tracing a message in string format. * * @param str String to format. * @param ... Variable length arguments. */ void tracing_format_string(const char *str, ...); /** * @brief Tracing a message in raw data format. * * @param data Raw data to be traced. * @param length Raw data length. */ void tracing_format_raw_data(uint8_t *data, uint32_t length); /** * @brief Tracing a message in tracing data format. * * @param tracing_data_array Tracing_data format data array to be traced. * @param count Tracing_data array data count. */ void tracing_format_data(tracing_data_t *tracing_data_array, uint32_t count); #ifdef __cplusplus } #endif #endif