Can wait for network to finish boot
This commit is contained in:
esp32_device/main
@ -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