LittlevGL  3.20.00.19
lv_hal_indev.h
Go to the documentation of this file.
1 
8 #ifndef LV_HAL_INDEV_H
9 #define LV_HAL_INDEV_H
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 /*********************
16  * INCLUDES
17  *********************/
18 #ifdef LV_CONF_INCLUDE_SIMPLE
19 #include "lv_conf.h"
20 #else
21 #include "../../../lv_conf.h"
22 #endif
23 
24 #include <stdbool.h>
25 #include <stdint.h>
26 #include "../lv_misc/lv_area.h"
27 #include "../lv_misc/lv_task.h"
28 
29 /*********************
30  * DEFINES
31  *********************/
32 
33 /**********************
34  * TYPEDEFS
35  **********************/
36 
37 struct _lv_obj_t;
38 struct _disp_t;
39 struct _lv_indev_t;
40 struct _lv_indev_drv_t;
41 
43 enum {
50 };
51 typedef uint8_t lv_indev_type_t;
52 
55 typedef uint8_t lv_indev_state_t;
56 
58 typedef struct
59 {
61  uint32_t key;
62  uint32_t btn_id;
63  int16_t enc_diff;
65  lv_indev_state_t state;
67 
69 typedef struct _lv_indev_drv_t
70 {
71 
73  lv_indev_type_t type;
74 
78  bool (*read_cb)(struct _lv_indev_drv_t * indev_drv, lv_indev_data_t * data);
79 
82  void (*feedback_cb)(struct _lv_indev_drv_t *, uint8_t);
83 
84 #if LV_USE_USER_DATA
85  lv_indev_drv_user_data_t user_data;
86 #endif
87 
89  struct _disp_t * disp;
90 
93 
95  uint8_t drag_limit;
96 
98  uint8_t drag_throw;
99 
101  uint16_t long_press_time;
102 
106 
110 typedef struct _lv_indev_proc_t
111 {
112  lv_indev_state_t state;
113  union
114  {
115  struct
116  { /*Pointer and button data*/
120  lv_point_t drag_sum; /*Count the dragged pixels to check LV_INDEV_DEF_DRAG_LIMIT*/
122  struct _lv_obj_t * act_obj; /*The object being pressed*/
123  struct _lv_obj_t * last_obj; /*The last obejct which was pressed (used by dragthrow and
124  other post-release event)*/
125  struct _lv_obj_t * last_pressed; /*The lastly pressed object*/
126 
127  /*Flags*/
128  uint8_t drag_limit_out : 1;
129  uint8_t drag_in_prog : 1;
130  } pointer;
131  struct
132  { /*Keypad data*/
133  lv_indev_state_t last_state;
134  uint32_t last_key;
135  } keypad;
136  } types;
137 
138  uint32_t pr_timestamp;
141  /*Flags*/
142  uint8_t long_pr_sent : 1;
143  uint8_t reset_query : 1;
144  uint8_t disabled : 1;
145  uint8_t wait_until_release : 1;
147 
148 struct _lv_obj_t;
149 struct _lv_group_t;
150 
153 typedef struct _lv_indev_t
154 {
157  struct _lv_obj_t * cursor;
158  struct _lv_group_t * group;
161 } lv_indev_t;
162 
163 /**********************
164  * GLOBAL PROTOTYPES
165  **********************/
166 
173 void lv_indev_drv_init(lv_indev_drv_t * driver);
174 
181 
187 void lv_indev_drv_update(lv_indev_t * indev, lv_indev_drv_t * new_drv);
188 
196 
203 bool lv_indev_read(lv_indev_t * indev, lv_indev_data_t * data);
204 
205 /**********************
206  * MACROS
207  **********************/
208 
209 #ifdef __cplusplus
210 } /* extern "C" */
211 #endif
212 
213 #endif
Definition: lv_hal_indev.h:54
lv_indev_t * lv_indev_drv_register(lv_indev_drv_t *driver)
struct _lv_indev_proc_t lv_indev_proc_t
struct _lv_obj_t * last_obj
Definition: lv_hal_indev.h:123
uint8_t lv_indev_state_t
Definition: lv_hal_indev.h:55
int16_t enc_diff
Definition: lv_hal_indev.h:63
uint32_t pr_timestamp
Definition: lv_hal_indev.h:138
Definition: lv_area.h:39
lv_indev_t * lv_indev_get_next(lv_indev_t *indev)
lv_indev_state_t state
Definition: lv_hal_indev.h:112
uint32_t longpr_rep_timestamp
Definition: lv_hal_indev.h:139
lv_point_t drag_sum
Definition: lv_hal_indev.h:120
Definition: lv_obj.h:184
struct _lv_obj_t * last_pressed
Definition: lv_hal_indev.h:125
lv_point_t drag_throw_vect
Definition: lv_hal_indev.h:121
uint8_t drag_limit
Definition: lv_hal_indev.h:95
Definition: lv_hal_indev.h:153
void lv_indev_drv_init(lv_indev_drv_t *driver)
Definition: lv_hal_indev.h:47
Definition: lv_hal_disp.h:127
Definition: lv_task.h:62
struct _lv_indev_drv_t lv_indev_drv_t
lv_point_t vect
Definition: lv_hal_indev.h:119
struct _lv_obj_t * act_obj
Definition: lv_hal_indev.h:122
lv_point_t point
Definition: lv_hal_indev.h:60
lv_indev_drv_t driver
Definition: lv_hal_indev.h:155
lv_indev_proc_t proc
Definition: lv_hal_indev.h:156
bool lv_indev_read(lv_indev_t *indev, lv_indev_data_t *data)
struct _lv_indev_t lv_indev_t
struct _lv_obj_t * cursor
Definition: lv_hal_indev.h:157
bool(* read_cb)(struct _lv_indev_drv_t *indev_drv, lv_indev_data_t *data)
Definition: lv_hal_indev.h:78
Definition: lv_hal_indev.h:44
void lv_indev_drv_update(lv_indev_t *indev, lv_indev_drv_t *new_drv)
Definition: lv_hal_indev.h:69
Definition: lv_hal_indev.h:45
uint16_t long_press_rep_time
Definition: lv_hal_indev.h:104
struct _disp_t * disp
Definition: lv_hal_indev.h:89
uint8_t lv_indev_type_t
Definition: lv_hal_indev.h:51
uint32_t btn_id
Definition: lv_hal_indev.h:62
uint32_t last_key
Definition: lv_hal_indev.h:134
lv_indev_type_t type
Definition: lv_hal_indev.h:73
uint8_t drag_throw
Definition: lv_hal_indev.h:98
lv_point_t last_point
Definition: lv_hal_indev.h:118
void(* feedback_cb)(struct _lv_indev_drv_t *, uint8_t)
Definition: lv_hal_indev.h:82
lv_indev_state_t state
Definition: lv_hal_indev.h:65
const lv_point_t * btn_points
Definition: lv_hal_indev.h:159
Definition: lv_hal_indev.h:54
uint32_t key
Definition: lv_hal_indev.h:61
Definition: lv_hal_indev.h:58
lv_indev_state_t last_state
Definition: lv_hal_indev.h:133
lv_point_t act_point
Definition: lv_hal_indev.h:117
struct _lv_group_t * group
Definition: lv_hal_indev.h:158
Definition: lv_hal_indev.h:110
Definition: lv_hal_indev.h:49
uint16_t long_press_time
Definition: lv_hal_indev.h:101
Definition: lv_hal_indev.h:46
lv_task_t * read_task
Definition: lv_hal_indev.h:92
© Copyright 1995-2019, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale