What MCU/Processor/Board and compiler are you using?
picoboard
What LVGL version are you using?
8.3.2
What do you want to achieve?
I anticipate that the registered callback for the LVGL Filesystem should be invoked, but it appears that nothing is happening.
I’m not receiving any output from the registered callback (no Serial-output), leading me to believe that the callbacks are never being called.
This suggests that there might be something missing in my code, but what? Here I’m lost. I would greatly appreciate any hints or suggestions.
The only thing what I see on the display is the background color of the image, but not the image itself (from the SD-Card).
Serial.print(“\nSetup…”); is working.
SD-Card driver is working… but as mentioned, what does that help when the registered callback are not called from LVGL?
Thank you
Code to reproduce
lv_fs_res_t sdcard_open(lv_fs_drv_t *drv, void *file_p, const char *path, lv_fs_mode_t mode);
lv_fs_res_t sdcard_close(lv_fs_drv_t *drv, void *file_p);
lv_fs_res_t sdcard_read(lv_fs_drv_t *drv, void *file_p, void *buf, uint32_t btr, uint32_t *br);
lv_fs_res_t sdcard_write(lv_fs_drv_t *drv, void *file_p, const void *buf, uint32_t btw, uint32_t *bw);
lv_fs_res_t sdcard_seek(lv_fs_drv_t *drv, void *file_p, uint32_t pos, lv_fs_whence_t whence);
lv_fs_res_t sdcard_tell(lv_fs_drv_t *drv, void *file_p, uint32_t *pos_p);
static void *sd_dir_open(lv_fs_drv_t *drv, const char *dirpath);
static lv_fs_res_t sd_dir_read(lv_fs_drv_t *drv, void *dir_p, char *fn);
static lv_fs_res_t sd_dir_close(lv_fs_drv_t *drv, void *dir_p);
static void *sd_fs_open(lv_fs_drv_t *drv, const char *path, lv_fs_mode_t mode);
void setup(){
...
lv_init();
...
Serial.print("\nSetup...");
...
// register SD-Card driver
static lv_fs_drv_t fs_drv;
lv_fs_drv_init(&fs_drv);
/*Set up fields...*/
fs_drv.letter = 'S';
fs_drv.cache_size = 0;
fs_drv.ready_cb = NULL;
fs_drv.open_cb = sd_fs_open;
fs_drv.close_cb = sdcard_close;
fs_drv.read_cb = sdcard_read;
fs_drv.write_cb = sdcard_write;
fs_drv.seek_cb = sdcard_seek;
fs_drv.tell_cb = sdcard_tell;
fs_drv.dir_close_cb = sd_dir_close;
fs_drv.dir_open_cb = sd_dir_open;
fs_drv.dir_read_cb = sd_dir_read;
lv_fs_drv_register(&fs_drv);
static lv_style_t style;
lv_style_init(&style);
lv_style_set_bg_color(&style, lv_color_make(0xFF,0x00,0xFF));
lv_style_set_bg_opa(&style, LV_OPA_COVER);
lv_obj_t * img1 = lv_img_create(lv_scr_act());
lv_obj_set_size(img1, 320, 320);
lv_img_set_src(img1, "Italian.bmp");
lv_obj_set_pos(img1, 10, 10);
lv_obj_add_style(img1, &style, 0);
}
void loop() {
lv_timer_handler();
delay(5);
}
lv_fs_res_t sdcard_open(lv_fs_drv_t *drv, void *file_p, const char *path, lv_fs_mode_t mode)
{
Serial.println("sdcard_open");
...
}
lv_fs_res_t sdcard_close(lv_fs_drv_t *drv, void *file_p)
{
Serial.println("sdcard_close");
...
}
lv_fs_res_t sdcard_read(lv_fs_drv_t *drv, void *file_p, void *buf, uint32_t btr, uint32_t *br)
{
Serial.println("sdcard_read");
...
}
lv_fs_res_t sdcard_write(lv_fs_drv_t *drv, void *file_p, const void *buf, uint32_t btw, uint32_t *bw)
{
Serial.println("sdcard_write");
...
}
lv_fs_res_t sdcard_seek(lv_fs_drv_t *drv, void *file_p, uint32_t pos, lv_fs_whence_t whence)
{
Serial.println("sdcard_seek");
...
}
lv_fs_res_t sdcard_tell(lv_fs_drv_t *drv, void *file_p, uint32_t *pos_p)
{
Serial.println("sdcard_tell");
...
}
static lv_fs_res_t sd_dir_read(lv_fs_drv_t *drv, void *dir_p, char *fn) {
...
}
static lv_fs_res_t sd_dir_close(lv_fs_drv_t *drv, void *dir_p) {
...
}