Стартовый экран: версия MeshCore, MESHINFO и meshinfo.ru вместо даты сборки

This commit is contained in:
shade committed 2026-10-12 08:02:35 +03:00
1 parent 745c8cccdd
commit e110fd87a8
10 files changed
+105 -41

No files matched your search

+11
View File
@@ -47,6 +47,17 @@ git merge upstream/main # правки для upstream отправляю
- **Индикатор страниц** в `ui-new` строится на `warning_txt` / `secondary_txt`: в upstream
цвета брались из `title_bkg`, из-за чего на тёмных темах активная точка сливалась с фоном.
### Стартовый экран
- Показывает версию **MeshCore** (`v1.17.1` — из исходников), строку **`MESHINFO v0.1.0`**
(версия форка) и сайт **`meshinfo.ru`**. Дата сборки с экрана убрана — она только путала,
потому что рядом стояла версия.
- Версия форка передаётся отдельным макросом `MESHINFO_VERSION` (`build.sh`), поэтому
`FIRMWARE_VERSION` остаётся версией MeshCore: её же отдаёт приложению команда версии
и она попадает в стартовый экран. Так на устройстве видно и базу, и форк.
- Правка сделана во всех стартовых экранах: `companion_radio/ui-new`, а также в `UITask.cpp`
у `simple_repeater`, `simple_room_server` и `simple_sensor`.
### Интерфейс (companion_radio / ui-new)
- **Настройка радио прямо с устройства** — страница RADIO, длинное нажатие: частота
+6 -1
View File
@@ -146,8 +146,13 @@ build_firmware() {
# e.g: RAK_4631_Repeater-v1.0.0-SHA
FIRMWARE_FILENAME="$1-${FIRMWARE_VERSION_STRING}"
# Версия форка передаётся отдельным макросом: FIRMWARE_VERSION остаётся версией
# MeshCore (v1.17.1 из MyMesh.h) — её показывают приложение и стартовый экран.
# В FIRMWARE_VERSION_STRING (имя файла) по-прежнему уходит версия сборки.
MESHINFO_VERSION="${MESHINFO_VERSION:-$FIRMWARE_VERSION}"
# add firmware version info to end of existing platformio build flags in environment vars
export PLATFORMIO_BUILD_FLAGS="${PLATFORMIO_BUILD_FLAGS} -DFIRMWARE_BUILD_DATE='\"${FIRMWARE_BUILD_DATE}\"' -DFIRMWARE_VERSION='\"${FIRMWARE_VERSION_STRING}\"'"
export PLATFORMIO_BUILD_FLAGS="${PLATFORMIO_BUILD_FLAGS} -DFIRMWARE_BUILD_DATE='\"${FIRMWARE_BUILD_DATE}\"' -DMESHINFO_VERSION='\"${MESHINFO_VERSION}\"'"
# disable debug flags if requested
disable_debug_flags
+6
View File
@@ -15,6 +15,12 @@
#define FIRMWARE_VERSION "v1.17.1"
#endif
// версия форка MESHINFO — показывается на стартовом экране отдельной строкой,
// передаётся сборкой как -DMESHINFO_VERSION=\"v0.1.0\"
#ifndef MESHINFO_VERSION
#define MESHINFO_VERSION "dev"
#endif
#if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
#include <InternalFileSystem.h>
#elif defined(RP2040_PLATFORM)
+16 -11
View File
@@ -73,6 +73,7 @@ class SplashScreen : public UIScreen {
UITask* _task;
unsigned long dismiss_after;
char _version_info[12];
char _meshinfo_info[20];
public:
SplashScreen(UITask* task) : _task(task) {
@@ -86,6 +87,13 @@ public:
memcpy(_version_info, ver, len);
_version_info[len] = 0;
// версия форка MESHINFO (суффикс -sha отбрасываем так же)
const char *mf = MESHINFO_VERSION;
const char *mf_dash = strchr(mf, '-');
int mf_len = mf_dash ? mf_dash - mf : strlen(mf);
if (mf_len > (int)sizeof(_meshinfo_info) - 10) mf_len = sizeof(_meshinfo_info) - 10;
snprintf(_meshinfo_info, sizeof(_meshinfo_info), "MESHINFO %.*s", mf_len, mf);
dismiss_after = millis() + BOOT_SCREEN_MILLIS;
}
@@ -100,23 +108,20 @@ public:
display.setColor(UIColor::primary_txt);
display.setTextSize(1);
uint16_t websiteWidth = display.getTextWidth(website);
display.setCursor((display.width() - websiteWidth) / 2, 22);
display.setCursor((display.width() - websiteWidth) / 2, 20);
display.print(website);
// version info
// версия MeshCore — основная версия прошивки
display.setColor(UIColor::primary_txt);
display.setTextSize(1);
display.drawTextCentered(display.width()/2, 35, _version_info);
display.drawTextCentered(display.width()/2, 31, _version_info);
// версия форка и его сайт (дату сборки на стартовом экране не показываем)
display.setColor(UIColor::warning_txt);
display.drawTextCentered(display.width()/2, 41, _meshinfo_info);
display.setColor(UIColor::secondary_txt);
display.setTextSize(1);
#ifdef OLED_RU
char filtered_date[sizeof(FIRMWARE_BUILD_DATE)];
display.translateUTF8ToBlocks(filtered_date, FIRMWARE_BUILD_DATE, sizeof(filtered_date));
display.drawTextCentered(display.width()/2, 42, filtered_date);
#else
display.drawTextCentered(display.width()/2, 42, FIRMWARE_BUILD_DATE);
#endif
display.drawTextCentered(display.width()/2, 51, "meshinfo.ru");
return 1000;
}
+5
View File
@@ -78,6 +78,11 @@ struct NeighbourInfo {
#define FIRMWARE_VERSION "v1.17.1"
#endif
// версия форка MESHINFO (передаётся сборкой как -DMESHINFO_VERSION=\"v0.1.0\")
#ifndef MESHINFO_VERSION
#define MESHINFO_VERSION "dev"
#endif
#define FIRMWARE_ROLE "repeater"
#define PACKET_LOG_FILE "/packet_log"
+17 -7
View File
@@ -10,6 +10,11 @@
#define AUTO_OFF_MILLIS 20000 // 20 seconds
#define BOOT_SCREEN_MILLIS 4000 // 4 seconds
// версия форка MESHINFO (в сборке задаётся как -DMESHINFO_VERSION=\"v0.1.0\")
#ifndef MESHINFO_VERSION
#define MESHINFO_VERSION "dev"
#endif
#define POWEROFF_DELAY 3000
// 'meshcore', 128x13px
@@ -48,8 +53,9 @@ void UITask::begin(NodePrefs* node_prefs, const char* build_date, const char* fi
*dash = 0;
}
// v1.2.3 (1 Jan 2025)
snprintf(_version_info, sizeof(_version_info), "%s (%s)", version, build_date);
// дату сборки на стартовом экране не показываем — только версия MeshCore
(void)build_date;
snprintf(_version_info, sizeof(_version_info), "%s", version);
free(version);
}
@@ -67,13 +73,17 @@ void UITask::renderCurrScreen() {
_display->setTextSize(1);
_display->drawTextCentered(_display->width() / 2, 22, website);
// version info
// версия MeshCore
_display->setTextSize(1);
_display->drawTextCentered(_display->width() / 2, 35, _version_info);
_display->drawTextCentered(_display->width() / 2, 31, _version_info);
// node type
const char* node_type = "< Repeater >";
_display->drawTextCentered(_display->width() / 2, 48, node_type);
// версия форка и его сайт
char meshinfo[24];
snprintf(meshinfo, sizeof(meshinfo), "MESHINFO %s", MESHINFO_VERSION);
_display->setColor(UIColor::warning_txt);
_display->drawTextCentered(_display->width() / 2, 41, meshinfo);
_display->setColor(UIColor::secondary_txt);
_display->drawTextCentered(_display->width() / 2, 51, "meshinfo.ru");
} else if (_powering_off_at > 0) {
// meshcore logo
_display->setColor(UIColor::corp_blue);
+5
View File
@@ -35,6 +35,11 @@
#define FIRMWARE_VERSION "v1.17.1"
#endif
// версия форка MESHINFO (передаётся сборкой как -DMESHINFO_VERSION=\"v0.1.0\")
#ifndef MESHINFO_VERSION
#define MESHINFO_VERSION "dev"
#endif
#ifndef LORA_FREQ
#define LORA_FREQ 915.0
#endif
+17 -11
View File
@@ -9,6 +9,11 @@
#define AUTO_OFF_MILLIS 20000 // 20 seconds
#define BOOT_SCREEN_MILLIS 4000 // 4 seconds
// версия форка MESHINFO (в сборке задаётся как -DMESHINFO_VERSION=\"v0.1.0\")
#ifndef MESHINFO_VERSION
#define MESHINFO_VERSION "dev"
#endif
// 'meshcore', 128x13px
static const uint8_t meshcore_logo [] PROGMEM = {
0x3c, 0x01, 0xe3, 0xff, 0xc7, 0xff, 0x8f, 0x03, 0x87, 0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f, 0xfe,
@@ -40,8 +45,9 @@ void UITask::begin(NodePrefs* node_prefs, const char* build_date, const char* fi
*dash = 0;
}
// v1.2.3 (1 Jan 2025)
snprintf(_version_info, sizeof(_version_info), "%s (%s)", version, build_date);
// дату сборки на стартовом экране не показываем — только версия MeshCore
(void)build_date;
snprintf(_version_info, sizeof(_version_info), "%s", version);
free(version);
}
@@ -61,17 +67,17 @@ void UITask::renderCurrScreen() {
_display->setCursor((_display->width() - websiteWidth) / 2, 22);
_display->print(website);
// version info
// версия MeshCore
_display->setTextSize(1);
uint16_t versionWidth = _display->getTextWidth(_version_info);
_display->setCursor((_display->width() - versionWidth) / 2, 35);
_display->print(_version_info);
_display->drawTextCentered(_display->width() / 2, 31, _version_info);
// node type
const char* node_type = "< Room Server >";
uint16_t typeWidth = _display->getTextWidth(node_type);
_display->setCursor((_display->width() - typeWidth) / 2, 48);
_display->print(node_type);
// версия форка и его сайт
char meshinfo[24];
snprintf(meshinfo, sizeof(meshinfo), "MESHINFO %s", MESHINFO_VERSION);
_display->setColor(UIColor::warning_txt);
_display->drawTextCentered(_display->width() / 2, 41, meshinfo);
_display->setColor(UIColor::secondary_txt);
_display->drawTextCentered(_display->width() / 2, 51, "meshinfo.ru");
} else { // home screen
// node name
_display->setCursor(0, 0);
+5
View File
@@ -41,6 +41,11 @@
#define FIRMWARE_VERSION "v1.17.1"
#endif
// версия форка MESHINFO (передаётся сборкой как -DMESHINFO_VERSION=\"v0.1.0\")
#ifndef MESHINFO_VERSION
#define MESHINFO_VERSION "dev"
#endif
#define FIRMWARE_ROLE "sensor"
#define MAX_SEARCH_RESULTS 8
+17 -11
View File
@@ -9,6 +9,11 @@
#define AUTO_OFF_MILLIS 20000 // 20 seconds
#define BOOT_SCREEN_MILLIS 4000 // 4 seconds
// версия форка MESHINFO (в сборке задаётся как -DMESHINFO_VERSION=\"v0.1.0\")
#ifndef MESHINFO_VERSION
#define MESHINFO_VERSION "dev"
#endif
// 'meshcore', 128x13px
static const uint8_t meshcore_logo [] PROGMEM = {
0x3c, 0x01, 0xe3, 0xff, 0xc7, 0xff, 0x8f, 0x03, 0x87, 0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f, 0xfe,
@@ -40,8 +45,9 @@ void UITask::begin(NodePrefs* node_prefs, const char* build_date, const char* fi
*dash = 0;
}
// v1.2.3 (1 Jan 2025)
snprintf(_version_info, sizeof(_version_info), "%s (%s)", version, build_date);
// дату сборки на стартовом экране не показываем — только версия MeshCore
(void)build_date;
snprintf(_version_info, sizeof(_version_info), "%s", version);
free(version);
}
@@ -61,17 +67,17 @@ void UITask::renderCurrScreen() {
_display->setCursor((_display->width() - websiteWidth) / 2, 22);
_display->print(website);
// version info
// версия MeshCore
_display->setTextSize(1);
uint16_t versionWidth = _display->getTextWidth(_version_info);
_display->setCursor((_display->width() - versionWidth) / 2, 35);
_display->print(_version_info);
_display->drawTextCentered(_display->width() / 2, 31, _version_info);
// node type
const char* node_type = "< Sensor >";
uint16_t typeWidth = _display->getTextWidth(node_type);
_display->setCursor((_display->width() - typeWidth) / 2, 48);
_display->print(node_type);
// версия форка и его сайт
char meshinfo[24];
snprintf(meshinfo, sizeof(meshinfo), "MESHINFO %s", MESHINFO_VERSION);
_display->setColor(UIColor::warning_txt);
_display->drawTextCentered(_display->width() / 2, 41, meshinfo);
_display->setColor(UIColor::secondary_txt);
_display->drawTextCentered(_display->width() / 2, 51, "meshinfo.ru");
} else { // home screen
// node name
_display->setCursor(0, 0);