From c1621488e8915fa42a64d03d66d68e4368838d7e Mon Sep 17 00:00:00 2001 From: Kurt Eckhardt Date: Thu, 5 Jun 2025 08:05:07 -0700 Subject: [PATCH] GiGA Touch - define a callback function forwarder. Register a callback function to be called by the zephyr input system. This includes adding a callback function that is linked in to the zephyr build, and export a function to call to allow us to register our own. Signed-off-by: Kurt Eckhardt --- loader/fixups.c | 21 +++++++++++++++++++++ loader/llext_exports.c | 5 ++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/loader/fixups.c b/loader/fixups.c index 7b320deb..22129659 100644 --- a/loader/fixups.c +++ b/loader/fixups.c @@ -50,6 +50,27 @@ int enable_bkp_access(void) SYS_INIT(enable_bkp_access, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); #endif +#if defined(CONFIG_INPUT) +#include +#include +#include +typedef void (*zephyr_input_callback_t)(struct input_event *evt, void *user_data); + +static zephyr_input_callback_t zephyr_input_cb = NULL; + +void zephyr_input_register_callback(zephyr_input_callback_t cb) { + zephyr_input_cb = cb; +} + +static void zephyr_input_callback(struct input_event *evt, void *user_data) { + if (zephyr_input_cb) { + zephyr_input_cb(evt, user_data); + } +} + +INPUT_CALLBACK_DEFINE(NULL, zephyr_input_callback, NULL); +#endif + #if defined(CONFIG_BOARD_ARDUINO_GIGA_R1) && defined(CONFIG_VIDEO) #include #include diff --git a/loader/llext_exports.c b/loader/llext_exports.c index f70575d2..9ba63368 100644 --- a/loader/llext_exports.c +++ b/loader/llext_exports.c @@ -141,6 +141,9 @@ FORCE_EXPORT_SYM(video_buffer_alloc); FORCE_EXPORT_SYM(video_buffer_release); FORCE_EXPORT_SYM(video_set_ctrl); #endif +#if defined(CONFIG_INPUT) +FORCE_EXPORT_SYM(zephyr_input_register_callback); +#endif #if defined(CONFIG_SHARED_MULTI_HEAP) FORCE_EXPORT_SYM(shared_multi_heap_aligned_alloc); @@ -246,4 +249,4 @@ FORCE_EXPORT_SYM(__aeabi_dcmpge); #if defined (CONFIG_CPP) FORCE_EXPORT_SYM(__cxa_pure_virtual); -#endif \ No newline at end of file +#endif