From e2ac22e58901e18b0b567b85d93a8f68335180bc Mon Sep 17 00:00:00 2001 From: Luke Hoersten Date: Sat, 13 Jun 2026 21:57:47 -0500 Subject: M1: Ethernet bring-up net_eth module brings up the Waveshare ESP32-P4-ETH-POE Ethernet interface (internal EMAC + IP101GRI PHY) and waits for a DHCP lease. Pin map confirmed via Waveshare wiki + ESPHome's working config: MDC=31, MDIO=52, REF_CLK=50 (CLK_EXT_IN from PHY) TX_EN=49, TXD0=34, TXD1=35 CRS_DV=28, RXD0=30, RXD1=29 PHY reset/enable=51, PHY addr=1 app_main initializes NVS, netif, the default event loop, then starts the Ethernet driver and waits up to 30s for an IP. On success it logs the IP; on timeout it logs a warning and proceeds (the driver keeps retrying in the background). sdkconfig: declare 16 MB flash so partitions.csv (6.1 MB) fits. main/CMakeLists.txt: explicit REQUIRES esp_eth esp_event esp_netif nvs_flash. Acceptance (per M1 in the impl guide): device gets a DHCP lease over Ethernet and prints its IP. Build is clean against ESP-IDF 5.4 for target esp32p4. --- main/app_main.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) (limited to 'main/app_main.c') diff --git a/main/app_main.c b/main/app_main.c index 3c30497..8b91537 100644 --- a/main/app_main.c +++ b/main/app_main.c @@ -1,7 +1,9 @@ -#include -#include -#include -#include +#include "net_eth.h" + +#include "esp_event.h" +#include "esp_log.h" +#include "esp_netif.h" +#include "nvs_flash.h" static const char *TAG = "viewport"; @@ -13,10 +15,19 @@ void app_main(void) ESP_LOGI(TAG, "Scrypted Viewport boot"); - // TODO: Ethernet (ESP32-P4 EMAC + Waveshare PoE PHY) - // TODO: mDNS _scrypted-viewport._tcp.local - // TODO: HTTP server: /state /config /frame - // TODO: MIPI-DSI panel init (800x480 IPS, default portrait 480x800) - // TODO: JPEG decode -> framebuffer - // TODO: Capacitive touch -> outbound /state POST + ESP_ERROR_CHECK(net_eth_init()); + if (net_eth_wait_for_ip(30 * 1000) == ESP_OK) { + ESP_LOGI(TAG, "online at %s", net_eth_get_ip_str()); + } else { + ESP_LOGW(TAG, "no DHCP lease after 30s, will keep retrying in the background"); + } + + // TODO M2: mDNS _scrypted-viewport._tcp.local + // TODO M2: HTTP server: GET /state + // TODO M3: MIPI-DSI panel init (800x480 IPS, default portrait 480x800) + // TODO M4: /config persistence (NVS) + // TODO M5: /frame JPEG decode -> framebuffer + // TODO M6: /state POST + idle timer + // TODO M7: Capacitive touch -> outbound /state POST + // TODO M8: Local screens (IP, loading) + BOOT button } -- cgit v1.2.3