saving and charge indication working

This commit is contained in:
2026-01-19 22:05:35 -06:00
parent 40bea065a7
commit d427859804
9 changed files with 215 additions and 39 deletions

View File

@@ -100,6 +100,7 @@ static lv_obj_t *list;
static lv_obj_t *buttons[MAX_ITEMS];
static int selected_index = 0;
static lv_obj_t *_bubble = NULL;
static lv_obj_t *_voltageLabel = NULL;
static lv_obj_t * _menu = NULL;
static lv_obj_t *_currentPage = NULL;
@@ -242,6 +243,9 @@ static void show_menu(void) {
lv_obj_remove_flag(menu, LV_OBJ_FLAG_HIDDEN);
lv_obj_add_flag(_bubble, LV_OBJ_FLAG_HIDDEN);
if (_voltageLabel != NULL) {
lv_obj_add_flag(_voltageLabel, LV_OBJ_FLAG_HIDDEN);
}
}
static void cleanup_menu(void) {
@@ -269,6 +273,9 @@ static void cleanup_menu(void) {
static void show_bubble(void) {
cleanup_menu(); // Free menu memory when returning to bubble
lv_obj_remove_flag(_bubble, LV_OBJ_FLAG_HIDDEN);
if (_voltageLabel != NULL) {
lv_obj_remove_flag(_voltageLabel, LV_OBJ_FLAG_HIDDEN);
}
}
static void create_lvgl_demo(void)
@@ -393,6 +400,23 @@ static void createBubble(lv_obj_t * scr)
// (usually on the next tick, or immediately if LVGL is idle).
_bubble = level;
#if 0
// Create voltage label at the top
_voltageLabel = lv_label_create(scr);
lv_label_set_text(_voltageLabel, "---- mV");
lv_obj_align(_voltageLabel, LV_ALIGN_TOP_MID, 0, 10);
lv_obj_set_style_text_font(_voltageLabel, &lv_font_montserrat_14, 0);
// Add white background for contrast
lv_obj_set_style_bg_color(_voltageLabel, lv_color_hex(0xFFFFFF), 0);
lv_obj_set_style_bg_opa(_voltageLabel, LV_OPA_COVER, 0);
lv_obj_set_style_text_color(_voltageLabel, lv_color_hex(0x000000), 0);
lv_obj_set_style_pad_left(_voltageLabel, 8, 0);
lv_obj_set_style_pad_right(_voltageLabel, 8, 0);
lv_obj_set_style_pad_top(_voltageLabel, 4, 0);
lv_obj_set_style_pad_bottom(_voltageLabel, 4, 0);
lv_obj_set_style_radius(_voltageLabel, 4, 0);
#endif
}
@@ -1289,6 +1313,9 @@ static void show_bt_device_list(void) {
lv_obj_remove_flag(menu, LV_OBJ_FLAG_HIDDEN);
lv_obj_add_flag(_bubble, LV_OBJ_FLAG_HIDDEN);
if (_voltageLabel != NULL) {
lv_obj_add_flag(_voltageLabel, LV_OBJ_FLAG_HIDDEN);
}
@@ -1420,6 +1447,9 @@ static void show_volume_control(void) {
lv_obj_remove_flag(menu, LV_OBJ_FLAG_HIDDEN);
lv_obj_add_flag(_bubble, LV_OBJ_FLAG_HIDDEN);
if (_voltageLabel != NULL) {
lv_obj_add_flag(_voltageLabel, LV_OBJ_FLAG_HIDDEN);
}
ESP_LOGI(TAG, "Volume control displayed");
}
@@ -1685,6 +1715,9 @@ static void show_calibration_menu(void) {
lv_obj_remove_flag(menu, LV_OBJ_FLAG_HIDDEN);
lv_obj_add_flag(_bubble, LV_OBJ_FLAG_HIDDEN);
if (_voltageLabel != NULL) {
lv_obj_add_flag(_voltageLabel, LV_OBJ_FLAG_HIDDEN);
}
ESP_LOGI(TAG, "Calibration menu displayed");
}
@@ -1950,6 +1983,18 @@ static void gui_task(void *pvParameters)
{
ImuData_t d = system_getImuData();
bubble_setValue(_bubble, -d.angle);
#if 0
// Update voltage display
lvgl_port_lock(0);
int voltage_mv = system_getBatteryVoltage();
if (_voltageLabel != NULL) {
char buf[16];
snprintf(buf, sizeof(buf), "%d mV", voltage_mv);
lv_label_set_text(_voltageLabel, buf);
}
lvgl_port_unlock();
#endif
}
}