*/
#include "ActivityModel.h"
-#include <fstream>
-#include "iostream"
-#include <sstream>
-#include <string>
-#include <cstdlib>
-#include <ctime>
-#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 <cstdlib>
+#include <ctime>
+#include <fstream>
+#include <sstream>
+#include <string>
// #include "goal/include/goalmodel.h"
using namespace std;
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,
.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
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