1 /*
2  * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #pragma once
8 
9 #include <stdint.h>
10 #include "soc/soc_caps.h"
11 #include "driver/gpio.h" // for gpio_num_t type define
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 /**
18  * @brief SIGMADELTA port number, the max port number is (SIGMADELTA_NUM_MAX -1).
19  */
20 typedef enum {
21     SIGMADELTA_PORT_0,      /*!< SIGMADELTA port 0 */
22     SIGMADELTA_PORT_MAX,    /*!< SIGMADELTA port max */
23 } sigmadelta_port_t;
24 
25 /**
26  * @brief Sigma-delta channel list
27  */
28 typedef enum {
29     SIGMADELTA_CHANNEL_0,   /*!< Sigma-delta channel 0 */
30     SIGMADELTA_CHANNEL_1,   /*!< Sigma-delta channel 1 */
31     SIGMADELTA_CHANNEL_2,   /*!< Sigma-delta channel 2 */
32     SIGMADELTA_CHANNEL_3,   /*!< Sigma-delta channel 3 */
33 #if SOC_SDM_CHANNELS_PER_GROUP > 4
34     SIGMADELTA_CHANNEL_4,   /*!< Sigma-delta channel 4 */
35     SIGMADELTA_CHANNEL_5,   /*!< Sigma-delta channel 5 */
36     SIGMADELTA_CHANNEL_6,   /*!< Sigma-delta channel 6 */
37     SIGMADELTA_CHANNEL_7,   /*!< Sigma-delta channel 7 */
38 #endif
39     SIGMADELTA_CHANNEL_MAX, /*!< Sigma-delta channel max */
40 } sigmadelta_channel_t;
41 
42 /**
43  * @brief Sigma-delta configure struct
44  */
45 typedef struct {
46     sigmadelta_channel_t channel; /*!< Sigma-delta channel number */
47     int8_t sigmadelta_duty;       /*!< Sigma-delta duty, duty ranges from -128 to 127. */
48     uint8_t sigmadelta_prescale;  /*!< Sigma-delta prescale, prescale ranges from 0 to 255. */
49     gpio_num_t sigmadelta_gpio;   /*!< Sigma-delta output io number, refer to gpio.h for more details. */
50 } sigmadelta_config_t;
51 
52 #ifdef __cplusplus
53 }
54 #endif
55