chore(indev): support lv_indev_get_mode (#5186)

Signed-off-by: YanXiaowei <yanxiaowei@xiaomi.com>
Co-authored-by: YanXiaowei <yanxiaowei@xiaomi.com>
This commit is contained in:
bjsylvia
2024-01-14 20:51:55 +08:00
committed by GitHub
parent 2e8bec8392
commit e916de1e9d
3 changed files with 19 additions and 4 deletions

View File

@@ -301,14 +301,15 @@ static int lv_nuttx_uv_input_init(lv_nuttx_uv_t * uv_info, lv_nuttx_uv_ctx_t * u
LV_ASSERT_NULL(uv_ctx);
LV_ASSERT_NULL(loop);
if(!indev->read_timer) {
LV_LOG_ERROR("indev->read_timer is NULL");
if(lv_indev_get_mode(indev) == LV_INDEV_MODE_EVENT) {
LV_LOG_ERROR("input device has been running in event-driven mode");
return -EINVAL;
}
lv_nuttx_uv_input_ctx_t * input_ctx = &uv_ctx->input_ctx;
input_ctx->fd = *(int *)lv_indev_get_driver_data(indev);
if(input_ctx->fd <= 0) {
LV_LOG_ERROR("can't get valid input fd");
return 0;
}

View File

@@ -487,6 +487,12 @@ lv_timer_t * lv_indev_get_read_timer(lv_indev_t * indev)
return indev->read_timer;
}
lv_indev_mode_t lv_indev_get_mode(lv_indev_t * indev)
{
if(indev) return indev->mode;
return LV_INDEV_MODE_NONE;
}
void lv_indev_set_mode(lv_indev_t * indev, lv_indev_mode_t mode)
{
if(!indev || indev->mode == mode)

View File

@@ -42,8 +42,9 @@ typedef enum {
} lv_indev_state_t;
typedef enum {
LV_INDEV_MODE_TIMER = 0,
LV_INDEV_MODE_EVENT = 1
LV_INDEV_MODE_NONE = 0,
LV_INDEV_MODE_TIMER,
LV_INDEV_MODE_EVENT,
} lv_indev_mode_t;
/** Data structure passed to an input driver to fill*/
@@ -247,6 +248,13 @@ lv_timer_t * lv_indev_get_read_timer(lv_indev_t * indev);
*/
void lv_indev_set_mode(lv_indev_t * indev, lv_indev_mode_t mode);
/**
* Get the input device's running mode.
* @param indev pointer to an input device
* @return the running mode for the specified input device.
*/
lv_indev_mode_t lv_indev_get_mode(lv_indev_t * indev);
/**
* Search the most top, clickable object by a point
* @param obj pointer to a start object, typically the screen