mirror of
https://github.com/espressif/esp-idf.git
synced 2025-12-26 13:12:21 +00:00
131 lines
3.3 KiB
C
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
|