mirror of
https://github.com/espressif/esp-idf
synced 2025-03-10 01:29:21 -04:00
73 lines
2.4 KiB
C
73 lines
2.4 KiB
C
/*
|
|
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "esp_err.h"
|
|
#include "soc/soc_caps.h"
|
|
#include "hal/uart_types.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* @brief Structure that holds configuration for UART wakeup.
|
|
*
|
|
* This structure is used to configure the wakeup behavior for a UART port. The wakeup mode can be
|
|
* selected from several options, such as active threshold, FIFO threshold, start bit detection, and
|
|
* character sequence detection. The availability of different wakeup modes depends on the SOC capabilities.
|
|
*/
|
|
typedef struct {
|
|
/** Wakeup mode selection */
|
|
uart_wakeup_mode_t wakeup_mode;
|
|
|
|
#if SOC_UART_WAKEUP_SUPPORT_ACTIVE_THRESH_MODE
|
|
/** Used in Active threshold wake-up;
|
|
related: UART_WK_MODE_ACTIVE_THRESH;
|
|
Configures the number of RXD edge changes to wake up the chip.*/
|
|
uint16_t rx_edge_threshold;
|
|
#endif
|
|
|
|
#if SOC_UART_WAKEUP_SUPPORT_FIFO_THRESH_MODE
|
|
/** Used in Bytes received in RX FIFO wake-up;
|
|
related: UART_WK_MODE_FIFO_THRESH;
|
|
Configures the number of received data bytes to wake up the chip.*/
|
|
uint16_t rx_fifo_threshold;
|
|
#endif
|
|
|
|
#if SOC_UART_WAKEUP_SUPPORT_CHAR_SEQ_MODE
|
|
/** Used in Character sequence detection(Trigger phrase) wake-up;
|
|
related: UART_WK_MODE_CHAR_SEQ;
|
|
'*' represents any symbol.
|
|
The end character cannot be '*'.
|
|
Example: "he**o" matches hello, heyyo. */
|
|
char wake_chars_seq[SOC_UART_WAKEUP_CHARS_SEQ_MAX_LEN];
|
|
#endif
|
|
|
|
} uart_wakeup_cfg_t;
|
|
|
|
/**
|
|
* @brief Initializes the UART wakeup functionality.
|
|
*
|
|
* This function configures the wakeup behavior for a specified UART port based on the provided configuration.
|
|
* The behavior depends on the selected wakeup mode and additional parameters such as active threshold or
|
|
* character sequence, if applicable. It is important that the provided configuration matches the capabilities
|
|
* of the SOC to ensure proper operation.
|
|
*
|
|
* @param uart_num The UART port to initialize for wakeup (e.g., UART_NUM_0, UART_NUM_1, etc.).
|
|
* @param cfg Pointer to the `uart_wakeup_cfg_t` structure that contains the wakeup configuration settings.
|
|
*
|
|
* @return
|
|
* - `ESP_OK` if the wakeup configuration was successfully applied.
|
|
* - `ESP_ERR_INVALID_ARG` if the provided configuration is invalid (e.g., threshold values out of range).
|
|
*/
|
|
esp_err_t uart_wakeup_setup(uart_port_t uart_num, const uart_wakeup_cfg_t *cfg);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|