Indev drv issue


Hey there! I just started to work with LVGL and got a problem. The problem is that I am trying to create indev_drv to control the UI, but trace stops in lv_indev_read_timer_cb which is located in lv_indev.c.

void lv_indev_read_timer_cb(lv_timer_t* timer)

    lv_indev_data_t data;
    indev_act = timer->user_data;

    if (indev_act->driver->disp == NULL) return;


    if (indev_act->proc.disabled) return;
    if (indev_act->driver->disp->prev_scr != NULL) return; // <- Error here
    bool continue_reading;

The error is simple: Guru Meditation Error: Core 1 panic'ed (LoadProhibited).
Maybe error description from the official espressif site will help. Here it is:

LoadProhibited, StoreProhibited

These CPU exceptions happen when an application attempts to read from or write to an invalid memory
location. The address which has been written/read is found in the EXCVADDR register in the register
dump. If this address is zero, it usually means that the application has attempted to dereference a NULL
pointer. If this address is close to zero, it usually means that the application has attempted to access a
member of a structure, but the pointer to the structure is NULL. If this address is something else (garbage
value, not in 0x3fxxxxxx - 0x6xxxxxxx range), it likely means that the pointer used to access the data is
either not initialized or has been corrupted.

What MCU/Processor/Board and compiler are you using?

I use ESP32 with 4MB flash and platformio.

What LVGL version are you using?

I use 8.3.4.

What do you want to achieve?

I want to let it work correctly.

Code to reproduce

    lv_indev_drv_t indev_drv;
    indev_drv.type = LV_INDEV_TYPE_ENCODER;
    indev_drv.read_cb = drv_read_handler;

I will appreciate any help too much!

You need to statically allocate the memory of indev_drv instead of putting it on the stack:

static lv_indev_drv_t indev_drv;

Too this need be before indev

static lv_disp_drv_t disp_drv;