Add IP Address Frame (#6615)

* Update Screen.cpp

add ip on screen if has ethernet pcb like w5500 spi

* Run Trunk Format and Translate Comments FR->EN

---------

Co-authored-by: Tom Fifield <tom@tomfifield.net>
This commit is contained in:
Nivek-domo 2025-04-20 12:06:39 +02:00 committed by GitHub
parent 2b57ffafd7
commit 5d48d2c0a7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -56,6 +56,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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);