merge: upstream/dev into observer-firmware-dev (2026-07-30, db232808)
Absorbs 106 upstream commits. Seven files conflicted; the substantive one was upstream's new JSON ConfigSerializer (PR #2982), which replaces the binary /com_prefs layout with /prefs.json and makes NodePrefs a ConfigSerializer subclass. Prefs migration - Adopt upstream's ConfigSerializer. writeCommonPrefsImage() and its documented offsets (0-294) are deleted, along with the now-unreachable saveCommonPrefsImageAtomically()/CommonPrefsFileStore atomic rename path. - Load order is /prefs.json, then /com_prefs, then /node_prefs. Upstream dropped the /node_prefs fallback; it is restored here so devices that never advanced past that filename keep their config. - Legacy files are never removed, so migration cannot destroy its own source and a deferred or failed save simply retries next boot. - /com_prefs is treated as a format migration only, not an "upgrade", so it does not trip the bridge.source tx->rx flip on existing nodes. - The MQTTPrefsAtomicStore legacy gate is retained: the observer tail recovered from an old-format file still commits to /mqtt_prefs before /prefs.json is written. - MQTTPrefs and /mqtt_prefs are untouched; savePrefs keeps its save_mqtt parameter and now returns upstream's bool. Fixes to upstream code - RadioPrefs::structure() bound both "rxgain" and "fem_rxgain" to rx_boosted_gain, so radio_fem_rxgain was never persisted. Bound to the correct field. - discovery_mod_timestamp was dropped from structure(); it gates 'since'-filtered DISCOVER replies and is set on every config change, so losing it would silently stop discovery responses after a reboot. Added as "disc_mod". Merge artifacts repaired - Restored bblanchon/ArduinoJson to the native test env; a clean but wrong auto-merge at the lib_deps block boundary dropped it and broke all 19 host test suites. - Migrated the fork's WebConfig UITask screens off the removed DisplayDriver::Color enum to upstream's UIColor element types. - Removed duplicate getCADEnabled() definitions in companion MyMesh.cpp and simple_sensor SensorMesh.cpp that both sides had added. - Dropped memset(&_prefs, 0, ...) in the four example meshes; NodePrefs now has a vtable. guard gains an initializer that memset used to provide. Other resolutions - simple_room_server keeps both the fork's discover.* commands and upstream's new room.post. - docs/payloads.md taken from upstream, undoing content earlier merges had reverted (Control data section, split login tables). Verified: 273/273 host tests pass across native and native_kiss_modem; Heltec v3 repeater, repeater_observer_mqtt, room_server_observer_mqtt, sensor, and companion_radio_ble all build clean.
This commit is contained in:
commit
612c52132c
190 files changed
+3854
-1426
No files matched your search
@@ -421,6 +421,17 @@ bool ST7735Display::i2c_probe(TwoWire& wire, uint8_t addr) {
|
||||
#define PIN_TFT_LEDA_CTL_ACTIVE HIGH
|
||||
#endif
|
||||
|
||||
// Color scheme
|
||||
ColorVal UIColor::window_bkg = ST77XX_WHITE;
|
||||
ColorVal UIColor::title_bkg = ST77XX_BLUE;
|
||||
ColorVal UIColor::title_txt = ST77XX_WHITE;
|
||||
ColorVal UIColor::primary_txt = ST77XX_BLACK;
|
||||
ColorVal UIColor::secondary_txt = (18 << 11) | (36 << 5) | 18; // mid-gray
|
||||
ColorVal UIColor::warning_txt = ST77XX_ORANGE;
|
||||
ColorVal UIColor::popup_bkg = ST77XX_CYAN;
|
||||
ColorVal UIColor::popup_txt = ST77XX_BLACK;
|
||||
ColorVal UIColor::corp_blue = 0x001A;
|
||||
|
||||
bool ST7735Display::begin() {
|
||||
if (!sprite) {
|
||||
// alloc offscreen canvas
|
||||
@@ -531,9 +542,9 @@ void ST7735Display::clear() {
|
||||
sprite->fillScreen(ST77XX_BLACK);
|
||||
}
|
||||
|
||||
void ST7735Display::startFrame(Color bkg) {
|
||||
sprite->fillScreen(ST77XX_BLACK);
|
||||
sprite->setTextColor(curr_color = ST77XX_WHITE);
|
||||
void ST7735Display::startFrame(ColorVal bkg) {
|
||||
sprite->fillScreen(bkg);
|
||||
sprite->setTextColor(curr_color = UIColor::primary_txt);
|
||||
sprite->setFreeFont();
|
||||
sprite->setTextSize(1); // This one affects size of Please wait... message
|
||||
//sprite->cp437(true); // Use full 256 char 'Code Page 437' font
|
||||
@@ -543,33 +554,8 @@ void ST7735Display::setTextSize(int sz) {
|
||||
sprite->setTextSize(sz);
|
||||
}
|
||||
|
||||
void ST7735Display::setColor(Color c) {
|
||||
switch (c) {
|
||||
case DisplayDriver::DARK :
|
||||
curr_color = ST77XX_BLACK;
|
||||
break;
|
||||
case DisplayDriver::LIGHT :
|
||||
curr_color = ST77XX_WHITE;
|
||||
break;
|
||||
case DisplayDriver::RED :
|
||||
curr_color = ST77XX_RED;
|
||||
break;
|
||||
case DisplayDriver::GREEN :
|
||||
curr_color = ST77XX_GREEN;
|
||||
break;
|
||||
case DisplayDriver::BLUE :
|
||||
curr_color = ST77XX_BLUE;
|
||||
break;
|
||||
case DisplayDriver::YELLOW :
|
||||
curr_color = ST77XX_YELLOW;
|
||||
break;
|
||||
case DisplayDriver::ORANGE :
|
||||
curr_color = ST77XX_ORANGE;
|
||||
break;
|
||||
default:
|
||||
curr_color = ST77XX_WHITE;
|
||||
break;
|
||||
}
|
||||
void ST7735Display::setColor(ColorVal c) {
|
||||
curr_color = c;
|
||||
sprite->setTextColor(curr_color);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user