diff --git a/components/services/led.c b/components/services/led.c index ecb39d60..82fba183 100644 --- a/components/services/led.c +++ b/components/services/led.c @@ -5,7 +5,6 @@ software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ - #include #include #include @@ -84,8 +83,8 @@ static void vCallbackFunction( TimerHandle_t xTimer ) { */ bool led_blink_core(int idx, int ontime, int offtime, bool pushed) { if (!leds[idx].gpio || leds[idx].gpio < 0 ) return false; - - ESP_LOGD(TAG,"led_blink_core"); + + ESP_LOGD(TAG,"led_blink_core led idx %d, ontime %d, offtime %d, pushing %s. Led state: pushedon %d, pushedoff %d, timer %s, pushed %s", idx,ontime,offtime,pushed?"TRUE":"FALSE", leds[idx].pushedon,leds[idx].pushedoff,leds[idx].timer?"TRUE":"FALSE", leds[idx].pushed?"TRUE":"FALSE"); if (leds[idx].timer) { // normal requests waits if a pop is pending if (!pushed && leds[idx].pushed) { @@ -98,15 +97,18 @@ bool led_blink_core(int idx, int ontime, int offtime, bool pushed) { // save current state if not already pushed if (!leds[idx].pushed) { + ESP_LOGD(TAG,"Pushing state. Ontime %d->%d. Offtime %d->%d",leds[idx].pushedon,leds[idx].ontime, leds[idx].pushedoff,leds[idx].offtime); leds[idx].pushedon = leds[idx].ontime; leds[idx].pushedoff = leds[idx].offtime; leds[idx].pushed = pushed; + } // then set new one leds[idx].ontime = ontime; leds[idx].offtime = offtime; - + + if (ontime == 0) { ESP_LOGD(TAG,"led %d, setting reverse level", idx); set_level(leds + idx, false); @@ -124,7 +126,8 @@ bool led_blink_core(int idx, int ontime, int offtime, bool pushed) { ESP_LOGD(TAG,"led %d, Setting gpio %d and starting timer", idx, leds[idx].gpio); if (xTimerStart(leds[idx].timer, BLOCKTIME) == pdFAIL) return false; } - + ESP_LOGD(TAG,"led_blink_core END led idx %d, ontime %d, offtime %d, pushing %s. Led state: pushedon %d, pushedoff %d, timer %s, pushed %s", idx,ontime,offtime,pushed?"TRUE":"FALSE", leds[idx].pushedon,leds[idx].pushedoff,leds[idx].timer?"TRUE":"FALSE", leds[idx].pushed?"TRUE":"FALSE"); + return true; } diff --git a/components/wifi-manager/wifi_manager.c b/components/wifi-manager/wifi_manager.c index 9852113b..16791268 100644 --- a/components/wifi-manager/wifi_manager.c +++ b/components/wifi-manager/wifi_manager.c @@ -693,6 +693,8 @@ static void event_handler(void* arg, esp_event_base_t event_base, int32_t event_ ESP_LOGD(TAG, "WIFI_EVENT_AP_STACONNECTED. aid: %d, mac: %s",stac->aid,STR_OR_BLANK(mac)); FREE_AND_NULL(mac); xEventGroupSetBits(wifi_manager_event_group, WIFI_MANAGER_AP_STA_CONNECTED_BIT); + wifi_manager_send_message(EVENT_STA_CONNECTED, NULL); + } break; case WIFI_EVENT_AP_STADISCONNECTED: @@ -1480,6 +1482,9 @@ void wifi_manager( void * pvParameters ){ /* callback */ if(cb_ptr_arr[msg.code]) (*cb_ptr_arr[msg.code])(NULL); break; + case EVENT_STA_CONNECTED: + if(cb_ptr_arr[msg.code]) (*cb_ptr_arr[msg.code])(NULL); + break; case UPDATE_CONNECTION_OK: /* refresh JSON */ if(wifi_manager_lock_json_buffer( portMAX_DELAY )){ diff --git a/components/wifi-manager/wifi_manager.h b/components/wifi-manager/wifi_manager.h index 4d61fead..a6302949 100644 --- a/components/wifi-manager/wifi_manager.h +++ b/components/wifi-manager/wifi_manager.h @@ -191,7 +191,8 @@ typedef enum message_code_t { ORDER_RESTART_RECOVERY = 16, ORDER_RESTART_OTA_URL = 17, ORDER_RESTART = 18, - MESSAGE_CODE_COUNT = 19 /* important for the callback array */ + EVENT_STA_CONNECTED = 19, + MESSAGE_CODE_COUNT = 20 /* important for the callback array */ }message_code_t; diff --git a/main/esp_app_main.c b/main/esp_app_main.c index ecfdb6ea..3a435430 100644 --- a/main/esp_app_main.c +++ b/main/esp_app_main.c @@ -95,6 +95,10 @@ void cb_connection_sta_disconnected(void *pvParameter){ bWifiConnected=false; xEventGroupClearBits(wifi_event_group, CONNECTED_BIT); } +void cb_connection_sta_connected(void *pvParameter){ + +} + bool wait_for_wifi(){ bool connected=(xEventGroupGetBits(wifi_event_group) & CONNECTED_BIT)!=0; if(!connected){ @@ -447,7 +451,7 @@ void app_main() /* start the wifi manager */ ESP_LOGD(TAG,"Blinking led"); - led_blink(LED_GREEN, 250, 250); + led_blink_pushed(LED_GREEN, 250, 250); if(bypass_wifi_manager){ ESP_LOGW(TAG,"*******************************************************************************************"); @@ -463,6 +467,7 @@ void app_main() * This can be either after we're started the AP mode, or after we've started the STA mode */ wifi_manager_set_callback(ORDER_START_AP, &start_telnet); wifi_manager_set_callback(ORDER_CONNECT_STA, &start_telnet); + wifi_manager_set_callback(EVENT_STA_CONNECTED, &cb_connection_sta_connected); } console_start();