Description
I am trying to understand how to have an Arduino sketch be able to use the touch events generated
by the GIGA Display shield.
If I look at the overlay file, that is defined for the giga in zephyr:
D:\github\zephyr\boards\shields\giga_display_shield\boards\arduino_giga_r1_m7.overlay
It has:
&i2c4 {
pinctrl-0 = <&i2c4_scl_pb6 &i2c4_sda_ph12>;
pinctrl-names = "default";
clock-frequency = <I2C_BITRATE_FAST>;
status = "okay";
gt911: gt911@5d {
status = "okay";
compatible = "goodix,gt911";
reg = <0x5d>;
alt-addr = <0x14>;
reset-gpios = <&gpioi 2 GPIO_ACTIVE_LOW>;
irq-gpios = <&gpioi 1 GPIO_ACTIVE_HIGH>;
};
};
So it is using the gt911 input ... It has status of okay so it starts up. with IRQ on GPIO I1...
And it is probably using the code in zephyr\drivers\input\input_gt911.c
I found the zephyr example: samples\subsys\input\draw_touch_events, which I was curious if it would
build and run... So far did not build.
D:/zephyrproject/zephyr/drivers/display/display_stm32_ltdc.c:422:25: error: 'CONFIG_VIDEO_BUFFER_SMH_ATTRIBUTE' undeclared (first use in this function)
422 | CONFIG_VIDEO_BUFFER_SMH_ATTRIBUTE,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/zephyrproject/zephyr/drivers/display/display_stm32_ltdc.c:422:25: note: each undeclared identifier is reported only once for each function it appears in
[41/48] Linking C static library zephyr\kernel\libkernel.a
Thought I would try doing the same thing in a sketch, however I don't think this will work.
static void touch_event_callback(struct input_event *evt, void *user_data)
{
if (evt->code == INPUT_ABS_X) {
touch_point.x = evt->value;
}
if (evt->code == INPUT_ABS_Y) {
touch_point.y = evt->value;
}
if (evt->code == INPUT_BTN_TOUCH) {
touch_point.pressed = evt->value;
}
if (evt->sync) {
k_sem_give(&sync);
}
}
INPUT_CALLBACK_DEFINE(touch_dev, touch_event_callback, NULL);
As I don't believe the INPUT_CALLBACK_DEFINE will work in a sketch?
Wondering best way to handle this?
Potentially, maybe define some callback within the ArduinoCore-zephyr code space.
Like maybe in loader\fixups.c ?
Turn off the interrupt? And try to poll it?
Suggestions?