From 968d6d578f0e7f9924599c378430742c87b20ce4 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Thu, 16 Mar 2023 00:07:37 +0300 Subject: [PATCH] Add retry and delay to avoid power issues with Wifi plugins --- .../external/esp8266_deauth/esp8266_deauth.c | 17 ++++++++++++++--- .../external/wifi_scanner/wifi_scanner.c | 18 +++++++++++++++--- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/applications/external/esp8266_deauth/esp8266_deauth.c b/applications/external/esp8266_deauth/esp8266_deauth.c index d32ca4c18..fc165b932 100644 --- a/applications/external/esp8266_deauth/esp8266_deauth.c +++ b/applications/external/esp8266_deauth/esp8266_deauth.c @@ -352,7 +352,12 @@ int32_t esp8266_deauth_app(void* p) { #else #if ENABLE_MODULE_POWER app->m_context = Initializing; - furi_hal_power_enable_otg(); + uint8_t attempts = 0; + while(!furi_hal_power_is_otg_enabled() && attempts++ < 5) { + furi_hal_power_enable_otg(); + furi_delay_ms(10); + } + furi_delay_ms(200); #else app->m_context = ModuleActive; #endif @@ -409,7 +414,11 @@ int32_t esp8266_deauth_app(void* p) { app->m_wifiDeauthModuleAttached = true; #if ENABLE_MODULE_POWER app->m_context = Initializing; - furi_hal_power_enable_otg(); + uint8_t attempts2 = 0; + while(!furi_hal_power_is_otg_enabled() && attempts2++ < 3) { + furi_hal_power_enable_otg(); + furi_delay_ms(10); + } #else app->m_context = ModuleActive; #endif @@ -533,7 +542,9 @@ int32_t esp8266_deauth_app(void* p) { DEAUTH_APP_LOG_I("App freed"); #if ENABLE_MODULE_POWER - furi_hal_power_disable_otg(); + if(furi_hal_power_is_otg_enabled()) { + furi_hal_power_disable_otg(); + } #endif return 0; diff --git a/applications/external/wifi_scanner/wifi_scanner.c b/applications/external/wifi_scanner/wifi_scanner.c index 3a79ce16e..341287b54 100644 --- a/applications/external/wifi_scanner/wifi_scanner.c +++ b/applications/external/wifi_scanner/wifi_scanner.c @@ -663,7 +663,12 @@ int32_t wifi_scanner_app(void* p) { #else app->m_context = Initializing; #if ENABLE_MODULE_POWER - furi_hal_power_enable_otg(); + uint8_t attempts = 0; + while(!furi_hal_power_is_otg_enabled() && attempts++ < 5) { + furi_hal_power_enable_otg(); + furi_delay_ms(10); + } + furi_delay_ms(200); #endif // ENABLE_MODULE_POWER #endif // ENABLE_MODULE_DETECTION @@ -722,7 +727,12 @@ int32_t wifi_scanner_app(void* p) { app->m_wifiModuleAttached = true; app->m_context = Initializing; #if ENABLE_MODULE_POWER - furi_hal_power_enable_otg(); + uint8_t attempts2 = 0; + while(!furi_hal_power_is_otg_enabled() && attempts2++ < 3) { + furi_hal_power_enable_otg(); + furi_delay_ms(10); + } + #endif } } @@ -851,7 +861,9 @@ int32_t wifi_scanner_app(void* p) { WIFI_APP_LOG_I("App freed"); #if ENABLE_MODULE_POWER - furi_hal_power_disable_otg(); + if(furi_hal_power_is_otg_enabled()) { + furi_hal_power_disable_otg(); + } #endif return 0;