Can wait for network to finish boot
This commit is contained in:
parent
f60f6f6ccc
commit
59ba55793e
@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
static const char *TAG = "ethernet";
|
static const char *TAG = "ethernet";
|
||||||
|
|
||||||
|
static bool network_ready = false;
|
||||||
|
|
||||||
/** Event handler for Ethernet events */
|
/** Event handler for Ethernet events */
|
||||||
static void eth_event_handler(void *arg, esp_event_base_t event_base,
|
static void eth_event_handler(void *arg, esp_event_base_t event_base,
|
||||||
int32_t event_id, void *event_data)
|
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;
|
break;
|
||||||
case ETHERNET_EVENT_DISCONNECTED:
|
case ETHERNET_EVENT_DISCONNECTED:
|
||||||
ESP_LOGI(TAG, "Ethernet Link Down");
|
ESP_LOGI(TAG, "Ethernet Link Down");
|
||||||
|
network_ready = false;
|
||||||
break;
|
break;
|
||||||
case ETHERNET_EVENT_START:
|
case ETHERNET_EVENT_START:
|
||||||
ESP_LOGI(TAG, "Ethernet Started");
|
ESP_LOGI(TAG, "Ethernet Started");
|
||||||
break;
|
break;
|
||||||
case ETHERNET_EVENT_STOP:
|
case ETHERNET_EVENT_STOP:
|
||||||
ESP_LOGI(TAG, "Ethernet Stopped");
|
ESP_LOGI(TAG, "Ethernet Stopped");
|
||||||
|
network_ready = false;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
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, "ETHMASK:" IPSTR, IP2STR(&ip_info->netmask));
|
||||||
ESP_LOGI(TAG, "ETHGW:" IPSTR, IP2STR(&ip_info->gw));
|
ESP_LOGI(TAG, "ETHGW:" IPSTR, IP2STR(&ip_info->gw));
|
||||||
ESP_LOGI(TAG, "~~~~~~~~~~~");
|
ESP_LOGI(TAG, "~~~~~~~~~~~");
|
||||||
|
|
||||||
|
network_ready = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ethernet_init()
|
void ethernet_init()
|
||||||
@ -127,3 +133,25 @@ void ethernet_init()
|
|||||||
ESP_ERROR_CHECK(esp_event_handler_register(ETH_EVENT, ESP_EVENT_ANY_ID, ð_event_handler, NULL));
|
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));
|
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");
|
||||||
|
}
|
@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "stdbool.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
@ -15,9 +17,14 @@ extern "C"
|
|||||||
void ethernet_init();
|
void ethernet_init();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* De-initialize Ethernet connection
|
* Check if Ethernet connection is ready or not
|
||||||
*/
|
*/
|
||||||
void ethernet_deinit();
|
bool ethernet_is_ready();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wait for network connection to become ready
|
||||||
|
*/
|
||||||
|
void ethernet_wait_for_network();
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -45,13 +45,14 @@ void app_main(void)
|
|||||||
|
|
||||||
ESP_LOGI(TAG, "Initialize network\n");
|
ESP_LOGI(TAG, "Initialize network\n");
|
||||||
ethernet_init();
|
ethernet_init();
|
||||||
|
ethernet_wait_for_network();
|
||||||
|
|
||||||
ESP_LOGI(TAG, "Check secure origin\n");
|
ESP_LOGI(TAG, "Check secure origin\n");
|
||||||
char *sec_orig = unsecure_api_get_secure_origin();
|
char *sec_orig = unsecure_api_get_secure_origin();
|
||||||
assert(sec_orig != NULL);
|
assert(sec_orig != NULL);
|
||||||
printf("Res = %s\n", sec_orig);
|
printf("Res = %s\n", sec_orig);
|
||||||
|
|
||||||
system_sleep(20);
|
system_sleep(120);
|
||||||
|
|
||||||
reboot();
|
reboot();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user