From fa48e3f51fcd330e1df0cab4cdfaa40354d373eb Mon Sep 17 00:00:00 2001 From: Gunar Schorcht <gunar@schorcht.net> Date: Sat, 26 Jan 2019 17:34:13 +0100 Subject: [PATCH] cpu/esp8266: event handling for link up/down --- cpu/esp8266/esp-wifi/esp_wifi_netdev.c | 17 +++++++++++++++++ cpu/esp8266/esp-wifi/esp_wifi_netdev.h | 1 + 2 files changed, 18 insertions(+) diff --git a/cpu/esp8266/esp-wifi/esp_wifi_netdev.c b/cpu/esp8266/esp-wifi/esp_wifi_netdev.c index 0eeb3c3e3b..2be88f4c61 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 5f21cf5c02..05d317d70c 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; -- GitLab