From: Caisking <3449750381@qq.com> Date: Mon, 2 Dec 2024 09:31:37 +0000 (+0800) Subject: #1216 重启后表盘步数显示为0,要产生新的步数才显示出来 X-Git-Tag: fd230_release_V1.3.102~3^2~11 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=4aa91848f1f8788e90efaefdb547ee16b08f3f01;p=mirrors%2FFD230.git #1216 重启后表盘步数显示为0,要产生新的步数才显示出来 --- diff --git a/code/sdk/application/wearable/fd230app/nativeui/activity/src/ActivityModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/activity/src/ActivityModel.cpp index f9adf0899..d4f9c8147 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/activity/src/ActivityModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/activity/src/ActivityModel.cpp @@ -6,31 +6,32 @@ */ #include "ActivityModel.h" -#include -#include "iostream" -#include -#include -#include -#include -#include "wearable_log.h" -#include "cmsis_os.h" -#include "securec.h" -#include "broadcast_service.h" -#include "MainClockView.h" -#include "IndoorWalkPresenter.h" #include "ActivityWeekView.h" -#include "graphic_service.h" -#include "DialModelSteps.h" #include "DialModelCalorie.h" #include "DialModelDistance.h" #include "DialModelStepgoal.h" -#include "cywee_service.h" +#include "DialModelSteps.h" +#include "IndoorWalkPresenter.h" +#include "MainClockView.h" +#include "broadcast_service.h" +#include "cmsis_os.h" #include "custom_runtime.h" +#include "custom_utils.h" +#include "cywee_service.h" #include "goal/include/goalmodel.h" -#include "goal/include/goalview.h" #include "goal/include/goalother.h" +#include "goal/include/goalview.h" #include "goal_notification.h" -#include "custom_utils.h" +#include "graphic_service.h" +#include "iostream" +#include "securec.h" +#include "wearable_log.h" + +#include +#include +#include +#include +#include // #include "goal/include/goalmodel.h" using namespace std; @@ -41,7 +42,7 @@ extern "C" { using namespace OHOS; -static void Notify(void *args, const Topic topic, Request* request); +static void Notify(void *args, const Topic topic, Request *request); Subscriber subscirber = { .identity = nullptr, @@ -49,93 +50,100 @@ Subscriber subscirber = { .Notify = Notify, }; -void StepSubscribeTopic(Topic topic) -{ - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StepSubscribeTopic, topic=%u", topic); - BroadcastApi *broadcastApi = nullptr; - IUnknown *api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, BROADCAST_FEATURE_NAME); - if (api == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StepSubscribeTopic, GetFeatureApi failed"); - return; - } - int result = api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi); - if (result != 0 || broadcastApi == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StepSubscribeTopic, QueryInterface failed"); - return; - } - broadcastApi->SubscribeTopic((IUnknown *)broadcastApi, topic, &subscirber); - broadcastApi->Release((IUnknown *)broadcastApi); +void StepSubscribeTopic(Topic topic) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StepSubscribeTopic, topic=%u", topic); + BroadcastApi *broadcastApi = nullptr; + IUnknown *api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, + BROADCAST_FEATURE_NAME); + if (api == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "StepSubscribeTopic, GetFeatureApi failed"); + return; + } + int result = + api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi); + if (result != 0 || broadcastApi == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "StepSubscribeTopic, QueryInterface failed"); + return; + } + broadcastApi->SubscribeTopic((IUnknown *)broadcastApi, topic, &subscirber); + broadcastApi->Release((IUnknown *)broadcastApi); } -void StepUnsubscribeTopic(Topic topic) -{ - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StepUnsubscribeTopic, topic=%u", topic); - BroadcastApi *broadcastApi = nullptr; - IUnknown *api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, BROADCAST_FEATURE_NAME); - if (api == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StepUnsubscribeTopic, GetFeatureApi failed"); - return; - } - int result = api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi); - if (result != 0 || broadcastApi == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StepUnsubscribeTopic, QueryInterface failed"); - return; - } - broadcastApi->UnsubscribeTopic((IUnknown *)broadcastApi, topic, &subscirber); - broadcastApi->Release((IUnknown *)broadcastApi); +void StepUnsubscribeTopic(Topic topic) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StepUnsubscribeTopic, topic=%u", + topic); + BroadcastApi *broadcastApi = nullptr; + IUnknown *api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, + BROADCAST_FEATURE_NAME); + if (api == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "StepUnsubscribeTopic, GetFeatureApi failed"); + return; + } + int result = + api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi); + if (result != 0 || broadcastApi == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "StepUnsubscribeTopic, QueryInterface failed"); + return; + } + broadcastApi->UnsubscribeTopic((IUnknown *)broadcastApi, topic, &subscirber); + broadcastApi->Release((IUnknown *)broadcastApi); } -static void RefreshStepControls(const uint32_t &value, const uint16 &msgId) -{ - MainClockView *mainClockView = OHOS::MainClockView::GetInstance(); - if (mainClockView != nullptr) { - GraphicService::GetInstance()->PostGraphicEvent( - std::bind(&MainClockView::RefreshStep, mainClockView, value)); - } - - IndoorWalkPresenter *indoorWalkPresenter = OHOS::IndoorWalkPresenter::GetInstance(); - if (indoorWalkPresenter != nullptr) { - GraphicService::GetInstance()->PostGraphicEvent( - std::bind(&IndoorWalkPresenter::ModifiesSteps, indoorWalkPresenter, value)); - } - - ActivityWeekView *activityWeekView = OHOS::ActivityWeekView::GetInstance(); - if (activityWeekView == nullptr) { - return; - } +static void RefreshStepControls(const uint32_t &value, const uint16 &msgId) { + MainClockView *mainClockView = OHOS::MainClockView::GetInstance(); + if (mainClockView != nullptr) { + GraphicService::GetInstance()->PostGraphicEvent( + std::bind(&MainClockView::RefreshStep, mainClockView, value)); + } + + IndoorWalkPresenter *indoorWalkPresenter = + OHOS::IndoorWalkPresenter::GetInstance(); + if (indoorWalkPresenter != nullptr) { + GraphicService::GetInstance()->PostGraphicEvent(std::bind( + &IndoorWalkPresenter::ModifiesSteps, indoorWalkPresenter, value)); + } + + ActivityWeekView *activityWeekView = OHOS::ActivityWeekView::GetInstance(); + if (activityWeekView == nullptr) { + return; + } + GraphicService::GetInstance()->PostGraphicEvent( + std::bind(&ActivityWeekView::RefreshSteps, activityWeekView, value)); + + if (msgId == TOPIC_EVENT_STEPDATA_UPDATE) { + GraphicService::GetInstance()->PostGraphicEvent(std::bind( + &ActivityWeekView::RefreshTodayView, activityWeekView, value)); + } else if (msgId == TOPIC_EVENT_NEXTDAY_UPDATE) { GraphicService::GetInstance()->PostGraphicEvent( - std::bind(&ActivityWeekView::RefreshSteps, activityWeekView, value)); - - if (msgId == TOPIC_EVENT_STEPDATA_UPDATE) { - GraphicService::GetInstance()->PostGraphicEvent( - std::bind(&ActivityWeekView::RefreshTodayView, activityWeekView, value)); - } else if (msgId == TOPIC_EVENT_NEXTDAY_UPDATE) { - GraphicService::GetInstance()->PostGraphicEvent( - std::bind(&ActivityWeekView::InitAvgStep, activityWeekView)); - if (OHOS::ActivityModel::GetInstance()->GetWeekToday() == MONDAY_STEP_COUNTER) { - GraphicService::GetInstance()->PostGraphicEvent( - std::bind(&ActivityWeekView::InitWeekView, activityWeekView)); - } + std::bind(&ActivityWeekView::InitAvgStep, activityWeekView)); + if (OHOS::ActivityModel::GetInstance()->GetWeekToday() == + MONDAY_STEP_COUNTER) { + GraphicService::GetInstance()->PostGraphicEvent( + std::bind(&ActivityWeekView::InitWeekView, activityWeekView)); } + } } -static uint8_t goal_type=0; +static uint8_t goal_type = 0; -static void Notify(void *args, const Topic topic, Request* request) -{ - UNUSED(args); - UNUSED(topic); - if (request == nullptr) { - return; - } +static void Notify(void *args, const Topic topic, Request *request) { + UNUSED(args); + UNUSED(topic); + if (request == nullptr) { + return; + } - - if (request->msgId == TOPIC_EVENT_NEXTDAY_UPDATE) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "STEP:TOPIC_EVENT_NEXTDAY_UPDATE"); + if (request->msgId == TOPIC_EVENT_NEXTDAY_UPDATE) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "STEP:TOPIC_EVENT_NEXTDAY_UPDATE"); - // uint32_t refreshValue = OHOS::ActivityModel::GetInstance()->ZeroHourStepHandle(); - // RefreshStepControls(refreshValue, TOPIC_EVENT_NEXTDAY_UPDATE); - } + // uint32_t refreshValue = + // OHOS::ActivityModel::GetInstance()->ZeroHourStepHandle(); + // RefreshStepControls(refreshValue, TOPIC_EVENT_NEXTDAY_UPDATE); + } } #ifdef __cplusplus @@ -152,138 +160,133 @@ static constexpr uint16_t ONT_MIN_STEP_CONTER = 120; osTimerId_t g_saveEveryMinHandle = nullptr; void SaveEveryMinCallback(int data); -ActivityModel::ActivityModel() -{ - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityModel::ActivityModel"); +ActivityModel::ActivityModel() { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityModel::ActivityModel"); } -ActivityModel::~ActivityModel() -{ - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityModel::~ActivityModel"); - // StepUnsubscribeTopic(TOPIC_EVENT_STEPDATA_UPDATE); - // StepUnsubscribeTopic(TOPIC_EVENT_NEXTDAY_UPDATE); - if (g_saveEveryMinHandle != nullptr) { - osStatus_t ret = osTimerDelete(g_saveEveryMinHandle); - if (ret != osOK) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "~ActivityModel osTimerDelete failed, ret = %lx!!", ret); - return; - } - g_saveEveryMinHandle = nullptr; +ActivityModel::~ActivityModel() { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityModel::~ActivityModel"); + // StepUnsubscribeTopic(TOPIC_EVENT_STEPDATA_UPDATE); + // StepUnsubscribeTopic(TOPIC_EVENT_NEXTDAY_UPDATE); + if (g_saveEveryMinHandle != nullptr) { + osStatus_t ret = osTimerDelete(g_saveEveryMinHandle); + if (ret != osOK) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "~ActivityModel osTimerDelete failed, ret = %lx!!", ret); + return; } + g_saveEveryMinHandle = nullptr; + } } -ActivityModel *ActivityModel::GetInstance(void) -{ - static ActivityModel instance; - return &instance; +ActivityModel *ActivityModel::GetInstance(void) { + static ActivityModel instance; + return &instance; } -void ActivityModel::Init() -{ - //StepSubscribeTopic(TOPIC_EVENT_STEPDATA_UPDATE); - //StepSubscribeTopic(TOPIC_EVENT_NEXTDAY_UPDATE); - InitStepData(); +void ActivityModel::Init() { + // StepSubscribeTopic(TOPIC_EVENT_STEPDATA_UPDATE); + // StepSubscribeTopic(TOPIC_EVENT_NEXTDAY_UPDATE); + InitStepData(); + uint16_t counter = get_step_data(); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityModel::ActivityModel,%d",counter); + DialModelSteps::GetInstance()->UpdateSteps(counter); //更新表盘步数 + DialModelStepgoal::GetInstance()->UpdateStepgoal(counter); //更新表盘目标 + DialModelDistance::GetInstance()->UpdateDistance(get_distance_data()); //更新表盘距离 + DialModelCalorie::GetInstance()->UpdateCalorie(get_calories_data()); //更新表盘卡路里 } -uint32 ActivityModel::GetStepCounter(void) -{ - return stepCounter; -} +uint32 ActivityModel::GetStepCounter(void) { return stepCounter; } -void ActivityModel::ReviseStepCounter(uint32 &counter) -{ - stepCounter = counter; +void ActivityModel::ReviseStepCounter(uint32 &counter) { + stepCounter = counter; } -void ActivityModel::SaveStepToFile(struct tm *tmData) -{ -} +void ActivityModel::SaveStepToFile(struct tm *tmData) {} -void ActivityModel::GetStepData(const StepDataDistribute &type, uint32_t *value) -{ - *value = g_stepData1.weekSteps[type]; - return; +void ActivityModel::GetStepData(const StepDataDistribute &type, + uint32_t *value) { + *value = g_stepData1.weekSteps[type]; + return; } -static void SaveEveryMinCallbackProc(int data) -{ - UNUSED(data); - int today = ActivityModel::GetInstance()->GetWeekToday(); - uint32 savedValue = ActivityModel::GetInstance()->GetLastSavedValue(); - if (savedValue != g_stepData1.weekSteps[today]) { - struct tm curTime; - time_t second = time(nullptr); - (void)localtime_r((const time_t *)&second, &curTime); - ActivityModel::GetInstance()->SaveStepToFile(&curTime); - } +static void SaveEveryMinCallbackProc(int data) { + UNUSED(data); + int today = ActivityModel::GetInstance()->GetWeekToday(); + uint32 savedValue = ActivityModel::GetInstance()->GetLastSavedValue(); + if (savedValue != g_stepData1.weekSteps[today]) { + struct tm curTime; + time_t second = time(nullptr); + (void)localtime_r((const time_t *)&second, &curTime); + ActivityModel::GetInstance()->SaveStepToFile(&curTime); + } } -void SaveEveryMinCallback(int data) -{ - GraphicService::GetInstance()->PostGraphicEvent(std::bind(SaveEveryMinCallbackProc, data)); +void SaveEveryMinCallback(int data) { + GraphicService::GetInstance()->PostGraphicEvent( + std::bind(SaveEveryMinCallbackProc, data)); } -void ActivityModel::SetStepData(uint32_t &value) -{ - g_stepData1.weekSteps[weekToday] = value; - // 第一次上报数据后打开定时器 +void ActivityModel::SetStepData(uint32_t &value) { + g_stepData1.weekSteps[weekToday] = value; + // 第一次上报数据后打开定时器 + if (g_saveEveryMinHandle != nullptr) { + return; + } + g_saveEveryMinHandle = osTimerNew((osTimerFunc_t)SaveEveryMinCallback, + osTimerPeriodic, nullptr, nullptr); + if (g_saveEveryMinHandle == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "ActivityModel::SetStepData osTimerNew failed!!"); + return; + } + uint32 tick = osMs2Tick(60000); // 60000: seconds of a minute + osStatus_t retTimer = osTimerStart(g_saveEveryMinHandle, tick); + if (retTimer != osOK) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "ActivityModel::SetStepData osTimerStart failed, ret = %lx!!", + retTimer); if (g_saveEveryMinHandle != nullptr) { + retTimer = osTimerDelete(g_saveEveryMinHandle); + if (retTimer != osOK) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "ActivityModel::SetStepData osTimerDelete ret = %lx!!", + retTimer); return; - } - g_saveEveryMinHandle = osTimerNew((osTimerFunc_t)SaveEveryMinCallback, osTimerPeriodic, nullptr, nullptr); - if (g_saveEveryMinHandle == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityModel::SetStepData osTimerNew failed!!"); - return; - } - uint32 tick = osMs2Tick(60000); // 60000: seconds of a minute - osStatus_t retTimer = osTimerStart(g_saveEveryMinHandle, tick); - if (retTimer != osOK) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityModel::SetStepData osTimerStart failed, ret = %lx!!", retTimer); - if (g_saveEveryMinHandle != nullptr) { - retTimer = osTimerDelete(g_saveEveryMinHandle); - if (retTimer != osOK) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityModel::SetStepData osTimerDelete ret = %lx!!", retTimer); - return; - } - g_saveEveryMinHandle = nullptr; - } - return; + } + g_saveEveryMinHandle = nullptr; } return; + } + return; } -int ActivityModel::GetWeekToday(void) -{ - return weekToday; -} +int ActivityModel::GetWeekToday(void) { return weekToday; } -uint32 ActivityModel::GetLastSavedValue(void) -{ - return lastSavedValue; -} +uint32 ActivityModel::GetLastSavedValue(void) { return lastSavedValue; } -bool ActivityModel::InitStepData(void) -{ - stepCounter = g_stepData1.weekSteps[weekToday]; - lastSavedValue = stepCounter; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TodayStep: %d", g_stepData1.weekSteps[weekToday]); - return true; +bool ActivityModel::InitStepData(void) { + stepCounter = g_stepData1.weekSteps[weekToday]; + lastSavedValue = stepCounter; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TodayStep: %d", + g_stepData1.weekSteps[weekToday]); + return true; } -uint32_t ActivityModel::ZeroHourStepHandle(void) -{ - g_stepData1.weekSteps[weekToday] = stepCounter; - struct tm historyTime; - time_t second = time(nullptr) - SECONDS_ONEDAY; - (void)localtime_r((const time_t *)&second, &historyTime); - SaveStepToFile(&historyTime); - stepCounter = 0; - if (weekToday == SUNDAY_STEP_COUNTER) { - weekToday = MONDAY_STEP_COUNTER; - (void)memset_s(&g_stepData1.weekSteps, sizeof(g_stepData1.weekSteps), 0, sizeof(g_stepData1.weekSteps)); - } else { - ++weekToday; - } - return stepCounter; -} +uint32_t ActivityModel::ZeroHourStepHandle(void) { + g_stepData1.weekSteps[weekToday] = stepCounter; + struct tm historyTime; + time_t second = time(nullptr) - SECONDS_ONEDAY; + (void)localtime_r((const time_t *)&second, &historyTime); + SaveStepToFile(&historyTime); + stepCounter = 0; + if (weekToday == SUNDAY_STEP_COUNTER) { + weekToday = MONDAY_STEP_COUNTER; + (void)memset_s(&g_stepData1.weekSteps, sizeof(g_stepData1.weekSteps), 0, + sizeof(g_stepData1.weekSteps)); + } else { + ++weekToday; + } + return stepCounter; } +} // namespace OHOS