Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for Olimex ESP32-SBC-FabGL board #338

Open
wants to merge 9 commits into
base: master
Choose a base branch
from

Conversation

TsvetanUsunov
Copy link

CH32V003_Driver CH32V003.h and .c contains source of the driver needed to communicate with CH32V003 chip.

wiiNunchuk.h and .c contains source of device driver to use WiiNunchuk device with FabGL library. Example of its usage can be found in examples/Olimex_ESP32-SBC-FabGL_board folder (the Space Invaders game).

Copy link

@mobluse mobluse left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The wiiNunchuk files have nonstandard line endings for GitHub and have now a single line each with red ^M:s.

Is the SpaceInvaders game a copy of the game that already exists in FabGL? Would it not be better to modify that rather than adding a new file? There could perhaps be conditional compiling for your board.

@peter-valkov
Copy link

@mobluse wiiNunchuk end-of-lines is now fixed. Thanks for noticing.
The SpaceInvaders game is modified copy of the original example with changed resolution and modifications to use wiiNunchuck attached to CH32V003 as third additional controller. Unfortunately this will not work on other boards so we decided to put it as separate example.

@Andy2No
Copy link

Andy2No commented Jul 26, 2024

I get an error trying to compile the SpaceInvaders.ino example in this pull request. I'm using Arduino 1.8.19 and the latest Espressif ESP32 support, v3.0.2, with FabGL 1.0.9, installed in the last couple of days.

I took the SpaceInvaders.ino from this pull requeset, along with the contents of src/devdrivers, which I added to the project, plus one file which had to be copied from the main FabGL repo:

https://github.com/fdivitto/FabGL/blob/master/src/devdrivers/MCP23S17.h

I was previously trying to compile the SpaceInvaders provided with FabGL, and failing due to numerous errors which appear to relate to the change from v2.0.x to 3.0.x (see discussion #391). I've got a lot further using this pull request, but it's still not quite there.

Here are just the error messages. I can add the full log if needed:

D:\Documents\Arduino\^ESP_Olimex_ESP32-SBC-FabGL\SpaceInvaders\CH32V003.cpp: In member function 'void CH32V003::sync()':
CH32V003.cpp:901:22: error: 'esp_timer_get_time' was not declared in this scope
  901 |         int64_t t1 = esp_timer_get_time();
      |                      ^~~~~~~~~~~~~~~~~~
Using library FabGL at version 1.0.9 in folder: D:\Documents\Arduino\libraries\FabGL 
Using library SPI at version 2.0.0 in folder: C:\Users\andy\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.2\libraries\SPI 
Using library WiFi at version 2.0.0 in folder: C:\Users\andy\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.2\libraries\WiFi 
Using library Network at version 1.0.0 in folder: C:\Users\andy\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.2\libraries\Network 
exit status 1
'esp_timer_get_time' was not declared in this scope

@Andy2No
Copy link

Andy2No commented Jul 26, 2024

I've tried to get around that error by adding this to the top of CH32V003.cpp ;

#include "esp_timer.h"

Unfortunately, that just uncovers a lot more errors, which look similar to the ones I was getting with the main FabGL library version of SpaceInvaders. Perhaps these are also caused by the changes between ESP 2.0.x and 3.0.x board support.

D:\Documents\Arduino\libraries\FabGL\src\fabutils.cpp: In function 'void fabgl::configureGPIO(gpio_num_t, gpio_mode_t)':
D:\Documents\Arduino\libraries\FabGL\src\fabutils.cpp:203:19: error: 'GPIO_PIN_MUX_REG' was not declared in this scope; did you mean 'GPIO_PIN19_REG'?
  203 |   PIN_FUNC_SELECT(GPIO_PIN_MUX_REG[gpio], PIN_FUNC_GPIO);
      |                   ^~~~~~~~~~~~~~~~
      |                   GPIO_PIN19_REG
D:\Documents\Arduino\libraries\FabGL\src\fabutils.cpp:203:43: error: 'PIN_FUNC_GPIO' was not declared in this scope
  203 |   PIN_FUNC_SELECT(GPIO_PIN_MUX_REG[gpio], PIN_FUNC_GPIO);
      |                                           ^~~~~~~~~~~~~
D:\Documents\Arduino\libraries\FabGL\src\fabutils.cpp:203:3: error: 'PIN_FUNC_SELECT' was not declared in this scope
  203 |   PIN_FUNC_SELECT(GPIO_PIN_MUX_REG[gpio], PIN_FUNC_GPIO);
      |   ^~~~~~~~~~~~~~~
D:\Documents\Arduino\libraries\FabGL\src\fabutils.cpp: In static member function 'static bool fabgl::FileBrowser::format(fabgl::DriveType, int)':
D:\Documents\Arduino\libraries\FabGL\src\fabutils.cpp:1180:21: error: invalid conversion from 'int' to 'const esp_task_wdt_config_t*' [-fpermissive]
 1180 |   esp_task_wdt_init(45, false);
      |                     ^~
      |                     |
      |                     int
D:\Documents\Arduino\libraries\FabGL\src\fabutils.cpp:1180:20: error: too many arguments to function 'esp_err_t esp_task_wdt_init(const esp_task_wdt_config_t*)'
 1180 |   esp_task_wdt_init(45, false);
      |   ~~~~~~~~~~~~~~~~~^~~~~~~~~~~
In file included from D:\Documents\Arduino\libraries\FabGL\src\fabutils.cpp:39:
C:\Users\andy\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-bd2b9390ef\esp32/include/esp_system/include/esp_task_wdt.h:47:11: note: declared here
   47 | esp_err_t esp_task_wdt_init(const esp_task_wdt_config_t *config);
      |           ^~~~~~~~~~~~~~~~~
In file included from D:\Documents\Arduino\libraries\FabGL\src\fabutils.cpp:33:
C:\Users\andy\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-bd2b9390ef\esp32/include/fatfs/src/ff.h:408:25: error: invalid conversion from 'int' to 'const MKFS_PARM*' [-fpermissive]
  408 | #define FM_ANY          0x07
      |                         ^~~~
      |                         |
      |                         int
D:\Documents\Arduino\libraries\FabGL\src\fabutils.cpp:1200:21: note: in expansion of macro 'FM_ANY'
 1200 |     if (f_mkfs(drv, FM_ANY, 16 * 1024, buffer, FF_MAX_SS) != FR_OK) {
      |                     ^~~~~~
D:\Documents\Arduino\libraries\FabGL\src\fabutils.cpp:1200:32: error: invalid conversion from 'int' to 'void*' [-fpermissive]
 1200 |     if (f_mkfs(drv, FM_ANY, 16 * 1024, buffer, FF_MAX_SS) != FR_OK) {
      |                             ~~~^~~~~~
      |                                |
      |                                int
D:\Documents\Arduino\libraries\FabGL\src\fabutils.cpp:1200:40: error: invalid conversion from 'void*' to 'UINT' {aka 'unsigned int'} [-fpermissive]
 1200 |     if (f_mkfs(drv, FM_ANY, 16 * 1024, buffer, FF_MAX_SS) != FR_OK) {
      |                                        ^~~~~~
      |                                        |
      |                                        void*
D:\Documents\Arduino\libraries\FabGL\src\fabutils.cpp:1200:15: error: too many arguments to function 'FRESULT f_mkfs(const TCHAR*, const MKFS_PARM*, void*, UINT)'
 1200 |     if (f_mkfs(drv, FM_ANY, 16 * 1024, buffer, FF_MAX_SS) != FR_OK) {
      |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\andy\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-bd2b9390ef\esp32/include/fatfs/src/ff.h:331:9: note: declared here
  331 | FRESULT f_mkfs (const TCHAR* path, const MKFS_PARM* opt, void* work, UINT len); /* Create a FAT volume */
      |         ^~~~~~
D:\Documents\Arduino\libraries\FabGL\src\fabui.cpp: In member function 'void fabgl::uiApp::killTimer(fabgl::uiTimerHandle)':
D:\Documents\Arduino\libraries\FabGL\src\fabui.cpp:948:50: error: invalid conversion from 'fabgl::uiTimerHandle' {aka 'void*'} to 'TimerHandle_t' {aka 'tmrTimerControl*'} [-fpermissive]
  948 |   auto dest = (uiEvtHandler *) pvTimerGetTimerID(handle);
      |                                                  ^~~~~~
      |                                                  |
      |                                                  fabgl::uiTimerHandle {aka void*}
In file included from D:\Documents\Arduino\libraries\FabGL\src\fabui.cpp:28:
C:\Users\andy\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-bd2b9390ef\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/timers.h:395:47: note:   initializing argument 1 of 'void* pvTimerGetTimerID(TimerHandle_t)'
  395 | void * pvTimerGetTimerID( const TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;
      |                           ~~~~~~~~~~~~~~~~~~~~^~~~~~
D:\Documents\Arduino\libraries\FabGL\src\fabui.cpp:949:44: error: no matching function for call to 'std::pair<fabgl::uiEvtHandler*, tmrTimerControl*>::pair(fabgl::uiEvtHandler*&, void*&)'
  949 |   m_timers.remove(uiTimerAssoc(dest, handle));
      |                                            ^
In file included from c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_algobase.h:64,
                 from c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\specfun.h:45,
                 from c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\cmath:1935,
                 from c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\math.h:36,
                 from C:\Users\andy\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.2\cores\esp32/esp32-hal.h:30,
                 from C:\Users\andy\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.2\cores\esp32/Arduino.h:36,
                 from D:\Documents\Arduino\libraries\FabGL\src\fabutils.h:49,
                 from D:\Documents\Arduino\libraries\FabGL\src\fabui.cpp:34:
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:297:9: note: candidate: 'template<class _U1, class _U2>  requires  _S_constructible<_U1, _U2>() constexpr std::pair<_T1, _T2>::pair(std::pair<_U1, _U2>&&) [with _U2 = _U1; _T1 = fabgl::uiEvtHandler*; _T2 = tmrTimerControl*]'
  297 |         pair(pair<_U1, _U2>&& __p)
      |         ^~~~
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:297:9: note:   template argument deduction/substitution failed:
D:\Documents\Arduino\libraries\FabGL\src\fabui.cpp:949:44: note:   mismatched types 'std::pair<_T1, _T2>' and 'fabgl::uiEvtHandler*'
  949 |   m_timers.remove(uiTimerAssoc(dest, handle));
      |                                            ^
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:288:9: note: candidate: 'template<class _U1, class _U2>  requires  _S_constructible<const _U1&, const _U2&>() constexpr std::pair<_T1, _T2>::pair(const std::pair<_U1, _U2>&) [with _U2 = _U1; _T1 = fabgl::uiEvtHandler*; _T2 = tmrTimerControl*]'
  288 |         pair(const pair<_U1, _U2>& __p)
      |         ^~~~
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:288:9: note:   template argument deduction/substitution failed:
D:\Documents\Arduino\libraries\FabGL\src\fabui.cpp:949:44: note:   mismatched types 'const std::pair<_T1, _T2>' and 'fabgl::uiEvtHandler*'
  949 |   m_timers.remove(uiTimerAssoc(dest, handle));
      |                                            ^
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:279:9: note: candidate: 'template<class _U1, class _U2>  requires  _S_constructible<_U1, _U2>() constexpr std::pair<_T1, _T2>::pair(_U1&&, _U2&&) [with _U2 = _U1; _T1 = fabgl::uiEvtHandler*; _T2 = tmrTimerControl*]'
  279 |         pair(_U1&& __x, _U2&& __y)
      |         ^~~~
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:279:9: note:   template argument deduction/substitution failed:
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:279:9: note: constraints not satisfied
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h: In substitution of 'template<class _U1, class _U2>  requires  _S_constructible<_U1, _U2>() constexpr std::pair<fabgl::uiEvtHandler*, tmrTimerControl*>::pair(_U1&&, _U2&&) [with _U1 = fabgl::uiEvtHandler*; _U2 = tmrTimerControl*]':
D:\Documents\Arduino\libraries\FabGL\src\fabui.cpp:949:44:   required from here
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:279:2:   required by the constraints of 'template<class _T1, class _T2> template<class _U1, class _U2>  requires  _S_constructible<_U1, _U2>() constexpr std::pair<_T1, _T2>::pair(_U1&&, _U2&&)'
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:277:45: note: the expression '_S_constructible<_U1, _U2>() [with _U1 = fabgl::uiEvtHandler*&; _U2 = void*&; _T1 = fabgl::uiEvtHandler*; _T2 = tmrTimerControl*]' evaluated to 'false'
  277 |         requires (_S_constructible<_U1, _U2>())
      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:217:9: note: candidate: 'template<class ... _Args1, unsigned int ..._Indexes1, class ... _Args2, unsigned int ..._Indexes2> constexpr std::pair<_T1, _T2>::pair(std::tuple<_Args1 ...>&, std::tuple<_Args2 ...>&, std::_Index_tuple<_Indexes1 ...>, std::_Index_tuple<_Indexes2 ...>) [with _Args1 = {_Args1 ...}; unsigned int ..._Indexes1 = {_Indexes1 ...}; _Args2 = {_Args2 ...}; unsigned int ..._Indexes2 = {_Indexes2 ...}; _T1 = fabgl::uiEvtHandler*; _T2 = tmrTimerControl*]'
  217 |         pair(tuple<_Args1...>&, tuple<_Args2...>&,
      |         ^~~~
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:217:9: note:   template argument deduction/substitution failed:
D:\Documents\Arduino\libraries\FabGL\src\fabui.cpp:949:44: note:   mismatched types 'std::tuple<_UTypes ...>' and 'fabgl::uiEvtHandler*'
  949 |   m_timers.remove(uiTimerAssoc(dest, handle));
      |                                            ^
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:200:9: note: candidate: 'template<class ... _Args1, class ... _Args2> constexpr std::pair<_T1, _T2>::pair(std::piecewise_construct_t, std::tuple<_Args1 ...>, std::tuple<_Args2 ...>) [with _Args1 = {_Args1 ...}; _Args2 = {_Args2 ...}; _T1 = fabgl::uiEvtHandler*; _T2 = tmrTimerControl*]'
  200 |         pair(piecewise_construct_t, tuple<_Args1...>, tuple<_Args2...>);
      |         ^~~~
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:200:9: note:   template argument deduction/substitution failed:
D:\Documents\Arduino\libraries\FabGL\src\fabui.cpp:949:44: note:   mismatched types 'std::tuple<_UTypes ...>' and 'void*'
  949 |   m_timers.remove(uiTimerAssoc(dest, handle));
      |                                            ^
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:269:7: note: candidate: 'constexpr std::pair<_T1, _T2>::pair(const _T1&, const _T2&) requires  _S_constructible<const _T1&, const _T2&>() [with _T1 = fabgl::uiEvtHandler*; _T2 = tmrTimerControl*]' (near match)
  269 |       pair(const _T1& __x, const _T2& __y)
      |       ^~~~
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:269:7: note:   conversion of argument 2 would be ill-formed:
D:\Documents\Arduino\libraries\FabGL\src\fabui.cpp:949:38: error: invalid conversion from 'fabgl::uiTimerHandle' {aka 'void*'} to 'tmrTimerControl*' [-fpermissive]
  949 |   m_timers.remove(uiTimerAssoc(dest, handle));
      |                                      ^~~~~~
      |                                      |
      |                                      fabgl::uiTimerHandle {aka void*}
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:228:7: note: candidate: 'constexpr std::pair<_T1, _T2>::pair() requires (is_default_constructible_v<_T1>) && (is_default_constructible_v<_T2>) [with _T1 = fabgl::uiEvtHandler*; _T2 = tmrTimerControl*]'
  228 |       pair()
      |       ^~~~
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:228:7: note:   candidate expects 0 arguments, 2 provided
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:196:17: note: candidate: 'constexpr std::pair<_T1, _T2>::pair(std::pair<_T1, _T2>&&) [with _T1 = fabgl::uiEvtHandler*; _T2 = tmrTimerControl*]'
  196 |       constexpr pair(pair&&) = default;         ///< Move constructor
      |                 ^~~~
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:196:17: note:   candidate expects 1 argument, 2 provided
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:195:17: note: candidate: 'constexpr std::pair<_T1, _T2>::pair(const std::pair<_T1, _T2>&) [with _T1 = fabgl::uiEvtHandler*; _T2 = tmrTimerControl*]'
  195 |       constexpr pair(const pair&) = default;    ///< Copy constructor
      |                 ^~~~
c:\users\andy\appdata\local\arduino15\packages\esp32\tools\esp-x32\2302\xtensa-esp32-elf\include\c++\12.2.0\bits\stl_pair.h:195:17: note:   candidate expects 1 argument, 2 provided
D:\Documents\Arduino\libraries\FabGL\src\fabui.cpp:950:14: error: invalid conversion from 'fabgl::uiTimerHandle' {aka 'void*'} to 'TimerHandle_t' {aka 'tmrTimerControl*'} [-fpermissive]
  950 |   xTimerStop(handle, portMAX_DELAY);
C:\Users\andy\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-bd2b9390ef\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/timers.h:558:29: note: in definition of macro 'xTimerStop'
  558 |     xTimerGenericCommand( ( xTimer ), tmrCOMMAND_STOP, 0U, NULL, ( xTicksToWait ) )
      |                             ^~~~~~
C:\Users\andy\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-bd2b9390ef\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/timers.h:1344:48: note:   initializing argument 1 of 'BaseType_t xTimerGenericCommand(TimerHandle_t, BaseType_t, TickType_t, BaseType_t*, TickType_t)'
 1344 | BaseType_t xTimerGenericCommand( TimerHandle_t xTimer,
      |                                  ~~~~~~~~~~~~~~^~~~~~
D:\Documents\Arduino\libraries\FabGL\src\fabui.cpp:951:16: error: invalid conversion from 'fabgl::uiTimerHandle' {aka 'void*'} to 'TimerHandle_t' {aka 'tmrTimerControl*'} [-fpermissive]
  951 |   xTimerDelete(handle, portMAX_DELAY);
C:\Users\andy\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-bd2b9390ef\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/timers.h:678:29: note: in definition of macro 'xTimerDelete'
  678 |     xTimerGenericCommand( ( xTimer ), tmrCOMMAND_DELETE, 0U, NULL, ( xTicksToWait ) )
      |                             ^~~~~~
C:\Users\andy\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-bd2b9390ef\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/timers.h:1344:48: note:   initializing argument 1 of 'BaseType_t xTimerGenericCommand(TimerHandle_t, BaseType_t, TickType_t, BaseType_t*, TickType_t)'
 1344 | BaseType_t xTimerGenericCommand( TimerHandle_t xTimer,
      |                                  ~~~~~~~~~~~~~~^~~~~~
D:\Documents\Arduino\libraries\FabGL\src\fabui.cpp: In member function 'void fabgl::uiApp::suspendCaret(bool)':
D:\Documents\Arduino\libraries\FabGL\src\fabui.cpp:993:20: error: invalid conversion from 'fabgl::uiTimerHandle' {aka 'void*'} to 'TimerHandle_t' {aka 'tmrTimerControl*'} [-fpermissive]
  993 |         xTimerStop(m_caretTimer, 0);
C:\Users\andy\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-bd2b9390ef\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/timers.h:558:29: note: in definition of macro 'xTimerStop'
  558 |     xTimerGenericCommand( ( xTimer ), tmrCOMMAND_STOP, 0U, NULL, ( xTicksToWait ) )
      |                             ^~~~~~
C:\Users\andy\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-bd2b9390ef\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/timers.h:1344:48: note:   initializing argument 1 of 'BaseType_t xTimerGenericCommand(TimerHandle_t, BaseType_t, TickType_t, BaseType_t*, TickType_t)'
 1344 | BaseType_t xTimerGenericCommand( TimerHandle_t xTimer,
      |                                  ~~~~~~~~~~~~~~^~~~~~
D:\Documents\Arduino\libraries\FabGL\src\fabui.cpp:999:21: error: invalid conversion from 'fabgl::uiTimerHandle' {aka 'void*'} to 'TimerHandle_t' {aka 'tmrTimerControl*'} [-fpermissive]
  999 |         xTimerStart(m_caretTimer, 0);
C:\Users\andy\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-bd2b9390ef\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/timers.h:515:29: note: in definition of macro 'xTimerStart'
  515 |     xTimerGenericCommand( ( xTimer ), tmrCOMMAND_START, ( xTaskGetTickCount() ), NULL, ( xTicksToWait ) )
      |                             ^~~~~~
C:\Users\andy\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-bd2b9390ef\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/timers.h:1344:48: note:   initializing argument 1 of 'BaseType_t xTimerGenericCommand(TimerHandle_t, BaseType_t, TickType_t, BaseType_t*, TickType_t)'
 1344 | BaseType_t xTimerGenericCommand( TimerHandle_t xTimer,
      |                                  ~~~~~~~~~~~~~~^~~~~~
"C:\\Users\\andy\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp-x32\\2302/bin/xtensa-esp32-elf-g++" -MMD -c "@C:\\Users\\andy\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp32-arduino-libs\\idf-release_v5.1-bd2b9390ef\\esp32/flags/cpp_flags" -w -Os -DF_CPU=240000000L -DARDUINO=10819 -DARDUINO_ESP32_SBC_FABGL -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD=\"ESP32_SBC_FABGL\"" "-DARDUINO_VARIANT=\"esp32-sbc-fabgl\"" -DARDUINO_PARTITION_default "-DARDUINO_HOST_OS=\"windows\"" "-DARDUINO_FQBN=\"esp32:esp32:esp32-sbc-fabgl:JTAGAdapter=default,PSRAM=enabled,PartitionScheme=default,CPUFreq=240,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,LoopCore=1,EventsCore=1,DebugLevel=none,EraseFlash=none,ZigbeeMode=default\"" -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DBOARD_HAS_PSRAM -DARDUINO_USB_CDC_ON_BOOT=0 "@C:\\Users\\andy\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp32-arduino-libs\\idf-release_v5.1-bd2b9390ef\\esp32/flags/defines" "-ID:\\Documents\\Arduino\\^ESP_Olimex_ESP32-SBC-FabGL\\SpaceInvaders" -iprefix "C:\\Users\\andy\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp32-arduino-libs\\idf-release_v5.1-bd2b9390ef\\esp32/include/" "@C:\\Users\\andy\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp32-arduino-libs\\idf-release_v5.1-bd2b9390ef\\esp32/flags/includes" "-IC:\\Users\\andy\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp32-arduino-libs\\idf-release_v5.1-bd2b9390ef\\esp32/qio_qspi/include" "-IC:\\Users\\andy\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.0.2\\cores\\esp32" "-IC:\\Users\\andy\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.0.2\\variants\\esp32-sbc-fabgl" "-ID:\\Documents\\Arduino\\libraries\\FabGL\\src" "-IC:\\Users\\andy\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.0.2\\libraries\\SPI\\src" "-IC:\\Users\\andy\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.0.2\\libraries\\WiFi\\src" "-IC:\\Users\\andy\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.0.2\\libraries\\Network\\src" "@C:\\arduino-output/build_opt.h" "@C:\\arduino-output/file_opts" "D:\\Documents\\Arduino\\libraries\\FabGL\\src\\scene.cpp" -o "C:\\arduino-output\\libraries\\FabGL\\scene.cpp.o"
Using library FabGL at version 1.0.9 in folder: D:\Documents\Arduino\libraries\FabGL 
Using library SPI at version 2.0.0 in folder: C:\Users\andy\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.2\libraries\SPI 
Using library WiFi at version 2.0.0 in folder: C:\Users\andy\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.2\libraries\WiFi 
Using library Network at version 1.0.0 in folder: C:\Users\andy\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.2\libraries\Network 
exit status 1
Error compiling for board OLIMEX ESP32-SBC-FABGL.

@Andy2No
Copy link

Andy2No commented Aug 4, 2024

It turns out the compilation problems were caused by using the current version of Espressif ESP32 boards support for Arduino (v3.0.2), which breaks compatibility with software written for v2.0.x. Both fdivitto/FabGL and Olimex's fork of FabGL apparently need v2.0.x, and Olimex were using v2.0.11.

The board type (Tools->Board) should be set to:
ESP32 Dev Module

On my first successful attempt at getting the version in this pull request to compile, I used v2.0.11 and I still had to copy a couple of the include files into the project, taken from the pull request... I'm not sure if those are needed with 2.0.11 but I can check if anyone wants to know.

Since Olimex now has their own fork, specifically for the ESP32_SBC_FabGL, it seems best to just use that:

https://github.com/OLIMEX/FabGL

There's also this other repo for other things relating to that board, which relies on their FabGL fork:
https://github.com/OLIMEX/ESP32-SBC-FabGL

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants