esp-arduino-libs / ESP32_Display_Panel

Arduino library of driving display panel for the ESP SoCs
Apache License 2.0
75 stars 16 forks source link

error: no matching function for call to 'construct_at(ESP_PanelTouch_GT911*&, ESP_PanelBus*, esp_lcd_touch_config_t&, int)' #85

Closed lboue closed 2 months ago

lboue commented 2 months ago

Steps to reproduce:

  1. Download WiFiClock example
  2. Copy ESP_Panel_Board_Custom.h from here
  3. Check that ESP_PANEL_TOUCH_I2C_ADDRESS is set #define ESP_PANEL_TOUCH_I2C_ADDRESS (0x14)
  4. Build WiFiClockexample
  5. Flash Waveshare ESP32-S3 4.3inch Capacitive with WiFiClock example

Logs

d:\Waveshare\libraries\ESP32_Display_Panel\src\ESP_Panel.cpp:421:9:   required from here
c:\users\Waveshare\appdata\local\arduino15\packages\esp32\tools\esp-xs3\2302\xtensa-esp32s3-elf\include\c++\12.2.0\bits\stl_construct.h:96:17: error: no matching function for call to 'ESP_PanelTouch_GT911::ESP_PanelTouch_GT911(ESP_PanelBus*, esp_lcd_touch_config_t&, int)'
   96 |     -> decltype(::new((void*)0) _Tp(std::declval<_Args>()...))
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from d:\Waveshare\libraries\ESP32_Display_Panel\src\ESP_Panel_Library.h:45:
d:\Waveshare\libraries\ESP32_Display_Panel\src\touch/GT911.h:38:5: note: candidate: 'ESP_PanelTouch_GT911::ESP_PanelTouch_GT911(ESP_PanelBus*, const esp_lcd_touch_config_t&)'
   38 |     ESP_PanelTouch_GT911(ESP_PanelBus *bus, const esp_lcd_touch_config_t &config);
      |     ^~~~~~~~~~~~~~~~~~~~
d:\Waveshare\libraries\ESP32_Display_Panel\src\touch/GT911.h:38:5: note:   candidate expects 2 arguments, 3 provided
d:\Waveshare\libraries\ESP32_Display_Panel\src\touch/GT911.h:29:5: note: candidate: 'ESP_PanelTouch_GT911::ESP_PanelTouch_GT911(ESP_PanelBus*, uint16_t, uint16_t, int, int)'
   29 |     ESP_PanelTouch_GT911(ESP_PanelBus *bus, uint16_t width, uint16_t height, int rst_io = -1, int int_io = -1);
      |     ^~~~~~~~~~~~~~~~~~~~
d:\Waveshare\libraries\ESP32_Display_Panel\src\touch/GT911.h:29:54: note:   no known conversion for argument 2 from 'esp_lcd_touch_config_t' to 'uint16_t' {aka 'short unsigned int'}
   29 |     ESP_PanelTouch_GT911(ESP_PanelBus *bus, uint16_t width, uint16_t height, int rst_io = -1, int int_io = -1);
      |                                             ~~~~~~~~~^~~~~
d:\Waveshare\libraries\ESP32_Display_Panel\src\touch/GT911.h:18:7: note: candidate: 'ESP_PanelTouch_GT911::ESP_PanelTouch_GT911(const ESP_PanelTouch_GT911&)'
   18 | class ESP_PanelTouch_GT911 : public ESP_PanelTouch {
      |       ^~~~~~~~~~~~~~~~~~~~
d:\Waveshare\libraries\ESP32_Display_Panel\src\touch/GT911.h:18:7: note:   candidate expects 1 argument, 3 provided
c:\users\Waveshare\appdata\local\arduino15\packages\esp32\tools\esp-xs3\2302\xtensa-esp32s3-elf\include\c++\12.2.0\bits\stl_construct.h: In instantiation of 'constexpr void std::_Construct(_Tp*, _Args&& ...) [with _Tp = ESP_PanelTouch_GT911; _Args = {ESP_PanelBus*, esp_lcd_touch_config_t&, int}]':
c:\users\Waveshare\appdata\local\arduino15\packages\esp32\tools\esp-xs3\2302\xtensa-esp32s3-elf\include\c++\12.2.0\bits\alloc_traits.h:635:19:   required from 'static constexpr void std::allocator_traits<std::allocator<void> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = ESP_PanelTouch_GT911; _Args = {ESP_PanelBus*, esp_lcd_touch_config_t&, int}; allocator_type = std::allocator<void>]'
c:\users\Waveshare\appdata\local\arduino15\packages\esp32\tools\esp-xs3\2302\xtensa-esp32s3-elf\include\c++\12.2.0\bits\shared_ptr_base.h:604:39:   required from 'std::_Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp>::_Sp_counted_ptr_inplace(_Alloc, _Args&& ...) [with _Args = {ESP_PanelBus*, esp_lcd_touch_config_t&, int}; _Tp = ESP_PanelTouch_GT911; _Alloc = std::allocator<void>; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]'
c:\users\Waveshare\appdata\local\arduino15\packages\esp32\tools\esp-xs3\2302\xtensa-esp32s3-elf\include\c++\12.2.0\bits\shared_ptr_base.h:971:16:   required from 'std::__shared_count<_Lp>::__shared_count(_Tp*&, std::_Sp_alloc_shared_tag<_Alloc>, _Args&& ...) [with _Tp = ESP_PanelTouch_GT911; _Alloc = std::allocator<void>; _Args = {ESP_PanelBus*, esp_lcd_touch_config_t&, int}; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]'
c:\users\Waveshare\appdata\local\arduino15\packages\esp32\tools\esp-xs3\2302\xtensa-esp32s3-elf\include\c++\12.2.0\bits\shared_ptr_base.h:1712:14:   required from 'std::__shared_ptr<_Tp, _Lp>::__shared_ptr(std::_Sp_alloc_shared_tag<_Tp>, _Args&& ...) [with _Alloc = std::allocator<void>; _Args = {ESP_PanelBus*, esp_lcd_touch_config_t&, int}; _Tp = ESP_PanelTouch_GT911; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]'
c:\users\Waveshare\appdata\local\arduino15\packages\esp32\tools\esp-xs3\2302\xtensa-esp32s3-elf\include\c++\12.2.0\bits\shared_ptr.h:464:59:   required from 'std::shared_ptr<_Tp>::shared_ptr(std::_Sp_alloc_shared_tag<_Tp>, _Args&& ...) [with _Alloc = std::allocator<void>; _Args = {ESP_PanelBus*, esp_lcd_touch_config_t&, int}; _Tp = ESP_PanelTouch_GT911]'
c:\users\Waveshare\appdata\local\arduino15\packages\esp32\tools\esp-xs3\2302\xtensa-esp32s3-elf\include\c++\12.2.0\bits\shared_ptr.h:1009:14:   required from 'std::shared_ptr<std::_NonArray<_Tp> > std::make_shared(_Args&& ...) [with _Tp = ESP_PanelTouch_GT911; _Args = {ESP_PanelBus*, esp_lcd_touch_config_t&, int}; _NonArray<_Tp> = ESP_PanelTouch_GT911]'
d:\Waveshare\libraries\ESP32_Display_Panel\src\ESP_Panel.cpp:421:9:   required from here
c:\users\Waveshare\appdata\local\arduino15\packages\esp32\tools\esp-xs3\2302\xtensa-esp32s3-elf\include\c++\12.2.0\bits\stl_construct.h:119:7: error: no matching function for call to 'ESP_PanelTouch_GT911::ESP_PanelTouch_GT911(ESP_PanelBus*, esp_lcd_touch_config_t&, int)'
  119 |       ::new((void*)__p) _Tp(std::forward<_Args>(__args)...);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
d:\Waveshare\libraries\ESP32_Display_Panel\src\touch/GT911.h:38:5: note: candidate: 'ESP_PanelTouch_GT911::ESP_PanelTouch_GT911(ESP_PanelBus*, const esp_lcd_touch_config_t&)'
   38 |     ESP_PanelTouch_GT911(ESP_PanelBus *bus, const esp_lcd_touch_config_t &config);
      |     ^~~~~~~~~~~~~~~~~~~~
d:\Waveshare\libraries\ESP32_Display_Panel\src\touch/GT911.h:38:5: note:   candidate expects 2 arguments, 3 provided
d:\Waveshare\libraries\ESP32_Display_Panel\src\touch/GT911.h:29:5: note: candidate: 'ESP_PanelTouch_GT911::ESP_PanelTouch_GT911(ESP_PanelBus*, uint16_t, uint16_t, int, int)'
   29 |     ESP_PanelTouch_GT911(ESP_PanelBus *bus, uint16_t width, uint16_t height, int rst_io = -1, int int_io = -1);
      |     ^~~~~~~~~~~~~~~~~~~~
d:\Waveshare\libraries\ESP32_Display_Panel\src\touch/GT911.h:29:54: note:   no known conversion for argument 2 from 'esp_lcd_touch_config_t' to 'uint16_t' {aka 'short unsigned int'}
   29 |     ESP_PanelTouch_GT911(ESP_PanelBus *bus, uint16_t width, uint16_t height, int rst_io = -1, int int_io = -1);
      |                                             ~~~~~~~~~^~~~~
d:\Waveshare\libraries\ESP32_Display_Panel\src\touch/GT911.h:18:7: note: candidate: 'ESP_PanelTouch_GT911::ESP_PanelTouch_GT911(const ESP_PanelTouch_GT911&)'
   18 | class ESP_PanelTouch_GT911 : public ESP_PanelTouch {
      |       ^~~~~~~~~~~~~~~~~~~~
d:\Waveshare\libraries\ESP32_Display_Panel\src\touch/GT911.h:18:7: note:   candidate expects 1 argument, 3 provided

Using library ESP32_Display_Panel at version 0.1.5 in folder: D:\Waveshare\libraries\ESP32_Display_Panel 
Using library ESP32_IO_Expander at version 0.0.3 in folder: D:\Waveshare\libraries\ESP32_IO_Expander 
Using library lvgl at version 8.3.11 in folder: D:\Waveshare\libraries\lvgl 
Using library ui at version 1.0 in folder: D:\Waveshare\libraries\ui 
Using library NTPClient at version 3.2.1 in folder: D:\Waveshare\libraries\NTPClient 
Using library WiFi at version 3.0.3 in folder: C:\Users\Ludovic\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.3\libraries\WiFi 
Using library Networking at version 3.0.3 in folder: C:\Users\Ludovic\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.3\libraries\Network 
Using library ArduinoJson at version 6.21.5 in folder: D:\Waveshare\libraries\ArduinoJson 
Using library HTTPClient at version 3.0.3 in folder: C:\Users\Ludovic\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.3\libraries\HTTPClient 
Using library NetworkClientSecure at version 3.0.3 in folder: C:\Users\Ludovic\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.3\libraries\NetworkClientSecure 
exit status 1

Compilation error: exit status 1

Log file

Waveshare_test.log

Lzw655 commented 2 months ago

Hi @lboue, I'm really sorry for introducing so many bugs. And thank you so much for testing and fixing them. You are truly kind.

Lzw655 commented 2 months ago

I believe the root cause of this error is the incorrect use of the macro CREATE_TOUCH_WITH_ADDR. I forgot to delete this macro along with the following code. The GT911 constructor does not require an I2C address input.

https://github.com/esp-arduino-libs/ESP32_Display_Panel/blob/289d3575fee397d5ef80e10576b92497299db4a2/src/ESP_Panel.cpp#L420-L422

Could you please test my newly submitted PR? Thank you very much.