Files
esp-idf/components/esp_trace/include/esp_trace.h

131 lines
3.3 KiB
C

/*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
#include "esp_err.h"
#include "esp_trace_types.h"
/**
* @brief Trace session handle
*
* Opaque handle representing an active trace session.
*/
typedef struct esp_trace_handle *esp_trace_handle_t;
/**
* @brief Parameters for opening a trace session
*
* This structure configures all aspects of a trace session, including the core behavior,
* encoder (trace library), and transport (communication channel).
*/
typedef struct {
/**
* @brief Core trace system configuration (optional)
*
* Currently reserved for future use.
*/
const esp_trace_config_t *core_cfg;
/**
* @brief Encoder name (required)
*
* Must match a registered encoder name. Built-in encoders:
* - "sysview" - SEGGER SystemView protocol for FreeRTOS tracing
* - "raw" - Pass-through for raw binary data
*/
const char *encoder_name;
/**
* @brief Encoder-specific configuration (optional)
*
* If NULL, encoder uses its default configuration. The structure type
* depends on the encoder being used. See encoder-specific documentation.
*/
const void *encoder_cfg;
/**
* @brief Transport name (required)
*
* Must match a registered transport name. Built-in transports:
* - "apptrace" - Uses app_trace for JTAG or UART communication
*
*/
const char *transport_name;
/**
* @brief Transport-specific configuration (optional)
*
* If NULL, transport uses its default configuration. The structure type
* depends on the transport being used:
* - For "apptrace": `esp_apptrace_config_t*`
*
* See transport-specific documentation for details.
*/
const void *transport_cfg;
} esp_trace_open_params_t;
/**
* @brief Get trace initialization parameters for early system initialization
*
* User applications need to implement this function to provide a custom trace configuration.
* This function is called during system initialization before any other trace functions are called.
*
* @return Configuration
*/
esp_trace_open_params_t esp_trace_get_user_params(void);
/**
* @brief Get the active trace handle
*
* @return The active trace handle
*/
esp_trace_handle_t esp_trace_get_active_handle(void);
/**
* @brief Write data to the trace handle
*
* @param handle The trace handle
* @param data The data to write
* @param size The size of the data
* @param tmo The timeout in us
*
* @return ESP_OK on success, otherwise see esp_err_t
*/
esp_err_t esp_trace_write(esp_trace_handle_t handle, const void *data, size_t size, unsigned long tmo);
/**
* @brief Check if the host is connected
*
* @param handle The trace handle
*
* @return true if the host is connected, otherwise false
*/
bool esp_trace_is_host_connected(esp_trace_handle_t handle);
/**
* @brief Get the link type
*
* @param handle The trace handle
*
* @return The link type @see esp_trace_link_types_t
*/
esp_trace_link_types_t esp_trace_get_link_type(esp_trace_handle_t handle);
/**
* @brief Panic flush the trace handle. This function is called from panic handler.
*
* @param handle The trace handle
*/
void esp_trace_panic_handler(const void *info);
#ifdef __cplusplus
}
#endif