diff --git a/src/graphics/Screen.cpp b/src/graphics/Screen.cpp index ad0b94efe..45706cf33 100644 --- a/src/graphics/Screen.cpp +++ b/src/graphics/Screen.cpp @@ -56,6 +56,10 @@ along with this program. If not, see . #include "mesh/wifi/WiFiAPClient.h" #endif +#if HAS_ETHERNET +#include "mesh/eth/ethClient.h" +#endif + #ifdef ARCH_ESP32 #include "esp_task_wdt.h" #include "modules/StoreForwardModule.h" @@ -232,6 +236,42 @@ static void drawOEMBootScreen(OLEDDisplay *display, OLEDDisplayUiState *state, i #endif +#if HAS_ETHERNET +static void drawEthernetFrame(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y) +{ + display->setFont(FONT_SMALL); + display->setTextAlignment(TEXT_ALIGN_LEFT); + + if (config.display.displaymode == meshtastic_Config_DisplayConfig_DisplayMode_INVERTED) { + display->fillRect(0 + x, 0 + y, x + display->getWidth(), y + FONT_HEIGHT_SMALL); + display->setColor(BLACK); + } + + display->setColor(WHITE); + + // Adjust vertical position verticale ajustée - starts higher + int16_t y_offset = y + 2; // Reduces space at top + + // Left Alignement (x + small offset) + int16_t x_offset = x + 2; + + // Display is not centered, align left + display->drawString(x_offset, y_offset, "Ethernet Config:"); + y_offset += FONT_HEIGHT_SMALL + 2; // Slightly reduced spacing + + display->drawString(x_offset, y_offset, "IP: " + Ethernet.localIP().toString()); + y_offset += FONT_HEIGHT_SMALL; + + display->drawString(x_offset, y_offset, "Mask: " + Ethernet.subnetMask().toString()); + y_offset += FONT_HEIGHT_SMALL; + + display->drawString(x_offset, y_offset, "GW: " + Ethernet.gatewayIP().toString()); + // y_offset += FONT_HEIGHT_SMALL; + + // display->drawString(x_offset, y_offset, "DNS: " + Ethernet.dnsServerIP().toString()); +} +#endif + void Screen::drawFrameText(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y, const char *message) { uint16_t x_offset = display->width() / 2; @@ -2182,6 +2222,12 @@ void Screen::setFrames(FrameFocus focus) } #endif +#if HAS_ETHERNET + if (Ethernet.hardwareStatus() != EthernetNoHardware) { + normalFrames[numframes++] = drawEthernetFrame; + } +#endif + fsi.frameCount = numframes; // Total framecount is used to apply FOCUS_PRESERVE LOG_DEBUG("Finished build frames. numframes: %d", numframes);