Files
luban-lite-t3e-pro/application/rt-thread/t3e-pro/components/gui_guider.c

630 lines
23 KiB
C
Raw Normal View History

2025-09-30 11:56:06 +08:00
/*
* 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
}