ESP32: починить добавление homeserver и вернуть автопрогон

This commit is contained in:
AidarKC 2026-06-13 12:53:40 +04:00
parent a1da814030
commit 477ab3b580
3 changed files with 29 additions and 4 deletions

View File

@ -16,6 +16,7 @@
6. Если действие завершается ошибкой, проверить, что: 6. Если действие завершается ошибкой, проверить, что:
- текст ошибки показан на экране результата; - текст ошибки показан на экране результата;
- команда `last_error` по USB возвращает полный сохранённый payload. - команда `last_error` по USB возвращает полный сохранённый payload.
7. Во временной диагностической сборке после старта устройства подождать 15 секунд и проверить, что при наличии жёлтой homeserver-кнопки устройство само делает попытку `ADD/FIX HOMESERVER`, а результат пишет в USB-диагностику.
- ожидаемый результат: - ожидаемый результат:
устройство после обычной регистрации пользователя способно отдельной транзакцией добавить или исправить homeserver-сессию в `shine_users` PDA, а ошибки этого шага сохраняются в ту же USB/NVS-диагностику. устройство после обычной регистрации пользователя способно отдельной транзакцией добавить или исправить homeserver-сессию в `shine_users` PDA, а ошибки этого шага сохраняются в ту же USB/NVS-диагностику.

View File

@ -304,6 +304,10 @@ static String gLastRegisterDiagSummary;
static String gLastRegisterDiagDetails; static String gLastRegisterDiagDetails;
static String gLastRegisterDiagTime; static String gLastRegisterDiagTime;
static String gRegisterTriggerSource = "manual"; static String gRegisterTriggerSource = "manual";
static unsigned long gBootMillis = 0;
static bool gAutoHomeserverTestArmed = true;
static bool gAutoHomeserverTestStarted = false;
static unsigned long gLastAutoHomeserverAttemptMs = 0;
static String gSerialCommandBuffer; static String gSerialCommandBuffer;
static String gShineSessionId; static String gShineSessionId;
static String gShineSessionKey; static String gShineSessionKey;
@ -2349,7 +2353,7 @@ static bool updateHomeserverSessionOnSolana(bool requireExisting, String &messag
if (session.sessionType == kSessionTypeHomeserver && session.sessionName == gHomeserverValue) { if (session.sessionType == kSessionTypeHomeserver && session.sessionName == gHomeserverValue) {
foundSession = true; foundSession = true;
memcpy(session.sessionPubKey32, homeserverPub, 32); memcpy(session.sessionPubKey32, homeserverPub, 32);
session.sessionVersion = 0; session.sessionVersion = 1;
break; break;
} }
} }
@ -2359,7 +2363,7 @@ static bool updateHomeserverSessionOnSolana(bool requireExisting, String &messag
} }
ShinePdaSessionRecord rec; ShinePdaSessionRecord rec;
rec.sessionType = kSessionTypeHomeserver; rec.sessionType = kSessionTypeHomeserver;
rec.sessionVersion = 0; rec.sessionVersion = 1;
rec.sessionName = gHomeserverValue; rec.sessionName = gHomeserverValue;
memcpy(rec.sessionPubKey32, homeserverPub, 32); memcpy(rec.sessionPubKey32, homeserverPub, 32);
nextState.sessions.push_back(rec); nextState.sessions.push_back(rec);
@ -5049,6 +5053,7 @@ static void handleSwipe(SwipeDirection swipe) {
void setup() { void setup() {
Serial.begin(115200); Serial.begin(115200);
sodium_init(); sodium_init();
gBootMillis = millis();
Wire.begin(PIN_I2C_SDA, PIN_I2C_SCL); Wire.begin(PIN_I2C_SDA, PIN_I2C_SCL);
initPowerManagement(); initPowerManagement();
@ -5110,6 +5115,25 @@ void loop() {
manageAccountPdaRefresh(); manageAccountPdaRefresh();
manageShineConnection(); manageShineConnection();
if (gAutoHomeserverTestArmed
&& !gTouchDown
&& millis() - gBootMillis >= 15000UL
&& millis() - gLastAutoHomeserverAttemptMs >= 45000UL
&& gShowHomeserverPdaActionButton
&& (gHomeserverPdaCanAdd || gHomeserverPdaCanFix)) {
gAutoHomeserverTestStarted = true;
gLastAutoHomeserverAttemptMs = millis();
gRegisterTriggerSource = gHomeserverPdaCanFix ? "auto-boot-fix-homeserver" : "auto-boot-add-homeserver";
String updateMessage;
Serial.println("AUTO_HOMESERVER_PDA_BEGIN");
if (!updateHomeserverSessionOnSolana(gHomeserverPdaCanFix, updateMessage)) {
gHomeserverPdaResultSuccess = false;
gHomeserverPdaResultMessage = updateMessage;
gHomeserverPdaResultDetails = "";
}
Serial.println("AUTO_HOMESERVER_PDA_END");
}
static unsigned long lastHomeRefreshMs = 0; static unsigned long lastHomeRefreshMs = 0;
if (gCurrentScreen == SCREEN_HOME && !gTouchDown && millis() - lastHomeRefreshMs >= HOME_REFRESH_MS) { if (gCurrentScreen == SCREEN_HOME && !gTouchDown && millis() - lastHomeRefreshMs >= HOME_REFRESH_MS) {
lastHomeRefreshMs = millis(); lastHomeRefreshMs = millis();

View File

@ -1,2 +1,2 @@
client.version=1.2.176 client.version=1.2.177
server.version=1.2.165 server.version=1.2.166