ESP32: временно отключить PIN-вход в subserver UI

This commit is contained in:
AidarKC
2026-06-08 12:29:47 +04:00
parent b9185e761b
commit 66975862f7
4 changed files with 21 additions and 14 deletions
@@ -26,7 +26,7 @@
- проверка обязательных условий перед регистрацией;
- живая on-chain регистрация серверного `user_pda` в `shine_users` через `device key` устройства;
- прототип входящих запросов с подтверждением и отклонением;
- PIN-блокировка;
- PIN-блокировка (в текущей временной сборке вход по PIN отключён, устройство открывает `HOME` сразу после старта);
- базовые настройки, статус и главный экран;
- сохранение `PDA` и `tx signature` после успешной регистрации.
@@ -117,8 +117,8 @@
Назначение:
- блокировка устройства после запуска;
- вход по PIN.
- экран блокировки предусмотрен в UI, но в текущей временной сборке после запуска пропускается;
- вход по PIN временно отключён для отладки остальных экранов.
Отображается:
@@ -131,7 +131,8 @@
Поведение:
- если PIN введён верно, открывается `HOME`;
- если PIN неверный, показывается ошибка `Неверный PIN`.
- если PIN неверный, показывается ошибка `Неверный PIN`;
- в текущей временной сборке этот экран не показывается автоматически при старте.
## Экран HOME
@@ -424,7 +425,7 @@ QR должен быть сканируемым, а не декоративны
Ожидаемый путь пользователя:
1. разблокировать устройство PIN-кодом;
1. открыть устройство сразу после старта; экран PIN временно не требуется;
2. открыть `Подключение -> Wi-Fi`;
3. ввести `SSID` и пароль, нажать `Проверить`;
4. открыть `Подключение -> Серверы`;
@@ -466,7 +467,7 @@ QR должен быть сканируемым, а не декоративны
Минимально нужно проверить:
1. устройство загружается и показывает экран блокировки;
1. устройство загружается и сразу открывает `HOME`; экран блокировки временно отключён;
2. русский текст отображается без кракозябр;
3. ввод по экранной клавиатуре работает;
4. после перезагрузки сохранённые поля остаются в памяти;
@@ -200,7 +200,7 @@ struct RuntimeNetState {
int32_t rssi;
};
static ScreenId gScreen = SCR_LOCK;
static ScreenId gScreen = SCR_HOME;
static ScreenId gPrevScreen = SCR_HOME;
static EditTarget gEditTarget = EDIT_NONE;
static ConfirmTarget gConfirmTarget = CONFIRM_NONE;
@@ -252,6 +252,7 @@ static const uint8_t kBlockTypeServerProfile = 30;
static const uint8_t kBlockTypeAccessServers = 40;
static const uint8_t kBlockTypeSessions = 50;
static const uint8_t kBlockTypeTrustedState = 70;
static const bool kPinLockEnabled = false;
static const char *KB_ALPHA[4] = {
"qwertyuiop",
@@ -1901,7 +1902,7 @@ static void drawSettingsScreen() {
drawTopBar("Настройки");
drawPanel(20, 92, 440, 176, C_PANEL, C_BORDER, 16);
drawText(36, 122, "PIN: " + repeatChar('*', gData.pin.length()), C_TEXT);
drawText(36, 152, "Онлайн после старта: " + boolText(gData.online), C_TEXT);
drawText(36, 152, String("Вход по PIN: ") + (kPinLockEnabled ? "активен" : "временно отключён"), kPinLockEnabled ? C_TEXT : C_WARN);
drawText(36, 182, "Русский UI: активен", C_ACCENT);
drawWrappedText(36, 214, 48, 16, "Русский текст рисуется через UTF-8 и кириллический U8g2-шрифт. Это обязательная часть прототипа.", C_MUTE, (const uint8_t *)FONT_SMALL);
addButton(20, 286, 212, 48, ACT_CHANGE_PIN, "Сменить PIN");
@@ -2432,6 +2433,11 @@ void setup() {
gPrefs.begin("shine-ui", false);
loadData();
if (!kPinLockEnabled) {
gScreen = SCR_HOME;
gPrevScreen = SCR_HOME;
gLockBuffer = "";
}
syncWifiRuntimeState();
if (WiFi.status() != WL_CONNECTED) {
gData.online = false;