kopia lustrzana https://github.com/meshtastic/firmware
Added local Time to banner screen
rodzic
72f6fde772
commit
213a178d71
|
@ -2027,7 +2027,7 @@ static void drawDefaultScreen(OLEDDisplay *display, OLEDDisplayUiState *state, i
|
||||||
display->setColor(BLACK);
|
display->setColor(BLACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
// === TOP ROW: Battery, %, Voltage ===
|
// === TOP ROW: Battery, %, Time ===
|
||||||
int screenWidth = display->getWidth();
|
int screenWidth = display->getWidth();
|
||||||
|
|
||||||
// Draw battery icon slightly inset from top
|
// Draw battery icon slightly inset from top
|
||||||
|
@ -2036,23 +2036,45 @@ static void drawDefaultScreen(OLEDDisplay *display, OLEDDisplayUiState *state, i
|
||||||
// Calculate vertical center for text (centered in header row)
|
// Calculate vertical center for text (centered in header row)
|
||||||
int textY = y + (highlightHeight - FONT_HEIGHT_SMALL) / 2;
|
int textY = y + (highlightHeight - FONT_HEIGHT_SMALL) / 2;
|
||||||
|
|
||||||
|
// Battery Percentage
|
||||||
char percentStr[8];
|
char percentStr[8];
|
||||||
snprintf(percentStr, sizeof(percentStr), "%d%%", powerStatus->getBatteryChargePercent());
|
snprintf(percentStr, sizeof(percentStr), "%d%%", powerStatus->getBatteryChargePercent());
|
||||||
|
|
||||||
int batteryOffset = screenWidth > 128 ? 34 : 18;
|
int batteryOffset = screenWidth > 128 ? 34 : 18;
|
||||||
int percentX = x + xOffset + batteryOffset;
|
int percentX = x + xOffset + batteryOffset;
|
||||||
display->drawString(percentX, textY, percentStr);
|
display->drawString(percentX, textY, percentStr);
|
||||||
|
if (isBold) display->drawString(percentX + 1, textY, percentStr);
|
||||||
|
|
||||||
|
// --- Voltage (Commented out) ---
|
||||||
|
/*
|
||||||
char voltStr[10];
|
char voltStr[10];
|
||||||
int batV = powerStatus->getBatteryVoltageMv() / 1000;
|
int batV = powerStatus->getBatteryVoltageMv() / 1000;
|
||||||
int batCv = (powerStatus->getBatteryVoltageMv() % 1000) / 10;
|
int batCv = (powerStatus->getBatteryVoltageMv() % 1000) / 10;
|
||||||
snprintf(voltStr, sizeof(voltStr), "%d.%02dV", batV, batCv);
|
snprintf(voltStr, sizeof(voltStr), "%d.%02dV", batV, batCv);
|
||||||
int voltX = SCREEN_WIDTH - xOffset - display->getStringWidth(voltStr);
|
int voltX = SCREEN_WIDTH - xOffset - display->getStringWidth(voltStr);
|
||||||
display->drawString(voltX, textY, voltStr);
|
display->drawString(voltX, textY, voltStr);
|
||||||
|
if (isBold) display->drawString(voltX + 1, textY, voltStr);
|
||||||
|
*/
|
||||||
|
|
||||||
if (isBold) {
|
// --- Local Time ---
|
||||||
display->drawString(percentX + 1, textY, percentStr);
|
uint32_t rtc_sec = getValidTime(RTCQuality::RTCQualityDevice, true); // local time
|
||||||
display->drawString(voltX + 1, textY, voltStr);
|
if (rtc_sec > 0) {
|
||||||
|
long hms = rtc_sec % SEC_PER_DAY;
|
||||||
|
hms = (hms + SEC_PER_DAY) % SEC_PER_DAY;
|
||||||
|
|
||||||
|
int hour = hms / SEC_PER_HOUR;
|
||||||
|
int minute = (hms % SEC_PER_HOUR) / SEC_PER_MIN;
|
||||||
|
|
||||||
|
bool isPM = hour >= 12;
|
||||||
|
hour = hour % 12;
|
||||||
|
if (hour == 0) hour = 12;
|
||||||
|
|
||||||
|
char timeStr[10];
|
||||||
|
snprintf(timeStr, sizeof(timeStr), "%d:%02d%s", hour, minute, isPM ? "PM" : "AM");
|
||||||
|
|
||||||
|
int timeX = SCREEN_WIDTH - xOffset - display->getStringWidth(timeStr);
|
||||||
|
display->drawString(timeX, textY, timeStr);
|
||||||
|
if (isBold) display->drawString(timeX + 1, textY, timeStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
display->setColor(WHITE);
|
display->setColor(WHITE);
|
||||||
|
@ -2108,7 +2130,6 @@ static void drawDefaultScreen(OLEDDisplay *display, OLEDDisplayUiState *state, i
|
||||||
display->drawString(uptimeX, uptimeY, uptimeFullStr);
|
display->drawString(uptimeX, uptimeY, uptimeFullStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if defined(ESP_PLATFORM) && defined(USE_ST7789)
|
#if defined(ESP_PLATFORM) && defined(USE_ST7789)
|
||||||
SPIClass SPI1(HSPI);
|
SPIClass SPI1(HSPI);
|
||||||
#endif
|
#endif
|
||||||
|
|
Ładowanie…
Reference in New Issue