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