FabGL
FabGL copied to clipboard
Support for Olimex ESP32-SBC-FabGL board
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).
@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.
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
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.
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