I am using e2stuido 2023-10 Guix 6.3.0
Guix System Thread running for 7 times and stops. other threads continue to work.
If I send KeyDown events, Message Queue is getting full
Stack Tab not showing anything
GUIX System Thread Stack. It is waiting for Semaphore.
window1_handler not receiving Touch Events. Touch Events are sent by callback functions.
window1_handler gets two events at start up. Got focus and Show Window events.
subsequent events are not receiving.
void sf_touch_panel_v2_callback(sf_touchpanel_v2_callback_args_t *p_args) { bool send_event = true; GX_EVENT * p_gx_event = &g_gx_event; sf_touch_panel_v2_payload_t const * const p_payload = &p_args->payload; switch (p_payload->event_type) { /* New touch event reported. */ case SF_TOUCH_PANEL_V2_EVENT_DOWN: p_gx_event->gx_event_type = GX_EVENT_PEN_DOWN; break; /* Touch released. */ case SF_TOUCH_PANEL_V2_EVENT_UP: p_gx_event->gx_event_type = GX_EVENT_PEN_UP; break; /* Touch has not moved since last touch event. */ /* Touch has moved since last touch event. */ case SF_TOUCH_PANEL_V2_EVENT_HOLD: case SF_TOUCH_PANEL_V2_EVENT_MOVE: p_gx_event->gx_event_type = GX_EVENT_PEN_DRAG; break; /* No valid touch event happened. */ /* Invalid touch data */ case SF_TOUCH_PANEL_V2_EVENT_NONE: case SF_TOUCH_PANEL_V2_EVENT_INVALID: default: send_event = false; break; } if (send_event) { /** Send event to GUI */ p_gx_event->gx_event_sender = GX_ID_NONE; p_gx_event->gx_event_target = 0; p_gx_event->gx_event_display_handle = 0; p_gx_event->gx_event_payload.gx_event_pointdata.gx_point_x = p_payload->x; p_gx_event->gx_event_payload.gx_event_pointdata.gx_point_y = p_payload->y; // send Touch Event to Window UINT status = gx_system_event_send(p_gx_event); /* Confirm that the event flags were set */ if (TX_SUCCESS != status) { while (1) { LED2Toggle(); } } } }
window1_handler()
UINT window1_handler(GX_WINDOW *widget, GX_EVENT *event_ptr) { UINT result = gx_window_event_process(widget, event_ptr); switch (event_ptr->gx_event_type) { case GX_SIGNAL(ID_BUTTON_ENABLER, GX_EVENT_TOGGLE_ON): button_enabled = true; update_button_text_id(widget->gx_widget_parent, ID_WINDOW_CHANGER, GX_STRING_ID_BUTTON_ENABLED); update_prompt_text_id(widget->gx_widget_parent, ID_INSTRUCTIONS, GX_STRING_ID_INSTRUCT_BUTTON); break; case GX_SIGNAL(ID_BUTTON_ENABLER, GX_EVENT_TOGGLE_OFF): button_enabled = false; update_button_text_id(widget->gx_widget_parent, ID_WINDOW_CHANGER, GX_STRING_ID_BUTTON_DISABLED); update_prompt_text_id(widget->gx_widget_parent, ID_INSTRUCTIONS, GX_STRING_ID_INSTRUCT_CHECKBOX); break; case GX_SIGNAL(ID_WINDOW_CHANGER, GX_EVENT_CLICKED): if(button_enabled){ show_window((GX_WINDOW*)&window2, (GX_WIDGET*)widget, true); } break; case GX_EVENT_FOCUS_LOST: break; case GX_EVENT_KEY_DOWN: show_window((GX_WINDOW*)&window2, (GX_WIDGET*)widget, true); break; default: gx_window_event_process(widget, event_ptr); break; } return result; }
Found that GLCD Line Detect Interrupt is not set.
after setting these, now Touch Interrupts and Screen Changing working
Hello Path,
Thank you for sharing your solution with the community, it's very helpful.
Kind regards,
Sergey
If this response, or one provided by another user, answers your question, please verify the answer. Thank you!
Renesas Engineering Community Moderatorhttps://community.renesas.com/https://academy.renesas.com/https://en-support.renesas.com/knowledgeBase/