From 953e170dd21e57016a3e2f4a50929e092ff28a87 Mon Sep 17 00:00:00 2001 From: sharandac Date: Mon, 10 Aug 2020 15:28:35 +0200 Subject: [PATCH] prevent locking wifictl on/off events --- src/hardware/wifictl.cpp | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/hardware/wifictl.cpp b/src/hardware/wifictl.cpp index eb79b3a..ee196b1 100644 --- a/src/hardware/wifictl.cpp +++ b/src/hardware/wifictl.cpp @@ -342,13 +342,11 @@ void wifictl_on( void ) { return; log_i("request wifictl on"); - if ( powermgm_get_event( POWERMGM_WIFI_OFF_REQUEST ) || powermgm_get_event( POWERMGM_WIFI_ON_REQUEST ) ) { - return; - } - else { - powermgm_set_event( POWERMGM_WIFI_ON_REQUEST ); - vTaskResume( _wifictl_Task ); + while( powermgm_get_event( POWERMGM_WIFI_OFF_REQUEST | POWERMGM_WIFI_ON_REQUEST ) ) { + yield(); } + powermgm_set_event( POWERMGM_WIFI_ON_REQUEST ); + vTaskResume( _wifictl_Task ); } /* @@ -359,13 +357,11 @@ void wifictl_off( void ) { return; log_i("request wifictl off"); - if ( powermgm_get_event( POWERMGM_WIFI_OFF_REQUEST ) || powermgm_get_event( POWERMGM_WIFI_ON_REQUEST )) { - return; - } - else { - powermgm_set_event( POWERMGM_WIFI_OFF_REQUEST ); - vTaskResume( _wifictl_Task ); + while( powermgm_get_event( POWERMGM_WIFI_OFF_REQUEST | POWERMGM_WIFI_ON_REQUEST ) ) { + yield(); } + powermgm_set_event( POWERMGM_WIFI_OFF_REQUEST ); + vTaskResume( _wifictl_Task ); } void wifictl_standby( void ) {