static int drinkreminder_end_min = 0; /*喝水提醒结束分钟*/\r
static int drinkreminder_freq = 0; /*喝水提醒频率*/\r
static int drinkreminder_goal = 0; /*喝水提醒目标ml*/\r
- static int drinkremind_cnt = 0; // 喝水提醒计数器\r
+ static int drinkremind_expectedTime = 0;\r
static int sleep_notify_time_min = 0;\r
static int sleep_notify_time_hour = 0;\r
\r
#define SEDENTARY_TIME_RANGE (((curTime.tm_hour > sedentary_start_hour) || (curTime.tm_hour == sedentary_start_hour && curTime.tm_min >= sedentary_start_min)) && \\r
((curTime.tm_hour < sedentary_stop_hour) || (curTime.tm_hour == sedentary_stop_hour && curTime.tm_min < sedentary_stop_min)))\r
\r
+#define DRINKREMIND_TIME_RANGE (((curTime.tm_hour > drinkreminder_start_hour) || (curTime.tm_hour == drinkreminder_start_hour && curTime.tm_min >= drinkreminder_start_min)) && \\r
+ ((curTime.tm_hour < drinkreminder_end_hour) || (curTime.tm_hour == drinkreminder_end_hour && curTime.tm_min < drinkreminder_end_min)))\r
+\r
#define WAKE_TIME_RANGE (((wake_time_hour < sleep_time_hour) && \\r
((curTime.tm_hour > wake_time_hour) || \\r
(curTime.tm_hour == wake_time_hour && curTime.tm_min >= wake_time_min)) && \\r
else if (drinkreminder_switch == 2)\r
{\r
// 判断当前时间是否在提醒时间段内\r
- bool isInReminderPeriod = (curTime.tm_hour > drinkreminder_start_hour ||\r
- (curTime.tm_hour == drinkreminder_start_hour && curTime.tm_min >= drinkreminder_start_min)) &&\r
- (curTime.tm_hour < drinkreminder_end_hour ||\r
- (curTime.tm_hour == drinkreminder_end_hour && curTime.tm_min < drinkreminder_end_min));\r
-\r
- if (isInReminderPeriod)\r
+ if (DRINKREMIND_TIME_RANGE)\r
{\r
- double interval_time = (drinkreminder_freq == 0) ? 0.5 : drinkreminder_freq; // 频率设置\r
- int currentMinutes = curTime.tm_hour * 60 + curTime.tm_min; // 当前时间的分钟数\r
- int start_time_Minutes = drinkreminder_start_hour * 60 + drinkreminder_start_min; // 开始时间的分钟数\r
- int drinkremind_max_cnt = (drinkreminder_end_hour * 60 + drinkreminder_end_min - start_time_Minutes) / (interval_time * 60);\r
-\r
- // 检查提醒次数\r
- if (drinkremind_cnt < drinkremind_max_cnt)\r
+ double interval_time = (drinkreminder_freq == 0) ? 0.5 : drinkreminder_freq; // 频率设置\r
+ int interval_time_seconds = static_cast<int>(interval_time * 60) * 60; // 设置的间隔时间秒数\r
+ int start_time_seconds = (drinkreminder_start_hour * 60 + drinkreminder_start_min) * 60; // 开始时间秒数\r
+ int current_seconds = (curTime.tm_hour * 60 + curTime.tm_min) * 60; // 当前时间的秒数\r
+ int hour_24_seconds = 24 * 60 * 60;\r
+ if (uapi_dev_runtime_get_drinkremind_status() == 0)\r
{\r
- int expectedTime = start_time_Minutes + static_cast<int>(interval_time * 60 * drinkremind_cnt);\r
- if (currentMinutes == expectedTime && curTime.tm_sec == 0)\r
+ uapi_dev_runtime_set_drinkremind_status(1);\r
+ drinkremind_expectedTime = start_time_seconds + interval_time_seconds;\r
+ if (drinkremind_expectedTime >= hour_24_seconds)\r
+ {\r
+ drinkremind_expectedTime = hour_24_seconds - drinkremind_expectedTime;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "current_seconds = %d,drinkremind_expectedTime = %d", current_seconds, drinkremind_expectedTime);\r
+ if (current_seconds == drinkremind_expectedTime && curTime.tm_sec == 0)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "该喝水了!!该喝水了!!");\r
- drinkremind_cnt++; // 增加提醒计数\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "drinkremind_max_cnt = %d , drinkremind_cnt = %d", drinkremind_max_cnt, drinkremind_cnt);\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "curTime:%d:%d", curTime.tm_hour, curTime.tm_min);\r
+ drinkremind_expectedTime = current_seconds + interval_time_seconds;\r
+ if (drinkremind_expectedTime >= hour_24_seconds)\r
+ {\r
+ drinkremind_expectedTime = hour_24_seconds - drinkremind_expectedTime;\r
+ }\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "current_seconds = %d,drinkremind_expectedTime = %d", current_seconds, drinkremind_expectedTime);\r
AlarmEventPublish(TOPIC_EVENT_DRINKREMINDER, NULL, 0);\r
}\r
}\r
}\r
- else\r
+ else if (!DRINKREMIND_TIME_RANGE && uapi_dev_runtime_get_drinkremind_status() == 1)\r
{\r
- if (drinkremind_cnt > 0) // 只有在计数器大于0时才重置\r
- {\r
- drinkremind_cnt = 0; // 重置计数器\r
- }\r
+ uapi_dev_runtime_set_drinkremind_status(0);\r
}\r
}\r
}\r