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