From f7c2f2eb993843f48fff6e95fa521902ca497aa3 Mon Sep 17 00:00:00 2001 From: hcj <1224667075@qq.com> Date: Fri, 15 Nov 2024 10:44:21 +0800 Subject: [PATCH] =?utf8?q?=E5=85=B3=E6=9C=BA=E6=8E=A5=E5=8F=A3=E7=BB=9F?= =?utf8?q?=E4=B8=80=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../src/RebootAndShutdownPresenter.cpp | 9 +-- .../src/ShutDownImageAnimatorView.cpp | 6 +- .../nativeui/system/src/SystemPresenter.cpp | 5 +- .../rebootdevice/src/RebootPresenter.cpp | 6 +- .../src/notify/charge_notification.cpp | 12 ++-- .../drivers/peripheral/utils/custom_utils.c | 64 +++++++++++++++---- .../drivers/peripheral/utils/custom_utils.h | 16 ++++- 7 files changed, 83 insertions(+), 35 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/rebootandshutdown/src/RebootAndShutdownPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/rebootandshutdown/src/RebootAndShutdownPresenter.cpp index 3b057c6b7..2a5597b01 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/rebootandshutdown/src/RebootAndShutdownPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/rebootandshutdown/src/RebootAndShutdownPresenter.cpp @@ -99,8 +99,7 @@ namespace OHOS else if (&view == view_->GetButtonEnsure()) // 关机确认 { view_->ChangeView(SHUTDOWNTIPVIEW, SHUTDOWNANIMATOR); - start_shutdown_or_reboot(); - shutdown_reboot_prejobs(); + ShutDownImageAnimatorView::GetInstance()->ShutDownImageAnimator_Start(0); isShutDownImageAnimatorStart = true; @@ -157,12 +156,14 @@ namespace OHOS WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootAndShutdownPresenter::OnAnimatorStop"); if (isShutDownOperation == true) { - uapi_poweroff_device(); // 关机 + // uapi_poweroff_device(); // 关机 + shutdown_reboot_prejobs(SHUTDOWN_TYPE); } else { - uapi_reboot_device(); // 重启 + shutdown_reboot_prejobs(REBOOT_TYPE); } + } void RebootAndShutdownPresenter::OnChange(int32_t value) diff --git a/code/sdk/application/wearable/fd230app/nativeui/rebootandshutdown/src/ShutDownImageAnimatorView.cpp b/code/sdk/application/wearable/fd230app/nativeui/rebootandshutdown/src/ShutDownImageAnimatorView.cpp index 4eaadf65b..d217f9972 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/rebootandshutdown/src/ShutDownImageAnimatorView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/rebootandshutdown/src/ShutDownImageAnimatorView.cpp @@ -58,10 +58,12 @@ namespace OHOS switch (OperationType) { case 0: - uapi_poweroff_device(); // 关机 + // uapi_poweroff_device(); // 关机 + shutdown_reboot_prejobs(SHUTDOWN_TYPE); break; case 1: - uapi_reboot_device(); // 重启 + // uapi_reboot_device(); // 重启 + shutdown_reboot_prejobs(REBOOT_TYPE); break; case 2: do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_RESTORE_FACTORY_SETTING, NULL, 0); diff --git a/code/sdk/application/wearable/fd230app/nativeui/system/src/SystemPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/system/src/SystemPresenter.cpp index cf8997406..59931d786 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/system/src/SystemPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/system/src/SystemPresenter.cpp @@ -203,8 +203,6 @@ namespace OHOS else if (strcmp(view.GetViewId(), RESTARTVIEW_CHECKON) == 0) // 重启确认 { p_SystemView->ChangeView(RESTARTVIEW, SHUTDOWNANIMATIONVIEW); - start_shutdown_or_reboot(); - shutdown_reboot_prejobs(); ShutDownImageAnimatorView::GetInstance()->ShutDownImageAnimator_Start(1); isShutDownImageAnimatorStart = true; @@ -218,8 +216,7 @@ namespace OHOS else if (strcmp(view.GetViewId(), SHUTDOWN_CHECKON) == 0) // 关机确认 { p_SystemView->ChangeView(SHUTDOWNVIEW, SHUTDOWNANIMATIONVIEW); - start_shutdown_or_reboot(); - shutdown_reboot_prejobs(); + ShutDownImageAnimatorView::GetInstance()->ShutDownImageAnimator_Start(0); isShutDownImageAnimatorStart = true; diff --git a/code/sdk/application/wearable/nativeapp/nativeui/rebootdevice/src/RebootPresenter.cpp b/code/sdk/application/wearable/nativeapp/nativeui/rebootdevice/src/RebootPresenter.cpp index 09ca5b94d..df2f52c4a 100755 --- a/code/sdk/application/wearable/nativeapp/nativeui/rebootdevice/src/RebootPresenter.cpp +++ b/code/sdk/application/wearable/nativeapp/nativeui/rebootdevice/src/RebootPresenter.cpp @@ -55,12 +55,14 @@ bool RebootPresenter::OnClick(UIView& view, const ClickEvent& event) // 重启 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "REBOOTDEVICE_BUTTON OnClick"); //GetPMSDefaultInterface()->RebootDevice(NULL, NULL); - uapi_reboot_device(); + // uapi_reboot_device(); + shutdown_reboot_prejobs(REBOOT_TYPE); } else if (strcmp(view.GetViewId(), SHUTDOWNDEVICE_BUTTON) == 0) { // 关机 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SHUTDOWNDEVICE_BUTTON OnClick"); //GetPMSDefaultInterface()->ShutDownDevice(NULL, NULL); - uapi_poweroff_device(); + // uapi_poweroff_device(); + shutdown_reboot_prejobs(SHUTDOWN_TYPE); } return true; } diff --git a/code/sdk/application/wearable/service/msg_center/src/notify/charge_notification.cpp b/code/sdk/application/wearable/service/msg_center/src/notify/charge_notification.cpp index 5931d70a4..70d641f86 100644 --- a/code/sdk/application/wearable/service/msg_center/src/notify/charge_notification.cpp +++ b/code/sdk/application/wearable/service/msg_center/src/notify/charge_notification.cpp @@ -463,8 +463,8 @@ namespace OHOS } ShutDownImageAnimatorView->Start(); set_lowpower_show(1,0); - start_shutdown_or_reboot(); - shutdown_reboot_prejobs(); + + } @@ -579,8 +579,7 @@ namespace OHOS group->SetVisible(true); ShutDownImageAnimatorView->Start(); ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 关机动画已经开始了不能息屏 - start_shutdown_or_reboot(); - shutdown_reboot_prejobs(); + } NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreelowPower); @@ -636,9 +635,10 @@ namespace OHOS WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "xxxxxxxxxxxxxxxxxxxxOnAnimatorStop"); if(battery_falg==4) - uapi_reboot_device(); + shutdown_reboot_prejobs(REBOOT_TYPE); else - uapi_poweroff_device(); // 关机 + shutdown_reboot_prejobs(SHUTDOWN_TYPE); + // uapi_poweroff_device(); // 关机 diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.c b/code/sdk/drivers/peripheral/utils/custom_utils.c index b093273c7..c0ed150bd 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils.c @@ -27,6 +27,7 @@ #include #include "pm_veto.h" // #include "config/include/ConfigModelC.h" +#include "upg_porting.h" #ifdef SUPPORT_TCPIP #include "lwip/tcpip.h" @@ -244,7 +245,7 @@ void uapi_reboot_device(void) uapi_calendar_store_date(); //重启保存 stop_report_log(); -// mcu_os_sys_reset(NULL,NULL); + // mcu_os_sys_reset(NULL,NULL); osDelay(50); //同步nand文件系统,重启mount速度快 reset_deal_with_fs(); @@ -262,9 +263,11 @@ void uapi_save_time_of_day(void) timeinfo = localtime(&rawtime); uapi_save_file_data("user/userdata/timestamp_of_day.bin",&timeinfo->tm_mday,1,"wb"); } +static uint8_t doing_shutdown_type = 0; void shutdown_reboot_prejobs_task(void) { + // printf(); C_ScheduleDataWriteToFile(); //同步的时候进行保存 // mmi_sleep_mode_switch_write();//不需要保存 @@ -296,13 +299,43 @@ void shutdown_reboot_prejobs_task(void) send_battery_svr_cmd_msg(BATTERY_CMD_SAVE_PERCENT); //重启前要保存时间 - uapi_calendar_store_date(); + + + + if(doing_shutdown_type==UPDATE_TYPE) + { + uapi_calendar_store_date(); + + osDelay(50); + //同步nand文件系统,重启mount速度快 + reset_deal_with_fs(); + osDelay(50); + // + printf("doing_shutdown_type = UPDATE_TYPE upg_reboot\r\n"); + + upg_reboot(); + } + else if(doing_shutdown_type==SHUTDOWN_TYPE) + { + + uapi_poweroff_device(); + } + else if(doing_shutdown_type==REBOOT_TYPE) + { + uapi_reboot_device(); + } + } -static bool doing_shutdown_or_reboot = false; -void shutdown_reboot_prejobs(void) + + +void shutdown_reboot_prejobs(uint8_t type) { PRINT("shutdown_reboot_prejobs !\r\n"); + + start_shutdown_or_reboot(type); + + app_task_definition_t taskcfg={0}; taskcfg.create_queue_handle = NULL; taskcfg.attr.name="shutdown_reboot_prejobs"; @@ -318,14 +351,14 @@ void shutdown_reboot_prejobs(void) } } -void start_shutdown_or_reboot(void) +void start_shutdown_or_reboot(uint8_t type) { - doing_shutdown_or_reboot = true; + doing_shutdown_type = type; } -bool is_doing_shutdown_or_reboot(void) +uint8_t is_doing_shutdown_or_reboot(void) { - return doing_shutdown_or_reboot; + return doing_shutdown_type; } @@ -555,17 +588,20 @@ errcode_t uaip_cmd_update_request(void) } else { printf("uapi_upg_request_upgrade OK!!\r\n"); /* app中下载后直接开始升级流程,升级流程结束后重启 */ - uapi_calendar_store_date(); + // uapi_calendar_store_date(); update_version_report_log();//版本升级记录 + shutdown_reboot_prejobs(UPDATE_TYPE); + + //重启前要保存时间 - uapi_calendar_store_date(); - osDelay(50); - reset_deal_with_fs(); - osDelay(50); + // uapi_calendar_store_date(); + // osDelay(50); + // reset_deal_with_fs(); + // osDelay(50); /* IOT设备重启 */ - upg_reboot(); + } return ret; } diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.h b/code/sdk/drivers/peripheral/utils/custom_utils.h index fdcf518a9..1ca2264cd 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.h +++ b/code/sdk/drivers/peripheral/utils/custom_utils.h @@ -35,6 +35,14 @@ extern "C" { #define OPEN_SCREEN_ALWAYS_ON 1 //屏幕常亮 #define CANCEL_SCREEN_ALWAYS_ON 0 //取消屏幕常亮 +// reboot +typedef enum { + SHUTDOWN_TYPE, + REBOOT_TYPE, + UPDATE_TYPE, +} DONING_SHUTDOWN_TYPE; + + uint32_t zh_get_sn(uint8_t *buf_sn, uint32_t *len_sn); uint32_t zh_set_sn(uint8_t *buf_sn, uint32_t len_sn); @@ -189,9 +197,11 @@ void flash_erase(void); void get_gsensor_single(uint8_t *databuf); -void shutdown_reboot_prejobs(void); -void start_shutdown_or_reboot(void); -bool is_doing_shutdown_or_reboot(void); +void shutdown_reboot_prejobs(uint8_t type); + +void start_shutdown_or_reboot(uint8_t type); + +uint8_t is_doing_shutdown_or_reboot(void); -- 2.17.1