1 #include "../../src/indev/lv_indev_private.h"
2 #if LV_BUILD_TEST
3 #include "../lvgl.h"
4 #include <stdio.h>
5 #include <stdlib.h>
6
7 #include "lv_test_indev.h"
8 #include "lv_test_init.h"
9
10 static int32_t x_act;
11 static int32_t y_act;
12 static uint32_t key_act;
13 static int32_t diff_act;
14 static bool mouse_pressed;
15 static bool key_pressed;
16 static bool enc_pressed;
17
lv_test_mouse_read_cb(lv_indev_t * indev,lv_indev_data_t * data)18 void lv_test_mouse_read_cb(lv_indev_t * indev, lv_indev_data_t * data)
19 {
20 LV_UNUSED(indev);
21 lv_point_set(&data->point, x_act, y_act);
22 data->state = mouse_pressed ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED;
23 }
24
lv_test_mouse_move_to(int32_t x,int32_t y)25 void lv_test_mouse_move_to(int32_t x, int32_t y)
26 {
27 x_act = x;
28 y_act = y;
29 }
30
lv_test_mouse_move_by(int32_t x,int32_t y)31 void lv_test_mouse_move_by(int32_t x, int32_t y)
32 {
33 x_act += x;
34 y_act += y;
35 }
36
lv_test_mouse_press(void)37 void lv_test_mouse_press(void)
38 {
39 mouse_pressed = true;
40 }
41
lv_test_mouse_release(void)42 void lv_test_mouse_release(void)
43 {
44 mouse_pressed = false;
45 }
46
lv_test_mouse_click_at(int32_t x,int32_t y)47 void lv_test_mouse_click_at(int32_t x, int32_t y)
48 {
49 lv_test_mouse_release();
50 lv_test_indev_wait(50);
51 lv_test_mouse_move_to(x, y);
52 lv_test_mouse_press();
53 lv_test_indev_wait(50);
54 lv_test_mouse_release();
55 lv_test_indev_wait(50);
56 }
57
lv_test_keypad_read_cb(lv_indev_t * indev,lv_indev_data_t * data)58 void lv_test_keypad_read_cb(lv_indev_t * indev, lv_indev_data_t * data)
59 {
60 LV_UNUSED(indev);
61 data->key = key_act;
62 data->state = key_pressed ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED;
63 }
64
lv_test_key_press(uint32_t k)65 void lv_test_key_press(uint32_t k)
66 {
67 key_act = k;
68 key_pressed = true;
69 }
70
lv_test_key_release(void)71 void lv_test_key_release(void)
72 {
73 key_pressed = false;
74 }
75
lv_test_key_hit(uint32_t k)76 void lv_test_key_hit(uint32_t k)
77 {
78 lv_test_key_release();
79 lv_test_indev_wait(50);
80 lv_test_key_press(k);
81 lv_test_mouse_press();
82 lv_test_indev_wait(50);
83 lv_test_key_release();
84 lv_test_indev_wait(50);
85 }
86
lv_test_encoder_read_cb(lv_indev_t * indev,lv_indev_data_t * data)87 void lv_test_encoder_read_cb(lv_indev_t * indev, lv_indev_data_t * data)
88 {
89 LV_UNUSED(indev);
90 data->enc_diff = diff_act;
91 data->state = enc_pressed ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED;
92 diff_act = 0;
93 }
94
lv_test_encoder_add_diff(int32_t d)95 void lv_test_encoder_add_diff(int32_t d)
96 {
97 diff_act += d;
98 }
99
lv_test_encoder_turn(int32_t d)100 void lv_test_encoder_turn(int32_t d)
101 {
102 diff_act += d;
103 lv_test_indev_wait(50);
104 }
105
lv_test_encoder_press(void)106 void lv_test_encoder_press(void)
107 {
108 enc_pressed = true;
109 }
110
lv_test_encoder_release(void)111 void lv_test_encoder_release(void)
112 {
113 enc_pressed = false;
114 }
115
lv_test_encoder_click(void)116 void lv_test_encoder_click(void)
117 {
118 lv_test_encoder_release();
119 lv_test_indev_wait(50);
120 lv_test_encoder_press();
121 lv_test_indev_wait(50);
122 lv_test_encoder_release();
123 lv_test_indev_wait(50);
124 }
125
lv_test_indev_wait(uint32_t ms)126 void lv_test_indev_wait(uint32_t ms)
127 {
128 uint32_t t = lv_tick_get();
129 while(lv_tick_elaps(t) < ms) {
130 lv_timer_handler();
131 lv_tick_inc(1);
132 }
133 }
134
135 #endif
136