Bläddra i källkod

Fixes #50 - Green led flash state reset on wifi connect - release

Sebastien 4 år sedan
förälder
incheckning
a46bbb409f

+ 8 - 5
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 <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
@@ -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;
 } 

+ 5 - 0
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 )){

+ 2 - 1
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;
 

+ 6 - 1
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();