From 230f08246089023f6d572e8bdc845fd98b00bc9a Mon Sep 17 00:00:00 2001 From: Ken Van Hoeylandt Date: Fri, 5 Sep 2025 14:48:10 +0200 Subject: [PATCH] Show warning if hardware is not supported --- .../GraphicsDemo/main/Source/Main.cpp | 45 ++++++++++++++++--- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/ExternalApps/GraphicsDemo/main/Source/Main.cpp b/ExternalApps/GraphicsDemo/main/Source/Main.cpp index d25007ca..4b5a8d2c 100644 --- a/ExternalApps/GraphicsDemo/main/Source/Main.cpp +++ b/ExternalApps/GraphicsDemo/main/Source/Main.cpp @@ -5,22 +5,55 @@ #include #include +#include #include constexpr auto TAG = "Main"; -static void onCreate(AppHandle appHandle, void* data) { +/** Find a DisplayDevice that supports the DisplayDriver interface */ +static bool findUsableDisplay(DeviceId& deviceId) { uint16_t display_count = 0; + if (!tt_hal_device_find(DEVICE_TYPE_DISPLAY, &deviceId, &display_count, 1)) { + ESP_LOGE(TAG, "No display device found"); + return false; + } + + if (!tt_hal_display_driver_supported(deviceId)) { + ESP_LOGE(TAG, "Display doesn't support driver mode"); + return false; + } + + return true; +} + +/** Find a TouchDevice that supports the TouchDriver interface */ +static bool findUsableTouch(DeviceId& deviceId) { + uint16_t touch_count = 0; + if (!tt_hal_device_find(DEVICE_TYPE_TOUCH, &deviceId, &touch_count, 1)) { + ESP_LOGE(TAG, "No touch device found"); + return false; + } + + if (!tt_hal_touch_driver_supported(deviceId)) { + ESP_LOGE(TAG, "Touch doesn't support driver mode"); + return false; + } + + return true; +} + +static void onCreate(AppHandle appHandle, void* data) { DeviceId display_id; - if (!tt_hal_device_find(DEVICE_TYPE_DISPLAY, &display_id, &display_count, 1)) { - ESP_LOGI(TAG, "No display device found"); + if (!findUsableDisplay(display_id)) { + tt_app_stop(); + tt_app_alertdialog_start("Error", "The display doesn't support the required features.", nullptr, 0); return; } - uint16_t touch_count = 0; DeviceId touch_id; - if (!tt_hal_device_find(DEVICE_TYPE_TOUCH, &touch_id, &touch_count, 1)) { - ESP_LOGI(TAG, "No touch device found"); + if (!findUsableTouch(touch_id)) { + tt_app_stop(); + tt_app_alertdialog_start("Error", "The touch driver doesn't support the required features.", nullptr, 0); return; }