Files
zephyr/drivers/input/input_touch.c
Fabian Blatz 421a4232ee drivers: input: Add input-touch assert for inversion without dimensions
Adds an assert to inform the user of possible coordinate wrap around
due to missing screen dimension configurations.

Signed-off-by: Fabian Blatz <fabianblatz@gmail.com>
2025-11-24 15:27:41 -05:00

25 lines
979 B
C

/*
* Copyright (c) 2024 Antmicro <www.antmicro.com>
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/input/input_touch.h>
void input_touchscreen_report_pos(const struct device *dev,
uint32_t x, uint32_t y,
k_timeout_t timeout)
{
const struct input_touchscreen_common_config *cfg = dev->config;
__ASSERT(cfg->inverted_y == (cfg->screen_height > 0),
"Y coordinate inversion requires screen-height");
__ASSERT(cfg->inverted_x == (cfg->screen_width > 0),
"X coordinate inversion requires screen-width");
const uint32_t reported_x_code = cfg->swapped_x_y ? INPUT_ABS_Y : INPUT_ABS_X;
const uint32_t reported_y_code = cfg->swapped_x_y ? INPUT_ABS_X : INPUT_ABS_Y;
const uint32_t reported_x = cfg->inverted_x ? cfg->screen_width - x : x;
const uint32_t reported_y = cfg->inverted_y ? cfg->screen_height - y : y;
input_report_abs(dev, reported_x_code, reported_x, false, timeout);
input_report_abs(dev, reported_y_code, reported_y, false, timeout);
}