2025-03-14 18:59:49 +08:00
|
|
|
|
/*
|
|
|
|
|
|
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
|
|
|
|
|
|
*
|
|
|
|
|
|
* SPDX-License-Identifier: CC0-1.0
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#include "main.h"
|
|
|
|
|
|
|
2025-03-17 09:50:22 +08:00
|
|
|
|
/*包含通讯协议头文件*/
|
|
|
|
|
|
#include "FluxProtocol.h"
|
2025-03-14 18:59:49 +08:00
|
|
|
|
|
2025-03-27 14:57:30 +08:00
|
|
|
|
#define PROGRESS_DELAY_TIME 500
|
|
|
|
|
|
|
2025-04-22 15:14:43 +08:00
|
|
|
|
|
2025-04-22 13:51:54 +08:00
|
|
|
|
/* 声明清空测试结果的函数 */
|
|
|
|
|
|
static void ui_bs_parm_clear(void);
|
|
|
|
|
|
|
2025-04-25 08:19:43 +08:00
|
|
|
|
static void create_bs_test_result_file(void)
|
2025-03-14 18:59:49 +08:00
|
|
|
|
{
|
2025-04-25 08:19:43 +08:00
|
|
|
|
FILE *nm_result_f;
|
|
|
|
|
|
FILE *log_f;
|
2025-03-14 18:59:49 +08:00
|
|
|
|
|
2025-04-21 14:06:52 +08:00
|
|
|
|
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);
|
|
|
|
|
|
|
2025-04-25 08:19:43 +08:00
|
|
|
|
log_f = fopen(sdData.log_file_dir, "w");
|
|
|
|
|
|
if (log_f == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
ESP_LOGI("main.cpp", "Failed to open file for writing log");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fprintf(log_f, "time_str,file,line,msg\n");
|
2025-04-21 14:06:52 +08:00
|
|
|
|
fclose(log_f);
|
|
|
|
|
|
|
|
|
|
|
|
/* 创建测试结果文件 */
|
2025-04-25 08:19:43 +08:00
|
|
|
|
sprintf(sdData.test_file_dir,"/sdcard/ret%d.txt",sdData.file_index);
|
|
|
|
|
|
nm_result_f = fopen(sdData.test_file_dir, "w");
|
|
|
|
|
|
|
|
|
|
|
|
if(nm_result_f == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
ESP_LOGI("main.cpp", "Failed to open file for writing nm");
|
|
|
|
|
|
}
|
2025-04-23 16:00:26 +08:00
|
|
|
|
/* 文件头为 时间戳、是否Nom模式、设备类型、挡位、频率、流量体积 */
|
2025-04-25 08:19:43 +08:00
|
|
|
|
fprintf(nm_result_f, "timestamp,timeStr,is_nom,device type,stage,rate,volume\n");
|
|
|
|
|
|
fclose(nm_result_f);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 创建bs测试记录文件 */
|
|
|
|
|
|
sprintf(sdData.bs_file_dir,"/sdcard/bs%d.txt",sdData.file_index);
|
|
|
|
|
|
FILE *bs_result_f = fopen(sdData.bs_file_dir, "w");
|
|
|
|
|
|
fprintf(bs_result_f, BS_RESULT_FILE_HEADER);
|
|
|
|
|
|
fclose(bs_result_f);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
extern "C" void app_main(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
/*初始化SD卡*/
|
|
|
|
|
|
flux_sd_init();
|
|
|
|
|
|
//sntp_init();
|
|
|
|
|
|
/* Initialize the display interface */
|
|
|
|
|
|
initialize_display_and_touch();
|
2025-04-21 14:06:52 +08:00
|
|
|
|
|
2025-04-25 08:19:43 +08:00
|
|
|
|
#if LOG_RECORD_ENABLE
|
|
|
|
|
|
create_bs_test_result_file();
|
2025-03-26 18:59:32 +08:00
|
|
|
|
#endif
|
|
|
|
|
|
|
2025-03-15 09:37:07 +08:00
|
|
|
|
// Lock the mutex because LVGL APIs are not thread-safe
|
|
|
|
|
|
// Need to lock the scheduler before modifying UI-related resources
|
2025-03-15 13:17:10 +08:00
|
|
|
|
if (example_lvgl_lock(-1))
|
|
|
|
|
|
{
|
2025-03-15 09:37:07 +08:00
|
|
|
|
|
2025-03-15 13:17:10 +08:00
|
|
|
|
/*配置LEDC进行背光亮度调节 */
|
|
|
|
|
|
example_ledc_init();
|
2025-04-19 09:30:40 +08:00
|
|
|
|
|
|
|
|
|
|
#if CONFIG_WIFI_SCAN_ENABLE
|
2025-03-15 13:17:10 +08:00
|
|
|
|
/*初始化wifi扫描环境*/
|
|
|
|
|
|
wifi_scanInit();
|
2025-04-19 09:30:40 +08:00
|
|
|
|
#endif
|
2025-03-15 13:17:10 +08:00
|
|
|
|
|
|
|
|
|
|
/*初始化页面元素*/
|
|
|
|
|
|
ui_init();
|
2025-03-15 09:37:07 +08:00
|
|
|
|
|
2025-03-15 13:17:10 +08:00
|
|
|
|
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);
|
2025-03-14 18:59:49 +08:00
|
|
|
|
|
|
|
|
|
|
example_lvgl_unlock();
|
2025-03-15 17:03:59 +08:00
|
|
|
|
}
|
2025-04-25 08:19:43 +08:00
|
|
|
|
|
|
|
|
|
|
/*开启电源 需要解锁屏幕之后*/
|
|
|
|
|
|
flux_button_init();
|
|
|
|
|
|
|
|
|
|
|
|
/* 创建用于记录测试的事件组*/
|
|
|
|
|
|
g_bs_test_event_group = xEventGroupCreate();
|
|
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
|
|
/* 设置当前信息 */
|
|
|
|
|
|
lv_label_set_text(ui_pageHome_labelBSInfo,"wait for test");
|
2025-04-25 09:03:30 +08:00
|
|
|
|
lv_label_set_text(ui_pageHome_labelstr21,"--BPM");
|
2025-04-21 14:06:52 +08:00
|
|
|
|
|
2025-04-22 15:14:43 +08:00
|
|
|
|
/* 设置测试结果为绿色 */
|
|
|
|
|
|
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);
|
2025-04-25 08:19:43 +08:00
|
|
|
|
|
|
|
|
|
|
#if LOG_RECORD_ENABLE
|
|
|
|
|
|
example_write_log("main函数执行完毕",__FILE__,__LINE__);
|
|
|
|
|
|
#endif
|
2025-04-22 13:51:54 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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, "--.-");
|
2025-04-22 15:14:43 +08:00
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate15Result, "0");
|
2025-04-22 13:51:54 +08:00
|
|
|
|
|
|
|
|
|
|
/* 20BPM清空 */
|
|
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate20DOWN, "--.-");
|
|
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate20UP, "--.-");
|
|
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate20STD, "--.-");
|
2025-04-22 15:14:43 +08:00
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate20Result, "0");
|
2025-04-22 13:51:54 +08:00
|
|
|
|
|
|
|
|
|
|
/* 25BPM清空 */
|
|
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate25DOWN, "--.-");
|
|
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate25UP, "--.-");
|
|
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate25STD, "--.-");
|
2025-04-22 15:14:43 +08:00
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate25Result, "0");
|
2025-04-22 13:51:54 +08:00
|
|
|
|
|
|
|
|
|
|
/* 30BPM清空 */
|
|
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate30DOWN, "--.-");
|
|
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate30UP, "--.-");
|
|
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate30STD, "--.-");
|
2025-04-22 15:14:43 +08:00
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate30Result, "0");
|
2025-04-22 13:51:54 +08:00
|
|
|
|
|
|
|
|
|
|
/* 35BPM清空 */
|
|
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate35DOWN, "--.-");
|
|
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate35UP, "--.-");
|
|
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate35STD, "--.-");
|
2025-04-22 15:14:43 +08:00
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate35Result, "0");
|
2025-04-22 13:51:54 +08:00
|
|
|
|
|
|
|
|
|
|
/* 40BPM清空 */
|
|
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate40DOWN, "--.-");
|
|
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate40UP, "--.-");
|
|
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate40STD, "--.-");
|
2025-04-22 15:14:43 +08:00
|
|
|
|
lv_label_set_text(ui_pageHome_LabelRate40Result, "0");
|
2025-04-22 14:01:10 +08:00
|
|
|
|
//修改了
|
2025-03-14 18:59:49 +08:00
|
|
|
|
}
|