diff --git a/ESP32/esp32/ESP32-S3-Touch-AMOLED-2.16/main-device/shine_homeserver_main/shine_homeserver_main.ino b/ESP32/esp32/ESP32-S3-Touch-AMOLED-2.16/main-device/shine_homeserver_main/shine_homeserver_main.ino index 7619b88..2d2d06c 100644 --- a/ESP32/esp32/ESP32-S3-Touch-AMOLED-2.16/main-device/shine_homeserver_main/shine_homeserver_main.ino +++ b/ESP32/esp32/ESP32-S3-Touch-AMOLED-2.16/main-device/shine_homeserver_main/shine_homeserver_main.ino @@ -363,6 +363,9 @@ static String gRegisterConfirmBalanceLine; static String gRegisterConfirmPdaLine; static String gRegisterConfirmHomeserverLine; static bool gRegisterConfirmCanSubmit = false; +static bool gAutoHomeserverDebugPending = true; +static bool gAutoHomeserverDebugRunning = false; +static bool gAutoHomeserverDebugDone = false; static String gRegisterResultMessage; static String gRegisterResultDetails; static bool gRegisterResultSuccess = false; @@ -628,6 +631,7 @@ static bool awaitTransactionConfirmation(const String &signatureB58, String &mes static bool registerHomeserverOnSolana(String &messageOut); static void executeRegisterAccountFlow(const char *triggerSource, bool showResultScreen); static bool updateHomeserverSessionOnSolana(bool requireExisting, String &messageOut); +static void maybeAutoRunHomeserverAddDebug(); static void loadRegisterDiagDetailsFromPrefs(); static void saveRegisterDiagDetailsToPrefs(const String &details); static void clearRegisterDiagDetailsFromPrefs(); @@ -1492,6 +1496,7 @@ static void markAccountStateDirty() { gRegisterResultMessage = ""; gRegisterResultDetails = ""; gRegisterResultSuccess = false; + gAutoHomeserverDebugPending = true; clearShineSessionState(true); gShineStatusLine = "SHiNE: account not configured"; } @@ -3428,6 +3433,34 @@ static bool updateHomeserverSessionOnSolana(bool requireExisting, String &messag return true; } +static void maybeAutoRunHomeserverAddDebug() { + if (!gAutoHomeserverDebugPending || gAutoHomeserverDebugRunning || gAutoHomeserverDebugDone) { + return; + } + if (WiFi.status() != WL_CONNECTED) { + return; + } + if (!gSecretConfigured || !gHomeserverPdaCanAdd || !gShowHomeserverPdaActionButton) { + return; + } + + gAutoHomeserverDebugPending = false; + gAutoHomeserverDebugRunning = true; + gAutoHomeserverDebugDone = true; + gRegisterTriggerSource = "auto-boot-homeserver-add"; + + Serial.println("AUTO_HOMESERVER_ADD_BEGIN"); + String updateMessage; + bool ok = updateHomeserverSessionOnSolana(false, updateMessage); + if (ok) { + Serial.println("AUTO_HOMESERVER_ADD_OK"); + } else { + Serial.print("AUTO_HOMESERVER_ADD_FAIL: "); + Serial.println(updateMessage); + } + gAutoHomeserverDebugRunning = false; +} + static bool parseShineUserPdaBytes(const std::vector &bytes, ShinePdaUserState &outState, String &errorOut) { outState = ShinePdaUserState{}; errorOut = ""; @@ -7170,6 +7203,7 @@ void loop() { } manageWifiReconnect(); manageAccountPdaRefresh(); + maybeAutoRunHomeserverAddDebug(); manageShineConnection(); if (gBalanceAutoRefreshPending && gSecretConfigured && WiFi.status() == WL_CONNECTED) { diff --git a/VERSION.properties b/VERSION.properties index ff12498..605c001 100644 --- a/VERSION.properties +++ b/VERSION.properties @@ -1,2 +1,2 @@ -client.version=1.2.249 -server.version=1.2.234 +client.version=1.2.250 +server.version=1.2.235