Commit 716fa268 authored by Fabio Baltieri's avatar Fabio Baltieri Committed by Carles Cufi
Browse files

input: add a user_data pointer to the callback



Add a void *user_data pointer to the input callback structure. This is
useful for driver to get back the driver data structure and avoid
defining wrapper functions.

Signed-off-by: default avatarFabio Baltieri <fabiobaltieri@google.com>
parent 8bf604ee
Loading
Loading
Loading
Loading
+4 −7
Original line number Diff line number Diff line
@@ -23,8 +23,9 @@ struct kscan_input_data {
	bool pressed;
};

static void kscan_input_cb(const struct device *dev, struct input_event *evt)
static void kscan_input_cb(struct input_event *evt, void *user_data)
{
	const struct device *dev = user_data;
	struct kscan_input_data *data = dev->data;

	switch (evt->code) {
@@ -100,13 +101,9 @@ static const struct kscan_driver_api kscan_input_driver_api = {
};

#define KSCAN_INPUT_INIT(index) \
	static void kscan_input_cb_##index(struct input_event *evt)            \
	{                                                                      \
		kscan_input_cb(DEVICE_DT_GET(DT_INST(index, DT_DRV_COMPAT)),   \
			       evt);                                           \
	}                                                                      \
	INPUT_CALLBACK_DEFINE(DEVICE_DT_GET(DT_INST_PARENT(index)),            \
			      kscan_input_cb_##index);                         \
			      kscan_input_cb,                                  \
			      (void *)DEVICE_DT_INST_GET(index));              \
	static const struct kscan_input_config kscan_input_config_##index = {  \
		.input_dev = DEVICE_DT_GET(DT_INST_PARENT(index)),             \
	};                                                                     \
+6 −2
Original line number Diff line number Diff line
@@ -124,7 +124,9 @@ struct input_callback {
	/** @ref device pointer or NULL. */
	const struct device *dev;
	/** The callback function. */
	void (*callback)(struct input_event *evt);
	void (*callback)(struct input_event *evt, void *user_data);
	/** User data pointer. */
	void *user_data;
};

/**
@@ -136,12 +138,14 @@ struct input_callback {
 *
 * @param _dev @ref device pointer or NULL.
 * @param _callback The callback function.
 * @param _user_data Pointer to user specified data.
 */
#define INPUT_CALLBACK_DEFINE(_dev, _callback)                                 \
#define INPUT_CALLBACK_DEFINE(_dev, _callback, _user_data)                     \
	static const STRUCT_SECTION_ITERABLE(input_callback,                   \
					     _input_callback__##_callback) = { \
		.dev = _dev,                                                   \
		.callback = _callback,                                         \
		.user_data = _user_data,                                       \
	}

#ifdef __cplusplus
+2 −5
Original line number Diff line number Diff line
@@ -36,11 +36,8 @@ int lvgl_init_input_devices(void);
#define LVGL_KEY_VALID(key)     IN_RANGE(key, 0, UINT8_MAX)

#define LVGL_INPUT_DEFINE(inst, type, msgq_size, process_evt_cb)                                   \
	static void lvgl_input_cb_##_##inst(struct input_event *evt)                               \
	{                                                                                          \
		process_evt_cb(DEVICE_DT_INST_GET(inst), evt);                                     \
	}                                                                                          \
	INPUT_CALLBACK_DEFINE(LVGL_INPUT_DEVICE(inst), lvgl_input_cb_##_##inst);                   \
	INPUT_CALLBACK_DEFINE(LVGL_INPUT_DEVICE(inst), process_evt_cb,                             \
			      (void *)DEVICE_DT_INST_GET(inst));                                   \
	K_MSGQ_DEFINE(lvgl_input_msgq_##type##_##inst, sizeof(lv_indev_data_t), msgq_size, 4)

#ifdef __cplusplus
+2 −1
Original line number Diff line number Diff line
@@ -20,8 +20,9 @@ struct lvgl_button_input_config {
	const lv_coord_t *coordinates;
};

static void lvgl_button_process_event(const struct device *dev, struct input_event *evt)
static void lvgl_button_process_event(struct input_event *evt, void *user_data)
{
	const struct device *dev = user_data;
	struct lvgl_common_input_data *data = dev->data;
	const struct lvgl_button_input_config *cfg = dev->config;
	uint8_t i;
+2 −1
Original line number Diff line number Diff line
@@ -19,8 +19,9 @@ struct lvgl_encoder_input_config {
	int button_input_code;
};

static void lvgl_encoder_process_event(const struct device *dev, struct input_event *evt)
static void lvgl_encoder_process_event(struct input_event *evt, void *user_data)
{
	const struct device *dev = user_data;
	struct lvgl_common_input_data *data = dev->data;
	const struct lvgl_encoder_input_config *cfg = dev->config;

Loading