From e6e990a2b50f3f1cbe81c1d9446649aa5c968eff Mon Sep 17 00:00:00 2001 From: fvanroie Date: Sat, 4 Apr 2020 22:57:55 +0200 Subject: [PATCH] Fix ESP8266 crash --- platformio.ini | 29 ++++++++++----------- src/hasp.cpp | 8 +++--- src/hasp_gui.cpp | 18 ++++++------- src/hasp_oobe.cpp | 4 +-- src/hasp_wifi.cpp | 58 ++++++++++++++++++++--------------------- src/hasp_wifi.h | 1 + src/mouse_cursor_icon.c | 5 ++-- 7 files changed, 62 insertions(+), 61 deletions(-) diff --git a/platformio.ini b/platformio.ini index 5248c6ad..5d017017 100644 --- a/platformio.ini +++ b/platformio.ini @@ -55,8 +55,7 @@ lib_deps = lib_ignore = https://github.com/littlevgl/lvgl.git - lvgl@^6.1.2 - lvgl@^6.1.1 + ; -- littlevgl config options ---------------------- build_flags = @@ -76,7 +75,7 @@ build_flags = [flags] esp8266_flags= ${env.build_flags} - -D HTTP_UPLOAD_BUFLEN=512 ; lower http upload buffer + -D HTTP_UPLOAD_BUFLEN=640 ; lower http upload buffer -D MQTT_MAX_PACKET_SIZE=1024 ; longer PubSubClient messages esp32_flags= ${env.build_flags} @@ -160,7 +159,7 @@ build_flags = -D TFT_DC=2 -D TFT_CS=5 -D TFT_RST=4 - -D TFT_BCKL=20 + -D TFT_BCKL=-1 ; None, configurable via web UI (e.g. 20) -D TOUCH_CS=21 ; -- Debugging options ----------------------------- ; -D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG @@ -222,11 +221,11 @@ build_flags = -D ILI9488_DRIVER=1 ${pins.vspi32} -D ESP32_PARALLEL=1 - -D define PSEUDO_8_BIT=1 + -D PSEUDO_8_BIT=1 -D TFT_CS=34 ; Chip select control pin -D TFT_DC=36 ; Data Command control pin - must use a pin in the range 0-31 - -D TFT_RST=38 ; Reset pin - -D TFT_WR=4 ; Write strobe control pin - must use a pin in the range 0-31 + -D TFT_RST=38 ; Reset pin + -D TFT_WR=4 ; Write strobe control pin - must use a pin in the range 0-31 -D TFT_RD=2 -D TFT_D0=12 ; Must use pins in the range 0-31 for the data bus -D TFT_D1=13 ; so a single register write sets/clears all bits @@ -268,9 +267,9 @@ build_flags = ${pins.vspi32} -D TFT_DC=5 -D TFT_CS=26 - -D TFT_RST=-1 ;RST - -D TFT_BCKL=21 - -D TOUCH_CS=17 ;(can also be 22 or 16) + -D TFT_RST=-1 ; RST + -D TFT_BCKL=-1 ; None, configurable via web UI (e.g. 21) + -D TOUCH_CS=17 ; (can also be 22 or 16) ;*************************************************** @@ -292,8 +291,8 @@ build_flags = ;-D TFT_DC=5 ; Defined by board, don't redefine ;-D TFT_CS=26 ; Defined by board, don't redefine ;-D TFT_RST=-1 ; Defined by board, don't redefine - -D TFT_BCKL=21 - -D TOUCH_CS=17 ;(can also be 22 or 16) + -D TFT_BCKL=-1 ; None, configurable via web UI (e.g. 21) + -D TOUCH_CS=17 ; (can also be 22 or 16) ;*************************************************** @@ -322,7 +321,7 @@ build_flags = ;-D TFT_SCLK=14 ;D5 Default HSPI -D TFT_DC=15 ;D8 -D TFT_CS=16 ;D0 - -D TFT_BCKL=2 ;D4 (can also be D1 or D2) + -D TFT_BCKL=-1 ;None, configurable via web UI (e.g. 2 for D4) -D TOUCH_CS=0 ;D3 (can also be D1 or D2) -D TFT_RST=-1 ;RST @@ -354,7 +353,7 @@ build_flags = -D TFT_SCLK=14 ;D5 -D TFT_CS=15 ;D8 -D TFT_DC=0 ;D3 - -D TFT_BCKL=2 ;D4 (can also be D1 or D2) + -D TFT_BCKL=-1 ;None, configurable via web UI (e.g. 2 for D4) -D TOUCH_CS=-1 ;NC -D TFT_RST=2 ;D4 -D SPI_FREQUENCY=27000000 @@ -388,7 +387,7 @@ build_flags = -D TFT_SCLK=14 ;D5 -D TFT_CS=15 ;D8 -D TFT_DC=0 ;D3 - -D TFT_BCKL=2 ;D4 + -D TFT_BCKL=-1 ;None, configurable via web UI (e.g. 2 for D4) -D TOUCH_CS=-1 ;NC -D TFT_RST=2 ;D4 -D SPI_FREQUENCY=27000000 diff --git a/src/hasp.cpp b/src/hasp.cpp index 46d17100..a3457308 100644 --- a/src/hasp.cpp +++ b/src/hasp.cpp @@ -490,9 +490,11 @@ void haspSetup() // lv_obj_set_size(pages[0], hres, vres); } - haspDisconnect(); - haspLoadPage(haspPagesPath); - haspSetPage(haspStartPage); + if(!wifiShowAP()) { + haspDisconnect(); + haspLoadPage(haspPagesPath); + haspSetPage(haspStartPage); + } } /********************** diff --git a/src/hasp_gui.cpp b/src/hasp_gui.cpp index 65080675..00b6916a 100644 --- a/src/hasp_gui.cpp +++ b/src/hasp_gui.cpp @@ -532,16 +532,16 @@ void guiSetup() lv_indev_t * mouse_indev = lv_indev_drv_register(&indev_drv); if(guiShowPointer || true) { - // lv_obj_t * label = lv_label_create(lv_layer_sys(), NULL); - // lv_label_set_text(label, "<"); - // lv_indev_set_cursor(mouse_indev, label); // connect the object to the driver + lv_obj_t * label = lv_label_create(lv_layer_sys(), NULL); + lv_label_set_text(label, "<"); + lv_indev_set_cursor(mouse_indev, label); // connect the object to the driver /*Set a cursor for the mouse*/ - LV_IMG_DECLARE(mouse_cursor_icon); /*Declare the image file.*/ - lv_obj_t * cursor_obj = - lv_img_create(lv_disp_get_scr_act(NULL), NULL); /*Create an image object for the cursor */ - lv_img_set_src(cursor_obj, &mouse_cursor_icon); /*Set the image source*/ - lv_indev_set_cursor(mouse_indev, cursor_obj); /*Connect the image object to the driver*/ + // LV_IMG_DECLARE(mouse_cursor_icon); /*Declare the image file.*/ + // lv_obj_t * cursor_obj = + // lv_img_create(lv_disp_get_scr_act(NULL), NULL); /*Create an image object for the cursor */ + // lv_img_set_src(cursor_obj, &mouse_cursor_icon); /*Set the image source*/ + // lv_indev_set_cursor(mouse_indev, cursor_obj); /*Connect the image object to the driver*/ } /* @@ -694,7 +694,7 @@ bool guiSetConfig(const JsonObject & settings) if(calData[0] != 0 || calData[1] != 65535 || calData[2] != 0 || calData[3] != 65535) { Log.trace(F("calData set [%u, %u, %u, %u, %u]"), calData[0], calData[1], calData[2], calData[3], calData[4]); - oobeSetAutoCalibrate(true); + oobeSetAutoCalibrate(false); } else { Log.notice(F("First Touch Calibration enabled")); oobeSetAutoCalibrate(true); diff --git a/src/hasp_oobe.cpp b/src/hasp_oobe.cpp index f08c6e36..215a6213 100644 --- a/src/hasp_oobe.cpp +++ b/src/hasp_oobe.cpp @@ -311,6 +311,8 @@ void oobeSetup() oobeSetupQR(ssid, pass); oobeSetupSsid(); oobeSetPage(0); + lv_obj_set_click(lv_disp_get_layer_sys(NULL), true); + lv_obj_set_event_cb(lv_disp_get_layer_sys(NULL), gotoPage1_cb); } if(oobeAutoCalibrate) { @@ -318,8 +320,6 @@ void oobeSetup() lv_obj_set_event_cb(lv_disp_get_layer_sys(NULL), oobe_calibrate_cb); Log.verbose(F("OOBE: Enabled Auto Calibrate on touch")); } else { - lv_obj_set_click(lv_disp_get_layer_sys(NULL), true); - lv_obj_set_event_cb(lv_disp_get_layer_sys(NULL), gotoPage1_cb); Log.verbose(F("OOBE: Already calibrated")); } } \ No newline at end of file diff --git a/src/hasp_wifi.cpp b/src/hasp_wifi.cpp index 5bc465fe..6ae20b6f 100644 --- a/src/hasp_wifi.cpp +++ b/src/hasp_wifi.cpp @@ -131,11 +131,36 @@ void wifiSTADisconnected(WiFiEventStationModeDisconnected info) } #endif +bool wifiShowAP() +{ + return (strlen(wifiSsid) == 0); +} + +bool wifiShowAP(char * ssid, char * pass) +{ + if(strlen(wifiSsid) != 0) return false; + + byte mac[6]; + WiFi.macAddress(mac); + sprintf_P(ssid, PSTR("HASP-%02x%02x%02x"), mac[3], mac[4], mac[5]); + sprintf_P(pass, PSTR("haspadmin")); + + WiFi.softAP(ssid, pass); + + /* Setup the DNS server redirecting all the domains to the apIP */ + // dnsServer.setErrorReplyCode(DNSReplyCode::NoError); + // dnsServer.start(DNS_PORT, "*", apIP); + + Log.warning(F("WIFI: Temporary Access Point %s password: %s"), ssid, pass); + Log.warning(F("WIFI: AP IP address : %s"), WiFi.softAPIP().toString().c_str()); + // httpReconnect();} + + return true; +} + void wifiSetup() { - char buffer[128]; - - if(strlen(wifiSsid) == 0) { + if(wifiShowAP()) { WiFi.mode(WIFI_AP); } else { WiFi.mode(WIFI_STA); @@ -155,33 +180,6 @@ void wifiSetup() } } -bool wifiConfigured() -{ - return (strlen(wifiSsid) >= 0); -} - -bool wifiShowAP(char * ssid, char * pass) -{ - // if(WiFi.mode != WIFI_AP) return false; - - byte mac[6]; - WiFi.macAddress(mac); - sprintf_P(ssid, PSTR("HASP-%02x%02x%02x"), mac[3], mac[4], mac[5]); - sprintf_P(pass, PSTR("haspadmin")); - - // WiFi.softAP(ssid, pass); - - /* Setup the DNS server redirecting all the domains to the apIP */ - // dnsServer.setErrorReplyCode(DNSReplyCode::NoError); - // dnsServer.start(DNS_PORT, "*", apIP); - - Log.warning(F("WIFI: Temporary Access Point %s password: %s"), ssid, pass); - Log.warning(F("WIFI: AP IP address : %s"), WiFi.softAPIP().toString().c_str()); - // httpReconnect();} - - return true; -} - bool wifiEvery5Seconds() { if(WiFi.getMode() == WIFI_AP || WiFi.status() == WL_CONNECTED) { diff --git a/src/hasp_wifi.h b/src/hasp_wifi.h index bff6d1a2..57d33a51 100644 --- a/src/hasp_wifi.h +++ b/src/hasp_wifi.h @@ -4,6 +4,7 @@ #include "ArduinoJson.h" void wifiSetup(); +bool wifiShowAP(); bool wifiShowAP(char * ssid, char * pass); bool wifiEvery5Seconds(void); void wifiStop(void); diff --git a/src/mouse_cursor_icon.c b/src/mouse_cursor_icon.c index 93781baf..9d68485b 100644 --- a/src/mouse_cursor_icon.c +++ b/src/mouse_cursor_icon.c @@ -1,5 +1,5 @@ #include "lvgl.h" - +#if 0 const uint8_t mouse_cursor_icon_map[] = { #if LV_COLOR_DEPTH == 1 || LV_COLOR_DEPTH == 8 /*Pixel format: Alpha 8 bit, Red: 3 bit, Green: 3 bit, Blue: 2 bit*/ @@ -3381,4 +3381,5 @@ lv_img_dsc_t mouse_cursor_icon = { .data_size = 280 * LV_IMG_PX_SIZE_ALPHA_BYTE, .header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA, .data = mouse_cursor_icon_map, -}; \ No newline at end of file +}; +#endif \ No newline at end of file