// ===================================================================================== // display_hal.h - Board-/Panel-/Touch-Anbindung (ST7701 + GT911) + LVGL-Glue // ===================================================================================== // Einziger board-spezifischer Teil. Baut auf der HERSTELLER-LVGL-PORTIERUNG des // JC4880P443C-I-W auf (1-Demo/arduino_examples/lvgl_v9_sw_rotation): // - MIPI-DSI ST7701 (480x800), GT911-Touch (I2C SDA=7/SCL=8), Backlight GPIO23 // - LVGL laeuft in einem EIGENEN FreeRTOS-Task -> UI-Zugriffe von aussen muessen // mit hal_lock()/hal_unlock() (= lvgl_port_lock/unlock) geschuetzt werden. // // Schalter JC_USE_REAL_PANEL: // 0 = Stub-Modus (kompiliert OHNE Hersteller-BSP; eigenes minimal-LVGL, rendert ins // Leere). Zum Testen von Protokoll/UART/Logik am Schreibtisch. // 1 = echte Hardware: erwartet die Hersteller-BSP-Dateien IM SKETCH-ORDNER: // pins_config.h, lvgl_port_v9.h/.c, src/lcd/*, src/touch/* // (aus arduino_examples/lvgl_v9_sw_rotation kopieren). Siehe README.md. // ===================================================================================== #pragma once #include "protocol_client.h" #ifndef JC_USE_REAL_PANEL #define JC_USE_REAL_PANEL 0 #endif // Initialisiert LVGL + Panel + Touch und baut das Dashboard auf (ui_init unter Lock). void hal_init(ProtocolClient* client); // In loop() aufrufen. Realer Panel-Modus: leer (LVGL hat eigenen Task). // Stub-Modus: ruft lv_timer_handler(). void hal_loop(); // LVGL-Mutex (im realen Modus zwingend vor jedem UI-Zugriff aus fremden Tasks). void hal_lock(); void hal_unlock(); // Display-Hintergrundbeleuchtung setzen (0..100 %). Stub-Modus: ohne Wirkung. void hal_backlight(int percent);