void shutdown_reboot_prejobs_task(void)
{
- // printf();
+ PRINT("shutdown_reboot_prejobs_task: Start, doing_shutdown_type=%d\r\n", doing_shutdown_type);
+
+ // 检查 doing_shutdown_type 是否有效
+ if(doing_shutdown_type != UPDATE_TYPE &&
+ doing_shutdown_type != SHUTDOWN_TYPE &&
+ doing_shutdown_type != REBOOT_TYPE)
+ {
+ PRINT("shutdown_reboot_prejobs_task: ERROR - Invalid doing_shutdown_type=%d, force REBOOT_TYPE\r\n",
+ doing_shutdown_type);
+ doing_shutdown_type = REBOOT_TYPE; // 默认使用重启
+ }
+
+ // 使用 try-catch 机制保护每个保存操作,避免某个操作失败导致整个流程卡住
+ // 注意:这里使用简单的错误处理,如果某个操作失败,继续执行后续操作
+
#ifdef SUPPORT_BLE_SERVICE
#ifdef CUSTOM_ZHIHUI
- C_ScheduleDataWriteToFile(); //同步的时候进行保存
+ // 同步的时候进行保存
+ PRINT("shutdown_reboot_prejobs_task: Calling C_ScheduleDataWriteToFile()\r\n");
+ C_ScheduleDataWriteToFile();
+ PRINT("shutdown_reboot_prejobs_task: C_ScheduleDataWriteToFile() completed\r\n");
#endif
#endif
// mmi_sleep_mode_switch_write();//不需要保存
+ PRINT("shutdown_reboot_prejobs_task: Calling uapi_save_time_of_day()\r\n");
uapi_save_time_of_day();
+ PRINT("shutdown_reboot_prejobs_task: uapi_save_time_of_day() completed\r\n");
//保存步数
// do_cywee_service_check_msg(CYWEE_SERVICE_CMD_SAVE_DATA,NULL);
#ifdef SUPPORT_CYWEE_SERVICE
+ PRINT("shutdown_reboot_prejobs_task: Calling cywee_save_data()\r\n");
cywee_save_data();
+ PRINT("shutdown_reboot_prejobs_task: cywee_save_data() completed\r\n");
#endif
// addressbookTowrite();//同步数据存储
//保存信息文件
#ifdef CUSTOM_ZHIHUI
+ PRINT("shutdown_reboot_prejobs_task: Calling saveancsdata()\r\n");
saveancsdata(); //接收到信息进行保存 暂时不修改
+ PRINT("shutdown_reboot_prejobs_task: saveancsdata() completed\r\n");
#endif
//保存当天心率数据
// save_heart_data();//测量完成保存
// dial_file_save();
//同步所有需要保存实时数据到config文件
+ PRINT("shutdown_reboot_prejobs_task: Calling uapi_dev_runtime_sync_runtime_env_to_config()\r\n");
uapi_dev_runtime_sync_runtime_env_to_config();
+ PRINT("shutdown_reboot_prejobs_task: uapi_dev_runtime_sync_runtime_env_to_config() completed\r\n");
//保存config文件到磁盘
// cm_sync_all_config_to_disk();
//保存电量
#ifdef SUPPORT_BATTERY_SERVICE
+ PRINT("shutdown_reboot_prejobs_task: Calling send_battery_svr_cmd_msg()\r\n");
send_battery_svr_cmd_msg(BATTERY_CMD_SAVE_PERCENT);
+ PRINT("shutdown_reboot_prejobs_task: send_battery_svr_cmd_msg() completed\r\n");
#endif
//重启前要保存时间
-
-
+ PRINT("shutdown_reboot_prejobs_task: All save operations completed, proceeding to shutdown/reboot\r\n");
if(doing_shutdown_type==UPDATE_TYPE)
{
+ PRINT("shutdown_reboot_prejobs_task: UPDATE_TYPE branch\r\n");
uapi_calendar_store_date();
+ PRINT("shutdown_reboot_prejobs_task: uapi_calendar_store_date() completed\r\n");
osDelay(50);
+ PRINT("shutdown_reboot_prejobs_task: Calling reset_deal_with_fs()\r\n");
//同步nand文件系统,重启mount速度快
+ // 注意:reset_deal_with_fs() 可能阻塞,如果文件系统有问题可能导致死机
reset_deal_with_fs();
+ PRINT("shutdown_reboot_prejobs_task: reset_deal_with_fs() completed\r\n");
osDelay(50);
- //
- printf("doing_shutdown_type = UPDATE_TYPE upg_reboot\r\n");
-
+
+ PRINT("shutdown_reboot_prejobs_task: Calling upg_reboot()\r\n");
upg_reboot();
+ // upg_reboot() 不会返回
}
else if(doing_shutdown_type==SHUTDOWN_TYPE)
{
-
+ PRINT("shutdown_reboot_prejobs_task: SHUTDOWN_TYPE branch\r\n");
uapi_poweroff_device();
+ // uapi_poweroff_device() 不会返回
}
else if(doing_shutdown_type==REBOOT_TYPE)
{
+ PRINT("shutdown_reboot_prejobs_task: REBOOT_TYPE branch\r\n");
+ uapi_reboot_device();
+ // uapi_reboot_device() 不会返回
+ }
+ else
+ {
+ // 理论上不应该到达这里,因为前面已经检查过了
+ PRINT("shutdown_reboot_prejobs_task: ERROR - Unexpected doing_shutdown_type=%d, force reboot\r\n",
+ doing_shutdown_type);
uapi_reboot_device();
}
-
+ PRINT("shutdown_reboot_prejobs_task: ERROR - Should not reach here!\r\n");
}