FluxDC/main/main.cpp

202 lines
8.0 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.

/*
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: CC0-1.0
*/
#include "main.h"
/*包含通讯协议头文件*/
#include "FluxProtocol.h"
#define PROGRESS_DELAY_TIME 500
/* 声明清空测试结果的函数 */
static void ui_bs_parm_clear(void);
extern "C" void app_main(void)
{
/*初始化SD卡*/
flux_sd_init();
//sntp_init();
/* Initialize the display interface */
initialize_display_and_touch();
#if LOG_RECORD_ENABLE
sd_current_fileIndex_get();
/* 根据新获得的索引值创建日志文件及测试记录文件 */
/* 日志文件名:/sdcard/log[file_index].txt */
/* 测试结果文件名:/sdcard/result[file_index].csv */
/* 创建日志文件 */
sprintf(sdData.log_file_dir,"/sdcard/log%d.txt",sdData.file_index);
FILE *log_f = fopen(sdData.log_file_dir, "w");
fprintf(log_f, "/sdcard/log%d.txt This is a log file.....\n",sdData.file_index);
fclose(log_f);
/* 创建测试结果文件 */
sprintf(sdData.test_file_dir,"/sdcard/result%d.txt",sdData.file_index);
FILE *result_f = fopen(sdData.test_file_dir, "w");
/* 文件头为 时间戳、设备类型、挡位、频率、流量体积 */
fprintf(result_f, "timestamp,timeStr,device type,stage,rate,volume\n");
fclose(result_f);
#endif
// Lock the mutex because LVGL APIs are not thread-safe
// Need to lock the scheduler before modifying UI-related resources
if (example_lvgl_lock(-1))
{
/*配置LEDC进行背光亮度调节 */
example_ledc_init();
#if CONFIG_WIFI_SCAN_ENABLE
/*初始化wifi扫描环境*/
wifi_scanInit();
#endif
/*初始化页面元素*/
ui_init();
lv_scr_load_anim(uic_pageWelCome, LV_SCR_LOAD_ANIM_OUT_TOP, 0, 0, false);
lv_bar_set_value(ui_pageWelCome_barStartProgress,5,LV_ANIM_ON);
example_lvgl_unlock();
}
/*开启电源 需要解锁屏幕之后*/
flux_button_init();
gpio_set_level(EXAMPLE_PIN_NUM_BK_LIGHT, EXAMPLE_LCD_BK_LIGHT_ON_LEVEL);
lv_bar_set_value(ui_pageWelCome_barStartProgress,20,LV_ANIM_ON);
lv_label_set_text(ui_pageWelCome_labelStartInfo,"turned on backlight 20%");
vTaskDelay(PROGRESS_DELAY_TIME/portTICK_PERIOD_MS);
/*初始化按键*/
lv_bar_set_value(ui_pageWelCome_barStartProgress,30,LV_ANIM_ON);
lv_label_set_text(ui_pageWelCome_labelStartInfo,"Release the power button 30%");
vTaskDelay(PROGRESS_DELAY_TIME/portTICK_PERIOD_MS);
/*初始化电源管理系统*/
xTaskCreate(power_management_task, "powerTask", 4 * 1024, NULL, 2, NULL);
lv_bar_set_value(ui_pageWelCome_barStartProgress,50,LV_ANIM_ON);
lv_label_set_text(ui_pageWelCome_labelStartInfo,"power management system 50%");
vTaskDelay(PROGRESS_DELAY_TIME/portTICK_PERIOD_MS);
lv_bar_set_value(ui_pageWelCome_barStartProgress,70,LV_ANIM_ON);
lv_label_set_text(ui_pageWelCome_labelStartInfo,"WiFi scanning environment 70%");
vTaskDelay(PROGRESS_DELAY_TIME/portTICK_PERIOD_MS);
/*创建串口任务*/
/*创建UART1响应任务*/
xTaskCreate(uart1_echoTask, "uart1_echo_task", 8*1024, NULL, 10, NULL);
lv_bar_set_value(ui_pageWelCome_barStartProgress,90,LV_ANIM_ON);
lv_label_set_text(ui_pageWelCome_labelStartInfo,"serial port task 90%");
vTaskDelay(PROGRESS_DELAY_TIME/portTICK_PERIOD_MS);
/*创建本地时间同步任务*/
xTaskCreate(time_synic_task, "time_synic_task", 8*1024, NULL, 10, NULL);
/* 创建BS测试LED闪烁任务同时挂起 */
xTaskCreate(bs_test_led_task, "bs_test_led_task", 4 * 1024, NULL, 2, &bs_stateLED_task_handle);
vTaskSuspend(bs_stateLED_task_handle);
/* 创建NOM测试LED闪烁任务同时挂起 */
xTaskCreate(nom_test_led_task, "nom_test_led_task", 4 * 1024, NULL, 2, &nom_stateLED_task_handle);
vTaskSuspend(nom_stateLED_task_handle);
#if 0/*暂时不支持呼吸模拟器*/
/*创建UART2响应任务*/
xTaskCreate(uart2_echoTask, "uart2_echo_task", ECHO_TASK_STACK_SIZE, NULL, 10, NULL);
lv_bar_set_value(ui_pageWelCome_barStartProgress,100,LV_ANIM_ON);
lv_label_set_text(ui_pageWelCome_labelStartInfo,"serial port task 100%");
vTaskDelay(PROGRESS_DELAY_TIME/portTICK_PERIOD_MS);
#endif
lv_scr_load_anim(ui_pageHome, LV_SCR_LOAD_ANIM_OUT_TOP, 800, 0, false);
/*电源开启*/
POWER_ON;
/* 修改BS主界面中显示的数据 */
ui_bs_parm_clear();
/*初始上电后需要自动触发的一些小事件来更新界面界面元素*/
lv_textarea_set_text(ui_pageFluxDebug_textAreaContent,"");
/* 触发设备类型修改事件 */
lv_event_send(ui_pageSetting_dropdownDeviceType,LV_EVENT_VALUE_CHANGED,NULL);
lv_event_send(ui_pageHome_DropdownTestTypeBS,LV_EVENT_VALUE_CHANGED,NULL);
/* 触发挡位修改事件 */
lv_event_send(ui_pageHome_spinboxStage,LV_EVENT_VALUE_CHANGED,NULL);
lv_event_send(ui_pageHome_spinboxRate,LV_EVENT_VALUE_CHANGED,NULL);
/* 清除测试结果 */
lv_label_set_text(ui_pageHome_labelResultCompare,"");
lv_label_set_text(ui_pageHome_labelTestResult,"-");
/* 设置亮度 */
lv_slider_set_value(ui_pageSetting_sliderLight,DEFAULT_LIGHT,LV_ANIM_OFF);
lv_event_send(ui_pageSetting_sliderLight,LV_EVENT_VALUE_CHANGED,NULL);
#if LOG_RECORD_ENABLE
example_write_log("main 函数执行完毕");
#endif
/* 设置测试结果为绿色 */
lv_obj_set_style_text_color(ui_pageHome_LabelRate15Result, lv_color_hex(0x00FF00), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(ui_pageHome_LabelRate20Result, lv_color_hex(0x00FF00), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(ui_pageHome_LabelRate25Result, lv_color_hex(0x00FF00), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(ui_pageHome_LabelRate30Result, lv_color_hex(0x00FF00), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(ui_pageHome_LabelRate35Result, lv_color_hex(0x00FF00), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(ui_pageHome_LabelRate40Result, lv_color_hex(0x00FF00), LV_PART_MAIN | LV_STATE_DEFAULT);
/* 设置进度条为0 */
FLUX_PROGRESS_BAR_CONTROL(0);
}
static void ui_bs_parm_clear(void)
{
/* 15BPM清空 */
lv_label_set_text(ui_pageHome_LabelRate15DOWN, "--.-");
lv_label_set_text(ui_pageHome_LabelRate15UP, "--.-");
lv_label_set_text(ui_pageHome_LabelRate15STD, "--.-");
lv_label_set_text(ui_pageHome_LabelRate15Result, "0");
/* 20BPM清空 */
lv_label_set_text(ui_pageHome_LabelRate20DOWN, "--.-");
lv_label_set_text(ui_pageHome_LabelRate20UP, "--.-");
lv_label_set_text(ui_pageHome_LabelRate20STD, "--.-");
lv_label_set_text(ui_pageHome_LabelRate20Result, "0");
/* 25BPM清空 */
lv_label_set_text(ui_pageHome_LabelRate25DOWN, "--.-");
lv_label_set_text(ui_pageHome_LabelRate25UP, "--.-");
lv_label_set_text(ui_pageHome_LabelRate25STD, "--.-");
lv_label_set_text(ui_pageHome_LabelRate25Result, "0");
/* 30BPM清空 */
lv_label_set_text(ui_pageHome_LabelRate30DOWN, "--.-");
lv_label_set_text(ui_pageHome_LabelRate30UP, "--.-");
lv_label_set_text(ui_pageHome_LabelRate30STD, "--.-");
lv_label_set_text(ui_pageHome_LabelRate30Result, "0");
/* 35BPM清空 */
lv_label_set_text(ui_pageHome_LabelRate35DOWN, "--.-");
lv_label_set_text(ui_pageHome_LabelRate35UP, "--.-");
lv_label_set_text(ui_pageHome_LabelRate35STD, "--.-");
lv_label_set_text(ui_pageHome_LabelRate35Result, "0");
/* 40BPM清空 */
lv_label_set_text(ui_pageHome_LabelRate40DOWN, "--.-");
lv_label_set_text(ui_pageHome_LabelRate40UP, "--.-");
lv_label_set_text(ui_pageHome_LabelRate40STD, "--.-");
lv_label_set_text(ui_pageHome_LabelRate40Result, "0");
//修改了
}