/** * Network Manager Header * Handles dual interface management for ESP32-P4-NANO: * - ESP32-P4: Ethernet interface (LAN8720 RMII PHY) * - ESP32-C6: Wi-Fi Access Point * * Enhanced with comprehensive debugging and error handling */ #ifndef NETWORK_MANAGER_H #define NETWORK_MANAGER_H #include #include #include #include "esp_netif.h" #ifdef __cplusplus extern "C" { #endif // Network interface types typedef enum { NETIF_TYPE_ETHERNET, NETIF_TYPE_WIFI_AP } network_interface_type_t; // Network statistics structure typedef struct { bool link_up; uint32_t rx_packets; uint32_t tx_packets; uint32_t rx_bytes; uint32_t tx_bytes; uint32_t rx_errors; uint32_t tx_errors; } network_stats_t; // GPIO Configuration for ESP32-P4-NANO with IP101GRI PHY #define ETH_MDC_GPIO 31 #define ETH_MDIO_GPIO 52 #define ETH_PHY_RST_GPIO 51 #define ETH_PHY_ADDR 0 #define ETH_REF_CLK_GPIO 50 #define ETH_TX_EN_GPIO 49 #define ETH_TXD0_GPIO 34 #define ETH_TXD1_GPIO 35 #define ETH_RXD0_GPIO 30 #define ETH_RXD1_GPIO 29 #define ETH_CRS_DV_GPIO 28 // Function declarations /** * Enable/disable debug output */ esp_err_t network_manager_set_debug(bool enable); /** * Enable/disable matrix debug output */ esp_err_t network_manager_set_matrix_debug(bool enable); /** * Initialize Ethernet interface (LAN8720 RMII PHY) */ esp_err_t network_manager_init_ethernet(void); /** * Initialize Wi-Fi Access Point using ESP-Hosted-FG */ esp_err_t network_manager_init_wifi_ap(void); /** * Monitor Ethernet interface status with enhanced debugging */ void network_manager_monitor_ethernet(void); /** * Monitor Wi-Fi AP status with enhanced debugging */ void network_manager_monitor_wifi(void); /** * Update network statistics with debugging */ void network_manager_update_stats(void); /** * Get network statistics for specified interface */ esp_err_t network_manager_get_stats(network_interface_type_t type, network_stats_t *stats); /** * Get Ethernet interface handle */ esp_netif_t* network_manager_get_ethernet_netif(void); /** * Get Wi-Fi AP interface handle */ esp_netif_t* network_manager_get_wifi_ap_netif(void); /** * Check if Ethernet link is up */ bool network_manager_ethernet_link_up(void); /** * Get Ethernet MAC address */ esp_err_t network_manager_get_ethernet_mac(uint8_t *mac); /** * Get Wi-Fi AP MAC address */ esp_err_t network_manager_get_wifi_mac(uint8_t *mac); #ifdef __cplusplus } #endif #endif // NETWORK_MANAGER_H