Can wait for network to finish boot
This commit is contained in:
		@@ -14,6 +14,8 @@
 | 
			
		||||
 | 
			
		||||
static const char *TAG = "ethernet";
 | 
			
		||||
 | 
			
		||||
static bool network_ready = false;
 | 
			
		||||
 | 
			
		||||
/** Event handler for Ethernet events */
 | 
			
		||||
static void eth_event_handler(void *arg, esp_event_base_t event_base,
 | 
			
		||||
                              int32_t event_id, void *event_data)
 | 
			
		||||
@@ -32,12 +34,14 @@ static void eth_event_handler(void *arg, esp_event_base_t event_base,
 | 
			
		||||
        break;
 | 
			
		||||
    case ETHERNET_EVENT_DISCONNECTED:
 | 
			
		||||
        ESP_LOGI(TAG, "Ethernet Link Down");
 | 
			
		||||
        network_ready = false;
 | 
			
		||||
        break;
 | 
			
		||||
    case ETHERNET_EVENT_START:
 | 
			
		||||
        ESP_LOGI(TAG, "Ethernet Started");
 | 
			
		||||
        break;
 | 
			
		||||
    case ETHERNET_EVENT_STOP:
 | 
			
		||||
        ESP_LOGI(TAG, "Ethernet Stopped");
 | 
			
		||||
        network_ready = false;
 | 
			
		||||
        break;
 | 
			
		||||
    default:
 | 
			
		||||
        break;
 | 
			
		||||
@@ -57,6 +61,8 @@ static void got_ip_event_handler(void *arg, esp_event_base_t event_base,
 | 
			
		||||
    ESP_LOGI(TAG, "ETHMASK:" IPSTR, IP2STR(&ip_info->netmask));
 | 
			
		||||
    ESP_LOGI(TAG, "ETHGW:" IPSTR, IP2STR(&ip_info->gw));
 | 
			
		||||
    ESP_LOGI(TAG, "~~~~~~~~~~~");
 | 
			
		||||
 | 
			
		||||
    network_ready = true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ethernet_init()
 | 
			
		||||
@@ -126,4 +132,26 @@ void ethernet_init()
 | 
			
		||||
    // Register user defined event handers
 | 
			
		||||
    ESP_ERROR_CHECK(esp_event_handler_register(ETH_EVENT, ESP_EVENT_ANY_ID, ð_event_handler, NULL));
 | 
			
		||||
    ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_ETH_GOT_IP, &got_ip_event_handler, NULL));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool ethernet_is_ready()
 | 
			
		||||
{
 | 
			
		||||
    return network_ready;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ethernet_wait_for_network()
 | 
			
		||||
{
 | 
			
		||||
    for (size_t i = 0; i < 1000 && !network_ready; i++)
 | 
			
		||||
    {
 | 
			
		||||
        ESP_LOGI(TAG, "Wait for network %d / 1000", i);
 | 
			
		||||
        system_sleep(1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!network_ready)
 | 
			
		||||
    {
 | 
			
		||||
        ESP_LOGE(TAG, "Failed to acquire network, will reboot!");
 | 
			
		||||
        reboot();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ESP_LOGI(TAG, "Network is now available");
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user