temperature_sensor_private.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /*
  2. * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #pragma once
  7. #include <stdlib.h>
  8. #include "soc/temperature_sensor_periph.h"
  9. #include "hal/temperature_sensor_types.h"
  10. #include "driver/temperature_sensor.h"
  11. #include "esp_intr_alloc.h"
  12. #include "sdkconfig.h"
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. typedef enum {
  17. TEMP_SENSOR_FSM_INIT,
  18. TEMP_SENSOR_FSM_ENABLE,
  19. } temp_sensor_fsm_t;
  20. #if CONFIG_TEMP_SENSOR_ISR_IRAM_SAFE
  21. #define TEMPERATURE_SENSOR_INTR_ALLOC_FLAGS (ESP_INTR_FLAG_IRAM | ESP_INTR_FLAG_SHARED | ESP_INTR_FLAG_LOWMED)
  22. #define TEMPERATURE_SENSOR_MEM_ALLOC_CAPS (MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT)
  23. #else
  24. #define TEMPERATURE_SENSOR_INTR_ALLOC_FLAGS (ESP_INTR_FLAG_SHARED | ESP_INTR_FLAG_LOWMED)
  25. #define TEMPERATURE_SENSOR_MEM_ALLOC_CAPS (MALLOC_CAP_DEFAULT)
  26. #endif
  27. typedef struct temperature_sensor_obj_t temperature_sensor_obj_t;
  28. struct temperature_sensor_obj_t {
  29. const temperature_sensor_attribute_t *tsens_attribute;
  30. temp_sensor_fsm_t fsm;
  31. temperature_sensor_clk_src_t clk_src;
  32. #if SOC_TEMPERATURE_SENSOR_INTR_SUPPORT
  33. intr_handle_t temp_sensor_isr_handle;
  34. temperature_thres_cb_t threshold_cbs;
  35. void *cb_user_arg;
  36. #endif // SOC_TEMPERATURE_SENSOR_INTR_SUPPORT
  37. };
  38. #ifdef __cplusplus
  39. }
  40. #endif