mirror of
https://github.com/mikecarper/MeshCore.git
synced 2026-09-26 09:28:11 +00:00
merge: upstream/dev into webconfig (v1.16.0 base -> 2026-07-19)
First upstream merge since the 2026-06-06 base (191 upstream commits). 14 files conflicted; resolutions below. Fleet-critical check (Constraint 1): upstream reordered NodePrefs members (rx_boosted_gain / path_hash_mode moved to the struct tail) but did NOT change /com_prefs. Persistence is written field-by-field at explicit offsets, so member order is in-memory only. Verified the fork's writeCommonPrefsImage() is byte-identical to upstream's inline writer at every offset (79 pad, 121, 122, 290-294). No migration needed. Resolutions: - CommonCLI.h: kept the fork's NodePrefs (superset) and adopted upstream's setRxBoostedGain(bool)->bool signature change, which CommonCLI.cpp now uses to report unsupported. Corrected a stale comment claiming rx_boosted_gain lives at offset 79 (it is a pad; the field is at 290). - CommonCLI.cpp: kept the fork's legacy /com_prefs migration and the extracted writeCommonPrefsImage() call. - UITask.cpp: three-way merge - upstream's drawTextCentered + powering-off screen, plus the fork's WITH_WEBCONFIG portal/reboot screens. - ESP32Board.cpp, MeshCore.h, platformio.ini: kept both sides (fork OTA additions alongside upstream powerOff/enterDeepSleep and Packet.cpp). - MicroNMEALocationProvider.h: took upstream's claim/release and added the _claims member they depend on. - MyMesh.cpp/.h (repeater + room server): kept the fork's superset defaults. - Removed duplicate declarations auto-merge produced: RadioLibWrapper::_cad_enabled and MyMesh::getCADEnabled(). Verification: native suite 15/15 (incl. upstream's new test_mesh_tables), both MQTT smoke builds green, ArduinoJson pin check passes. Hardware validation next.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#ifdef ESP_PLATFORM
|
||||
|
||||
#include "ESP32Board.h"
|
||||
#include <target.h>
|
||||
|
||||
#if defined(ADMIN_PASSWORD) && !defined(DISABLE_WIFI_OTA) // Repeater or Room Server only
|
||||
#include <WiFi.h>
|
||||
@@ -419,4 +420,45 @@ bool ESP32Board::otaFromManifest(const char* current_ver, bool dry_run, char rep
|
||||
}
|
||||
#endif // WITH_MQTT_BRIDGE
|
||||
|
||||
void ESP32Board::powerOff() {
|
||||
enterDeepSleep(0); // Do not wakeup
|
||||
}
|
||||
|
||||
void ESP32Board::enterDeepSleep(uint32_t secs) {
|
||||
// Power off the display if any
|
||||
#ifdef DISPLAY_CLASS
|
||||
display.turnOff();
|
||||
#endif
|
||||
|
||||
// Power off LoRa
|
||||
radio_driver.powerOff();
|
||||
|
||||
// Keep LoRa inactive during deepsleep
|
||||
digitalWrite(P_LORA_NSS, HIGH);
|
||||
#if defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||
gpio_hold_en((gpio_num_t)P_LORA_NSS);
|
||||
#else
|
||||
rtc_gpio_hold_en((gpio_num_t)P_LORA_NSS);
|
||||
#endif
|
||||
|
||||
// Power off GPS if any
|
||||
if (sensors.getLocationProvider() != NULL) {
|
||||
sensors.getLocationProvider()->stop();
|
||||
}
|
||||
|
||||
// Flush serial buffers
|
||||
Serial.flush();
|
||||
delay(100);
|
||||
|
||||
// Clear stale wakeup sources to avoid ghost wakeup
|
||||
// This is required when Power Management and automatic lightsleep are enabled
|
||||
esp_sleep_disable_wakeup_source(ESP_SLEEP_WAKEUP_ALL);
|
||||
|
||||
if (secs > 0) {
|
||||
esp_sleep_enable_timer_wakeup(secs * 1000000ULL);
|
||||
}
|
||||
|
||||
// Finally set ESP32 into deepsleep
|
||||
esp_deep_sleep_start(); // CPU halts here and never returns!
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user