1 /*
2  * Copyright (c) 2024 Antmicro <www.antmicro.com>
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 #include <zephyr/input/input_touch.h>
7 
input_touchscreen_report_pos(const struct device * dev,uint32_t x,uint32_t y,k_timeout_t timeout)8 void input_touchscreen_report_pos(const struct device *dev,
9 		uint32_t x, uint32_t y,
10 		k_timeout_t timeout)
11 {
12 	const struct input_touchscreen_common_config *cfg = dev->config;
13 	__ASSERT(cfg->inverted_y == (cfg->screen_height > 0),
14 		 "Y coordinate inversion requires screen-height");
15 	__ASSERT(cfg->inverted_x == (cfg->screen_width > 0),
16 		 "X coordinate inversion requires screen-width");
17 	const uint32_t reported_x_code = cfg->swapped_x_y ? INPUT_ABS_Y : INPUT_ABS_X;
18 	const uint32_t reported_y_code = cfg->swapped_x_y ? INPUT_ABS_X : INPUT_ABS_Y;
19 	const uint32_t reported_x = cfg->inverted_x ? cfg->screen_width - x : x;
20 	const uint32_t reported_y = cfg->inverted_y ? cfg->screen_height - y : y;
21 
22 	input_report_abs(dev, reported_x_code, reported_x, false, timeout);
23 	input_report_abs(dev, reported_y_code, reported_y, false, timeout);
24 }
25