Проблемы после обновления (3.5.3 => 3.6.3)
Oleg-Perevyshin opened this issue · 3 comments
Oleg-Perevyshin commented
Обновил библиотеку с версии 3.5.3 до 3.6.3
На старой версии все работало отлично, сейчас при нажатии на любую кнопку интерфейса ESP32 перезагружается с паникой.
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x40171697 PS : 0x00060d30 A0 : 0x800e82ef A1 : 0x3ffb2050
A2 : 0x00000000 A3 : 0x3ffd6ce0 A4 : 0x00000000 A5 : 0x00000004
A6 : 0x3ffd76c4 A7 : 0x00000032 A8 : 0x800e7ad0 A9 : 0x3ffb2010
A10 : 0x3ffb205c A11 : 0x3ffe3bc4 A12 : 0x2a2d4b79 A13 : 0x3ffd73b0
A14 : 0x00000000 A15 : 0x3ffe2d20 SAR : 0x0000001d EXCCAUSE: 0x0000001c
EXCVADDR: 0x0000000f LBEG : 0x40089414 LEND : 0x4008941f LCOUNT : 0xffffffff
Backtrace: 0x40171694:0x3ffb2050 0x400e82ec:0x3ffb2070 0x400d53c1:0x3ffb2090 0x400db3ae:0x3ffb20b0 0x400dc38b:0x3ffb2100 0x400dc975:0x3ffb2180 0x400e5be6:0x3ffb21a0 0x400e5d55:0x3ffb21c0 0x400e5ea5:0x3ffb2220 0x400dd6f4:0x3ffb2270 0x400e7711:0x3ffb2290
Пример кода
/* Конструктор страниц */
void build(void) {
GP.BUILD_BEGIN(700);
if (!strcmp(config.webui_theme, WEBUI_THEME_DARK)) GP.THEME(GP_DARK);
else if (!strcmp(config.webui_theme, WEBUI_THEME_LIGHT)) GP.THEME(GP_LIGHT);
else GP.THEME(GP_DARK);
GP.NAV_TABS_LINKS("/settings", "НАСТРОЙКИ");
constructor_settings();
GP.BUILD_END();
}
/** Инициализация Web интерфейса */
void web_init(void) {
if (strcmp(config.wifi_mode, WIFI_OFF_MODE)) {
ui.attachBuild(build);
ui.attach(action);
ui.start(config.dev_name);
ui.enableOTA();
update_webui_vars();
}
}
/* Обработчик событий */
void action(void) {
if (ui.form("/settings")) {
webui_wifi_mode = ui.getInt("webui_wifi_mode");
if (webui_wifi_mode == 0) strncpy(config.wifi_mode, WIFI_OFF_MODE, sizeof(config.wifi_mode) - 1);
if (webui_wifi_mode == 1) strncpy(config.wifi_mode, WIFI_AP_MODE, sizeof(config.wifi_mode) - 1);
if (webui_wifi_mode == 2) strncpy(config.wifi_mode, WIFI_STA_MODE, sizeof(config.wifi_mode) - 1);
webui_theme = ui.getBool("webui_theme");
webui_theme == 0 ? strncpy(config.webui_theme, WEBUI_THEME_DARK, sizeof(config.webui_theme) - 1) :
strncpy(config.webui_theme, WEBUI_THEME_LIGHT, sizeof(config.webui_theme) - 1);
webui_sta_ssid = ui.getString("webui_sta_ssid");
strncpy(config.sta_ssid, webui_sta_ssid.c_str(), sizeof(config.sta_ssid) - 1);
webui_sta_psk = ui.getString("webui_sta_psk");
strncpy(config.sta_psk, webui_sta_psk.c_str(), sizeof(config.sta_psk) - 1);
save_config();
}
/* Глобальные элементы управления */
if (ui.click("webui_restart")) wifi_restart();
if (ui.click("webui_factory_reset")) flag_file_system = FS_CONFIG_CREATE;
}
/* Конструктор страницы НАСТРОЙКИ */
void constructor_settings(void) {
GP.FORM_BEGIN("/settings");
M_BLOCK_TAB(
"Режим работы WiFi",
GP.RADIO("webui_wifi_mode", 0, webui_wifi_mode); GP.LABEL("Выключить (OFF)", "webui_wifi_mode", GP_RED_B); GP.BREAK();
GP.HR();
GP.RADIO("webui_wifi_mode", 1, webui_wifi_mode); GP.LABEL("Точка доступа (AP)", "webui_wifi_mode");
GP.RADIO("webui_wifi_mode", 2, webui_wifi_mode); GP.LABEL("Станция (STA)", "webui_wifi_mode");
);
M_BLOCK_TAB(
"Тема оформления",
M_BOX(GP.LABEL("Темная"); GP.SWITCH("webui_theme", webui_theme); GP.LABEL("Светлая"););
);
M_BLOCK_TAB(
"Сетевые настройки",
M_BOX(GP.LABEL("Параметры режима STA", "", "", NULL, 1););
M_BOX(GP.LABEL("SSID"); GP.TEXT("webui_sta_ssid", "", webui_sta_ssid, "50%"););
M_BOX(GP.LABEL("Пароль"); GP.TEXT("webui_sta_psk", "", webui_sta_psk, "50%"););
);
GP.SUBMIT("Сохранить", GP_GREEN);
GP.FORM_END();
GP.HR();
M_BOX(
GP.BUTTON("webui_restart", "Перезагрузка", "", GP_RED, "40%"); GP.BUTTON("webui_factory_reset", "Сброс настроек", "", GP_RED, "40%");
);
}
GyverLibs commented
уф, опять esp32 =(
- Какая версия ядра? Не могу повторить баг у себя
- Нужно определиться с минимальным кодом, который приводит к сбою
- Пример условно actionClick работает?
- Если обернуть опрос обоих кликов в
if (ui.click()) {}
- перестанет паниковать?
Oleg-Perevyshin commented
Ни с того ни с сего заработала...
GyverLibs commented
где то строка переполнилась 100%. Кстати необязательно дублировать строки стрингами. Портал может записать текст сразу в массив