Files
luban-lite-t3e-pro/application/rt-thread/t3e-pro/components/gui_guider.c
2025-09-30 11:56:06 +08:00

630 lines
23 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* Copyright 2024 NXP
* NXP Confidential and Proprietary. This software is owned or controlled by NXP and may only be used strictly in
* accordance with the applicable license terms. By expressly accepting such terms or by downloading, installing,
* activating and/or otherwise using the software, you are agreeing that you have read, and that you agree to
* comply with and are bound by, such license terms. If you do not agree to be bound by the applicable license
* terms, then you may not retain, install, activate or otherwise use the software.
*/
#include <unistd.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include "rtthread.h"
#include "rtdevice.h"
#include "rtconfig.h"
#include <aic_core.h>
#include <aic_hal.h>
#include "lvgl.h"
#include <stdio.h>
#include "gui_guider.h"
#if LV_USE_FREEMASTER
#include "gg_external_data.h"
#endif
#include "aic_ui.h"
#include "events_init.h"
#include "custom.h"
#include "nvs_eepom.h"
#include "zigbee_fun.h"
#include "esp32_clock.h"
#include "app_sr_fun.h"
#define DBG_TAG "guider"
#define DBG_LVL DBG_INFO
#include <rtdbg.h>
lv_ui guider_ui;
//投影仪的音量
const char Air_Projector_volume_ary[5][64]=
{
"L:/rodata/lvgl_data/projector_vol_1.png",
"L:/rodata/lvgl_data/projector_vol_2.png",
"L:/rodata/lvgl_data/projector_vol_3.png",
"L:/rodata/lvgl_data/projector_vol_4.png",
"L:/rodata/lvgl_data/projector_vol_5.png",
};
//模式//5
const char Air_conditioner_mode_ary[5][64]=
{
"L:/rodata/lvgl_data/air_mode1.png",
"L:/rodata/lvgl_data/air_mode2.png",
"L:/rodata/lvgl_data/air_mode3.png",
"L:/rodata/lvgl_data/air_mode4.png",
"L:/rodata/lvgl_data/air_mode5.png",
};
//风速//4
const char Air_conditioner_fan_ary[4][64]=
{
"L:/rodata/lvgl_data/air_fan1.png",
"L:/rodata/lvgl_data/air_fan2.png",
"L:/rodata/lvgl_data/air_fan3.png",
"L:/rodata/lvgl_data/air_fan4.png",
};
//风向//5
const char Air_conditioner_dir_ary[5][64]=
{
"L:/rodata/lvgl_data/air_dir1.png",
"L:/rodata/lvgl_data/air_dir2.png",
"L:/rodata/lvgl_data/air_dir3.png",
"L:/rodata/lvgl_data/air_dir4.png",
"L:/rodata/lvgl_data/air_dir5.png",
};
const char scene_iconbgimg_ary[12][64]=
{
"",//占位,用于表示使用默认图标
"L:/rodata/lvgl_data/scenbg1.png",
"L:/rodata/lvgl_data/scenbg2.png",
"L:/rodata/lvgl_data/scenbg3.png",
"L:/rodata/lvgl_data/scenbg4.png",
"L:/rodata/lvgl_data/scenbg5.png",
"L:/rodata/lvgl_data/scenbg6.png",
"L:/rodata/lvgl_data/scenbg7.png",
"L:/rodata/lvgl_data/scenbg8.png",
"L:/rodata/lvgl_data/scenbg9.png",
"L:/rodata/lvgl_data/scenbg10.png",
"L:/rodata/lvgl_data/scenbg11.png",
};
const char onoff_keyligthimgon_ary[16][64]=
{
"",//占位,用于表示使用默认图标//0
LVGL_PATH(onofflighton1.png),// "L:/rodata/lvgl_data/onofflighton1.png",
LVGL_PATH(onofflighton2.png),// "L:/rodata/lvgl_data/onofflighton2.png",
LVGL_PATH(onofflighton3.png),// "L:/rodata/lvgl_data/onofflighton3.png",
LVGL_PATH(onofflighton4.png),// "L:/rodata/lvgl_data/onofflighton4.png",
LVGL_PATH(onofflighton5.png),// "L:/rodata/lvgl_data/onofflighton5.png",
LVGL_PATH(onofflighton6.png),// "L:/rodata/lvgl_data/onofflighton6.png",
LVGL_PATH(onofflighton7.png),// "L:/rodata/lvgl_data/onofflighton7.png",
LVGL_PATH(onofflighton8.png),// "L:/rodata/lvgl_data/onofflighton8.png",
LVGL_PATH(onofflighton9.png),// "L:/rodata/lvgl_data/onofflighton9.png",
LVGL_PATH(onofflighton10.png),// "L:/rodata/lvgl_data/onofflighton10.png",
LVGL_PATH(onofflighton11.png),// "L:/rodata/lvgl_data/onofflighton11.png",
LVGL_PATH(onofflighton12.png),// "L:/rodata/lvgl_data/onofflighton12.png",
LVGL_PATH(onofflighton13.png),// "L:/rodata/lvgl_data/onofflighton13.png",
LVGL_PATH(onofflighton14.png),// "L:/rodata/lvgl_data/onofflighton14.png",
LVGL_PATH(onofflighton15.png),// "L:/rodata/lvgl_data/onofflighton15.png",
};
const char onoff_keyligthimgoff_ary[16][64]=
{
"",//占位,用于表示使用默认图标
LVGL_PATH(onofflightoff1.png),// "L:/rodata/lvgl_data/onofflightoff1.png",
LVGL_PATH(onofflightoff2.png),// "L:/rodata/lvgl_data/onofflightoff2.png",
LVGL_PATH(onofflightoff3.png),// "L:/rodata/lvgl_data/onofflightoff3.png",
LVGL_PATH(onofflightoff4.png),// "L:/rodata/lvgl_data/onofflightoff4.png",
LVGL_PATH(onofflightoff5.png),// "L:/rodata/lvgl_data/onofflightoff5.png",
LVGL_PATH(onofflightoff6.png),// "L:/rodata/lvgl_data/onofflightoff6.png",
LVGL_PATH(onofflightoff7.png),// "L:/rodata/lvgl_data/onofflightoff7.png",
LVGL_PATH(onofflightoff8.png),// "L:/rodata/lvgl_data/onofflightoff8.png",
LVGL_PATH(onofflightoff9.png),// "L:/rodata/lvgl_data/onofflightoff9.png",
LVGL_PATH(onofflightoff10.png),// "L:/rodata/lvgl_data/onofflightoff10.png",
LVGL_PATH(onofflightoff11.png),// "L:/rodata/lvgl_data/onofflightoff11.png",
LVGL_PATH(onofflightoff12.png),// "L:/rodata/lvgl_data/onofflightoff12.png",
LVGL_PATH(onofflightoff13.png),// "L:/rodata/lvgl_data/onofflightoff13.png",
LVGL_PATH(onofflightoff14.png),// "L:/rodata/lvgl_data/onofflightoff14.png",
LVGL_PATH(onofflightoff15.png),// "L:/rodata/lvgl_data/onofflightoff15.png",
};
const char onoff_switchlight_icon_ary[20][64]=
{
"",//占位,用于表示使用默认图标//0
"L:/rodata/lvgl_data/lighgt_icon_01.png",//LVGL_PATH(lighgt_icon_01.png),// "L:/rodata/lvgl_data/onofflighton1.png",
"L:/rodata/lvgl_data/lighgt_icon_02.png",//LVGL_PATH(lighgt_icon_02.png),// "L:/rodata/lvgl_data/onofflighton2.png",
"L:/rodata/lvgl_data/lighgt_icon_03.png",//LVGL_PATH(lighgt_icon_03.png),// "L:/rodata/lvgl_data/onofflighton3.png",
"L:/rodata/lvgl_data/lighgt_icon_04.png",//LVGL_PATH(lighgt_icon_04.png),// "L:/rodata/lvgl_data/onofflighton4.png",
"L:/rodata/lvgl_data/lighgt_icon_05.png",//LVGL_PATH(lighgt_icon_05.png),// "L:/rodata/lvgl_data/onofflighton5.png",
"L:/rodata/lvgl_data/lighgt_icon_06.png",//LVGL_PATH(lighgt_icon_06.png),// "L:/rodata/lvgl_data/onofflighton6.png",
"L:/rodata/lvgl_data/lighgt_icon_07.png",//LVGL_PATH(lighgt_icon_07.png),// "L:/rodata/lvgl_data/onofflighton7.png",
"L:/rodata/lvgl_data/lighgt_icon_08.png",//LVGL_PATH(lighgt_icon_08.png),// "L:/rodata/lvgl_data/onofflighton8.png",
"L:/rodata/lvgl_data/lighgt_icon_09.png",//LVGL_PATH(lighgt_icon_09.png),// "L:/rodata/lvgl_data/onofflighton9.png",
"L:/rodata/lvgl_data/lighgt_icon_10.png",//LVGL_PATH(lighgt_icon_10.png),// "L:/rodata/lvgl_data/onofflighton10.png",
"L:/rodata/lvgl_data/lighgt_icon_11.png",//LVGL_PATH(lighgt_icon_11.png),// "L:/rodata/lvgl_data/onofflighton11.png",
"L:/rodata/lvgl_data/lighgt_icon_12.png",//LVGL_PATH(lighgt_icon_12.png),// "L:/rodata/lvgl_data/onofflighton12.png",
"L:/rodata/lvgl_data/lighgt_icon_13.png",//LVGL_PATH(lighgt_icon_13.png),// "L:/rodata/lvgl_data/onofflighton13.png",
"L:/rodata/lvgl_data/lighgt_icon_14.png",//LVGL_PATH(lighgt_icon_14.png),// "L:/rodata/lvgl_data/onofflighton14.png",
"L:/rodata/lvgl_data/lighgt_icon_15.png",//LVGL_PATH(lighgt_icon_15.png),// "L:/rodata/lvgl_data/onofflighton15.png",
"L:/rodata/lvgl_data/lighgt_icon_16.png",//LVGL_PATH(lighgt_icon_16.png),// "L:/rodata/lvgl_data/onofflighton15.png",
"L:/rodata/lvgl_data/lighgt_icon_17.png",//LVGL_PATH(lighgt_icon_17.png),// "L:/rodata/lvgl_data/onofflighton15.png",
"L:/rodata/lvgl_data/lighgt_icon_18.png",//LVGL_PATH(lighgt_icon_18.png),// "L:/rodata/lvgl_data/onofflighton15.png",
"L:/rodata/lvgl_data/lighgt_icon_19.png",//LVGL_PATH(lighgt_icon_19.png),// "L:/rodata/lvgl_data/onofflighton15.png",
};
// lv_font_t *&lv_font_DroidSansFallback_12;
// lv_font_t *&lv_font_DroidSansFallback_14;
// lv_font_t *&lv_font_simsun_16;
// lv_font_t *&lv_font_DroidSansFallback_20;
// lv_font_t *lv_font_simsun_48;
// lv_font_t * lv_font_DroidSansFallback_60;
lv_font_t *ui_font_init(char *path, int size) {
printf("path:%s\r\n",path);
#if LVGL_VERSION_MAJOR == 8
static lv_ft_info_t info;
info.name = path;
info.weight = size;
info.style = FT_FONT_STYLE_NORMAL;
info.mem = NULL;
if (!lv_ft_font_init(&info))
return NULL;
return info.font;
#else
lv_font_t *font = lv_freetype_font_create(path,
LV_FREETYPE_FONT_RENDER_MODE_BITMAP,
size,
LV_FREETYPE_FONT_STYLE_NORMAL);
return font;
#endif //LVGL_VERSION_MAJOR
//return NULL;
}
//上电加载freetype字库及字体
void ui_font_load(void)
{
// &lv_font_DroidSansFallback_12 = ui_font_init(LVGL_FONT_PATH(albbhptR.ttf), 12);
// if (!&lv_font_DroidSansFallback_12) {
// //LV_LOG_ERROR("Failed to init &lv_font_DroidSansFallback_12");
// //return;
// rt_kprintf("Failed to init &lv_font_DroidSansFallback_12\n");
// }
// else{
// rt_kprintf("suss to init &lv_font_DroidSansFallback_12\n");
// }
// &lv_font_DroidSansFallback_14 = ui_font_init(LVGL_FONT_PATH(albbhptR.ttf), 14);
// if (!&lv_font_DroidSansFallback_14) {
// //LV_LOG_ERROR("Failed to init &lv_font_DroidSansFallback_14");
// //return;
// rt_kprintf("Failed to init &lv_font_DroidSansFallback_14\n");
// }
// else{
// rt_kprintf("suss to init &lv_font_DroidSansFallback_14\n");
// }
// &lv_font_simsun_16 = ui_font_init(LVGL_FONT_PATH(albbhptR.ttf), 16);
// if (!&lv_font_simsun_16) {
// //LV_LOG_ERROR("Failed to init &lv_font_simsun_16");
// //return;
// rt_kprintf("Failed to init &lv_font_simsun_16\n");
// }
// else{
// rt_kprintf("suss to init &lv_font_simsun_16\n");
// }
// &lv_font_DroidSansFallback_20 = ui_font_init(LVGL_FONT_PATH(albbhptR.ttf), 20);
// if (!&lv_font_DroidSansFallback_20) {
// //LV_LOG_ERROR("Failed to init &lv_font_DroidSansFallback_20");
// //return;
// rt_kprintf("Failed to init &lv_font_DroidSansFallback_20\n");
// }
// else{
// rt_kprintf("suss to init &lv_font_DroidSansFallback_20\n");
// }
// lv_font_simsun_48 = ui_font_init(LVGL_FONT_PATH(albbhptR.ttf), 48);
// if (!lv_font_simsun_48) {
// //LV_LOG_ERROR("Failed to init lv_font_simsun_48");
// //return;
// rt_kprintf("Failed to init lv_font_simsun_48\n");
// }
// else{
// rt_kprintf("suss to init lv_font_simsun_48\n");
// }
// lv_font_DroidSansFallback_60 = ui_font_init(LVGL_FONT_PATH(albbhptR.ttf), 60);
// if (!lv_font_DroidSansFallback_60) {
// //LV_LOG_ERROR("Failed to init lv_font_DroidSansFallback_60");
// //return;
// rt_kprintf("Failed to init lv_font_DroidSansFallback_60\n");
// }
// else{
// rt_kprintf("suss to init lv_font_DroidSansFallback_60\n");
// }
}
void ui_init_style(lv_style_t * style)
{
if (style->prop_cnt > 1)
lv_style_reset(style);
else
lv_style_init(style);
}
void ui_load_scr_animation(lv_ui *ui, lv_obj_t ** new_scr, bool new_scr_del, bool * old_scr_del, ui_setup_scr_t setup_scr,
lv_scr_load_anim_t anim_type, uint32_t time, uint32_t delay, bool is_clean, bool auto_del)
{
lv_obj_t * act_scr = lv_scr_act();
#if LV_USE_FREEMASTER
if(auto_del) {
gg_edata_task_clear(act_scr);
}
#endif
if (auto_del && is_clean) {
lv_obj_clean(act_scr);
}
if (new_scr_del) {
setup_scr(ui);
}
lv_scr_load_anim(*new_scr, anim_type, time, delay, auto_del);
*old_scr_del = auto_del;
}
void ui_move_animation(void * var, int32_t duration, int32_t delay, int32_t x_end, int32_t y_end, lv_anim_path_cb_t path_cb,
uint16_t repeat_cnt, uint32_t repeat_delay, uint32_t playback_time, uint32_t playback_delay,
lv_anim_start_cb_t start_cb, lv_anim_ready_cb_t ready_cb, lv_anim_deleted_cb_t deleted_cb)
{
lv_anim_t anim;
lv_anim_init(&anim);
lv_anim_set_var(&anim, var);
lv_anim_set_time(&anim, duration);
lv_anim_set_delay(&anim, delay);
lv_anim_set_path_cb(&anim, path_cb);
lv_anim_set_repeat_count(&anim, repeat_cnt);
lv_anim_set_repeat_delay(&anim, repeat_delay);
lv_anim_set_playback_time(&anim, playback_time);
lv_anim_set_playback_delay(&anim, playback_delay);
lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t)lv_obj_set_x);
lv_anim_set_values(&anim, lv_obj_get_x(var), x_end);
lv_anim_start(&anim);
lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t)lv_obj_set_y);
lv_anim_set_values(&anim, lv_obj_get_y(var), y_end);
lv_anim_set_start_cb(&anim, start_cb);
lv_anim_set_ready_cb(&anim, ready_cb);
lv_anim_set_deleted_cb(&anim, deleted_cb);
lv_anim_start(&anim);
}
void ui_scale_animation(void * var, int32_t duration, int32_t delay, int32_t width, int32_t height, lv_anim_path_cb_t path_cb,
uint16_t repeat_cnt, uint32_t repeat_delay, uint32_t playback_time, uint32_t playback_delay,
lv_anim_start_cb_t start_cb, lv_anim_ready_cb_t ready_cb, lv_anim_deleted_cb_t deleted_cb)
{
lv_anim_t anim;
lv_anim_init(&anim);
lv_anim_set_var(&anim, var);
lv_anim_set_time(&anim, duration);
lv_anim_set_delay(&anim, delay);
lv_anim_set_path_cb(&anim, path_cb);
lv_anim_set_repeat_count(&anim, repeat_cnt);
lv_anim_set_repeat_delay(&anim, repeat_delay);
lv_anim_set_playback_time(&anim, playback_time);
lv_anim_set_playback_delay(&anim, playback_delay);
lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t)lv_obj_set_width);
lv_anim_set_values(&anim, lv_obj_get_width(var), width);
lv_anim_start(&anim);
lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t)lv_obj_set_height);
lv_anim_set_values(&anim, lv_obj_get_height(var), height);
lv_anim_set_start_cb(&anim, start_cb);
lv_anim_set_ready_cb(&anim, ready_cb);
lv_anim_set_deleted_cb(&anim, deleted_cb);
lv_anim_start(&anim);
}
void ui_img_zoom_animation(void * var, int32_t duration, int32_t delay, int32_t zoom, lv_anim_path_cb_t path_cb,
uint16_t repeat_cnt, uint32_t repeat_delay, uint32_t playback_time, uint32_t playback_delay,
lv_anim_start_cb_t start_cb, lv_anim_ready_cb_t ready_cb, lv_anim_deleted_cb_t deleted_cb)
{
lv_anim_t anim;
lv_anim_init(&anim);
lv_anim_set_var(&anim, var);
lv_anim_set_time(&anim, duration);
lv_anim_set_delay(&anim, delay);
lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t)lv_img_set_zoom);
lv_anim_set_values(&anim, lv_img_get_zoom(var), zoom);
lv_anim_set_path_cb(&anim, path_cb);
lv_anim_set_repeat_count(&anim, repeat_cnt);
lv_anim_set_repeat_delay(&anim, repeat_delay);
lv_anim_set_playback_time(&anim, playback_time);
lv_anim_set_playback_delay(&anim, playback_delay);
lv_anim_set_start_cb(&anim, start_cb);
lv_anim_set_ready_cb(&anim, ready_cb);
lv_anim_set_deleted_cb(&anim, deleted_cb);
lv_anim_start(&anim);
}
void ui_img_rotate_animation(void * var, int32_t duration, int32_t delay, lv_coord_t x, lv_coord_t y, int32_t rotate,
lv_anim_path_cb_t path_cb, uint16_t repeat_cnt, uint32_t repeat_delay, uint32_t playback_time, uint32_t playback_delay,
lv_anim_start_cb_t start_cb, lv_anim_ready_cb_t ready_cb, lv_anim_deleted_cb_t deleted_cb)
{
lv_anim_t anim;
lv_anim_init(&anim);
lv_anim_set_var(&anim, var);
lv_anim_set_time(&anim, duration);
lv_anim_set_delay(&anim, delay);
lv_img_set_pivot(var, x, y);
lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t)lv_img_set_angle);
lv_anim_set_values(&anim, 0, rotate*10);
lv_anim_set_path_cb(&anim, path_cb);
lv_anim_set_repeat_count(&anim, repeat_cnt);
lv_anim_set_repeat_delay(&anim, repeat_delay);
lv_anim_set_playback_time(&anim, playback_time);
lv_anim_set_playback_delay(&anim, playback_delay);
lv_anim_set_start_cb(&anim, start_cb);
lv_anim_set_ready_cb(&anim, ready_cb);
lv_anim_set_deleted_cb(&anim, deleted_cb);
lv_anim_start(&anim);
}
void init_scr_del_flag(lv_ui *ui)
{
ui->screen_main_del = true;
ui->setting_del = true;
ui->mianinfopage_del = true;
ui->langinfopage_del = true;
ui->displayinfopage_del = true;
ui->smartinfopage_del = true;
ui->firstinfopage_del = true;
ui->relayinfopage_del = true;
ui->scene_del = true;
ui->onoff_del = true;
ui->onoff1_del = true;
ui->onoff2_del = true;
ui->onoff3_del = true;
ui->onoff4_del = true;
ui->onofftime1_del = true;
ui->onofftime2_del = true;
ui->onofftime3_del = true;
ui->onofftime4_del = true;
ui->dimmer_del = true;
ui->dimmerinfo_del = true;
ui->curtain_del = true;
ui->device_del = true;
ui->dimmerinfo_del = true;
ui->curtaininfo_del = true;
ui->rollersinfo_del = true;
ui->screensaver_del = true;
ui->aircontrol_del = true;
ui->projectorcontrol_del = true;
}
void setup_ui(lv_ui *ui)
{
init_scr_del_flag(ui);
setup_scr_screen_main(ui);
lv_scr_load(ui->screen_main);
}
rt_thread_t monitor_thread = RT_NULL;
void print_custom_memory_info(void)
{
rt_size_t total,used,max_used;
rt_memory_info(&total,&used,&max_used); // 打印线程信息
rt_kprintf("Total memory: %d bytes\n", total);
rt_kprintf("Used memory: %d bytes\n", used);
rt_kprintf("max Used memory: %d bytes\n", max_used);
}
extern long list_thread(void);
void monitorTask(void *pvParameter)
{
// lv_mem_monitor_t mon;
while(1)
{
list_thread();
print_custom_memory_info();
rt_thread_mdelay(5000);//
//print_custom_memory_info();
}
}
#ifdef CONFIG_STARTUP_ANIMATION
lv_obj_t *startmain_container;
lv_anim_t startanim;
// bar对象动画回调函数
static void obj_bar_anim_exec_callback(void * bar, int32_t value)
{
if (bar != NULL)
{
lv_bar_set_value((lv_obj_t *)bar, value, LV_ANIM_ON); // 设置进度条对象的值
}
}
//Call the callback function at the end
static void obj_bar_anim_end_callback(lv_anim_t *anim)
{
printf("anim_end\r\n");
//删除动画 删除启动页
if(startmain_container)
{
lv_obj_del(startmain_container);
startmain_container=NULL;
}
setup_ui(&guider_ui);
events_init(&guider_ui);
custom_init(&guider_ui);//有custom_task任务调用初始化
zigbee_uart_int();
esp32Timeinit();
}
static void start_log_aimg_application(void)
{
lv_obj_t * startmain_container = lv_obj_create(lv_scr_act());
if ( startmain_container == NULL)
{
printf("[%s:%d] create startmain_container failed\n", __FUNCTION__, __LINE__);
return;
}
lv_obj_set_style_pad_all( startmain_container, 0, 0);
lv_obj_set_style_border_width( startmain_container, 0, 0);//边框宽
lv_obj_set_style_radius( startmain_container, 0, 0);//圆角大小
lv_obj_set_size( startmain_container, LV_PCT(100), LV_PCT(100)); // 设置尺寸
lv_obj_set_style_bg_opa( startmain_container, LV_OPA_100, 0); // 设置背景不透明度
lv_obj_set_style_bg_color( startmain_container, lv_color_hex(0), 0); // 设置背景颜色
lv_obj_center( startmain_container);
#if defined(CONFIG_CUSTOM_GOLDEN)//金安启动logo
#elif defined(CONFIG_CUSTOM_MOHAMMAD_SOHAIB)//
//Write codes screen_img_1
lv_obj_t *startlogo_img_1 = lv_img_create(startmain_container);
lv_obj_set_size(startlogo_img_1, 279, 75);
lv_obj_center( startlogo_img_1);
lv_img_set_src(startlogo_img_1, LVGL_PATH(mohammad_startlogo.png));
//Write style for startlogo_img_1, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.
lv_obj_set_style_img_opa(startlogo_img_1, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
// static lv_style_t style_bg;
// lv_style_init(&style_bg);
// lv_style_reset(&style_bg);
// lv_style_set_border_color(&style_bg, lv_color_hex(0xFFFFFF)); // 设置边框颜色
// lv_style_set_border_width(&style_bg, 2); // 设置边框宽度
// lv_style_set_pad_all(&style_bg, 6);
// lv_style_set_radius(&style_bg, 6); // 设置圆角弧度
// static lv_style_t style_indic;
// lv_style_reset(&style_indic);
// lv_style_init(&style_indic);
// lv_style_set_bg_opa(&style_indic, LV_OPA_COVER); // 设置背景不透明度
// lv_style_set_bg_color(&style_indic, lv_color_hex(0xFFFFFF));
// lv_style_set_radius(&style_indic, 3);
static lv_style_t style_bg;
lv_style_init(&style_bg);
lv_style_reset(&style_bg);
lv_style_set_border_color(&style_bg, lv_color_hex(0x000000)); // 设置边框颜色
lv_style_set_border_width(&style_bg, 0); // 设置边框宽度
lv_style_set_pad_all(&style_bg, 6);
lv_style_set_radius(&style_bg, 6); // 设置圆角弧度
static lv_style_t style_indic;
lv_style_reset(&style_indic);
lv_style_init(&style_indic);
lv_style_set_bg_opa(&style_indic, LV_OPA_COVER); // 设置背景不透明度
lv_style_set_bg_color(&style_indic, lv_color_hex(0x000000));
lv_style_set_radius(&style_indic, 3);
lv_obj_t * obj_bar = lv_bar_create( startmain_container);
if (obj_bar != NULL)
{
lv_obj_remove_style_all(obj_bar); // 清除所有样式
lv_obj_add_style(obj_bar, &style_bg, 0);
lv_obj_add_style(obj_bar, &style_indic, LV_PART_INDICATOR);
lv_obj_set_size(obj_bar, 400, 20);
lv_obj_align(obj_bar, LV_ALIGN_CENTER, 0,200);
lv_anim_init(&startanim); // 初始化动画
lv_anim_set_exec_cb(&startanim, obj_bar_anim_exec_callback); // 添加回调函数
startanim.ready_cb=&obj_bar_anim_end_callback;//动画效果结束后的回调函数可以根据需求自行填写lvgl内部其余组件一般是用这个回调做一些收尾工作比如释放内存
lv_anim_set_time(&startanim, 2000); // 设置动画时长
lv_anim_set_var(&startanim, obj_bar); // 动画绑定对象
lv_anim_set_values(&startanim, 0, 100); // 设置开始值和结束值
lv_anim_set_repeat_count(&startanim, 1); // 重复次数默认值为1 LV_ANIM_REPEAT_INFINIT用于无限重复
lv_anim_start(&startanim); // 应用动画效果
}
#else
#endif
}
#endif
void gui_guider_init(void)
{
rt_kprintf("nvs_eepom_init\r\n");
#if 1
ui_font_load();//加载ttf字库及字号
// //Write codes dimmer_group1_templabel
// lv_obj_t *dimmer_group1_templabel = lv_label_create(lv_scr_act());
// //lv_obj_set_pos(dimmer_group1_templabel, 0, 38);
// lv_obj_set_size(dimmer_group1_templabel, 480, 50);
// lv_obj_set_align(dimmer_group1_templabel, LV_ALIGN_CENTER);
// lv_label_set_text(dimmer_group1_templabel, "гджзлмнр椭粟棘酣酥硝硫颊雳翘凿棠晰鼎喳遏晾畴跋跛蛔蜒");
// lv_obj_set_style_text_color(dimmer_group1_templabel, lv_color_hex(0x000000), LV_PART_MAIN|LV_STATE_DEFAULT);
// lv_obj_set_style_text_font(dimmer_group1_templabel, &lv_font_DroidSansFallback_14, LV_PART_MAIN|LV_STATE_DEFAULT);
nvs_eepom_init();
// rt_kprintf("gui_guider_init\r\n");
//Create a GUI-Guider app
memset(&guider_ui,0,sizeof(guider_ui));//统一置0
#if defined(CONFIG_STARTUP_ANIMATION)
start_log_aimg_application();
#else
setup_ui(&guider_ui);
events_init(&guider_ui);
custom_init(&guider_ui);//有custom_task任务调用初始化
zigbee_uart_int();
esp32Timeinit();
#endif
////speech_uart_int();
//上电设置亮度
disp_driver_backlight_set(GET_nvs_Sys_Info_backlight());
LOG_I("backlight:0x%d",GET_nvs_Sys_Info_backlight());
//创建任务 监控内存
monitor_thread = rt_thread_create("monitor", //名称
monitorTask, //线程代码
RT_NULL, //参数
4096, //栈大小
11, //优先级
10); //时间片
if (monitor_thread != RT_NULL)
{
rt_thread_startup(monitor_thread); //线程进入就绪态
}
else
{
LOG_I("monitor_thread create failure\n");
}
#else
// #define IMG_SWICH_test "L:/rodata/lvgl_data/test1.png"
lv_obj_t *testimg_obj=lv_img_create(lv_scr_act());
lv_obj_set_size(testimg_obj, 386, 128);
lv_obj_center(testimg_obj);
lv_img_set_src(testimg_obj, LVGL_PATH(dimmer_color_temp_info.png));
#endif
}
//亮度 0~100
void disp_driver_backlight_set(int brightness)
{
//turn on the LcD backlight
#if defined(KERNEL_RTTHREAD) && defined(AIC_PWM_BACKLIGHT_CHANNEL)
struct rt_device_pwm *pwm_dev;
pwm_dev = (struct rt_device_pwm *)rt_device_find("pwm");
/* pwm frequency: 1KHz = 1000000ns */
rt_pwm_set(pwm_dev, AIC_PWM_BACKLIGHT_CHANNEL,1000000, 10000 * brightness);
rt_pwm_enable(pwm_dev, AIC_PWM_BACKLIGHT_CHANNEL);
#endif
}