Line data Source code
1 1 : /*
2 : * Copyright (c) 2024 Antmicro <www.antmicro.com>
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 :
7 : /**
8 : * @file
9 : * @brief Header file for touch events API.
10 : * @ingroup touch_events
11 : */
12 :
13 : #ifndef ZEPHYR_INCLUDE_INPUT_TOUCH_H_
14 : #define ZEPHYR_INCLUDE_INPUT_TOUCH_H_
15 :
16 : /**
17 : * @defgroup touch_events Touchscreen Events
18 : * @since 3.7
19 : * @version 0.1.0
20 : * @ingroup input_interface
21 : * @{
22 : */
23 :
24 : #include <zephyr/input/input.h>
25 :
26 : #ifdef __cplusplus
27 : extern "C" {
28 : #endif
29 :
30 : /**
31 : * @brief Common touchscreen config.
32 : *
33 : * This structure **must** be placed first in the driver's config structure.
34 : *
35 : * see touchscreem-common.yaml for more details
36 : */
37 1 : struct input_touchscreen_common_config {
38 : /** Horizontal resolution of touchscreen */
39 1 : uint32_t screen_width;
40 : /** Vertical resolution of touchscreen */
41 1 : uint32_t screen_height;
42 : /** X axis is inverted */
43 1 : bool inverted_x;
44 : /** Y axis is inverted */
45 1 : bool inverted_y;
46 : /** X and Y axes are swapped */
47 1 : bool swapped_x_y;
48 : };
49 :
50 : /**
51 : * @brief Initialize common touchscreen config from devicetree
52 : *
53 : * @param node_id The devicetree node identifier.
54 : */
55 1 : #define INPUT_TOUCH_DT_COMMON_CONFIG_INIT(node_id) \
56 : { \
57 : .screen_width = DT_PROP(node_id, screen_width), \
58 : .screen_height = DT_PROP(node_id, screen_height), \
59 : .inverted_x = DT_PROP(node_id, inverted_x), \
60 : .inverted_y = DT_PROP(node_id, inverted_y), \
61 : .swapped_x_y = DT_PROP(node_id, swapped_x_y) \
62 : }
63 :
64 : /**
65 : * @brief Initialize common touchscreen config from devicetree instance.
66 : *
67 : * @param inst Instance.
68 : */
69 1 : #define INPUT_TOUCH_DT_INST_COMMON_CONFIG_INIT(inst) \
70 : INPUT_TOUCH_DT_COMMON_CONFIG_INIT(DT_DRV_INST(inst))
71 :
72 : /**
73 : * @brief Validate the offset of the common config structure.
74 : *
75 : * @param config Name of the config structure.
76 : */
77 1 : #define INPUT_TOUCH_STRUCT_CHECK(config) \
78 : BUILD_ASSERT(offsetof(config, common) == 0, \
79 : "struct input_touchscreen_common_config must be placed first");
80 :
81 : /**
82 : * @brief Common utility for reporting touchscreen position events.
83 : *
84 : * @param dev Touchscreen controller
85 : * @param x X coordinate as reported by the controller
86 : * @param y Y coordinate as reported by the controller
87 : * @param timeout Timeout for reporting the event
88 : */
89 1 : void input_touchscreen_report_pos(const struct device *dev,
90 : uint32_t x, uint32_t y,
91 : k_timeout_t timeout);
92 :
93 : #ifdef __cplusplus
94 : }
95 : #endif
96 :
97 : /** @} */
98 :
99 : #endif /* ZEPHYR_INCLUDE_INPUT_TOUCH_H_ */
|