Squareline/LVGL Library Mismatch

What do you want to achieve?

Using an ESP32S3 via Arduino IDE, I am getting multiple "did you mean ‘lv_fs_drv_t’? ect errors
LVGL version 9.1.0
https://private-user-images.githubusercontent.com/155690343/367457296-f3deddcd-a67e-40df-ba24-38445e9353f7.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjY0MTUzNTAsIm5iZiI6MTcyNjQxNTA1MCwicGF0aCI6Ii8xNTU2OTAzNDMvMzY3NDU3Mjk2LWYzZGVkZGNkLWE2N2UtNDBkZi1iYTI0LTM4NDQ1ZTkzNTNmNy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwOTE1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDkxNVQxNTQ0MTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wZmQ1YTlkOTIwN2EyNDRjZDE5NTE4N2RjZjc3MGNlYjZhZDM4MDE4YWQ1ZWIwNjc1ZmYyNjk0NDBjMjJjYjMyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.csESD8q_bUJauVrhwnbV4NLf0D48C6K1Ske6PU3aAS4

Arduino Studio LVGL version: 9.1.0

Problem:
I am getting multiple errors suggesting the two LVGL librarys are not the same, yet they are.
Has anyone encountered this?

In file included from /Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:10:
/Users/gabe/Documents/Arduino1/SquareLine_Project/libraries/TFT_eSPI/TFT_eSPI.h:973:8: warning: #warning >>>>------>> TOUCH_CS pin not defined, TFT_eSPI touch functions will not be available! [-Wcpp]
  973 |       #warning >>>>------>> TOUCH_CS pin not defined, TFT_eSPI touch functions will not be available!
      |        ^~~~~~~
In file included from /Users/gabe/Documents/Arduino1/SquareLine_Project/libraries/LovyanGFX/src/lgfx/v1/platforms/device.hpp:48,
                 from /Users/gabe/Documents/Arduino1/SquareLine_Project/libraries/LovyanGFX/src/lgfx/v1_init.hpp:22,
                 from /Users/gabe/Documents/Arduino1/SquareLine_Project/libraries/LovyanGFX/src/LovyanGFX.hpp:25,
                 from /Users/gabe/Documents/Arduino1/SquareLine_Project/libraries/PanelLan/src/board/boards.h:3,
                 from /Users/gabe/Documents/Arduino1/SquareLine_Project/libraries/PanelLan/src/PanelLan.h:3,
                 from /Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:14:
/Users/gabe/Documents/Arduino1/SquareLine_Project/libraries/LovyanGFX/src/lgfx/v1/platforms/esp32/Bus_SPI.hpp:69: warning: "SPI_MOSI_DLEN_REG" redefined
   69 |     #define SPI_MOSI_DLEN_REG(i) (REG_SPI_BASE(i) + 0x1C)
      | 
In file included from /Users/gabe/Documents/Arduino1/SquareLine_Project/libraries/TFT_eSPI/TFT_eSPI.h:97:
/Users/gabe/Documents/Arduino1/SquareLine_Project/libraries/TFT_eSPI/Processors/TFT_eSPI_ESP32_S3.h:36: note: this is the location of the previous definition
   36 |     #define SPI_MOSI_DLEN_REG(x) SPI_MS_DLEN_REG(x)
      | 
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:39:6: error: variable or field 'my_disp_flush' declared void
   39 | void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p)
      |      ^~~~~~~~~~~~~
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:39:20: error: 'lv_disp_drv_t' was not declared in this scope; did you mean 'lv_fs_drv_t'?
   39 | void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p)
      |                    ^~~~~~~~~~~~~
      |                    lv_fs_drv_t
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:39:36: error: 'disp' was not declared in this scope
   39 | void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p)
      |                                    ^~~~
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:39:42: error: expected primary-expression before 'const'
   39 | void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p)
      |                                          ^~~~~
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:39:77: error: expected primary-expression before '*' token
   39 | void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p)
      |                                                                             ^
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:39:79: error: 'color_p' was not declared in this scope
   39 | void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p)
      |                                                                               ^~~~~~~
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:39:6: error: variable or field 'my_disp_flush' declared void
   39 | void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p)
      |      ^~~~~~~~~~~~~
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:39:20: error: 'lv_disp_drv_t' was not declared in this scope; did you mean 'lv_fs_drv_t'?
   39 | void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p)
      |                    ^~~~~~~~~~~~~
      |                    lv_fs_drv_t
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:39:36: error: 'disp' was not declared in this scope
   39 | void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p)
      |                                    ^~~~
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:39:42: error: expected primary-expression before 'const'
   39 | void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p)
      |                                          ^~~~~
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:39:77: error: expected primary-expression before '*' token
   39 | void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p)
      |                                                                             ^
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:39:79: error: 'color_p' was not declared in this scope
   39 | void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p)
      |                                                                               ^~~~~~~
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino: In function 'void setup()':
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:61:12: error: 'lv_disp_draw_buf_t' does not name a type; did you mean 'lv_draw_buf_t'?
   61 |     static lv_disp_draw_buf_t draw_buf;
      |            ^~~~~~~~~~~~~~~~~~
      |            lv_draw_buf_t
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:63:28: error: 'draw_buf' was not declared in this scope
   63 |     lv_disp_draw_buf_init(&draw_buf, buf, NULL, SCREENBUFFER_SIZE_PIXELS);
      |                            ^~~~~~~~
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:63:5: error: 'lv_disp_draw_buf_init' was not declared in this scope; did you mean 'lv_draw_buf_init'?
   63 |     lv_disp_draw_buf_init(&draw_buf, buf, NULL, SCREENBUFFER_SIZE_PIXELS);
      |     ^~~~~~~~~~~~~~~~~~~~~
      |     lv_draw_buf_init
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:65:12: error: 'lv_disp_drv_t' does not name a type; did you mean 'lv_fs_drv_t'?
   65 |     static lv_disp_drv_t disp_drv;
      |            ^~~~~~~~~~~~~
      |            lv_fs_drv_t
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:66:23: error: 'disp_drv' was not declared in this scope
   66 |     lv_disp_drv_init(&disp_drv);
      |                       ^~~~~~~~
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:66:5: error: 'lv_disp_drv_init' was not declared in this scope; did you mean 'lv_fs_drv_init'?
   66 |     lv_disp_drv_init(&disp_drv);
      |     ^~~~~~~~~~~~~~~~
      |     lv_fs_drv_init
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:67:25: error: 'my_disp_flush' was not declared in this scope
   67 |     disp_drv.flush_cb = my_disp_flush;
      |                         ^~~~~~~~~~~~~
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:71:24: error: 'lv_disp_drv_register' was not declared in this scope; did you mean 'lv_fs_drv_register'?
   71 |     lv_disp_t * disp = lv_disp_drv_register(&disp_drv);
      |                        ^~~~~~~~~~~~~~~~~~~~
      |                        lv_fs_drv_register
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:73:12: error: 'lv_indev_drv_t' does not name a type; did you mean 'lv_indev_data_t'?
   73 |     static lv_indev_drv_t indev_drv;
      |            ^~~~~~~~~~~~~~
      |            lv_indev_data_t
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:74:24: error: 'indev_drv' was not declared in this scope
   74 |     lv_indev_drv_init(&indev_drv);
      |                        ^~~~~~~~~
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:74:5: error: 'lv_indev_drv_init' was not declared in this scope; did you mean 'lv_fs_drv_init'?
   74 |     lv_indev_drv_init(&indev_drv);
      |     ^~~~~~~~~~~~~~~~~
      |     lv_fs_drv_init
/Users/gabe/Documents/Arduino1/SquareLine_Project/ui/ui.ino:77:26: error: 'lv_indev_drv_register' was not declared in this scope; did you mean 'lv_fs_drv_register'?
   77 |     lv_indev_t * indev = lv_indev_drv_register(&indev_drv);
      |                          ^~~~~~~~~~~~~~~~~~~~~
      |                          lv_fs_drv_register

exit status 1

Compilation error: variable or field 'my_disp_flush' declared void
void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p)
{
    uint32_t w = (area->x2 - area->x1 + 1);
    uint32_t h = (area->y2 - area->y1 + 1);

    tft.startWrite();
    tft.setAddrWindow(area->x1, area->y1, w, h);
    tft.pushColors((uint16_t*)&color_p->full, w * h, true);
    tft.endWrite();

    lv_disp_flush_ready(disp);
}


void setup() {
    tft.init();
    tft.initDMA();
    Serial.begin(115200);

    pinMode(buzzer, OUTPUT);

    lv_init();

    static lv_disp_draw_buf_t draw_buf;
    static lv_color_t buf[SCREENBUFFER_SIZE_PIXELS];
    lv_disp_draw_buf_init(&draw_buf, buf, NULL, SCREENBUFFER_SIZE_PIXELS);

    static lv_disp_drv_t disp_drv;
    lv_disp_drv_init(&disp_drv);
    disp_drv.flush_cb = my_disp_flush;
    disp_drv.draw_buf = &draw_buf;
    disp_drv.hor_res = screenWidth;
    disp_drv.ver_res = screenHeight;
    lv_disp_t * disp = lv_disp_drv_register(&disp_drv);

    static lv_indev_drv_t indev_drv;
    lv_indev_drv_init(&indev_drv);
    indev_drv.type = LV_INDEV_TYPE_POINTER;
    // indev_drv.read_cb = my_touchpad_read;  // Uncomment and implement this function if you have a touchscreen
    lv_indev_t * indev = lv_indev_drv_register(&indev_drv);

    lv_timer_create((lv_timer_cb_t)my_tick_cb, 1, NULL);
///The rest of code below

Others

  • **SquareLine Studio version:**1.4.2
  • **Operating system:**Mac
  • Target hardware:

If you exported the project with v2.x LVGL-9.1 compatible SquareLine Studio board-template there shouldn’t be any lv_disp_drv there in your ui.ino file. I think there is some actual mismatch in your exported code, that ui.ino is somehow an LVGL-8 compatible one.