etm_interface.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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_trigger_peripheral_t;
  24. /**
  25. * @brief ETM event interface definition
  26. */
  27. struct esp_etm_event_t {
  28. /**
  29. * @brief Unique event ID
  30. */
  31. uint32_t event_id;
  32. /**
  33. * @brief ETM trigger peripheral
  34. */
  35. etm_trigger_peripheral_t trig_periph;
  36. /**
  37. * @brief Resource destroy
  38. */
  39. esp_err_t (*del)(esp_etm_event_t *event);
  40. };
  41. /**
  42. * @brief ETM task interface definition
  43. */
  44. struct esp_etm_task_t {
  45. /**
  46. * @brief Unique task ID
  47. */
  48. uint32_t task_id;
  49. /**
  50. * @brief ETM trigger peripheral
  51. */
  52. etm_trigger_peripheral_t trig_periph;
  53. /**
  54. * @brief Resource destroy
  55. */
  56. esp_err_t (*del)(esp_etm_task_t *task);
  57. };
  58. #ifdef __cplusplus
  59. }
  60. #endif