Add user pointer to indev driver for state storage between read() calls

This commit is contained in:
Bryan Mayland
2018-02-20 13:25:36 +00:00
parent 88096cbbfe
commit fada3aabfa
2 changed files with 4 additions and 0 deletions

View File

@@ -46,6 +46,7 @@ void lv_indev_drv_init(lv_indev_drv_t *driver)
{
driver->read = NULL;
driver->type = LV_INDEV_TYPE_NONE;
driver->priv = NULL;
}
/**
@@ -107,6 +108,7 @@ bool lv_indev_read(lv_indev_t * indev, lv_indev_data_t *data)
bool cont = false;
if(indev->driver.read) {
data->priv = indev->driver.priv;
cont = indev->driver.read(data);
} else {
memset(data, 0, sizeof(lv_indev_data_t));

View File

@@ -48,12 +48,14 @@ typedef struct {
uint32_t key; /*For INDEV_TYPE_KEYPAD*/
};
lv_indev_state_t state; /*LV_INDEV_EVENT_REL or LV_INDEV_EVENT_PR*/
void *priv; /*'lv_indev_drv_t.priv' for this driver*/
}lv_indev_data_t;
/*Initialized by the user and registered by 'lv_indev_add()'*/
typedef struct {
lv_hal_indev_type_t type; /*Input device type*/
bool (*read)(lv_indev_data_t *data); /*Function pointer to read data. Return 'true' if there is still data to be read (buffered)*/
void *priv; /*Opaque pointer for driver's use, passed in 'lv_indev_data_t' on read*/
}lv_indev_drv_t;
struct _lv_obj_t;