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