docs: Resolve doxygen & Sphinx warnings
This commit is contained in:
parent
268816649c
commit
11fac8637a
38 changed files with 312 additions and 273 deletions
|
@ -439,11 +439,11 @@ typedef struct {
|
||||||
struct esp_ble_mesh_model {
|
struct esp_ble_mesh_model {
|
||||||
/** Model ID */
|
/** Model ID */
|
||||||
union {
|
union {
|
||||||
const uint16_t model_id;
|
const uint16_t model_id; /*!< 16-bit model identifier */
|
||||||
struct {
|
struct esp_ble_mesh_vnd_struct {
|
||||||
uint16_t company_id;
|
uint16_t company_id; /*!< 16-bit company identifier */
|
||||||
uint16_t model_id;
|
uint16_t model_id; /*!< 16-bit model identifier */
|
||||||
} vnd;
|
} vnd; /*!< Structure encapsulating a model ID with a company ID */
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Internal information, mainly for persistent storage */
|
/** Internal information, mainly for persistent storage */
|
||||||
|
|
|
@ -31,7 +31,8 @@ extern "C" {
|
||||||
|
|
||||||
typedef uint8_t esp_a2d_mct_t;
|
typedef uint8_t esp_a2d_mct_t;
|
||||||
|
|
||||||
/// A2DP media codec capabilities union
|
/** A2DP media codec capabilities union
|
||||||
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
esp_a2d_mct_t type; /*!< A2DP media codec type */
|
esp_a2d_mct_t type; /*!< A2DP media codec type */
|
||||||
#define ESP_A2D_CIE_LEN_SBC (4)
|
#define ESP_A2D_CIE_LEN_SBC (4)
|
||||||
|
@ -39,10 +40,10 @@ typedef struct {
|
||||||
#define ESP_A2D_CIE_LEN_M24 (6)
|
#define ESP_A2D_CIE_LEN_M24 (6)
|
||||||
#define ESP_A2D_CIE_LEN_ATRAC (7)
|
#define ESP_A2D_CIE_LEN_ATRAC (7)
|
||||||
union {
|
union {
|
||||||
uint8_t sbc[ESP_A2D_CIE_LEN_SBC];
|
uint8_t sbc[ESP_A2D_CIE_LEN_SBC]; /*!< SBC codec capabilities */
|
||||||
uint8_t m12[ESP_A2D_CIE_LEN_M12];
|
uint8_t m12[ESP_A2D_CIE_LEN_M12]; /*!< MPEG-1,2 audio codec capabilities */
|
||||||
uint8_t m24[ESP_A2D_CIE_LEN_M24];
|
uint8_t m24[ESP_A2D_CIE_LEN_M24]; /*!< MPEG-2, 4 AAC audio codec capabilities */
|
||||||
uint8_t atrac[ESP_A2D_CIE_LEN_ATRAC];
|
uint8_t atrac[ESP_A2D_CIE_LEN_ATRAC]; /*!< ATRAC family codec capabilities */
|
||||||
} cie; /*!< A2DP codec information element */
|
} cie; /*!< A2DP codec information element */
|
||||||
} __attribute__((packed)) esp_a2d_mcc_t;
|
} __attribute__((packed)) esp_a2d_mcc_t;
|
||||||
|
|
||||||
|
|
|
@ -86,9 +86,9 @@ typedef struct {
|
||||||
#define ESP_UUID_LEN_128 16
|
#define ESP_UUID_LEN_128 16
|
||||||
uint16_t len; /*!< UUID length, 16bit, 32bit or 128bit */
|
uint16_t len; /*!< UUID length, 16bit, 32bit or 128bit */
|
||||||
union {
|
union {
|
||||||
uint16_t uuid16;
|
uint16_t uuid16; /*!< 16bit UUID */
|
||||||
uint32_t uuid32;
|
uint32_t uuid32; /*!< 32bit UUID */
|
||||||
uint8_t uuid128[ESP_UUID_LEN_128];
|
uint8_t uuid128[ESP_UUID_LEN_128]; /*!< 128bit UUID */
|
||||||
} uuid; /*!< UUID */
|
} uuid; /*!< UUID */
|
||||||
} __attribute__((packed)) esp_bt_uuid_t;
|
} __attribute__((packed)) esp_bt_uuid_t;
|
||||||
|
|
||||||
|
|
|
@ -51,22 +51,22 @@ esp_err_t touch_pad_sw_start(void);
|
||||||
* sleep_cycle decide the interval between each measurement.
|
* sleep_cycle decide the interval between each measurement.
|
||||||
* t_sleep = sleep_cycle / (RTC_SLOW_CLK frequency).
|
* t_sleep = sleep_cycle / (RTC_SLOW_CLK frequency).
|
||||||
* The approximate frequency value of RTC_SLOW_CLK can be obtained using rtc_clk_slow_freq_get_hz function.
|
* The approximate frequency value of RTC_SLOW_CLK can be obtained using rtc_clk_slow_freq_get_hz function.
|
||||||
* @param meas_timers The times of charge and discharge in each measure process of touch channels.
|
* @param meas_time The time of charge and discharge in each measure process of touch channels.
|
||||||
* The timer frequency is 8Mhz. Range: 0 ~ 0xffff.
|
* The timer frequency is 8Mhz. Range: 0 ~ 0xffff.
|
||||||
* Recommended typical value: Modify this value to make the measurement time around 1ms.
|
* Recommended typical value: Modify this value to make the measurement time around 1ms.
|
||||||
* @return
|
* @return
|
||||||
* - ESP_OK on success
|
* - ESP_OK on success
|
||||||
*/
|
*/
|
||||||
esp_err_t touch_pad_set_meas_time(uint16_t sleep_cycle, uint16_t meas_times);
|
esp_err_t touch_pad_set_meas_time(uint16_t sleep_cycle, uint16_t meas_time);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get touch sensor times of charge and discharge and sleep time
|
* @brief Get touch sensor times of charge and discharge and sleep time
|
||||||
* @param sleep_cycle Pointer to accept sleep cycle number
|
* @param sleep_cycle Pointer to accept sleep cycle number
|
||||||
* @param meas_times Pointer to accept measurement times count.
|
* @param meas_time Pointer to accept measurement time count.
|
||||||
* @return
|
* @return
|
||||||
* - ESP_OK on success
|
* - ESP_OK on success
|
||||||
*/
|
*/
|
||||||
esp_err_t touch_pad_get_meas_time(uint16_t *sleep_cycle, uint16_t *meas_times);
|
esp_err_t touch_pad_get_meas_time(uint16_t *sleep_cycle, uint16_t *meas_time);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set connection type of touch channel in idle status.
|
* @brief Set connection type of touch channel in idle status.
|
||||||
|
@ -196,7 +196,7 @@ uint32_t touch_pad_read_intr_status_mask(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Enable touch sensor interrupt by bitmask.
|
* @brief Enable touch sensor interrupt by bitmask.
|
||||||
* @param type interrupt type
|
* @param int_mask Pad mask to enable interrupts
|
||||||
* @return
|
* @return
|
||||||
* - ESP_OK on success
|
* - ESP_OK on success
|
||||||
*/
|
*/
|
||||||
|
@ -204,7 +204,7 @@ esp_err_t touch_pad_intr_enable(touch_pad_intr_mask_t int_mask);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Disable touch sensor interrupt by bitmask.
|
* @brief Disable touch sensor interrupt by bitmask.
|
||||||
* @param type interrupt type
|
* @param int_mask Pad mask to disable interrupts
|
||||||
* @return
|
* @return
|
||||||
* - ESP_OK on success
|
* - ESP_OK on success
|
||||||
*/
|
*/
|
||||||
|
@ -215,12 +215,13 @@ esp_err_t touch_pad_intr_disable(touch_pad_intr_mask_t int_mask);
|
||||||
* The handler will be attached to the same CPU core that this function is running on.
|
* The handler will be attached to the same CPU core that this function is running on.
|
||||||
* @param fn Pointer to ISR handler
|
* @param fn Pointer to ISR handler
|
||||||
* @param arg Parameter for ISR
|
* @param arg Parameter for ISR
|
||||||
|
* @param int_mask Initial pad mask to enable interrupt for
|
||||||
* @return
|
* @return
|
||||||
* - ESP_OK Success ;
|
* - ESP_OK Success ;
|
||||||
* - ESP_ERR_INVALID_ARG GPIO error
|
* - ESP_ERR_INVALID_ARG GPIO error
|
||||||
* - ESP_ERR_NO_MEM No memory
|
* - ESP_ERR_NO_MEM No memory
|
||||||
*/
|
*/
|
||||||
esp_err_t touch_pad_isr_register(intr_handler_t fn, void* arg, touch_pad_intr_mask_t intr_mask);
|
esp_err_t touch_pad_isr_register(intr_handler_t fn, void* arg, touch_pad_intr_mask_t int_mask);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief get raw data of touch sensor.
|
* @brief get raw data of touch sensor.
|
||||||
|
@ -239,7 +240,7 @@ esp_err_t touch_pad_read_raw_data(touch_pad_t touch_num, uint32_t *raw_data);
|
||||||
* @brief get baseline of touch sensor.
|
* @brief get baseline of touch sensor.
|
||||||
* @note After initialization, the baseline value is the maximum during the first measurement period.
|
* @note After initialization, the baseline value is the maximum during the first measurement period.
|
||||||
* @param touch_num touch pad index
|
* @param touch_num touch pad index
|
||||||
* @param touch_value pointer to accept touch sensor value
|
* @param basedata pointer to accept touch sensor baseline value
|
||||||
* @return
|
* @return
|
||||||
* - ESP_OK Success
|
* - ESP_OK Success
|
||||||
* - ESP_ERR_INVALID_ARG Touch channel 0 havent this parameter.
|
* - ESP_ERR_INVALID_ARG Touch channel 0 havent this parameter.
|
||||||
|
@ -331,7 +332,7 @@ esp_err_t touch_pad_denoise_disable(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get denoise measure value (TOUCH_PAD_NUM0).
|
* @brief Get denoise measure value (TOUCH_PAD_NUM0).
|
||||||
* @param denoise value of denoise
|
* @param data Pointer to receive denoise value
|
||||||
* @return
|
* @return
|
||||||
* - ESP_OK Success
|
* - ESP_OK Success
|
||||||
*/
|
*/
|
||||||
|
@ -405,7 +406,7 @@ esp_err_t touch_pad_proximity_get_config(touch_pad_proximity_t *proximity);
|
||||||
* @brief Get measure count of proximity channel.
|
* @brief Get measure count of proximity channel.
|
||||||
* The proximity sensor measurement is the accumulation of touch channel measurements.
|
* The proximity sensor measurement is the accumulation of touch channel measurements.
|
||||||
* @param touch_num touch pad index
|
* @param touch_num touch pad index
|
||||||
* @param proximity parameter of proximity
|
* @param cnt Pointer to receive proximity channel measurement count
|
||||||
* @return
|
* @return
|
||||||
* - ESP_OK Success
|
* - ESP_OK Success
|
||||||
* - ESP_ERR_INVALID_ARG parameter is NULL
|
* - ESP_ERR_INVALID_ARG parameter is NULL
|
||||||
|
|
|
@ -331,8 +331,6 @@ esp_err_t timer_disable_intr(timer_group_t group_num, timer_idx_t timer_num);
|
||||||
* @param group_num Timer group number, 0 for TIMERG0 or 1 for TIMERG1
|
* @param group_num Timer group number, 0 for TIMERG0 or 1 for TIMERG1
|
||||||
* @param timer_num Timer index.
|
* @param timer_num Timer index.
|
||||||
*
|
*
|
||||||
* @return
|
|
||||||
* - None
|
|
||||||
*/
|
*/
|
||||||
void timer_group_intr_clr_in_isr(timer_group_t group_num, timer_idx_t timer_num) __attribute__((deprecated));
|
void timer_group_intr_clr_in_isr(timer_group_t group_num, timer_idx_t timer_num) __attribute__((deprecated));
|
||||||
|
|
||||||
|
@ -341,8 +339,6 @@ void timer_group_intr_clr_in_isr(timer_group_t group_num, timer_idx_t timer_num)
|
||||||
* @param group_num Timer group number, 0 for TIMERG0 or 1 for TIMERG1
|
* @param group_num Timer group number, 0 for TIMERG0 or 1 for TIMERG1
|
||||||
* @param timer_num Timer index.
|
* @param timer_num Timer index.
|
||||||
*
|
*
|
||||||
* @return
|
|
||||||
* - None
|
|
||||||
*/
|
*/
|
||||||
void timer_group_clr_intr_status_in_isr(timer_group_t group_num, timer_idx_t timer_num);
|
void timer_group_clr_intr_status_in_isr(timer_group_t group_num, timer_idx_t timer_num);
|
||||||
|
|
||||||
|
@ -351,8 +347,6 @@ void timer_group_clr_intr_status_in_isr(timer_group_t group_num, timer_idx_t tim
|
||||||
* @param group_num Timer group number, 0 for TIMERG0 or 1 for TIMERG1
|
* @param group_num Timer group number, 0 for TIMERG0 or 1 for TIMERG1
|
||||||
* @param timer_num Timer index.
|
* @param timer_num Timer index.
|
||||||
*
|
*
|
||||||
* @return
|
|
||||||
* - None
|
|
||||||
*/
|
*/
|
||||||
void timer_group_enable_alarm_in_isr(timer_group_t group_num, timer_idx_t timer_num);
|
void timer_group_enable_alarm_in_isr(timer_group_t group_num, timer_idx_t timer_num);
|
||||||
|
|
||||||
|
@ -372,8 +366,6 @@ uint64_t timer_group_get_counter_value_in_isr(timer_group_t group_num, timer_idx
|
||||||
* @param timer_num Timer index.
|
* @param timer_num Timer index.
|
||||||
* @param alarm_val Alarm threshold.
|
* @param alarm_val Alarm threshold.
|
||||||
*
|
*
|
||||||
* @return
|
|
||||||
* - None
|
|
||||||
*/
|
*/
|
||||||
void timer_group_set_alarm_value_in_isr(timer_group_t group_num, timer_idx_t timer_num, uint64_t alarm_val);
|
void timer_group_set_alarm_value_in_isr(timer_group_t group_num, timer_idx_t timer_num, uint64_t alarm_val);
|
||||||
|
|
||||||
|
@ -383,8 +375,6 @@ void timer_group_set_alarm_value_in_isr(timer_group_t group_num, timer_idx_t tim
|
||||||
* @param timer_num Timer index.
|
* @param timer_num Timer index.
|
||||||
* @param counter_en Enable/disable.
|
* @param counter_en Enable/disable.
|
||||||
*
|
*
|
||||||
* @return
|
|
||||||
* - None
|
|
||||||
*/
|
*/
|
||||||
void timer_group_set_counter_enable_in_isr(timer_group_t group_num, timer_idx_t timer_num, timer_start_t counter_en);
|
void timer_group_set_counter_enable_in_isr(timer_group_t group_num, timer_idx_t timer_num, timer_start_t counter_en);
|
||||||
|
|
||||||
|
@ -411,8 +401,6 @@ uint32_t timer_group_get_intr_status_in_isr(timer_group_t group_num);
|
||||||
* @param group_num Timer group number, 0 for TIMERG0 or 1 for TIMERG1
|
* @param group_num Timer group number, 0 for TIMERG0 or 1 for TIMERG1
|
||||||
* @param intr_mask Masked interrupt.
|
* @param intr_mask Masked interrupt.
|
||||||
*
|
*
|
||||||
* @return
|
|
||||||
* - None
|
|
||||||
*/
|
*/
|
||||||
void timer_group_clr_intr_sta_in_isr(timer_group_t group_num, timer_intr_t intr_mask) __attribute__((deprecated));
|
void timer_group_clr_intr_sta_in_isr(timer_group_t group_num, timer_intr_t intr_mask) __attribute__((deprecated));
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,6 @@ extern "C" {
|
||||||
#define ESP_INTR_FLAG_LEVELMASK (ESP_INTR_FLAG_LEVEL1|ESP_INTR_FLAG_LEVEL2|ESP_INTR_FLAG_LEVEL3| \
|
#define ESP_INTR_FLAG_LEVELMASK (ESP_INTR_FLAG_LEVEL1|ESP_INTR_FLAG_LEVEL2|ESP_INTR_FLAG_LEVEL3| \
|
||||||
ESP_INTR_FLAG_LEVEL4|ESP_INTR_FLAG_LEVEL5|ESP_INTR_FLAG_LEVEL6| \
|
ESP_INTR_FLAG_LEVEL4|ESP_INTR_FLAG_LEVEL5|ESP_INTR_FLAG_LEVEL6| \
|
||||||
ESP_INTR_FLAG_NMI) ///< Mask for all level flags
|
ESP_INTR_FLAG_NMI) ///< Mask for all level flags
|
||||||
/**@}*/
|
|
||||||
|
|
||||||
|
|
||||||
/** @addtogroup Intr_Alloc_Pseudo_Src
|
/** @addtogroup Intr_Alloc_Pseudo_Src
|
||||||
|
@ -78,16 +77,23 @@ extern "C" {
|
||||||
|
|
||||||
/**@}*/
|
/**@}*/
|
||||||
|
|
||||||
// This is used to provide SystemView with positive IRQ IDs, otherwise sheduler events are not shown properly
|
/** Provides SystemView with positive IRQ IDs, otherwise scheduler events are not shown properly
|
||||||
|
*/
|
||||||
#define ETS_INTERNAL_INTR_SOURCE_OFF (-ETS_INTERNAL_PROFILING_INTR_SOURCE)
|
#define ETS_INTERNAL_INTR_SOURCE_OFF (-ETS_INTERNAL_PROFILING_INTR_SOURCE)
|
||||||
|
|
||||||
|
/** Enable interrupt by interrupt number */
|
||||||
#define ESP_INTR_ENABLE(inum) xt_ints_on((1<<inum))
|
#define ESP_INTR_ENABLE(inum) xt_ints_on((1<<inum))
|
||||||
|
|
||||||
|
/** Disable interrupt by interrupt number */
|
||||||
#define ESP_INTR_DISABLE(inum) xt_ints_off((1<<inum))
|
#define ESP_INTR_DISABLE(inum) xt_ints_off((1<<inum))
|
||||||
|
|
||||||
|
/** Function prototype for interrupt handler function */
|
||||||
typedef void (*intr_handler_t)(void *arg);
|
typedef void (*intr_handler_t)(void *arg);
|
||||||
|
|
||||||
|
/** Interrupt handler associated data structure */
|
||||||
typedef struct intr_handle_data_t intr_handle_data_t;
|
typedef struct intr_handle_data_t intr_handle_data_t;
|
||||||
|
|
||||||
|
/** Handle to an interrupt handler */
|
||||||
typedef intr_handle_data_t* intr_handle_t ;
|
typedef intr_handle_data_t* intr_handle_t ;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -56,7 +56,6 @@ extern "C" {
|
||||||
#define ESP_INTR_FLAG_LEVELMASK (ESP_INTR_FLAG_LEVEL1|ESP_INTR_FLAG_LEVEL2|ESP_INTR_FLAG_LEVEL3| \
|
#define ESP_INTR_FLAG_LEVELMASK (ESP_INTR_FLAG_LEVEL1|ESP_INTR_FLAG_LEVEL2|ESP_INTR_FLAG_LEVEL3| \
|
||||||
ESP_INTR_FLAG_LEVEL4|ESP_INTR_FLAG_LEVEL5|ESP_INTR_FLAG_LEVEL6| \
|
ESP_INTR_FLAG_LEVEL4|ESP_INTR_FLAG_LEVEL5|ESP_INTR_FLAG_LEVEL6| \
|
||||||
ESP_INTR_FLAG_NMI) ///< Mask for all level flags
|
ESP_INTR_FLAG_NMI) ///< Mask for all level flags
|
||||||
/**@}*/
|
|
||||||
|
|
||||||
|
|
||||||
/** @addtogroup Intr_Alloc_Pseudo_Src
|
/** @addtogroup Intr_Alloc_Pseudo_Src
|
||||||
|
@ -78,16 +77,23 @@ extern "C" {
|
||||||
|
|
||||||
/**@}*/
|
/**@}*/
|
||||||
|
|
||||||
// This is used to provide SystemView with positive IRQ IDs, otherwise sheduler events are not shown properly
|
/** Provides SystemView with positive IRQ IDs, otherwise scheduler events are not shown properly
|
||||||
|
*/
|
||||||
#define ETS_INTERNAL_INTR_SOURCE_OFF (-ETS_INTERNAL_PROFILING_INTR_SOURCE)
|
#define ETS_INTERNAL_INTR_SOURCE_OFF (-ETS_INTERNAL_PROFILING_INTR_SOURCE)
|
||||||
|
|
||||||
|
/** Enable interrupt by interrupt number */
|
||||||
#define ESP_INTR_ENABLE(inum) xt_ints_on((1<<inum))
|
#define ESP_INTR_ENABLE(inum) xt_ints_on((1<<inum))
|
||||||
|
|
||||||
|
/** Disable interrupt by interrupt number */
|
||||||
#define ESP_INTR_DISABLE(inum) xt_ints_off((1<<inum))
|
#define ESP_INTR_DISABLE(inum) xt_ints_off((1<<inum))
|
||||||
|
|
||||||
|
/** Function prototype for interrupt handler function */
|
||||||
typedef void (*intr_handler_t)(void *arg);
|
typedef void (*intr_handler_t)(void *arg);
|
||||||
|
|
||||||
|
/** Interrupt handler associated data structure */
|
||||||
typedef struct intr_handle_data_t intr_handle_data_t;
|
typedef struct intr_handle_data_t intr_handle_data_t;
|
||||||
|
|
||||||
|
/** Handle to an interrupt handler */
|
||||||
typedef intr_handle_data_t* intr_handle_t ;
|
typedef intr_handle_data_t* intr_handle_t ;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -302,6 +302,7 @@ esp_err_t esp_event_isr_post(esp_event_base_t event_base,
|
||||||
/**
|
/**
|
||||||
* @brief Special variant of esp_event_post_to for posting events from interrupt handlers
|
* @brief Special variant of esp_event_post_to for posting events from interrupt handlers
|
||||||
*
|
*
|
||||||
|
* @param[in] event_loop the event loop to post to
|
||||||
* @param[in] event_base the event base that identifies the event
|
* @param[in] event_base the event base that identifies the event
|
||||||
* @param[in] event_id the event id that identifies the event
|
* @param[in] event_id the event id that identifies the event
|
||||||
* @param[in] event_data the data, specific to the event occurence, that gets passed to the handler
|
* @param[in] event_data the data, specific to the event occurence, that gets passed to the handler
|
||||||
|
|
|
@ -114,7 +114,7 @@ typedef union {
|
||||||
uart_port_t port; /*!< Modbus communication port (UART) number */
|
uart_port_t port; /*!< Modbus communication port (UART) number */
|
||||||
uint32_t baudrate; /*!< Modbus baudrate */
|
uint32_t baudrate; /*!< Modbus baudrate */
|
||||||
uart_parity_t parity; /*!< Modbus UART parity settings */
|
uart_parity_t parity; /*!< Modbus UART parity settings */
|
||||||
uint16_t dummy_port;
|
uint16_t dummy_port; /*!< Dummy field, unused */
|
||||||
};
|
};
|
||||||
// Tcp communication structure
|
// Tcp communication structure
|
||||||
struct {
|
struct {
|
||||||
|
|
|
@ -83,11 +83,11 @@ typedef struct{
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
uint32_t clk_speed; /*!< I2C clock frequency for master mode, (no higher than 1MHz for now) */
|
uint32_t clk_speed; /*!< I2C clock frequency for master mode, (no higher than 1MHz for now) */
|
||||||
} master;
|
} master; /*!< I2C master config */
|
||||||
struct {
|
struct {
|
||||||
uint8_t addr_10bit_en; /*!< I2C 10bit address mode enable for slave mode */
|
uint8_t addr_10bit_en; /*!< I2C 10bit address mode enable for slave mode */
|
||||||
uint16_t slave_addr; /*!< I2C address for slave mode */
|
uint16_t slave_addr; /*!< I2C address for slave mode */
|
||||||
} slave;
|
} slave; /*!< I2C slave config */
|
||||||
};
|
};
|
||||||
} i2c_config_t;
|
} i2c_config_t;
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include "soc/touch_sensor_caps.h"
|
#include "soc/touch_sensor_caps.h"
|
||||||
#include "sdkconfig.h"
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
|
/** Touch pad channel */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
TOUCH_PAD_NUM0 = 0, /*!< Touch pad channel 0 is GPIO4(ESP32) */
|
TOUCH_PAD_NUM0 = 0, /*!< Touch pad channel 0 is GPIO4(ESP32) */
|
||||||
TOUCH_PAD_NUM1, /*!< Touch pad channel 1 is GPIO0(ESP32) / GPIO1(ESP32-S2) */
|
TOUCH_PAD_NUM1, /*!< Touch pad channel 1 is GPIO0(ESP32) / GPIO1(ESP32-S2) */
|
||||||
|
@ -38,6 +39,7 @@ typedef enum {
|
||||||
TOUCH_PAD_MAX,
|
TOUCH_PAD_MAX,
|
||||||
} touch_pad_t;
|
} touch_pad_t;
|
||||||
|
|
||||||
|
/** Touch sensor high reference voltage */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
TOUCH_HVOLT_KEEP = -1, /*!<Touch sensor high reference voltage, no change */
|
TOUCH_HVOLT_KEEP = -1, /*!<Touch sensor high reference voltage, no change */
|
||||||
TOUCH_HVOLT_2V4 = 0, /*!<Touch sensor high reference voltage, 2.4V */
|
TOUCH_HVOLT_2V4 = 0, /*!<Touch sensor high reference voltage, 2.4V */
|
||||||
|
@ -47,6 +49,7 @@ typedef enum {
|
||||||
TOUCH_HVOLT_MAX,
|
TOUCH_HVOLT_MAX,
|
||||||
} touch_high_volt_t;
|
} touch_high_volt_t;
|
||||||
|
|
||||||
|
/** Touch sensor low reference voltage */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
TOUCH_LVOLT_KEEP = -1, /*!<Touch sensor low reference voltage, no change */
|
TOUCH_LVOLT_KEEP = -1, /*!<Touch sensor low reference voltage, no change */
|
||||||
TOUCH_LVOLT_0V5 = 0, /*!<Touch sensor low reference voltage, 0.5V */
|
TOUCH_LVOLT_0V5 = 0, /*!<Touch sensor low reference voltage, 0.5V */
|
||||||
|
@ -56,6 +59,7 @@ typedef enum {
|
||||||
TOUCH_LVOLT_MAX,
|
TOUCH_LVOLT_MAX,
|
||||||
} touch_low_volt_t;
|
} touch_low_volt_t;
|
||||||
|
|
||||||
|
/** Touch sensor high reference voltage attenuation */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
TOUCH_HVOLT_ATTEN_KEEP = -1, /*!<Touch sensor high reference voltage attenuation, no change */
|
TOUCH_HVOLT_ATTEN_KEEP = -1, /*!<Touch sensor high reference voltage attenuation, no change */
|
||||||
TOUCH_HVOLT_ATTEN_1V5 = 0, /*!<Touch sensor high reference voltage attenuation, 1.5V attenuation */
|
TOUCH_HVOLT_ATTEN_1V5 = 0, /*!<Touch sensor high reference voltage attenuation, 1.5V attenuation */
|
||||||
|
@ -65,6 +69,7 @@ typedef enum {
|
||||||
TOUCH_HVOLT_ATTEN_MAX,
|
TOUCH_HVOLT_ATTEN_MAX,
|
||||||
} touch_volt_atten_t;
|
} touch_volt_atten_t;
|
||||||
|
|
||||||
|
/** Touch sensor charge/discharge speed */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
TOUCH_PAD_SLOPE_0 = 0, /*!<Touch sensor charge / discharge speed, always zero */
|
TOUCH_PAD_SLOPE_0 = 0, /*!<Touch sensor charge / discharge speed, always zero */
|
||||||
TOUCH_PAD_SLOPE_1 = 1, /*!<Touch sensor charge / discharge speed, slowest */
|
TOUCH_PAD_SLOPE_1 = 1, /*!<Touch sensor charge / discharge speed, slowest */
|
||||||
|
@ -77,12 +82,14 @@ typedef enum {
|
||||||
TOUCH_PAD_SLOPE_MAX,
|
TOUCH_PAD_SLOPE_MAX,
|
||||||
} touch_cnt_slope_t;
|
} touch_cnt_slope_t;
|
||||||
|
|
||||||
|
/** Touch sensor initial charge level */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
TOUCH_PAD_TIE_OPT_LOW = 0, /*!<Initial level of charging voltage, low level */
|
TOUCH_PAD_TIE_OPT_LOW = 0, /*!<Initial level of charging voltage, low level */
|
||||||
TOUCH_PAD_TIE_OPT_HIGH = 1, /*!<Initial level of charging voltage, high level */
|
TOUCH_PAD_TIE_OPT_HIGH = 1, /*!<Initial level of charging voltage, high level */
|
||||||
TOUCH_PAD_TIE_OPT_MAX,
|
TOUCH_PAD_TIE_OPT_MAX,
|
||||||
} touch_tie_opt_t;
|
} touch_tie_opt_t;
|
||||||
|
|
||||||
|
/** Touch sensor FSM mode */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
TOUCH_FSM_MODE_TIMER = 0, /*!<To start touch FSM by timer */
|
TOUCH_FSM_MODE_TIMER = 0, /*!<To start touch FSM by timer */
|
||||||
TOUCH_FSM_MODE_SW, /*!<To start touch FSM by software trigger */
|
TOUCH_FSM_MODE_SW, /*!<To start touch FSM by software trigger */
|
||||||
|
@ -175,6 +182,7 @@ typedef enum {
|
||||||
TOUCH_PAD_DENOISE_CAP_MAX
|
TOUCH_PAD_DENOISE_CAP_MAX
|
||||||
} touch_pad_denoise_cap_t;
|
} touch_pad_denoise_cap_t;
|
||||||
|
|
||||||
|
/** Touch sensor denoise configuration */
|
||||||
typedef struct touch_pad_denoise {
|
typedef struct touch_pad_denoise {
|
||||||
touch_pad_denoise_grade_t grade; /*!<Select denoise range of denoise channel.
|
touch_pad_denoise_grade_t grade; /*!<Select denoise range of denoise channel.
|
||||||
Determined by measuring the noise amplitude of the denoise channel. */
|
Determined by measuring the noise amplitude of the denoise channel. */
|
||||||
|
@ -195,6 +203,7 @@ typedef enum {
|
||||||
TOUCH_PAD_SHIELD_DRV_MAX
|
TOUCH_PAD_SHIELD_DRV_MAX
|
||||||
} touch_pad_shield_driver_t;
|
} touch_pad_shield_driver_t;
|
||||||
|
|
||||||
|
/** Touch sensor waterproof configuration */
|
||||||
typedef struct touch_pad_waterproof {
|
typedef struct touch_pad_waterproof {
|
||||||
touch_pad_t guard_ring_pad; /*!<Waterproof. Select touch channel use for guard pad */
|
touch_pad_t guard_ring_pad; /*!<Waterproof. Select touch channel use for guard pad */
|
||||||
touch_pad_shield_driver_t shield_driver;/*!<Waterproof. Select max equivalent capacitance for sheild pad
|
touch_pad_shield_driver_t shield_driver;/*!<Waterproof. Select max equivalent capacitance for sheild pad
|
||||||
|
@ -202,6 +211,7 @@ typedef struct touch_pad_waterproof {
|
||||||
reading to the Touch0 reading to estimate the equivalent capacitance.*/
|
reading to the Touch0 reading to estimate the equivalent capacitance.*/
|
||||||
} touch_pad_waterproof_t;
|
} touch_pad_waterproof_t;
|
||||||
|
|
||||||
|
/** Touch sensor proximity detection configuration */
|
||||||
typedef struct touch_pad_proximity {
|
typedef struct touch_pad_proximity {
|
||||||
touch_pad_t select_pad[SOC_TOUCH_PROXIMITY_CHANNEL_NUM]; /*!<Set touch channel number for proximity pad.
|
touch_pad_t select_pad[SOC_TOUCH_PROXIMITY_CHANNEL_NUM]; /*!<Set touch channel number for proximity pad.
|
||||||
If clear the proximity channel, point this pad to `TOUCH_PAD_NUM0` */
|
If clear the proximity channel, point this pad to `TOUCH_PAD_NUM0` */
|
||||||
|
@ -209,9 +219,10 @@ typedef struct touch_pad_proximity {
|
||||||
#define TOUCH_PROXIMITY_MEAS_NUM_MAX (0xFF)
|
#define TOUCH_PROXIMITY_MEAS_NUM_MAX (0xFF)
|
||||||
} touch_pad_proximity_t;
|
} touch_pad_proximity_t;
|
||||||
|
|
||||||
|
/** Touch channel idle state configuration */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
TOUCH_PAD_CONN_HIGHZ = 0, /*!<Idel status of touch channel is high resistance state */
|
TOUCH_PAD_CONN_HIGHZ = 0, /*!<Idle status of touch channel is high resistance state */
|
||||||
TOUCH_PAD_CONN_GND = 1, /*!<Idel status of touch channel is ground connection */
|
TOUCH_PAD_CONN_GND = 1, /*!<Idle status of touch channel is ground connection */
|
||||||
TOUCH_PAD_CONN_MAX
|
TOUCH_PAD_CONN_MAX
|
||||||
} touch_pad_conn_type_t;
|
} touch_pad_conn_type_t;
|
||||||
|
|
||||||
|
@ -223,6 +234,7 @@ typedef enum {
|
||||||
TOUCH_PAD_FILTER_MAX
|
TOUCH_PAD_FILTER_MAX
|
||||||
} touch_filter_mode_t;
|
} touch_filter_mode_t;
|
||||||
|
|
||||||
|
/** Touch sensor filter configuration */
|
||||||
typedef struct touch_filter_config {
|
typedef struct touch_filter_config {
|
||||||
touch_filter_mode_t mode; /*!<Set filter mode. The input to the filter is raw data and the output is the baseline value.
|
touch_filter_mode_t mode; /*!<Set filter mode. The input to the filter is raw data and the output is the baseline value.
|
||||||
Larger filter coefficients increase the stability of the baseline. */
|
Larger filter coefficients increase the stability of the baseline. */
|
||||||
|
@ -253,6 +265,7 @@ typedef struct touch_filter_config {
|
||||||
#define TOUCH_JITTER_STEP_MAX (15)
|
#define TOUCH_JITTER_STEP_MAX (15)
|
||||||
} touch_filter_config_t;
|
} touch_filter_config_t;
|
||||||
|
|
||||||
|
/** Touch sensor channel sleep configuration */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
touch_pad_t touch_num; /*!<Set touch channel number for sleep pad.
|
touch_pad_t touch_num; /*!<Set touch channel number for sleep pad.
|
||||||
Only one touch sensor channel is supported in deep sleep mode. */
|
Only one touch sensor channel is supported in deep sleep mode. */
|
||||||
|
|
|
@ -136,7 +136,7 @@ typedef struct {
|
||||||
uint8_t rx_flow_ctrl_thresh; /*!< UART HW RTS threshold*/
|
uint8_t rx_flow_ctrl_thresh; /*!< UART HW RTS threshold*/
|
||||||
union {
|
union {
|
||||||
uart_sclk_t source_clk; /*!< UART source clock selection */
|
uart_sclk_t source_clk; /*!< UART source clock selection */
|
||||||
bool use_ref_tick __attribute__((deprecated));
|
bool use_ref_tick __attribute__((deprecated)); /*!< Deprecated method to select ref tick clock source, set source_clk field instead */
|
||||||
};
|
};
|
||||||
} uart_config_t;
|
} uart_config_t;
|
||||||
|
|
||||||
|
|
|
@ -101,137 +101,137 @@ typedef struct
|
||||||
{
|
{
|
||||||
int flags; /*!< ESP_VFS_FLAG_CONTEXT_PTR or ESP_VFS_FLAG_DEFAULT */
|
int flags; /*!< ESP_VFS_FLAG_CONTEXT_PTR or ESP_VFS_FLAG_DEFAULT */
|
||||||
union {
|
union {
|
||||||
ssize_t (*write_p)(void* p, int fd, const void * data, size_t size);
|
ssize_t (*write_p)(void* p, int fd, const void * data, size_t size); /*!< Write with context pointer */
|
||||||
ssize_t (*write)(int fd, const void * data, size_t size);
|
ssize_t (*write)(int fd, const void * data, size_t size); /*!< Write without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
off_t (*lseek_p)(void* p, int fd, off_t size, int mode);
|
off_t (*lseek_p)(void* p, int fd, off_t size, int mode); /*!< Seek with context pointer */
|
||||||
off_t (*lseek)(int fd, off_t size, int mode);
|
off_t (*lseek)(int fd, off_t size, int mode); /*!< Seek without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
ssize_t (*read_p)(void* ctx, int fd, void * dst, size_t size);
|
ssize_t (*read_p)(void* ctx, int fd, void * dst, size_t size); /*!< Read with context pointer */
|
||||||
ssize_t (*read)(int fd, void * dst, size_t size);
|
ssize_t (*read)(int fd, void * dst, size_t size); /*!< Read without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
ssize_t (*pread_p)(void *ctx, int fd, void * dst, size_t size, off_t offset);
|
ssize_t (*pread_p)(void *ctx, int fd, void * dst, size_t size, off_t offset); /*!< pread with context pointer */
|
||||||
ssize_t (*pread)(int fd, void * dst, size_t size, off_t offset);
|
ssize_t (*pread)(int fd, void * dst, size_t size, off_t offset); /*!< pread without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
ssize_t (*pwrite_p)(void *ctx, int fd, const void *src, size_t size, off_t offset);
|
ssize_t (*pwrite_p)(void *ctx, int fd, const void *src, size_t size, off_t offset); /*!< pwrite with context pointer */
|
||||||
ssize_t (*pwrite)(int fd, const void *src, size_t size, off_t offset);
|
ssize_t (*pwrite)(int fd, const void *src, size_t size, off_t offset); /*!< pwrite without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*open_p)(void* ctx, const char * path, int flags, int mode);
|
int (*open_p)(void* ctx, const char * path, int flags, int mode); /*!< open with context pointer */
|
||||||
int (*open)(const char * path, int flags, int mode);
|
int (*open)(const char * path, int flags, int mode); /*!< open without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*close_p)(void* ctx, int fd);
|
int (*close_p)(void* ctx, int fd); /*!< close with context pointer */
|
||||||
int (*close)(int fd);
|
int (*close)(int fd); /*!< close without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*fstat_p)(void* ctx, int fd, struct stat * st);
|
int (*fstat_p)(void* ctx, int fd, struct stat * st); /*!< fstat with context pointer */
|
||||||
int (*fstat)(int fd, struct stat * st);
|
int (*fstat)(int fd, struct stat * st); /*!< fstat without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*stat_p)(void* ctx, const char * path, struct stat * st);
|
int (*stat_p)(void* ctx, const char * path, struct stat * st); /*!< stat with context pointer */
|
||||||
int (*stat)(const char * path, struct stat * st);
|
int (*stat)(const char * path, struct stat * st); /*!< stat without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*link_p)(void* ctx, const char* n1, const char* n2);
|
int (*link_p)(void* ctx, const char* n1, const char* n2); /*!< link with context pointer */
|
||||||
int (*link)(const char* n1, const char* n2);
|
int (*link)(const char* n1, const char* n2); /*!< link without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*unlink_p)(void* ctx, const char *path);
|
int (*unlink_p)(void* ctx, const char *path); /*!< unlink with context pointer */
|
||||||
int (*unlink)(const char *path);
|
int (*unlink)(const char *path); /*!< unlink without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*rename_p)(void* ctx, const char *src, const char *dst);
|
int (*rename_p)(void* ctx, const char *src, const char *dst); /*!< rename with context pointer */
|
||||||
int (*rename)(const char *src, const char *dst);
|
int (*rename)(const char *src, const char *dst); /*!< rename without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
DIR* (*opendir_p)(void* ctx, const char* name);
|
DIR* (*opendir_p)(void* ctx, const char* name); /*!< opendir with context pointer */
|
||||||
DIR* (*opendir)(const char* name);
|
DIR* (*opendir)(const char* name); /*!< opendir without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
struct dirent* (*readdir_p)(void* ctx, DIR* pdir);
|
struct dirent* (*readdir_p)(void* ctx, DIR* pdir); /*!< readdir with context pointer */
|
||||||
struct dirent* (*readdir)(DIR* pdir);
|
struct dirent* (*readdir)(DIR* pdir); /*!< readdir without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*readdir_r_p)(void* ctx, DIR* pdir, struct dirent* entry, struct dirent** out_dirent);
|
int (*readdir_r_p)(void* ctx, DIR* pdir, struct dirent* entry, struct dirent** out_dirent); /*!< readdir_r with context pointer */
|
||||||
int (*readdir_r)(DIR* pdir, struct dirent* entry, struct dirent** out_dirent);
|
int (*readdir_r)(DIR* pdir, struct dirent* entry, struct dirent** out_dirent); /*!< readdir_r without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
long (*telldir_p)(void* ctx, DIR* pdir);
|
long (*telldir_p)(void* ctx, DIR* pdir); /*!< telldir with context pointer */
|
||||||
long (*telldir)(DIR* pdir);
|
long (*telldir)(DIR* pdir); /*!< telldir without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
void (*seekdir_p)(void* ctx, DIR* pdir, long offset);
|
void (*seekdir_p)(void* ctx, DIR* pdir, long offset); /*!< seekdir with context pointer */
|
||||||
void (*seekdir)(DIR* pdir, long offset);
|
void (*seekdir)(DIR* pdir, long offset); /*!< seekdir without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*closedir_p)(void* ctx, DIR* pdir);
|
int (*closedir_p)(void* ctx, DIR* pdir); /*!< closedir with context pointer */
|
||||||
int (*closedir)(DIR* pdir);
|
int (*closedir)(DIR* pdir); /*!< closedir without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*mkdir_p)(void* ctx, const char* name, mode_t mode);
|
int (*mkdir_p)(void* ctx, const char* name, mode_t mode); /*!< mkdir with context pointer */
|
||||||
int (*mkdir)(const char* name, mode_t mode);
|
int (*mkdir)(const char* name, mode_t mode); /*!< mkdir without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*rmdir_p)(void* ctx, const char* name);
|
int (*rmdir_p)(void* ctx, const char* name); /*!< rmdir with context pointer */
|
||||||
int (*rmdir)(const char* name);
|
int (*rmdir)(const char* name); /*!< rmdir without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*fcntl_p)(void* ctx, int fd, int cmd, int arg);
|
int (*fcntl_p)(void* ctx, int fd, int cmd, int arg); /*!< fcntl with context pointer */
|
||||||
int (*fcntl)(int fd, int cmd, int arg);
|
int (*fcntl)(int fd, int cmd, int arg); /*!< fcntl without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*ioctl_p)(void* ctx, int fd, int cmd, va_list args);
|
int (*ioctl_p)(void* ctx, int fd, int cmd, va_list args); /*!< ioctl with context pointer */
|
||||||
int (*ioctl)(int fd, int cmd, va_list args);
|
int (*ioctl)(int fd, int cmd, va_list args); /*!< ioctl without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*fsync_p)(void* ctx, int fd);
|
int (*fsync_p)(void* ctx, int fd); /*!< fsync with context pointer */
|
||||||
int (*fsync)(int fd);
|
int (*fsync)(int fd); /*!< fsync without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*access_p)(void* ctx, const char *path, int amode);
|
int (*access_p)(void* ctx, const char *path, int amode); /*!< access with context pointer */
|
||||||
int (*access)(const char *path, int amode);
|
int (*access)(const char *path, int amode); /*!< access without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*truncate_p)(void* ctx, const char *path, off_t length);
|
int (*truncate_p)(void* ctx, const char *path, off_t length); /*!< truncate with context pointer */
|
||||||
int (*truncate)(const char *path, off_t length);
|
int (*truncate)(const char *path, off_t length); /*!< truncate without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*utime_p)(void* ctx, const char *path, const struct utimbuf *times);
|
int (*utime_p)(void* ctx, const char *path, const struct utimbuf *times); /*!< utime with context pointer */
|
||||||
int (*utime)(const char *path, const struct utimbuf *times);
|
int (*utime)(const char *path, const struct utimbuf *times); /*!< utime without context pointer */
|
||||||
};
|
};
|
||||||
#ifdef CONFIG_VFS_SUPPORT_TERMIOS
|
#ifdef CONFIG_VFS_SUPPORT_TERMIOS
|
||||||
union {
|
union {
|
||||||
int (*tcsetattr_p)(void *ctx, int fd, int optional_actions, const struct termios *p);
|
int (*tcsetattr_p)(void *ctx, int fd, int optional_actions, const struct termios *p); /*!< tcsetattr with context pointer */
|
||||||
int (*tcsetattr)(int fd, int optional_actions, const struct termios *p);
|
int (*tcsetattr)(int fd, int optional_actions, const struct termios *p); /*!< tcsetattr without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*tcgetattr_p)(void *ctx, int fd, struct termios *p);
|
int (*tcgetattr_p)(void *ctx, int fd, struct termios *p); /*!< tcgetattr with context pointer */
|
||||||
int (*tcgetattr)(int fd, struct termios *p);
|
int (*tcgetattr)(int fd, struct termios *p); /*!< tcgetattr without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*tcdrain_p)(void *ctx, int fd);
|
int (*tcdrain_p)(void *ctx, int fd); /*!< tcdrain with context pointer */
|
||||||
int (*tcdrain)(int fd);
|
int (*tcdrain)(int fd); /*!< tcdrain without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*tcflush_p)(void *ctx, int fd, int select);
|
int (*tcflush_p)(void *ctx, int fd, int select); /*!< tcflush with context pointer */
|
||||||
int (*tcflush)(int fd, int select);
|
int (*tcflush)(int fd, int select); /*!< tcflush without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*tcflow_p)(void *ctx, int fd, int action);
|
int (*tcflow_p)(void *ctx, int fd, int action); /*!< tcflow with context pointer */
|
||||||
int (*tcflow)(int fd, int action);
|
int (*tcflow)(int fd, int action); /*!< tcflow without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
pid_t (*tcgetsid_p)(void *ctx, int fd);
|
pid_t (*tcgetsid_p)(void *ctx, int fd); /*!< tcgetsid with context pointer */
|
||||||
pid_t (*tcgetsid)(int fd);
|
pid_t (*tcgetsid)(int fd); /*!< tcgetsid without context pointer */
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int (*tcsendbreak_p)(void *ctx, int fd, int duration);
|
int (*tcsendbreak_p)(void *ctx, int fd, int duration); /*!< tcsendbreak with context pointer */
|
||||||
int (*tcsendbreak)(int fd, int duration);
|
int (*tcsendbreak)(int fd, int duration); /*!< tcsendbreak without context pointer */
|
||||||
};
|
};
|
||||||
#endif // CONFIG_VFS_SUPPORT_TERMIOS
|
#endif // CONFIG_VFS_SUPPORT_TERMIOS
|
||||||
|
|
||||||
|
|
|
@ -31,9 +31,6 @@ DXG_WARN_LOG = "doxygen-warning-log.txt"
|
||||||
DXG_SANITIZED_LOG = "doxygen-warning-log-sanitized.txt"
|
DXG_SANITIZED_LOG = "doxygen-warning-log-sanitized.txt"
|
||||||
DXG_KNOWN_WARNINGS = os.path.join(os.environ["IDF_PATH"], "docs", "doxygen-known-warnings.txt")
|
DXG_KNOWN_WARNINGS = os.path.join(os.environ["IDF_PATH"], "docs", "doxygen-known-warnings.txt")
|
||||||
|
|
||||||
SANITIZE_FILENAME_REGEX = re.compile("[^:]*/([^/:]*)(:.*)")
|
|
||||||
SANITIZE_LINENUM_REGEX = re.compile("([^:]*)(:[0-9]+:)(.*)")
|
|
||||||
|
|
||||||
LogMessage = namedtuple("LogMessage", "original_text sanitized_text")
|
LogMessage = namedtuple("LogMessage", "original_text sanitized_text")
|
||||||
|
|
||||||
languages = LANGUAGES
|
languages = LANGUAGES
|
||||||
|
@ -238,6 +235,10 @@ def call_build_docs(entry):
|
||||||
return sphinx_call(*entry, buildername="html")
|
return sphinx_call(*entry, buildername="html")
|
||||||
|
|
||||||
|
|
||||||
|
SANITIZE_FILENAME_REGEX = re.compile("[^:]*/([^/:]*)(:.*)")
|
||||||
|
SANITIZE_LINENUM_REGEX = re.compile("([^:]*)(:[0-9]+:)(.*)")
|
||||||
|
|
||||||
|
|
||||||
def sanitize_line(line):
|
def sanitize_line(line):
|
||||||
"""
|
"""
|
||||||
Clear a log message from insignificant parts
|
Clear a log message from insignificant parts
|
||||||
|
@ -273,6 +274,14 @@ def check_docs(language, target, log_file, known_warnings_file, out_sanitized_lo
|
||||||
for known_line in k:
|
for known_line in k:
|
||||||
known_messages.append(known_line)
|
known_messages.append(known_line)
|
||||||
|
|
||||||
|
if "doxygen" in known_warnings_file:
|
||||||
|
# Clean a known Doxygen limitation: it's expected to always document anonymous
|
||||||
|
# structs/unions but we don't do this in our docs, so filter these all out with a regex
|
||||||
|
# (this won't match any named field, only anonymous members -
|
||||||
|
# ie the last part of the field is is just <something>::@NUM not <something>::name)
|
||||||
|
RE_ANONYMOUS_FIELD = re.compile(r".+:line: warning: parameters of member [^:\s]+(::[^:\s]+)*(::@\d+)+ are not \(all\) documented")
|
||||||
|
all_messages = [msg for msg in all_messages if not re.match(RE_ANONYMOUS_FIELD, msg.sanitized_text)]
|
||||||
|
|
||||||
# Collect all new messages that are not match with the known messages.
|
# Collect all new messages that are not match with the known messages.
|
||||||
# The order is an important.
|
# The order is an important.
|
||||||
new_messages = list()
|
new_messages = list()
|
||||||
|
|
|
@ -21,6 +21,7 @@ import os
|
||||||
import os.path
|
import os.path
|
||||||
import re
|
import re
|
||||||
import subprocess
|
import subprocess
|
||||||
|
from idf_extensions.util import download_file_if_missing
|
||||||
|
|
||||||
# build_docs on the CI server sometimes fails under Python3. This is a workaround:
|
# build_docs on the CI server sometimes fails under Python3. This is a workaround:
|
||||||
sys.setrecursionlimit(3500)
|
sys.setrecursionlimit(3500)
|
||||||
|
@ -132,22 +133,31 @@ def update_exclude_patterns(tags):
|
||||||
'api-guides/esp-ble-mesh/**',
|
'api-guides/esp-ble-mesh/**',
|
||||||
'api-guides/ulp-legacy.rst',
|
'api-guides/ulp-legacy.rst',
|
||||||
'api-guides/unit-tests-legacy.rst',
|
'api-guides/unit-tests-legacy.rst',
|
||||||
|
'api-guides/ulp_instruction_set.rst',
|
||||||
'api-guides/jtag-debugging/configure-wrover.rst',
|
'api-guides/jtag-debugging/configure-wrover.rst',
|
||||||
'api-reference/system/himem.rst',
|
'api-reference/system/himem.rst',
|
||||||
'api-reference/bluetooth/**',
|
'api-reference/bluetooth/**',
|
||||||
|
'api-reference/peripherals/sdio_slave.rst',
|
||||||
|
'api-reference/peripherals/esp_slave_protocol.rst',
|
||||||
|
'api-reference/peripherals/mcpwm.rst',
|
||||||
|
'api-reference/peripherals/sd_pullup_requirements.rst',
|
||||||
|
'api-reference/peripherals/sdmmc_host.rst',
|
||||||
|
'api-reference/protocols/esp_serial_slave_link.rst',
|
||||||
'api-reference/system/ipc.rst',
|
'api-reference/system/ipc.rst',
|
||||||
'get-started-legacy/**',
|
'get-started-legacy/**',
|
||||||
'gnu-make-legacy.rst',
|
'gnu-make-legacy.rst',
|
||||||
'hw-reference/esp32/**']:
|
'hw-reference/esp32/**',
|
||||||
|
]:
|
||||||
exclude_patterns.append(e)
|
exclude_patterns.append(e)
|
||||||
|
|
||||||
if "esp32s2" not in tags:
|
if "esp32s2" not in tags:
|
||||||
# Exclude ESP32-only document pages so they aren't found in the initial search for .rst files
|
# Exclude ESP32-only document pages so they aren't found in the initial search for .rst files
|
||||||
# note: in toctrees, these also need to be marked with a :esp32: filter
|
# note: in toctrees, these also need to be marked with a :esp32: filter
|
||||||
for e in ['hw-reference/esp32s2/**']:
|
for e in ['hw-reference/esp32s2/**',
|
||||||
|
'api-guides/ulps2_instruction_set.rst',
|
||||||
|
'api-reference/peripherals/temp_sensor.rst']:
|
||||||
exclude_patterns.append(e)
|
exclude_patterns.append(e)
|
||||||
|
|
||||||
|
|
||||||
# The reST default role (used for this markup: `text`) to use for all
|
# The reST default role (used for this markup: `text`) to use for all
|
||||||
# documents.
|
# documents.
|
||||||
# default_role = None
|
# default_role = None
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
semphr.h:line: warning: argument 'pxStaticSemaphore' of command @param is not found in the argument list of xSemaphoreCreateCounting(uxMaxCount, uxInitialCount)
|
|
@ -62,6 +62,8 @@ Behavior of panic handler is affected by two other configuration options.
|
||||||
|
|
||||||
- If :doc:`Core Dump <core_dump>` feature is enabled, then system state (task stacks and registers) will be dumped either to Flash or UART, for later analysis.
|
- If :doc:`Core Dump <core_dump>` feature is enabled, then system state (task stacks and registers) will be dumped either to Flash or UART, for later analysis.
|
||||||
|
|
||||||
|
.. only:: esp32
|
||||||
|
|
||||||
- If :ref:`CONFIG_ESP_PANIC_HANDLER_IRAM` is disabled (disabled by default), the panic handler code is placed in flash memory not IRAM. This means that if ESP-IDF crashes while flash cache is disabled, the panic handler will automatically re-enable flash cache before running GDB Stub or Core Dump. This adds some minor risk, if the flash cache status is also corrupted during the crash.
|
- If :ref:`CONFIG_ESP_PANIC_HANDLER_IRAM` is disabled (disabled by default), the panic handler code is placed in flash memory not IRAM. This means that if ESP-IDF crashes while flash cache is disabled, the panic handler will automatically re-enable flash cache before running GDB Stub or Core Dump. This adds some minor risk, if the flash cache status is also corrupted during the crash.
|
||||||
|
|
||||||
If this option is enabled, the panic handler code is placed in IRAM. This allows the panic handler to run without needing to re-enable cache first. This may be necessary to debug some complex issues with crashes while flash cache is disabled (for example, when writing to SPI flash).
|
If this option is enabled, the panic handler code is placed in IRAM. This allows the panic handler to run without needing to re-enable cache first. This may be necessary to debug some complex issues with crashes while flash cache is disabled (for example, when writing to SPI flash).
|
||||||
|
|
|
@ -412,7 +412,7 @@ matter.
|
||||||
.. _floating-points:
|
.. _floating-points:
|
||||||
|
|
||||||
Floating Point Arithmetic
|
Floating Point Arithmetic
|
||||||
------------------------
|
-------------------------
|
||||||
|
|
||||||
ESP-IDF FreeRTOS implements Lazy Context Switching for FPUs. In other words,
|
ESP-IDF FreeRTOS implements Lazy Context Switching for FPUs. In other words,
|
||||||
the state of a core's FPU registers are not immediately saved when a context
|
the state of a core's FPU registers are not immediately saved when a context
|
||||||
|
|
|
@ -325,7 +325,15 @@ IP layer features
|
||||||
Limitations
|
Limitations
|
||||||
^^^^^^^^^^^
|
^^^^^^^^^^^
|
||||||
|
|
||||||
- Calling ``send()`` or ``sendto()`` repeatedly on a UDP socket may eventually fail with ``errno`` equal to ``ENOMEM``. This is a limitation of buffer sizes in the lower layer network interface drivers. If all driver transmit buffers are full then UDP transmission will fail. Applications sending a high volume of UDP datagrams who don't wish for any to be dropped by the sender should check for this error code and re-send the datagram after a short delay. Increasing the number of TX buffers in the :ref:`Wi-Fi <CONFIG_ESP32_WIFI_TX_BUFFER>` or :ref:`Ethernet <CONFIG_ETH_DMA_TX_BUFFER_NUM>` project configuration (as applicable) may also help.
|
- Calling ``send()`` or ``sendto()`` repeatedly on a UDP socket may eventually fail with ``errno`` equal to ``ENOMEM``. This is a limitation of buffer sizes in the lower layer network interface drivers. If all driver transmit buffers are full then UDP transmission will fail. Applications sending a high volume of UDP datagrams who don't wish for any to be dropped by the sender should check for this error code and re-send the datagram after a short delay.
|
||||||
|
|
||||||
|
.. only::esp32
|
||||||
|
|
||||||
|
Increasing the number of TX buffers in the :ref:`Wi-Fi <CONFIG_ESP32_WIFI_TX_BUFFER>` or :ref:`Ethernet <CONFIG_ETH_DMA_TX_BUFFER_NUM>` project configuration (as applicable) may also help.
|
||||||
|
|
||||||
|
.. only::esp32s2
|
||||||
|
|
||||||
|
Increasing the number of TX buffers in the :ref:`Wi-Fi <CONFIG_ESP32_WIFI_TX_BUFFER>` project configuration may also help.
|
||||||
|
|
||||||
Performance Optimization
|
Performance Optimization
|
||||||
------------------------
|
------------------------
|
||||||
|
|
|
@ -85,7 +85,7 @@ Reading voltage on ADC2 channel 7 ({IDF_TARGET_ADC2_CH7})::
|
||||||
The reading may fail due to collision with Wi-Fi, should check it.
|
The reading may fail due to collision with Wi-Fi, should check it.
|
||||||
An example using the ADC2 driver to read the output of DAC is available in esp-idf: :example:`peripherals/adc2`
|
An example using the ADC2 driver to read the output of DAC is available in esp-idf: :example:`peripherals/adc2`
|
||||||
|
|
||||||
.. only: esp32
|
.. only:: esp32
|
||||||
|
|
||||||
Reading the internal hall effect sensor::
|
Reading the internal hall effect sensor::
|
||||||
|
|
||||||
|
|
|
@ -6,12 +6,6 @@ Communication with ESP SDIO Slave
|
||||||
ESP SDIO slave initialization
|
ESP SDIO slave initialization
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
.. only:: esp32s2
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
{IDF_TARGET_NAME} does not have a SDIO peripheral.
|
|
||||||
|
|
||||||
The host should initialize the {IDF_TARGET_NAME} SDIO slave according to the standard
|
The host should initialize the {IDF_TARGET_NAME} SDIO slave according to the standard
|
||||||
SDIO initialization process (Sector 3.1.2 of `SDIO Simplified
|
SDIO initialization process (Sector 3.1.2 of `SDIO Simplified
|
||||||
Specification <https://www.sdcard.org/downloads/pls/>`_). In this specification
|
Specification <https://www.sdcard.org/downloads/pls/>`_). In this specification
|
||||||
|
|
|
@ -14,17 +14,17 @@ Peripherals API
|
||||||
I2C <i2c>
|
I2C <i2c>
|
||||||
I2S <i2s>
|
I2S <i2s>
|
||||||
LED Control <ledc>
|
LED Control <ledc>
|
||||||
MCPWM <mcpwm>
|
:esp32: MCPWM <mcpwm>
|
||||||
Pulse Counter <pcnt>
|
Pulse Counter <pcnt>
|
||||||
Remote Control <rmt>
|
Remote Control <rmt>
|
||||||
SD Pull-up Requirements <sd_pullup_requirements>
|
:esp32: SD Pull-up Requirements <sd_pullup_requirements>
|
||||||
SDMMC Host <sdmmc_host>
|
:esp32: SDMMC Host <sdmmc_host>
|
||||||
SD SPI Host <sdspi_host>
|
SD SPI Host <sdspi_host>
|
||||||
SDIO Slave <sdio_slave>
|
:esp32: SDIO Slave <sdio_slave>
|
||||||
Sigma-delta Modulation <sigmadelta>
|
Sigma-delta Modulation <sigmadelta>
|
||||||
SPI Master <spi_master>
|
SPI Master <spi_master>
|
||||||
SPI Slave <spi_slave>
|
SPI Slave <spi_slave>
|
||||||
Temp sensor <temp_sensor>
|
:esp32s2: Temp sensor <temp_sensor>
|
||||||
Timer <timer>
|
Timer <timer>
|
||||||
Touch Sensor <touch_pad>
|
Touch Sensor <touch_pad>
|
||||||
UART <uart>
|
UART <uart>
|
||||||
|
|
|
@ -4,14 +4,6 @@ SDIO Card Slave Driver
|
||||||
Overview
|
Overview
|
||||||
--------
|
--------
|
||||||
|
|
||||||
.. only:: esp32s2
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
{IDF_TARGET_NAME} does not have a SDIO peripheral.
|
|
||||||
|
|
||||||
.. only:: esp32
|
|
||||||
|
|
||||||
The ESP32 SDIO Card peripherals (Host, Slave) shares two sets of pins as below table.
|
The ESP32 SDIO Card peripherals (Host, Slave) shares two sets of pins as below table.
|
||||||
The first set is usually occupied by SPI0 bus which is responsible for the SPI flash holding the code to run.
|
The first set is usually occupied by SPI0 bus which is responsible for the SPI flash holding the code to run.
|
||||||
This means SDIO slave driver can only runs on the second set of pins while SDIO host is not using it.
|
This means SDIO slave driver can only runs on the second set of pins while SDIO host is not using it.
|
||||||
|
|
|
@ -3,13 +3,6 @@ SDMMC Host Driver
|
||||||
|
|
||||||
Overview
|
Overview
|
||||||
--------
|
--------
|
||||||
.. only:: esp32s2
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
{IDF_TARGET_NAME} does not have a SDMMC host peripheral.
|
|
||||||
|
|
||||||
.. only:: esp32
|
|
||||||
|
|
||||||
ESP32's SDMMC host peripheral has two slots:
|
ESP32's SDMMC host peripheral has two slots:
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,11 @@ SD SPI Host Driver
|
||||||
Overview
|
Overview
|
||||||
--------
|
--------
|
||||||
|
|
||||||
The SD SPI host driver allows using the SPI2 (HSPI) or SPI3 (VSPI) controller for communication with SD cards. This driver's naming pattern was adopted from the :doc:`SDMMC Host <sdmmc_host>` driver due to their similarity. Likewise, the APIs of both drivers are also very similar.
|
The SD SPI host driver allows using the SPI2 (HSPI) or SPI3 (VSPI) controller for communication with SD cards.
|
||||||
|
|
||||||
|
.. only:: esp32
|
||||||
|
|
||||||
|
This driver's naming pattern was adopted from the :doc:`SDMMC Host <sdmmc_host>` driver due to their similarity. Likewise, the APIs of both drivers are also very similar.
|
||||||
|
|
||||||
The SD SPI host driver has the following modes:
|
The SD SPI host driver has the following modes:
|
||||||
|
|
||||||
|
|
|
@ -4,15 +4,8 @@ ESP32-S2 Temperature Sensor
|
||||||
Overview
|
Overview
|
||||||
--------
|
--------
|
||||||
|
|
||||||
.. only:: esp32
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
ESP32 does not have a built-in temperature sensor.
|
|
||||||
|
|
||||||
.. only:: esp32s2
|
|
||||||
|
|
||||||
The ESP32-S2 has a built-in temperature sensor. The temperature sensor module contains an 8-bit Sigma-Delta ADC and a temperature offset DAC.
|
The ESP32-S2 has a built-in temperature sensor. The temperature sensor module contains an 8-bit Sigma-Delta ADC and a temperature offset DAC.
|
||||||
|
|
||||||
The conversion relationship is the first columns of the table below. Among them, offset = 0 is the main measurement option, and other values are extended measurement options.
|
The conversion relationship is the first columns of the table below. Among them, offset = 0 is the main measurement option, and other values are extended measurement options.
|
||||||
|
|
||||||
+--------+------------------------+------------------------+
|
+--------+------------------------+------------------------+
|
||||||
|
|
|
@ -16,7 +16,10 @@ SDMMC and SD SPI host drivers (:component:`driver/include/driver/sdmmc_host.h`)
|
||||||
|
|
||||||
For functions used to initialize and configure:
|
For functions used to initialize and configure:
|
||||||
|
|
||||||
|
.. only:: esp32
|
||||||
|
|
||||||
- SDMMC host, see :doc:`SDMMC Host API <../peripherals/sdmmc_host>`
|
- SDMMC host, see :doc:`SDMMC Host API <../peripherals/sdmmc_host>`
|
||||||
|
|
||||||
- SD SPI host, see :doc:`SD SPI Host API <../peripherals/sdspi_host>`
|
- SD SPI host, see :doc:`SD SPI Host API <../peripherals/sdspi_host>`
|
||||||
|
|
||||||
|
|
||||||
|
@ -82,6 +85,8 @@ SDIO interrupts can be enabled by the application using the function :cpp:func:`
|
||||||
|
|
||||||
If you want the application to wait until the SDIO interrupt occurs, use :cpp:func:`sdmmc_io_wait_int`.
|
If you want the application to wait until the SDIO interrupt occurs, use :cpp:func:`sdmmc_io_wait_int`.
|
||||||
|
|
||||||
|
.. only:: esp32
|
||||||
|
|
||||||
There is a component ESSL (ESP Serial Slave Link) to use if you are communicating with an ESP32
|
There is a component ESSL (ESP Serial Slave Link) to use if you are communicating with an ESP32
|
||||||
SDIO slave. See :doc:`/api-reference/protocols/esp_serial_slave_link` and example :example:`peripherals/sdio/host`.
|
SDIO slave. See :doc:`/api-reference/protocols/esp_serial_slave_link` and example :example:`peripherals/sdio/host`.
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ The settings for the system time source are as follows:
|
||||||
- High-resolution timer
|
- High-resolution timer
|
||||||
- None
|
- None
|
||||||
|
|
||||||
It is recommended to stick to the default setting which provides maximum accuracy. If you want to choose a different timer, configure :ref:`CONFIG_ESP32_TIME_SYSCALL` in project configuration.
|
It is recommended to stick to the default setting which provides maximum accuracy. If you want to choose a different timer, configure :ref:`CONFIG_{IDF_TARGET_CFG_PREFIX}_TIME_SYSCALL` in project configuration.
|
||||||
|
|
||||||
|
|
||||||
RTC Clock Source
|
RTC Clock Source
|
||||||
|
@ -35,7 +35,7 @@ The RTC timer has the following clock sources:
|
||||||
|
|
||||||
- ``Internal 8.5MHz oscillator, divided by 256 (~33kHz)``. Provides better frequency stability than the ``internal 150kHz RC oscillator`` at the expense of higher (by 5 uA) deep sleep current consumption. It also does not require external components.
|
- ``Internal 8.5MHz oscillator, divided by 256 (~33kHz)``. Provides better frequency stability than the ``internal 150kHz RC oscillator`` at the expense of higher (by 5 uA) deep sleep current consumption. It also does not require external components.
|
||||||
|
|
||||||
The choice depends on your requirements for system time accuracy and power consumption in sleep modes. To modify the RTC clock source, set :ref:`CONFIG_ESP32_RTC_CLK_SRC` in project configuration.
|
The choice depends on your requirements for system time accuracy and power consumption in sleep modes. To modify the RTC clock source, set :ref:`CONFIG_{IDF_TARGET_CFG_PREFIX}_RTC_CLK_SRC` in project configuration.
|
||||||
|
|
||||||
More details on wiring requirements for the ``External 32kHz crystal`` and ``External 32kHz oscillator at 32K_XP pin`` sources can be found in Section 2.1.4 *Crystal Oscillator* of `Hardware Design Guidelines <https://www.espressif.com/sites/default/files/documentation/esp32_hardware_design_guidelines_en.pdf#page=10>`_.
|
More details on wiring requirements for the ``External 32kHz crystal`` and ``External 32kHz oscillator at 32K_XP pin`` sources can be found in Section 2.1.4 *Crystal Oscillator* of `Hardware Design Guidelines <https://www.espressif.com/sites/default/files/documentation/esp32_hardware_design_guidelines_en.pdf#page=10>`_.
|
||||||
|
|
||||||
|
@ -130,4 +130,4 @@ Once these steps are completed, call the standard C library function ``localtime
|
||||||
API Reference
|
API Reference
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
.. include:: /_build/inc/sntp.inc
|
.. include-build-file:: inc/sntp.inc
|
||||||
|
|
|
@ -40,6 +40,12 @@ ulp.rst:line: WARNING: Duplicate declaration, esp_err_t ulp_load_binary(uint32_t
|
||||||
ulp.rst:line: WARNING: Duplicate declaration, esp_err_t ulp_run(uint32_t entry_point)
|
ulp.rst:line: WARNING: Duplicate declaration, esp_err_t ulp_run(uint32_t entry_point)
|
||||||
ulp.rst:line: WARNING: Duplicate declaration, esp_err_t ulp_set_wakeup_period(size_t period_index, uint32_t period_us)
|
ulp.rst:line: WARNING: Duplicate declaration, esp_err_t ulp_set_wakeup_period(size_t period_index, uint32_t period_us)
|
||||||
README.rst:line: WARNING: Duplicate declaration, esp_err_t ulp_run(uint32_t entry_point)
|
README.rst:line: WARNING: Duplicate declaration, esp_err_t ulp_run(uint32_t entry_point)
|
||||||
|
|
||||||
|
|
||||||
|
# This seems like a bug, as the field are ::model_id and ::vnd::model_id
|
||||||
|
esp_ble_mesh_defs.inc:line: WARNING: Duplicate declaration, uint16_t esp_ble_mesh_model::model_id
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Issue present only when building on msys2 / mingw32 START >>>
|
# Issue present only when building on msys2 / mingw32 START >>>
|
||||||
#
|
#
|
||||||
|
|
|
@ -92,14 +92,14 @@ GPIO、SPI)需要与其通信的其他设备,因此不能使用常规测试
|
||||||
|
|
||||||
DUT1(master)终端:
|
DUT1(master)终端:
|
||||||
|
|
||||||
.. code:: bash
|
.. code::
|
||||||
|
|
||||||
Waiting for signal: [output high level]!
|
Waiting for signal: [output high level]!
|
||||||
Please press "Enter" key once any board send this signal.
|
Please press "Enter" key once any board send this signal.
|
||||||
|
|
||||||
DUT2(slave)终端:
|
DUT2(slave)终端:
|
||||||
|
|
||||||
.. code:: bash
|
.. code::
|
||||||
|
|
||||||
Send signal: [output high level]!
|
Send signal: [output high level]!
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ DUT2 终端::
|
||||||
|
|
||||||
当单元测试应用程序空闲时,输入回车键,它会打印出测试菜单,其中包含所有的测试项目。
|
当单元测试应用程序空闲时,输入回车键,它会打印出测试菜单,其中包含所有的测试项目。
|
||||||
|
|
||||||
.. code:: bash
|
.. code::
|
||||||
|
|
||||||
Here's the test menu, pick your combo:
|
Here's the test menu, pick your combo:
|
||||||
(1) "esp_ota_begin() verifies arguments" [ota]
|
(1) "esp_ota_begin() verifies arguments" [ota]
|
||||||
|
@ -230,7 +230,7 @@ DUT2 终端::
|
||||||
|
|
||||||
一旦选择了多设备测试用例,它会打印一个子菜单:
|
一旦选择了多设备测试用例,它会打印一个子菜单:
|
||||||
|
|
||||||
.. code:: bash
|
.. code::
|
||||||
|
|
||||||
Running gpio master/slave test example...
|
Running gpio master/slave test example...
|
||||||
gpio master/slave test example
|
gpio master/slave test example
|
||||||
|
@ -241,7 +241,7 @@ DUT2 终端::
|
||||||
|
|
||||||
与多设备测试用例相似,多阶段测试用例也会打印子菜单:
|
与多设备测试用例相似,多阶段测试用例也会打印子菜单:
|
||||||
|
|
||||||
.. code:: bash
|
.. code::
|
||||||
|
|
||||||
Running reset reason check for deepsleep...
|
Running reset reason check for deepsleep...
|
||||||
reset reason check for deepsleep
|
reset reason check for deepsleep
|
||||||
|
|
|
@ -175,7 +175,7 @@ DUT2(slave)终端:
|
||||||
|
|
||||||
当单元测试应用程序空闲时,输入回车键,它会打印出测试菜单,其中包含所有的测试项目。
|
当单元测试应用程序空闲时,输入回车键,它会打印出测试菜单,其中包含所有的测试项目。
|
||||||
|
|
||||||
.. code:: bash
|
.. code::
|
||||||
|
|
||||||
Here's the test menu, pick your combo:
|
Here's the test menu, pick your combo:
|
||||||
(1) "esp_ota_begin() verifies arguments" [ota]
|
(1) "esp_ota_begin() verifies arguments" [ota]
|
||||||
|
@ -222,7 +222,7 @@ DUT2(slave)终端:
|
||||||
|
|
||||||
一旦选择了多设备测试用例,它会打印一个子菜单:
|
一旦选择了多设备测试用例,它会打印一个子菜单:
|
||||||
|
|
||||||
.. code:: bash
|
.. code::
|
||||||
|
|
||||||
Running gpio master/slave test example...
|
Running gpio master/slave test example...
|
||||||
gpio master/slave test example
|
gpio master/slave test example
|
||||||
|
@ -233,7 +233,7 @@ DUT2(slave)终端:
|
||||||
|
|
||||||
与多设备测试用例相似,多阶段测试用例也会打印子菜单:
|
与多设备测试用例相似,多阶段测试用例也会打印子菜单:
|
||||||
|
|
||||||
.. code:: bash
|
.. code::
|
||||||
|
|
||||||
Running reset reason check for deepsleep...
|
Running reset reason check for deepsleep...
|
||||||
reset reason check for deepsleep
|
reset reason check for deepsleep
|
||||||
|
|
|
@ -332,5 +332,5 @@ ESP-IDF 包含以下 ESP-MESH 示例项目:
|
||||||
API 参考
|
API 参考
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
.. include:: /_build/inc/esp_mesh.inc
|
.. include-build-file:: inc/esp_mesh.inc
|
||||||
|
|
||||||
|
|
|
@ -84,5 +84,5 @@ ESP-NOW 采用 CCMP 方法保护供应商特定动作帧的安全,具体可参
|
||||||
API 参考
|
API 参考
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
.. include:: /_build/inc/esp_now.inc
|
.. include-build-file:: inc/esp_now.inc
|
||||||
|
|
||||||
|
|
|
@ -13,16 +13,16 @@
|
||||||
I2C <i2c>
|
I2C <i2c>
|
||||||
I2S <i2s>
|
I2S <i2s>
|
||||||
LED Control <ledc>
|
LED Control <ledc>
|
||||||
MCPWM <mcpwm>
|
:esp32: MCPWM <mcpwm>
|
||||||
Pulse Counter <pcnt>
|
Pulse Counter <pcnt>
|
||||||
Remote Control <rmt>
|
Remote Control <rmt>
|
||||||
SDMMC Host <sdmmc_host>
|
:esp32: SDMMC Host <sdmmc_host>
|
||||||
SD SPI Host <sdspi_host>
|
SD SPI Host <sdspi_host>
|
||||||
SDIO Slave <sdio_slave>
|
:esp32: SDIO Slave <sdio_slave>
|
||||||
Sigma-delta Modulation <sigmadelta>
|
Sigma-delta Modulation <sigmadelta>
|
||||||
SPI Master <spi_master>
|
SPI Master <spi_master>
|
||||||
SPI Slave <spi_slave>
|
SPI Slave <spi_slave>
|
||||||
Temp sensor <temp_sensor>
|
:esp32s2: Temp sensor <temp_sensor>
|
||||||
Timer <timer>
|
Timer <timer>
|
||||||
Touch Sensor <touch_pad>
|
Touch Sensor <touch_pad>
|
||||||
UART <uart>
|
UART <uart>
|
||||||
|
|
|
@ -172,4 +172,5 @@ LED PWM 改变占空比和渐变控制的实例请参照 :example:`peripherals/l
|
||||||
API 参考
|
API 参考
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
.. include:: /_build/inc/ledc.inc
|
.. include-build-file:: inc/ledc.inc
|
||||||
|
|
||||||
|
|
|
@ -156,7 +156,8 @@ ESP32 可支持最多 10 个电容式触摸板/GPIO,触摸板可以以矩阵
|
||||||
API 参考
|
API 参考
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
.. include-build-file:: inc/touch_pad.inc
|
.. include-build-file:: inc/touch_sensor.inc
|
||||||
|
.. include-build-file:: inc/touch_sensor_common.inc
|
||||||
|
|
||||||
GPIO 宏查找表
|
GPIO 宏查找表
|
||||||
^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
ESP-MQTT <mqtt>
|
ESP-MQTT <mqtt>
|
||||||
Modbus slave <modbus>
|
Modbus slave <modbus>
|
||||||
Local Control <esp_local_ctrl>
|
Local Control <esp_local_ctrl>
|
||||||
ESP Serial Slave Link <esp_serial_slave_link>
|
:esp32: ESP Serial Slave Link <esp_serial_slave_link>
|
||||||
|
|
||||||
此 API 部分的示例代码在 ESP-IDF 示例工程的 :example:`protocols` 目录下提供。
|
此 API 部分的示例代码在 ESP-IDF 示例工程的 :example:`protocols` 目录下提供。
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,11 @@ SDMMC 主机驱动和 SD SPI 主机驱动(:component:`driver/include/driver/sd
|
||||||
|
|
||||||
初始化函数及配置函数:
|
初始化函数及配置函数:
|
||||||
|
|
||||||
|
.. only:: esp32
|
||||||
|
|
||||||
- 如需初始化和配置 SDMMC 主机,请参阅 :doc:`SDMMC 主机 API <../peripherals/sdmmc_host>`
|
- 如需初始化和配置 SDMMC 主机,请参阅 :doc:`SDMMC 主机 API <../peripherals/sdmmc_host>`
|
||||||
|
|
||||||
|
|
||||||
- 如需初始化和配置 SD SPI 主机,请参阅 :doc:`SD SPI 主机 API <../peripherals/sdspi_host>`
|
- 如需初始化和配置 SD SPI 主机,请参阅 :doc:`SD SPI 主机 API <../peripherals/sdspi_host>`
|
||||||
|
|
||||||
本文档中所述的 SDMMC 协议层仅处理 SD 协议相关事项,例如卡初始化和数据传输命令。
|
本文档中所述的 SDMMC 协议层仅处理 SD 协议相关事项,例如卡初始化和数据传输命令。
|
||||||
|
|
Loading…
Reference in a new issue