/* * Copyright (C) 2019 Gunar Schorcht * * This file is subject to the terms and conditions of the GNU Lesser * General Public License v2.1. See the file LICENSE in the top level * directory for more details. */ /** * @ingroup cpu_esp_common_esp_wifi * @{ * * @file * @brief Network device driver for the ESP SoCs WiFi interface * * @author Gunar Schorcht */ #ifndef ESP_WIFI_NETDEV_H #define ESP_WIFI_NETDEV_H #include #include "mutex.h" #include "net/ethernet.h" #include "net/netdev.h" #include "ringbuffer.h" #ifdef __cplusplus extern "C" { #endif /** * @brief Buffer size used for RX buffering */ #ifndef ESP_WIFI_BUFSIZE #define ESP_WIFI_BUFSIZE (ETHERNET_MAX_LEN << 1) #endif /** * @brief Reference to the netdev device driver struct */ extern const netdev_driver_t esp_wifi_driver; /** * @brief Device descriptor for ESP WiFi devices */ typedef struct { netdev_t netdev; /**< netdev parent struct */ uint8_t rx_mem[ESP_WIFI_BUFSIZE]; /**< memory holding incoming packages */ ringbuffer_t rx_buf; /**< ringbuffer for incoming packages */ uint16_t tx_len; /**< number of bytes in transmit buffer */ uint8_t tx_buf[ETHERNET_MAX_LEN]; /**< transmit buffer */ uint8_t event_recv; /**< number of frame received events */ #ifdef MODULE_ESP_WIFI_AP uint8_t sta_connected; /**< number of connected stations */ #else /* MODULE_ESP_WIFI_AP */ uint8_t event_conn; /**< number of pending connect events */ uint8_t event_disc; /**< number of pending disc events */ bool connected; /**< indicates whether connected to AP */ #endif /* MODULE_ESP_WIFI_AP */ mutex_t dev_lock; /**< device is already in use */ } esp_wifi_netdev_t; #ifdef __cplusplus } #endif #endif /* ESP_WIFI_NETDEV_H */ /** @} */