1 /* 2 * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 #pragma once 7 8 #include <stdint.h> 9 #include <stdbool.h> 10 #include "esp_err.h" 11 12 #ifdef __cplusplus 13 extern "C" { 14 #endif 15 16 typedef struct esp_etm_event_t esp_etm_event_t; 17 typedef struct esp_etm_task_t esp_etm_task_t; 18 19 /** 20 * @brief List the peripherals that can trigger ETM task/event 21 */ 22 typedef enum { 23 ETM_TRIG_PERIPH_GPIO, /*!< ETM trigger source: GPIO */ 24 ETM_TRIG_PERIPH_GDMA, /*!< ETM trigger source: GDMA */ 25 ETM_TRIG_PERIPH_GPTIMER, /*!< ETM trigger source: GPTimer */ 26 ETM_TRIG_PERIPH_SYSTIMER, /*!< ETM trigger source: Systimer */ 27 } etm_trigger_peripheral_t; 28 29 /** 30 * @brief ETM event interface definition 31 */ 32 struct esp_etm_event_t { 33 /** 34 * @brief Unique event ID 35 */ 36 uint32_t event_id; 37 38 /** 39 * @brief ETM trigger peripheral 40 */ 41 etm_trigger_peripheral_t trig_periph; 42 43 /** 44 * @brief Resource destroy 45 */ 46 esp_err_t (*del)(esp_etm_event_t *event); 47 }; 48 49 /** 50 * @brief ETM task interface definition 51 */ 52 struct esp_etm_task_t { 53 /** 54 * @brief Unique task ID 55 */ 56 uint32_t task_id; 57 58 /** 59 * @brief ETM trigger peripheral 60 */ 61 etm_trigger_peripheral_t trig_periph; 62 63 /** 64 * @brief Resource destroy 65 */ 66 esp_err_t (*del)(esp_etm_task_t *task); 67 }; 68 69 #ifdef __cplusplus 70 } 71 #endif 72