feat: supports lp uart wakeup
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
* 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
|
||||
Reference in New Issue
Block a user