mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-06 11:36:59 +03:00
ethernet sample
This commit is contained in:
@@ -46,6 +46,7 @@ Contains the freeRTOS task and all necessary support
|
|||||||
#include "tcpip_adapter.h"
|
#include "tcpip_adapter.h"
|
||||||
// IDF-V4++ #include "esp_netif.h"
|
// IDF-V4++ #include "esp_netif.h"
|
||||||
#include "esp_event.h"
|
#include "esp_event.h"
|
||||||
|
#include "esp_eth.h"
|
||||||
#include "esp_wifi.h"
|
#include "esp_wifi.h"
|
||||||
#include "esp_wifi_types.h"
|
#include "esp_wifi_types.h"
|
||||||
#include "esp_log.h"
|
#include "esp_log.h"
|
||||||
@@ -67,6 +68,7 @@ Contains the freeRTOS task and all necessary support
|
|||||||
|
|
||||||
#include "http_server_handlers.h"
|
#include "http_server_handlers.h"
|
||||||
#include "monitor.h"
|
#include "monitor.h"
|
||||||
|
#include "accessors.h"
|
||||||
#include "globdefs.h"
|
#include "globdefs.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -264,6 +266,35 @@ void wifi_manager_reboot(reboot_type_t rtype){
|
|||||||
//xEventGroupSetBits(wifi_manager_event_group, WIFI_MANAGER_REQUEST_WIFI_DISCONNECT_BIT); TODO: delete
|
//xEventGroupSetBits(wifi_manager_event_group, WIFI_MANAGER_REQUEST_WIFI_DISCONNECT_BIT); TODO: delete
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Event handler for Ethernet events */
|
||||||
|
static void eth_event_handler(void *arg, esp_event_base_t event_base,
|
||||||
|
int32_t event_id, void *event_data)
|
||||||
|
{
|
||||||
|
uint8_t mac_addr[6] = {0};
|
||||||
|
/* we can get the ethernet driver handle from event data */
|
||||||
|
esp_eth_handle_t eth_handle = *(esp_eth_handle_t *)event_data;
|
||||||
|
|
||||||
|
switch (event_id) {
|
||||||
|
case ETHERNET_EVENT_CONNECTED:
|
||||||
|
esp_eth_ioctl(eth_handle, ETH_CMD_G_MAC_ADDR, mac_addr);
|
||||||
|
ESP_LOGI(TAG, "Ethernet Link Up");
|
||||||
|
ESP_LOGI(TAG, "Ethernet HW Addr %02x:%02x:%02x:%02x:%02x:%02x",
|
||||||
|
mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
|
||||||
|
break;
|
||||||
|
case ETHERNET_EVENT_DISCONNECTED:
|
||||||
|
ESP_LOGI(TAG, "Ethernet Link Down");
|
||||||
|
break;
|
||||||
|
case ETHERNET_EVENT_START:
|
||||||
|
ESP_LOGI(TAG, "Ethernet Started");
|
||||||
|
break;
|
||||||
|
case ETHERNET_EVENT_STOP:
|
||||||
|
ESP_LOGI(TAG, "Ethernet Stopped");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void wifi_manager_init_wifi(){
|
void wifi_manager_init_wifi(){
|
||||||
/* event handler and event group for the wifi driver */
|
/* event handler and event group for the wifi driver */
|
||||||
ESP_LOGD(TAG, "Initializing wifi. Creating event group");
|
ESP_LOGD(TAG, "Initializing wifi. Creating event group");
|
||||||
@@ -286,6 +317,32 @@ void wifi_manager_init_wifi(){
|
|||||||
ESP_LOGD(TAG, "Initializing wifi. Starting wifi");
|
ESP_LOGD(TAG, "Initializing wifi. Starting wifi");
|
||||||
ESP_ERROR_CHECK( esp_wifi_start() );
|
ESP_ERROR_CHECK( esp_wifi_start() );
|
||||||
|
|
||||||
|
//ETH
|
||||||
|
|
||||||
|
eth_config_t const *eth = config_eth_get( );
|
||||||
|
ESP_LOGE(TAG, "ETH MDC %d", eth->mdc);
|
||||||
|
ESP_LOGE(TAG, "ETH MDIO %d", eth->mdio);
|
||||||
|
ESP_LOGE(TAG, "ETH RST %d", eth->rst);
|
||||||
|
|
||||||
|
ESP_ERROR_CHECK(tcpip_adapter_set_default_eth_handlers());
|
||||||
|
ESP_ERROR_CHECK(esp_event_handler_register(ETH_EVENT, ESP_EVENT_ANY_ID, ð_event_handler, NULL));
|
||||||
|
|
||||||
|
eth_mac_config_t mac_config = ETH_MAC_DEFAULT_CONFIG();
|
||||||
|
eth_phy_config_t phy_config = ETH_PHY_DEFAULT_CONFIG();
|
||||||
|
phy_config.phy_addr = 1;
|
||||||
|
phy_config.reset_gpio_num = eth->rst;
|
||||||
|
|
||||||
|
mac_config.smi_mdc_gpio_num = eth->mdc;
|
||||||
|
mac_config.smi_mdio_gpio_num = eth->mdio;
|
||||||
|
esp_eth_mac_t *mac = esp_eth_mac_new_esp32(&mac_config);
|
||||||
|
esp_eth_phy_t *phy = esp_eth_phy_new_lan8720(&phy_config);
|
||||||
|
|
||||||
|
esp_eth_config_t config = ETH_DEFAULT_CONFIG(mac, phy);
|
||||||
|
esp_eth_handle_t eth_handle = NULL;
|
||||||
|
ESP_ERROR_CHECK(esp_eth_driver_install(&config, ð_handle));
|
||||||
|
ESP_ERROR_CHECK(esp_eth_start(eth_handle));
|
||||||
|
//END_ETH
|
||||||
|
|
||||||
taskYIELD();
|
taskYIELD();
|
||||||
ESP_LOGD(TAG, "Initializing wifi. done");
|
ESP_LOGD(TAG, "Initializing wifi. done");
|
||||||
}
|
}
|
||||||
@@ -934,6 +991,7 @@ static void event_handler(void* arg, esp_event_base_t event_base, int32_t event_
|
|||||||
break;
|
break;
|
||||||
case IP_EVENT_ETH_GOT_IP:
|
case IP_EVENT_ETH_GOT_IP:
|
||||||
ESP_LOGD(TAG, "IP_EVENT_ETH_GOT_IP");
|
ESP_LOGD(TAG, "IP_EVENT_ETH_GOT_IP");
|
||||||
|
wifi_manager_send_message(EVENT_ETH_GOT_IP, NULL);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -1324,6 +1382,7 @@ void wifi_manager( void * pvParameters ){
|
|||||||
|
|
||||||
case ORDER_CONNECT_STA:
|
case ORDER_CONNECT_STA:
|
||||||
ESP_LOGD(TAG, "MESSAGE: ORDER_CONNECT_STA - Begin");
|
ESP_LOGD(TAG, "MESSAGE: ORDER_CONNECT_STA - Begin");
|
||||||
|
break; // DOBREAK;
|
||||||
|
|
||||||
/* very important: precise that this connection attempt is specifically requested.
|
/* very important: precise that this connection attempt is specifically requested.
|
||||||
* Param in that case is a boolean indicating if the request was made automatically
|
* Param in that case is a boolean indicating if the request was made automatically
|
||||||
@@ -1575,6 +1634,13 @@ void wifi_manager( void * pvParameters ){
|
|||||||
if(cb_ptr_arr[msg.code]) (*cb_ptr_arr[msg.code])(NULL);
|
if(cb_ptr_arr[msg.code]) (*cb_ptr_arr[msg.code])(NULL);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case EVENT_ETH_GOT_IP:
|
||||||
|
ESP_LOGD(TAG, "MESSAGE: EVENT_ETH_GOT_IP");
|
||||||
|
/* callback */
|
||||||
|
if(cb_ptr_arr[msg.code]) (*cb_ptr_arr[msg.code])(NULL);
|
||||||
|
break;
|
||||||
|
|
||||||
case EVENT_STA_GOT_IP:
|
case EVENT_STA_GOT_IP:
|
||||||
ESP_LOGD(TAG, "MESSAGE: EVENT_STA_GOT_IP");
|
ESP_LOGD(TAG, "MESSAGE: EVENT_STA_GOT_IP");
|
||||||
|
|
||||||
|
|||||||
@@ -192,7 +192,8 @@ typedef enum message_code_t {
|
|||||||
ORDER_RESTART_OTA_URL = 17,
|
ORDER_RESTART_OTA_URL = 17,
|
||||||
ORDER_RESTART = 18,
|
ORDER_RESTART = 18,
|
||||||
ORDER_UPDATE_STATUS = 19,
|
ORDER_UPDATE_STATUS = 19,
|
||||||
MESSAGE_CODE_COUNT = 20 /* important for the callback array */
|
EVENT_ETH_GOT_IP = 20,
|
||||||
|
MESSAGE_CODE_COUNT = 21 /* important for the callback array */
|
||||||
|
|
||||||
}message_code_t;
|
}message_code_t;
|
||||||
|
|
||||||
|
|||||||
@@ -514,7 +514,8 @@ void app_main()
|
|||||||
else {
|
else {
|
||||||
ESP_LOGI(TAG,"Starting Wifi Manager");
|
ESP_LOGI(TAG,"Starting Wifi Manager");
|
||||||
wifi_manager_start();
|
wifi_manager_start();
|
||||||
wifi_manager_set_callback(EVENT_STA_GOT_IP, &cb_connection_got_ip);
|
//wifi_manager_set_callback(EVENT_STA_GOT_IP, &cb_connection_got_ip);
|
||||||
|
wifi_manager_set_callback(EVENT_ETH_GOT_IP, &cb_connection_got_ip);
|
||||||
wifi_manager_set_callback(EVENT_STA_DISCONNECTED, &cb_connection_sta_disconnected);
|
wifi_manager_set_callback(EVENT_STA_DISCONNECTED, &cb_connection_sta_disconnected);
|
||||||
/* Start the telnet service after we are certain that the network stack has been properly initialized.
|
/* Start the telnet service after we are certain that the network stack has been properly initialized.
|
||||||
* This can be either after we're started the AP mode, or after we've started the STA mode */
|
* This can be either after we're started the AP mode, or after we've started the STA mode */
|
||||||
|
|||||||
Reference in New Issue
Block a user