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