SDK สำหรับ TESAIoT Dev Kit
คู่มืออ้างอิง API และ Tutorial (MTB & µPython)
Loading...
Searching...
No Matches
ui_widget_mgr.h
Go to the documentation of this file.
1/*******************************************************************************
2 * File Name: ui_widget_mgr.h
3 *
4 * Description: Widget handle table and LVGL widget lifecycle manager.
5 * Maps handle IDs (0-31) to lv_obj_t* pointers.
6 * Creates, modifies, deletes LVGL widgets in GFX task context.
7 *
8 *******************************************************************************/
9
10#ifndef UI_WIDGET_MGR_H
11#define UI_WIDGET_MGR_H
12
13#include "ipc_ui_protocol.h"
14#include "lvgl.h"
15#include <stdbool.h>
16#include <stdint.h>
17
22void ui_widget_mgr_init(lv_obj_t *parent);
23
30void ui_widget_mgr_set_parent(lv_obj_t *parent);
31
37
43int ui_widget_mgr_create(const ipc_ui_create_t *cfg);
44
51int ui_widget_mgr_create_sprite(const lv_image_dsc_t *dsc, int16_t x, int16_t y);
52
57void ui_widget_mgr_set_sprite_image(int handle, const lv_image_dsc_t *dsc);
58
63void ui_widget_mgr_delete(int handle);
64
69
73void ui_widget_mgr_set_text(int handle, const char *text);
74
78void ui_widget_mgr_set_value(int handle, int32_t value);
79
83void ui_widget_mgr_set_position(int handle, int16_t x, int16_t y);
84
88void ui_widget_mgr_set_size(int handle, int16_t w, int16_t h);
89
93void ui_widget_mgr_set_color(int handle, uint32_t color);
94
98void ui_widget_mgr_set_visible(int handle, bool visible);
99
105
110int32_t ui_widget_mgr_get_value(int handle);
111
115void ui_widget_mgr_set_dotmatrix(int handle, const uint8_t *bitmap, uint8_t len);
116
124void ui_widget_mgr_set_image(int handle, uint16_t offset, const uint8_t *data, uint8_t len);
125
129void ui_widget_mgr_event_push(uint8_t handle, uint8_t event_type, int32_t value);
130
137int ui_widget_mgr_event_drain(ipc_ui_event_t *out, int max_events);
138
143
150int ui_widget_mgr_list(ipc_ui_widget_info_t *out, int max_items);
151
157
163void ui_widget_mgr_set_screen(int16_t width, int16_t height);
164
171int ui_widget_mgr_chart_add_series(int handle, uint32_t color);
172
179void ui_widget_mgr_chart_set_next(int handle, uint8_t series_idx, int32_t value);
180
181
182/*******************************************************************************
183 * Collections and containers (IPC_CMD_UI_ITEM_ADD / _ITEM_CLEAR / _SET_PROP)
184 *
185 * These three functions MUST exist, and behave the same way for the same widget
186 * type, in BOTH ui_widget_mgr.c implementations — claw's and game's. The two
187 * Infineon Game kits compile claw's ipc_ui.c against game's ui_widget_mgr.c, so
188 * a type served here and not there renders on some boards and returns
189 * UI_STATUS_INVALID_TYPE on others, with no build error anywhere.
190 *******************************************************************************/
191
194#define UI_ITEM_ADD_OK_NO_CHILD (-3)
195
208int ui_widget_mgr_item_add(const ipc_ui_item_add_t *it);
209
215
222void ui_widget_mgr_set_prop(int handle, uint8_t prop_id, int32_t value);
223
232lv_obj_t *ui_widget_mgr_get_object(int handle);
233
234#endif /* UI_WIDGET_MGR_H */
void ui_widget_mgr_set_prop(int handle, uint8_t prop_id, int32_t value)
ตั้งคุณสมบัติ UI_PROP_* หนึ่งรายการ; เป็นกลไกที่ .listen() ใช้สมัครรับ event
void ui_widget_mgr_init(lv_obj_t *parent)
ipc_ui_init() เรียกฟังก์ชันนี้เอง — ห้ามเรียกโดยตรง
void ui_widget_mgr_set_parent(lv_obj_t *parent)
เคลียร์ widget ทั้งหมดแล้วตั้ง parent ใหม่; ถูกเรียกผ่าน ipc_ui_set_container() เท่านั้น
int ui_widget_mgr_event_drain(ipc_ui_event_t *out, int max_events)
ระบาย event ออกให้ POLL_EVENTS — เป็น backend ของ ui.poll()
void ui_widget_mgr_item_clear(int handle)
ล้าง widget ชนิดคอลเล็กชันให้ว่าง
int ui_widget_mgr_create_sprite(const lv_image_dsc_t *dsc, int16_t x, int16_t y)
สร้าง sprite ชนิดภาพลงใน handle table เดียวกัน
void ui_widget_mgr_set_position(int handle, int16_t x, int16_t y)
ย้ายตำแหน่ง widget; ตั้ง fast drain ให้พร้อมทำงานเพื่ออัตราเฟรมระหว่างเล่นเกม
void ui_widget_mgr_clear_all(void)
ลบ widget ทุกตัวและรีเซ็ต handle table
void ui_widget_mgr_set_value(int handle, int32_t value)
ตั้งค่าตัวเลข; ตั้ง fast drain ให้พร้อมทำงานเพื่อไม่ให้แดชบอร์ดถูกตรึงไว้ที่ 5 FPS
void ui_widget_mgr_set_dotmatrix(int handle, const uint8_t *bitmap, uint8_t len)
โหลดบิตแมปเข้าไปใน widget ชนิด DotMatrix
void ui_widget_mgr_set_screen(int16_t width, int16_t height)
ตั้งขนาดหน้าจอและรีเซ็ตกริดของ auto-layout
void ui_widget_mgr_set_text(int handle, const char *text)
ตั้งข้อความของ widget; switch จะตั้ง fast drain ให้พร้อมทำงานหลังจากนั้น
int ui_widget_mgr_item_add(const ipc_ui_item_add_t *it)
ต่อรายการหนึ่งรายการ; ค่าที่คืนมีหลายความหมาย และมีกฎเรื่องตัวโค้ดที่ทำงานจริง 2 ชุด
void ui_widget_mgr_event_push(uint8_t handle, uint8_t event_type, int32_t value)
ฝั่งผู้ผลิตข้อมูลของ event ring; เฉพาะ LVGL event callback ภายในเท่านั้น
void ui_widget_mgr_set_visible(int handle, bool visible)
แสดงหรือซ่อน widget หนึ่งตัว
void ui_widget_mgr_chart_set_next(int handle, uint8_t series_idx, int32_t value)
ต่อค่าถัดไปเข้าไปในชุดข้อมูลของ chart ชุดหนึ่ง
int32_t ui_widget_mgr_get_value(int handle)
อ่านค่าปัจจุบันของ widget; ค่า 0 หมายถึง handle ไม่ถูกต้องได้ด้วย
int ui_widget_mgr_create(const ipc_ui_create_t *cfg)
สร้าง widget จาก config; คืน handle 0-31, -1 เมื่อตารางเต็ม, -2 เมื่อชนิดไม่ถูกต้อง
void ui_widget_mgr_set_size(int handle, int16_t w, int16_t h)
เปลี่ยนขนาดของ widget
int ui_widget_mgr_chart_add_series(int handle, uint32_t color)
เพิ่มชุดข้อมูลให้ Chart; คืนดัชนี 0-3 หรือ -1
bool ui_widget_mgr_needs_container(void)
คืน true ขณะที่ parent เป็น NULL; ไม่มีผู้เรียกที่ใดเลย
lv_obj_t * ui_widget_mgr_get_object(int handle)
อ็อบเจ็กต์ LVGL ที่อยู่หลัง handle; เป็นเส้นทาง GET_TEXT สำหรับข้อความที่ผู้ใช้พิมพ์
int ui_widget_mgr_list(ipc_ui_widget_info_t *out, int max_items)
handle และชนิดของ widget ที่ทำงานอยู่ทุกตัว — เป็น backend ของ ui.list()
void ui_widget_mgr_set_color(int handle, uint32_t color)
ตั้งสีหลัก 0xRRGGBB
void ui_widget_mgr_delete(int handle)
ลบ widget หนึ่งตัวและปล่อย handle ของมันคืน
void ui_widget_mgr_set_all_visible(bool visible)
แสดงหรือซ่อน widget ที่จัดการอยู่ทุกตัว; เป็นตัวสลับมุมมองของการสลับคอนโซลบนหน้า Playground
void ui_widget_mgr_set_sprite_image(int handle, const lv_image_dsc_t *dsc)
สลับภาพของ sprite; descriptor มาจาก game_sprite_lookup()
lv_obj_t * ui_widget_mgr_get_parent(void)
parent ปัจจุบันที่เป็น null ได้; ทุก call site ตรวจ null ของค่านี้
void ui_widget_mgr_set_image(int handle, uint16_t offset, const uint8_t *data, uint8_t len)
การส่ง RGB565 เป็นก้อน ๆ เข้าไปใน canvas ของ widget ชนิด Image
int ui_widget_mgr_count(void)
จำนวน handle ที่ยังใช้งานอยู่; ไม่มีผู้เรียกเลยที่ใด