ImpulseAdventure / GUIslice

GUIslice drag & drop embedded GUI in C for touchscreen TFT on Arduino, Raspberry Pi, ARM, ESP8266 / ESP32 / M5stack using Adafruit-GFX / TFT_eSPI / UTFT / SDL
https://www.impulseadventure.com/elec/guislice-gui.html
MIT License
1.17k stars 209 forks source link

GSLC_FEATURE_INPUT: undefined reference to gslc_FocusElemIndSet (esp32) #441

Closed drondistortion closed 2 years ago

drondistortion commented 2 years ago

Describe the bug

undefined reference to gslc_FocusElemIndSet when trying to compile ex04_ard_ctrls_pin (or any other example) with #define GSLC_FEATURE_INPUT 1

Device hardware

Additional info

esp core version 2.0.2 Full error message: esp32-error.txt

Pconti31 commented 2 years ago

@drondistortion Can you zip and post your esp-tftespi-default-notouch.h file?

Paul--

Pconti31 commented 2 years ago

@drondistortion No need to post your config. using the shipped 0.17.0 version of esp-tftespi-default-notouch.h file gives the same errors:

Archiving built core (caching) in: C:\Users\Paul\AppData\Local\Temp\arduino_cache_995485\core\core_173e220969b96e0fe32006cab9d4754c.a
Linking everything together...
"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\1.22.0-80-g6c4433a-5.2.0/bin/xtensa-esp32-elf-gcc" -nostdlib "-LC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.4/tools/sdk/lib" "-LC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.4/tools/sdk/ld" -T esp32_out.ld -T esp32.common.ld -T esp32.rom.ld -T esp32.peripherals.ld -T esp32.rom.libgcc.ld -T esp32.rom.spiram_incompatible_fns.ld -u ld_include_panic_highint_hdl -u call_user_start_cpu0 -Wl,--gc-sections -Wl,-static -Wl,--undefined=uxTopUsedPriority -u __cxa_guard_dummy -u __cxx_fatal_exception -Wl,--start-group "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\sketch\\EasyButton.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\sketch\\ex04_ard_ctrls_pin.ino.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\GUIslice.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\GUIslice_drv_sdl.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\GUIslice_drv_adagfx.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\GUIslice_drv_m5stack.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\GUIslice_drv_tft_espi.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\GUIslice_drv_utft.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\GUIslice_th.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XCheckbox.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XGauge.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XGlowball.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XGraph.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XKeyPad.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XKeyPad_Alpha.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XKeyPad_Num.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XListbox.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XProgress.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XRadial.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XRamp.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XRingGauge.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XSeekbar.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XSelNum.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XSlider.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XSpinner.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XTemplate.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XTextbox.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XToggleImgbtn.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\GUIslice\\elem\\XTogglebtn.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\TFT_eSPI-2.3.4\\TFT_eSPI.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\SPI\\SPI.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\FS\\FS.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\FS\\vfs_api.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\libraries\\SPIFFS\\SPIFFS.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828\\core\\core.a" -lgcc -lesp32 -lphy -lesp_http_client -lmbedtls -lrtc -lesp_http_server -lbtdm_app -lspiffs -lbootloader_support -lmdns -lnvs_flash -lfatfs -lpp -lnet80211 -ljsmn -lface_detection -llibsodium -lvfs -ldl_lib -llog -lfreertos -lcxx -lsmartconfig_ack -lxtensa-debug-module -lheap -ltcpip_adapter -lmqtt -lulp -lfd -lfb_gfx -lnghttp -lprotocomm -lsmartconfig -lm -lethernet -limage_util -lc_nano -lsoc -ltcp_transport -lc -lmicro-ecc -lface_recognition -ljson -lwpa_supplicant -lmesh -lesp_https_ota -lwpa2 -lexpat -llwip -lwear_levelling -lapp_update -ldriver -lbt -lespnow -lcoap -lasio -lnewlib -lconsole -lapp_trace -lesp32-camera -lhal -lprotobuf-c -lsdmmc -lcore -lpthread -lcoexist -lfreemodbus -lspi_flash -lesp-tls -lwpa -lwifi_provisioning -lwps -lesp_adc_cal -lesp_event -lopenssl -lesp_ringbuf -lfr -lstdc++ -Wl,--end-group -Wl,-EL -o "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_931828/ex04_ard_ctrls_pin.ino.elf"
C:\Users\Paul\AppData\Local\Temp\arduino_build_931828\libraries\GUIslice\GUIslice.c.o:(.literal.gslc_SetPageCur+0x4): undefined reference to `gslc_FocusElemIndSet'
C:\Users\Paul\AppData\Local\Temp\arduino_build_931828\libraries\GUIslice\GUIslice.c.o: In function `gslc_SetPageCur':
C:\Users\Paul\Documents\Arduino\libraries\GUIslice\src/GUIslice.c:3689: undefined reference to `gslc_FocusElemIndSet'
collect2.exe: error: ld returned 1 exit status
Using library GUIslice at version 0.17.0 in folder: C:\Users\Paul\Documents\Arduino\libraries\GUIslice 
Using library TFT_eSPI-2.3.4 at version 2.3.4 in folder: C:\Users\Paul\Documents\Arduino\libraries\TFT_eSPI-2.3.4 
Using library SPI at version 1.0 in folder: C:\Users\Paul\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\SPI 
Using library FS at version 1.0 in folder: C:\Users\Paul\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\FS 
Using library SPIFFS at version 1.0 in folder: C:\Users\Paul\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\SPIFFS 
exit status 1
Error compiling for board Adafruit ESP32 Feather.

Seems the ball is in @ImpulseAdventure court. Paul--

Pconti31 commented 2 years ago

@drondistortion While we wait for Calvin to look over this problem I made quick edit of GUIslice.c and it comiples for me now. Although, I can't test to see if it works or not. Let us know if its better or worst. issue-441.zip

Archiving built core (caching) in: C:\Users\Paul\AppData\Local\Temp\arduino_cache_242812\core\core_173e220969b96e0fe32006cab9d4754c.a
Linking everything together...
"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\1.22.0-80-g6c4433a-5.2.0/bin/xtensa-esp32-elf-gcc" -nostdlib "-LC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.4/tools/sdk/lib" "-LC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.4/tools/sdk/ld" -T esp32_out.ld -T esp32.common.ld -T esp32.rom.ld -T esp32.peripherals.ld -T esp32.rom.libgcc.ld -T esp32.rom.spiram_incompatible_fns.ld -u ld_include_panic_highint_hdl -u call_user_start_cpu0 -Wl,--gc-sections -Wl,-static -Wl,--undefined=uxTopUsedPriority -u __cxa_guard_dummy -u __cxx_fatal_exception -Wl,--start-group "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\sketch\\EasyButton.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\sketch\\ex04_ard_ctrls_pin.ino.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\GUIslice.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\GUIslice_drv_sdl.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\GUIslice_drv_adagfx.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\GUIslice_drv_m5stack.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\GUIslice_drv_tft_espi.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\GUIslice_drv_utft.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\GUIslice_th.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XCheckbox.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XGauge.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XGlowball.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XGraph.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XKeyPad.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XKeyPad_Alpha.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XKeyPad_Num.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XListbox.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XProgress.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XRadial.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XRamp.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XRingGauge.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XSeekbar.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XSelNum.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XSlider.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XSpinner.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XTemplate.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XTextbox.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XToggleImgbtn.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\GUIslice\\elem\\XTogglebtn.c.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\TFT_eSPI-2.3.4\\TFT_eSPI.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\SPI\\SPI.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\FS\\FS.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\FS\\vfs_api.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\libraries\\SPIFFS\\SPIFFS.cpp.o" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694\\core\\core.a" -lgcc -lesp32 -lphy -lesp_http_client -lmbedtls -lrtc -lesp_http_server -lbtdm_app -lspiffs -lbootloader_support -lmdns -lnvs_flash -lfatfs -lpp -lnet80211 -ljsmn -lface_detection -llibsodium -lvfs -ldl_lib -llog -lfreertos -lcxx -lsmartconfig_ack -lxtensa-debug-module -lheap -ltcpip_adapter -lmqtt -lulp -lfd -lfb_gfx -lnghttp -lprotocomm -lsmartconfig -lm -lethernet -limage_util -lc_nano -lsoc -ltcp_transport -lc -lmicro-ecc -lface_recognition -ljson -lwpa_supplicant -lmesh -lesp_https_ota -lwpa2 -lexpat -llwip -lwear_levelling -lapp_update -ldriver -lbt -lespnow -lcoap -lasio -lnewlib -lconsole -lapp_trace -lesp32-camera -lhal -lprotobuf-c -lsdmmc -lcore -lpthread -lcoexist -lfreemodbus -lspi_flash -lesp-tls -lwpa -lwifi_provisioning -lwps -lesp_adc_cal -lesp_event -lopenssl -lesp_ringbuf -lfr -lstdc++ -Wl,--end-group -Wl,-EL -o "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694/ex04_ard_ctrls_pin.ino.elf"
"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.4/tools/gen_esp32part.exe" -q "C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.4/tools/partitions/default.csv" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694/ex04_ard_ctrls_pin.ino.partitions.bin"
"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esptool_py\\2.6.1/esptool.exe" --chip esp32 elf2image --flash_mode dio --flash_freq 80m --flash_size 4MB -o "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694/ex04_ard_ctrls_pin.ino.bin" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694/ex04_ard_ctrls_pin.ino.elf"
esptool.py v2.6
Using library GUIslice at version 0.17.0 in folder: C:\Users\Paul\Documents\Arduino\libraries\GUIslice 
Using library TFT_eSPI-2.3.4 at version 2.3.4 in folder: C:\Users\Paul\Documents\Arduino\libraries\TFT_eSPI-2.3.4 
Using library SPI at version 1.0 in folder: C:\Users\Paul\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\SPI 
Using library FS at version 1.0 in folder: C:\Users\Paul\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\FS 
Using library SPIFFS at version 1.0 in folder: C:\Users\Paul\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\SPIFFS 
"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\1.22.0-80-g6c4433a-5.2.0/bin/xtensa-esp32-elf-size" -A "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_35694/ex04_ard_ctrls_pin.ino.elf"
Sketch uses 269341 bytes (20%) of program storage space. Maximum is 1310720 bytes.
Global variables use 18540 bytes (5%) of dynamic memory, leaving 309140 bytes for local variables. Maximum is 327680 bytes.

Paul--

drondistortion commented 2 years ago

it compiles, no input though

Pconti31 commented 2 years ago

@drondistortion If it compiles than the next step is to turn on debug tracing. Edit your esp-tftespi-default-notouch.h file. and change it as so:

//  #define DEBUG_ERR               0   // 1,2 to enable, 0 to disable
  #define DEBUG_ERR               2   

Then capture the Serial Monitor output. Maybe something will show up. You might also double check your wiring of your switches and what pins are being used by the ex04_ard_ctrls_pin.ino sample.
Paul--

Pconti31 commented 2 years ago

@drondistortion Also, don't forget to add some Serial.prints to the ex04_ard_ctrls_pin.ino function bool CbPinPoll().

  else return false; // No pin event detected

  Serial.println("Pin fired");
  // If we reach here, then an pin event was detected

This will give you the idea that the wiring is correct. If no output occurs you should make a small standalone app that doesn't use GUIslice to make sure input from the pins works.

By the way I mean no offense but just in case you are not a seasoned engineer you might want to check out these tutorials on the ESP32: ESP32 Digital Inputs and Digital Outputs ESP32 Capacitive Touch Sensor Pins with Arduino IDE Paul--

ImpulseAdventure commented 2 years ago

Hi guys --

Finally have an opportunity to catch up on this one... the compilation error is very likely due to trying to enable the "external input" mode (GSLC_FEATURE_INPUT) while disabling all GUI inputs (DRV_TOUCH_NONE). This would also explain why the inputs aren't operating as expected.

Instead, when we use GSLC_FEATURE_INPUT we need to select DRV_TOUCH_INPUT instead of DRV_TOUCH_NONE. As an example of an external input configuration file, take a look at configs\ard-adagfx-ili9341-input.h. With this config change, you shouldn't need to modify any other files.

This suggests that I should probably add in a compile-time check to warn the user if GSLC_FEATURE_INPUT has been enabled but DRV_TOUCH_NONE is selected.

Please let me know if this works better for you?

thx

ImpulseAdventure commented 2 years ago

Note that I have now added a compile-time check to alert the user of the configuration error

ForrestLee commented 2 years ago

Changing to DRV_TOUCH_INPUT worked for me

define DRV_TOUCH_INPUT // No touchscreen, just GPIO buttons enabled

Code now compiles for Adafruit Feather M0 Wifi, with these also in GUIslice/configs/ard-adagfx-ili9488-xpt2046-ws.h

define GSLC_FEATURE_INPUT 1 // Keyboard / GPIO input control

define GSLC_DEV_TOUCH ""

define GSLC_USE_PROGMEM 0 // for M0

Thanks! ... Forrest

ImpulseAdventure commented 2 years ago

Thank you @ForrestLee for confirming that it works!