diff options
| author | Luke Hoersten <[email protected]> | 2026-06-13 21:57:47 -0500 |
|---|---|---|
| committer | Luke Hoersten <[email protected]> | 2026-06-13 21:57:47 -0500 |
| commit | e2ac22e58901e18b0b567b85d93a8f68335180bc (patch) | |
| tree | 620b10cd61f92273bd35627b6868c0befd12009b /main/app_main.c | |
| parent | cadff71f2917b1ec8b140ea54a5994b9e438c0c8 (diff) | |
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.
Diffstat (limited to 'main/app_main.c')
| -rw-r--r-- | main/app_main.c | 31 |
1 files changed, 21 insertions, 10 deletions
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 <esp_log.h> -#include <esp_event.h> -#include <esp_netif.h> -#include <nvs_flash.h> +#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 } |
