diff --git a/cpu/esp8266/esp-wifi/esp_wifi_netdev.c b/cpu/esp8266/esp-wifi/esp_wifi_netdev.c index 0eeb3c3e3bd0bfa78d808cd0c886d49ff95e7631..2be88f4c613bfc74b2cb3a8bf708abaef89f7c94 100644 --- a/cpu/esp8266/esp-wifi/esp_wifi_netdev.c +++ b/cpu/esp8266/esp-wifi/esp_wifi_netdev.c @@ -574,6 +574,22 @@ static void _isr(netdev_t *netdev) ESP_WIFI_DEBUG("%p", netdev); assert(netdev != NULL); + + esp_wifi_netdev_t *dev = (esp_wifi_netdev_t *) netdev; + + switch (dev->event) { + case EVENT_STAMODE_CONNECTED: + dev->netdev.event_callback(netdev, NETDEV_EVENT_LINK_UP); + break; + case EVENT_STAMODE_DISCONNECTED: + dev->netdev.event_callback(netdev, NETDEV_EVENT_LINK_DOWN); + break; + default: + break; + } + _esp_wifi_dev.event = EVENT_MAX; /* no event */ + + return; } /** override lwIP ethernet_intput to get ethernet frames */ @@ -614,6 +630,7 @@ static void _esp_wifi_setup(void) /* initialize netdev data structure */ dev->rx_len = 0; dev->state = ESP_WIFI_DISCONNECTED; + dev->event = EVENT_MAX; /* set the netdev driver */ dev->netdev.driver = &_esp_wifi_driver; diff --git a/cpu/esp8266/esp-wifi/esp_wifi_netdev.h b/cpu/esp8266/esp-wifi/esp_wifi_netdev.h index 5f21cf5c02cd91bd5789284190ef2489c8967d54..05d317d70cff74d81184f9dda3f11a93f1614d2a 100644 --- a/cpu/esp8266/esp-wifi/esp_wifi_netdev.h +++ b/cpu/esp8266/esp-wifi/esp_wifi_netdev.h @@ -48,6 +48,7 @@ typedef struct uint16_t rx_len; /**< number of bytes received from lwIP */ esp_wifi_state_t state; /**< indicates the interface state */ + uint32_t event; /**< received event */ } esp_wifi_netdev_t;