etm_interface.h 1.5 KB

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