Skip to content

Commit

Permalink
test add keypad and encoder emulators
Browse files Browse the repository at this point in the history
  • Loading branch information
kisvegabor committed Jun 23, 2021
1 parent 2ba810b commit e536bb6
Show file tree
Hide file tree
Showing 4 changed files with 125 additions and 16 deletions.
91 changes: 83 additions & 8 deletions tests/src/lv_test_indev.c
Expand Up @@ -9,14 +9,18 @@

static lv_coord_t x_act;
static lv_coord_t y_act;
static bool pressed;
static uint32_t key_act;
static int32_t diff_act;
static bool mouse_pressed;
static bool key_pressed;
static bool enc_pressed;

void lv_test_mouse_read_cb(lv_indev_drv_t * drv, lv_indev_data_t * data)
{
LV_UNUSED(drv);
data->point.x = x_act;
data->point.y = y_act;
data->state = pressed ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED;
data->state = mouse_pressed ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED;
}

void lv_test_mouse_move_to(lv_coord_t x, lv_coord_t y)
Expand All @@ -33,26 +37,97 @@ void lv_test_mouse_move_by(lv_coord_t x, lv_coord_t y)

void lv_test_mouse_press(void)
{
pressed = true;
mouse_pressed = true;
}

void lv_test_mouse_release(void)
{
pressed = false;
mouse_pressed = false;
}

void lv_test_mouse_click_at(lv_coord_t x, lv_coord_t y)
{
lv_test_mouse_release();
lv_test_mouse_wait(50);
lv_test_indev_wait(50);
lv_test_mouse_move_to(x, y);
lv_test_mouse_press();
lv_test_mouse_wait(50);
lv_test_indev_wait(50);
lv_test_mouse_release();
lv_test_mouse_wait(50);
lv_test_indev_wait(50);
}

void lv_test_mouse_wait(uint32_t ms)

void lv_test_keypad_read_cb(lv_indev_drv_t * drv, lv_indev_data_t * data)
{
LV_UNUSED(drv);
data->key = key_act;
data->state = key_pressed ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED;
}

void lv_test_key_press(uint32_t k)
{
key_act = k;
key_pressed = true;
}

void lv_test_key_release(void)
{
key_pressed = false;
}

void lv_test_key_hit(uint32_t k)
{
lv_test_key_release();
lv_test_indev_wait(50);
lv_test_key_press(k);
lv_test_mouse_press();
lv_test_indev_wait(50);
lv_test_key_release();
lv_test_indev_wait(50);
}

void lv_test_encoder_read_cb(lv_indev_drv_t * drv, lv_indev_data_t * data)
{
LV_UNUSED(drv);
data->enc_diff = diff_act;
data->state = enc_pressed ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED;
diff_act = 0;
}

void lv_test_encoder_add_diff(int32_t d)
{
diff_act += d;
}

void lv_test_encoder_turn(int32_t d)
{
diff_act += d;
lv_test_indev_wait(50);
}


void lv_test_encoder_press(void)
{
enc_pressed = true;
}

void lv_test_encoder_release(void)
{
enc_pressed = false;
}

void lv_test_encoder_click(void)
{
lv_test_encoder_release();
lv_test_indev_wait(50);
lv_test_encoder_press();
lv_test_indev_wait(50);
lv_test_encoder_release();
lv_test_indev_wait(50);
}


void lv_test_indev_wait(uint32_t ms)
{
uint32_t t = lv_tick_get();
while(lv_tick_elaps(t) < ms) {
Expand Down
23 changes: 22 additions & 1 deletion tests/src/lv_test_indev.h
Expand Up @@ -16,7 +16,28 @@ void lv_test_mouse_move_by(lv_coord_t x, lv_coord_t y);
void lv_test_mouse_press(void);
void lv_test_mouse_release(void);
void lv_test_mouse_click_at(lv_coord_t x, lv_coord_t y);
void lv_test_mouse_wait(uint32_t ms);

void lv_test_keypad_read_cb(lv_indev_drv_t * drv, lv_indev_data_t * data);

void lv_test_key_press(uint32_t k);
void lv_test_key_release(void);
void lv_test_key_hit(uint32_t k);


void lv_test_encoder_read_cb(lv_indev_drv_t * drv, lv_indev_data_t * data) ;

void lv_test_encoder_add_diff(int32_t d);
void lv_test_encoder_turn(int32_t d);
void lv_test_encoder_press(void);
void lv_test_encoder_release(void);
void lv_test_encoder_click(void);

void lv_test_indev_wait(uint32_t ms);

extern lv_indev_t * lv_test_mouse_indev;
extern lv_indev_t * lv_test_keypad_indev;
extern lv_indev_t * lv_test_encoder_indev;


#ifdef __cplusplus
} /*extern "C"*/
Expand Down
25 changes: 20 additions & 5 deletions tests/src/lv_test_init.c
Expand Up @@ -13,6 +13,9 @@ static void hal_init(void);
static void dummy_flush_cb(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p);

lv_indev_t * lv_test_mouse_indev;
lv_indev_t * lv_test_keypad_indev;
lv_indev_t * lv_test_encoder_indev;

lv_color_t test_fb[HOR_RES * VER_RES];
static lv_color_t disp_buf1[HOR_RES * VER_RES];

Expand Down Expand Up @@ -100,11 +103,23 @@ static void hal_init(void)
disp_drv.ver_res = VER_RES;
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 = lv_test_mouse_read_cb;
lv_test_mouse_indev = lv_indev_drv_register(&indev_drv);
static lv_indev_drv_t indev_mouse_drv;
lv_indev_drv_init(&indev_mouse_drv);
indev_mouse_drv.type = LV_INDEV_TYPE_POINTER;
indev_mouse_drv.read_cb = lv_test_mouse_read_cb;
lv_test_mouse_indev = lv_indev_drv_register(&indev_mouse_drv);

static lv_indev_drv_t indev_keypad_drv;
lv_indev_drv_init(&indev_keypad_drv);
indev_keypad_drv.type = LV_INDEV_TYPE_KEYPAD;
indev_keypad_drv.read_cb = lv_test_keypad_read_cb;
lv_test_keypad_indev = lv_indev_drv_register(&indev_keypad_drv);

static lv_indev_drv_t indev_encoder_drv;
lv_indev_drv_init(&indev_encoder_drv);
indev_encoder_drv.type = LV_INDEV_TYPE_ENCODER;
indev_encoder_drv.read_cb = lv_test_encoder_read_cb;
lv_test_encoder_indev = lv_indev_drv_register(&indev_encoder_drv);


static lv_fs_drv_t drv;
Expand Down
2 changes: 0 additions & 2 deletions tests/src/lv_test_init.h
Expand Up @@ -12,8 +12,6 @@ extern "C" {
void lv_test_init(void);
void lv_test_deinit(void);

extern lv_indev_t * lv_test_mouse_indev;

#ifdef __cplusplus
} /*extern "C"*/
#endif
Expand Down

0 comments on commit e536bb6

Please sign in to comment.