|  | @@ -146,7 +146,7 @@ static void network_connect_active_ssid(state_machine_t* const State_Machine) {
 | 
	
		
			
				|  |  |              network_async(EN_ETHERNET_FALLBACK);
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              // returning to AP mode
 | 
	
		
			
				|  |  | -            nm->STA_duration = STA_POLLING_MIN;
 | 
	
		
			
				|  |  | +            nm->STA_duration = nm->sta_polling_min_ms;
 | 
	
		
			
				|  |  |              ESP_LOGD(TAG, "No ethernet and no wifi configured. Go to configuration mode");
 | 
	
		
			
				|  |  |              network_async_configure();
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -219,8 +219,34 @@ static state_machine_result_t NETWORK_INSTANTIATED_STATE_entry_handler(state_mac
 | 
	
		
			
				|  |  |  static state_machine_result_t NETWORK_INSTANTIATED_STATE_handler(state_machine_t* const State_Machine) {
 | 
	
		
			
				|  |  |      network_handler_print(State_Machine,true);
 | 
	
		
			
				|  |  |      state_machine_result_t result = EVENT_UN_HANDLED;
 | 
	
		
			
				|  |  | +    network_t* const nm = (network_t *)State_Machine;
 | 
	
		
			
				|  |  |      State_Machine->State = &network_states[NETWORK_INSTANTIATED_STATE];
 | 
	
		
			
				|  |  |      State_Machine->Event = EN_START;
 | 
	
		
			
				|  |  | +      char * valuestr=NULL;
 | 
	
		
			
				|  |  | +    valuestr=config_alloc_get_default(NVS_TYPE_STR,"pollmx","600",0);
 | 
	
		
			
				|  |  | +    if (valuestr) {
 | 
	
		
			
				|  |  | +        nm->sta_polling_max_ms = atoi(valuestr)*1000;
 | 
	
		
			
				|  |  | +        ESP_LOGD(TAG, "sta_polling_max_ms set to %d", nm->sta_polling_max_ms);
 | 
	
		
			
				|  |  | +        FREE_AND_NULL(valuestr);
 | 
	
		
			
				|  |  | +    }   
 | 
	
		
			
				|  |  | +    valuestr=config_alloc_get_default(NVS_TYPE_STR,"pollmin","15",0);
 | 
	
		
			
				|  |  | +    if (valuestr) {
 | 
	
		
			
				|  |  | +        nm->sta_polling_min_ms = atoi(valuestr)*1000;
 | 
	
		
			
				|  |  | +        ESP_LOGD(TAG, "sta_polling_min_ms set to %d", nm->sta_polling_min_ms);
 | 
	
		
			
				|  |  | +        FREE_AND_NULL(valuestr);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    valuestr=config_alloc_get_default(NVS_TYPE_STR,"ethtmout","8",0);
 | 
	
		
			
				|  |  | +    if (valuestr) {
 | 
	
		
			
				|  |  | +        nm->eth_link_down_reboot_ms = atoi(valuestr)*1000;
 | 
	
		
			
				|  |  | +        ESP_LOGD(TAG, "ethtmout set to %d", nm->eth_link_down_reboot_ms);
 | 
	
		
			
				|  |  | +        FREE_AND_NULL(valuestr);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    valuestr=config_alloc_get_default(NVS_TYPE_STR,"dhcp_tmout","8",0);
 | 
	
		
			
				|  |  | +    if(valuestr){
 | 
	
		
			
				|  |  | +        nm->dhcp_timeout = atoi(valuestr)*1000;
 | 
	
		
			
				|  |  | +        ESP_LOGD(TAG, "dhcp_timeout set to %d", nm->dhcp_timeout);
 | 
	
		
			
				|  |  | +        FREE_AND_NULL(valuestr);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |      HANDLE_GLOBAL_EVENT(State_Machine);
 | 
	
		
			
				|  |  |      if (State_Machine->Event == EN_START) {
 | 
	
		
			
				|  |  |          result= local_traverse_state(State_Machine, &network_states[NETWORK_INITIALIZING_STATE],__FUNCTION__);
 | 
	
	
		
			
				|  | @@ -333,7 +359,8 @@ static state_machine_result_t ETH_STARTING_STATE_exit_handler(state_machine_t* c
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  static state_machine_result_t NETWORK_ETH_ACTIVE_STATE_entry_handler(state_machine_t* const State_Machine) {
 | 
	
		
			
				|  |  |      network_handler_entry_print(State_Machine,true);
 | 
	
		
			
				|  |  | -    network_set_timer(ETH_LINK_DOWN_REBOOT);
 | 
	
		
			
				|  |  | +    network_t* const nm = (network_t *)State_Machine;
 | 
	
		
			
				|  |  | +    network_set_timer(nm->eth_link_down_reboot_ms);
 | 
	
		
			
				|  |  |      NETWORK_EXECUTE_CB(State_Machine);
 | 
	
		
			
				|  |  |      network_handler_entry_print(State_Machine,false);
 | 
	
		
			
				|  |  |      return EVENT_HANDLED;
 | 
	
	
		
			
				|  | @@ -438,7 +465,8 @@ static state_machine_result_t ETH_CONNECTING_NEW_STATE_exit_handler(state_machin
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  static state_machine_result_t ETH_ACTIVE_LINKDOWN_STATE_entry_handler(state_machine_t* const State_Machine) {
 | 
	
		
			
				|  |  |      network_handler_entry_print(State_Machine,true);
 | 
	
		
			
				|  |  | -    network_set_timer(ETH_LINK_DOWN_REBOOT);
 | 
	
		
			
				|  |  | +    network_t* const nm = (network_t *)State_Machine;
 | 
	
		
			
				|  |  | +    network_set_timer(nm->eth_link_down_reboot_ms);
 | 
	
		
			
				|  |  |      NETWORK_EXECUTE_CB(State_Machine);
 | 
	
		
			
				|  |  |      messaging_post_message(MESSAGING_WARNING, MESSAGING_CLASS_SYSTEM, "Ethernet link down.");
 | 
	
		
			
				|  |  |      network_handler_entry_print(State_Machine,false);
 | 
	
	
		
			
				|  | @@ -463,7 +491,8 @@ static state_machine_result_t ETH_ACTIVE_LINKDOWN_STATE_exit_handler(state_machi
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  static state_machine_result_t ETH_ACTIVE_LINKUP_STATE_entry_handler(state_machine_t* const State_Machine) {
 | 
	
		
			
				|  |  |      network_handler_entry_print(State_Machine,true);
 | 
	
		
			
				|  |  | -    network_set_timer(ETH_DHCP_FAIL);
 | 
	
		
			
				|  |  | +    network_t* const nm = (network_t *)State_Machine;
 | 
	
		
			
				|  |  | +    network_set_timer(nm->dhcp_timeout);
 | 
	
		
			
				|  |  |      NETWORK_EXECUTE_CB(State_Machine);
 | 
	
		
			
				|  |  |      messaging_post_message(MESSAGING_INFO, MESSAGING_CLASS_SYSTEM, "Ethernet link up.");
 | 
	
		
			
				|  |  |      network_handler_entry_print(State_Machine,false);
 | 
	
	
		
			
				|  | @@ -682,12 +711,13 @@ static state_machine_result_t WIFI_CONFIGURING_CONNECT_STATE_entry_handler(state
 | 
	
		
			
				|  |  |  static state_machine_result_t WIFI_CONFIGURING_CONNECT_STATE_handler(state_machine_t* const State_Machine) {
 | 
	
		
			
				|  |  |      HANDLE_GLOBAL_EVENT(State_Machine);
 | 
	
		
			
				|  |  |      network_handler_print(State_Machine,true);
 | 
	
		
			
				|  |  | +    network_t* const nm = (network_t *)State_Machine;
 | 
	
		
			
				|  |  |      state_machine_result_t result = EVENT_HANDLED;
 | 
	
		
			
				|  |  |      switch (State_Machine->Event) {
 | 
	
		
			
				|  |  |          case EN_CONNECTED:
 | 
	
		
			
				|  |  |              result=EVENT_HANDLED;
 | 
	
		
			
				|  |  |              ESP_LOGD(TAG,"Wifi was connected. Waiting for IP address");
 | 
	
		
			
				|  |  | -            network_set_timer(WIFI_DHCP_FAIL);
 | 
	
		
			
				|  |  | +            network_set_timer(nm->dhcp_timeout);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |          case EN_GOT_IP:
 | 
	
		
			
				|  |  |              network_status_update_ip_info(UPDATE_CONNECTION_OK); 
 | 
	
	
		
			
				|  | @@ -791,7 +821,7 @@ static state_machine_result_t WIFI_CONNECTING_STATE_entry_handler(state_machine_
 | 
	
		
			
				|  |  |      network_handler_entry_print(State_Machine,true);
 | 
	
		
			
				|  |  |      network_start_stop_dhcp(nm->wifi_netif, true);
 | 
	
		
			
				|  |  |      network_connect_active_ssid(State_Machine);
 | 
	
		
			
				|  |  | -    nm->STA_duration = STA_POLLING_MIN;
 | 
	
		
			
				|  |  | +    nm->STA_duration = nm->sta_polling_min_ms;
 | 
	
		
			
				|  |  |      /* create timer for background STA connection */
 | 
	
		
			
				|  |  |      network_set_timer(nm->STA_duration);    
 | 
	
		
			
				|  |  |      NETWORK_EXECUTE_CB(State_Machine);
 | 
	
	
		
			
				|  | @@ -1038,9 +1068,9 @@ static state_machine_result_t WIFI_LOST_CONNECTION_STATE_entry_handler(state_mac
 | 
	
		
			
				|  |  |              /* put us in softAP mode first */
 | 
	
		
			
				|  |  |              esp_wifi_get_mode(&mode);
 | 
	
		
			
				|  |  |              if (WIFI_MODE_APSTA != mode) {
 | 
	
		
			
				|  |  | -                nm->STA_duration = STA_POLLING_MIN;
 | 
	
		
			
				|  |  | +                 nm->STA_duration = nm->sta_polling_min_ms;
 | 
	
		
			
				|  |  |                  network_async_configure();
 | 
	
		
			
				|  |  | -            } else if (nm->STA_duration < STA_POLLING_MAX) {
 | 
	
		
			
				|  |  | +            } else if (nm->STA_duration < nm->sta_polling_max_ms) {
 | 
	
		
			
				|  |  |                  nm->STA_duration *= 1.25;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 |