Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion components/improv_wifi/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ cmake_minimum_required(VERSION 3.15)
SRCS "improvWifi.cpp" "improv_wrapper.cpp" "wifi_provisioning.c"
PRIV_INCLUDE_DIRS "Improv-WiFi-Library/src" "priv_include"
INCLUDE_DIRS "include"
PRIV_REQUIRES driver esp_wifi network_interface
PRIV_REQUIRES driver esp_wifi esp_pm network_interface
#SRCS "Improv-WiFi-Library/src/ImprovWiFiLibrary.cpp" "wifi_provisioning.c"
#INCLUDE_DIRS "Improv-WiFi-Library/src" "include"
)
22 changes: 22 additions & 0 deletions components/improv_wifi/wifi_provisioning.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#include "esp_err.h"
#include "esp_log.h"
#include "esp_pm.h"
#include "esp_wifi.h"
#include "freertos/FreeRTOS.h"
#include "freertos/event_groups.h"
Expand All @@ -28,6 +29,11 @@

#define TAG "IMPROV"

#ifdef CONFIG_PM_ENABLE
// UART RX doesn't work in light sleep, so stay awake while Improv is active
static esp_pm_lock_handle_t improv_pm_lock = NULL;
#endif

#ifdef CONFIG_ESP_CONSOLE_UART_DEFAULT
#define RD_BUF_SIZE (UART_FIFO_LEN)
#define PATTERN_CHR_NUM (3)
Expand Down Expand Up @@ -288,6 +294,14 @@ void improv_init(void) {
improv_wifi_setCustomIsConnected(improv_wifi_is_connected);
improv_wifi_setCustomGetLocalIpCallback(improv_wifi_get_local_ip);

#ifdef CONFIG_PM_ENABLE
if (improv_pm_lock == NULL &&
esp_pm_lock_create(ESP_PM_APB_FREQ_MAX, 0, "improv", &improv_pm_lock) ==
ESP_OK) {
esp_pm_lock_acquire(improv_pm_lock);
}
#endif

#ifdef CONFIG_ESP_CONSOLE_UART_DEFAULT
// Set UART number from config
uart_num = CONFIG_ESP_CONSOLE_UART_NUM;
Expand Down Expand Up @@ -349,4 +363,12 @@ void improv_deinit(void) {
#endif

improv_wifi_destroy();

#ifdef CONFIG_PM_ENABLE
if (improv_pm_lock) {
esp_pm_lock_release(improv_pm_lock);
esp_pm_lock_delete(improv_pm_lock);
improv_pm_lock = NULL;
}
#endif
}
Loading