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 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
- ((curTime.tm_hour < sleep_time_hour) || \\r
- (curTime.tm_hour == sleep_time_hour && curTime.tm_min < sleep_time_min))) || \\r
- ((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
- ((curTime.tm_hour < sleep_time_hour) || \\r
- (curTime.tm_hour == sleep_time_hour && curTime.tm_min < sleep_time_min))) || \\r
- ((curTime.tm_hour > wake_time_hour) && (curTime.tm_hour < sleep_time_hour))))\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 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
+// ((curTime.tm_hour < sleep_time_hour) || \\r
+// (curTime.tm_hour == sleep_time_hour && curTime.tm_min < sleep_time_min))) || \\r
+// ((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
+// ((curTime.tm_hour < sleep_time_hour) || \\r
+// (curTime.tm_hour == sleep_time_hour && curTime.tm_min < sleep_time_min))) || \\r
+// ((curTime.tm_hour > wake_time_hour) && (curTime.tm_hour < sleep_time_hour))))\r
\r
// 设置目标睡眠时间\r
void set_sleep_and_wake_time(void)\r
sleep_time_min = sleep_time & 0x0000FFFF;\r
wake_time_hour = (wake_up_time & 0xFFFF0000) >> 16;\r
wake_time_min = wake_up_time & 0x0000FFFF;\r
+ clean_sleep_monitoring_flag();\r
// 解析结束时间\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sleep_time_hour:%d sleep_time_min:%d wake_time_hour:%d wake_time_min:%d", sleep_time_hour, sleep_time_min, wake_time_hour, wake_time_min);\r
}\r
sedentary_stop_hour = (sedentary_time & 0X00FF0000) >> 16;\r
sedentary_start_min = (sedentary_time & 0X0000FF00) >> 8;\r
sedentary_start_hour = sedentary_time & 0X000000FF;\r
+ clean_sedentary_flag();\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "set_sedentary_data:%d:%d~%d:%d", sedentary_start_hour, sedentary_start_min, sedentary_stop_hour, sedentary_stop_min);\r
}\r
\r
}\r
}\r
\r
- static bool is_drinkremind_time_range(struct tm &curTime)\r
+ static bool is_time_range(struct tm &curTime,int start_time_hour,int start_time_min,int end_time_hour,int end_time_min)\r
{\r
- int drinkreminder_start_time_min = drinkreminder_start_hour * 60 + drinkreminder_start_min; /* 开始时间的分钟数 */\r
- int drinkreminder_end_time_min = drinkreminder_end_hour * 60 + drinkreminder_end_min; /* 结束时间的分钟数 */\r
+ int start_min = start_time_hour * 60 + start_time_min; /* 开始时间的分钟数 */\r
+ int end_min = end_time_hour * 60 + end_time_min; /* 结束时间的分钟数 */\r
int cur_time_min = curTime.tm_hour * 60 + curTime.tm_min; /* 当前时间的分钟数 */\r
\r
// 处理非跨天的情况\r
- if (drinkreminder_end_time_min > drinkreminder_start_time_min)\r
+ if (end_min > start_min)\r
{\r
- if (cur_time_min >= drinkreminder_start_time_min && cur_time_min <= drinkreminder_end_time_min)\r
+ if (cur_time_min >= start_min && cur_time_min <= end_min)\r
{\r
return true;\r
}\r
}\r
else // 处理跨天的情况\r
{\r
- if (cur_time_min >= drinkreminder_start_time_min || cur_time_min <= drinkreminder_end_time_min)\r
+ if (cur_time_min >= start_min || cur_time_min <= end_min)\r
{\r
return true;\r
}\r
}\r
-\r
return false;\r
}\r
\r
- void clean_sleep_flag(void)\r
+ void clean_sleep_monitoring_flag(void)\r
{\r
uapi_dev_runtime_set_sleep_monitoring_status(0);\r
uapi_dev_runtime_set_nap_monitoring_status(0);\r
}\r
}\r
// 退出睡眠检测模式并进入小睡检测模式\r
- if (WAKE_TIME_RANGE && (uapi_dev_runtime_get_nap_monitoring_status() == 0))\r
+ if (!is_time_range(curTime,sleep_time_hour,sleep_time_min,wake_time_hour,wake_time_min) && (uapi_dev_runtime_get_nap_monitoring_status() == 0))\r
{\r
// uapi_dev_runtime_set_sleep_status(0);\r
// do_cywee_service_check_msg(CYWEE_SERVICE_CMD_GET_SLEEP_DATA, NULL);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "起床啦!");\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "起床啦!");\r
\r
if (curTime.tm_hour == wake_time_hour && curTime.tm_min == wake_time_min && curTime.tm_sec == 0)\r
{\r
}\r
}\r
// 进入睡眠检测模式并退出小睡检测模式\r
- else if ((!WAKE_TIME_RANGE) && (uapi_dev_runtime_get_sleep_monitoring_status() == 0))\r
+ else if (is_time_range(curTime,sleep_time_hour,sleep_time_min,wake_time_hour,wake_time_min) && (uapi_dev_runtime_get_sleep_monitoring_status() == 0))\r
{\r
+ int cmd = 1;\r
uapi_dev_runtime_set_sleep_status(0); // 清零睡眠状态\r
uapi_dev_runtime_set_absolute_static_status(0); // 清零绝对静止状态\r
OHOS::clean_sleep_data(); // 清零睡眠文件存储数据\r
uapi_dev_runtime_set_sleep_monitoring_status(1);\r
uapi_dev_runtime_set_nap_monitoring_status(0);\r
set_keep_in_wear_det_mode(0); //关闭小睡佩戴监测\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_GET_SLEEP_DATA, NULL); // 强制获取小睡数据,结束小睡\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_GET_SLEEP_DATA, &cmd); // 强制获取小睡数据,结束小睡\r
// 睡眠弹窗\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "要睡觉啦!");\r
// 设置状态为睡眠\r
// 久坐提醒\r
if (sedentary_switch)\r
{\r
- if (SEDENTARY_TIME_RANGE && (uapi_dev_runtime_get_sedentary_status() == 0))\r
+ if (is_time_range(curTime,sedentary_start_hour,sedentary_start_min,sedentary_stop_hour,sedentary_stop_min) && (uapi_dev_runtime_get_sedentary_status() == 0))\r
{\r
uapi_dev_runtime_set_sedentary_status(1);\r
do_cywee_service_check_msg(CYWEE_SERVICE_CMD_OPEN_SEDENTARY, NULL);\r
}\r
- else if ((!SEDENTARY_TIME_RANGE) && (uapi_dev_runtime_get_sedentary_status() == 1))\r
+ else if (!is_time_range(curTime,sedentary_start_hour,sedentary_start_min,sedentary_stop_hour,sedentary_stop_min) && (uapi_dev_runtime_get_sedentary_status() == 1))\r
{\r
uapi_dev_runtime_set_sedentary_status(0);\r
do_cywee_service_check_msg(CYWEE_SERVICE_CMD_CLOSE_SEDENTARY, NULL);\r
else if (drinkreminder_switch == 2)\r
{\r
// 判断当前时间是否在提醒时间段内\r
- if (is_drinkremind_time_range(curTime))\r
+ if (is_time_range(curTime,drinkreminder_start_hour,drinkreminder_start_min,drinkreminder_end_hour,drinkreminder_end_min))\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " curTime.tm_sec = %d", curTime.tm_sec);\r
double interval_time = (drinkreminder_freq == 0) ? 0.5 : drinkreminder_freq; // 频率设置\r
}\r
}\r
}\r
- else if (!is_drinkremind_time_range(curTime) && uapi_dev_runtime_get_drinkremind_status() == 1)\r
+ else if (!is_time_range(curTime,drinkreminder_start_hour,drinkreminder_start_min,drinkreminder_end_hour,drinkreminder_end_min) && uapi_dev_runtime_get_drinkremind_status() == 1)\r
{\r
uapi_dev_runtime_set_drinkremind_status(0);\r
}\r
int32_t timerStatus;\r
int32_t ret;\r
\r
+ set_sleep_and_wake_time();\r
+ set_sedentary_data();\r
+ set_drinkreminder_data();\r
+ get_sleep_time_notify();\r
+\r
g_alarmCtrA.state = ALARM_STATUS_UNUSED;\r
g_alarmCtrB.state = ALARM_STATUS_UNUSED;\r
g_AlarmHandle = osTimerNew(AlarmScan, osTimerPeriodic, nullptr, nullptr);\r
{\r
return ERRCODE_FAIL;\r
}\r
- set_sleep_and_wake_time();\r
- set_sedentary_data();\r
- set_drinkreminder_data();\r
- get_sleep_time_notify();\r
+\r
return ERRCODE_SUCC;\r
}\r
\r
\r
void hx3695_wearstatus_update(void)\r
{\r
- if(uapi_dev_runtime_get_sleep_monitoring_status())//处于睡眠监测 上报活体佩戴\r
+ if(wear_status != hrsresult.wearstatus)\r
{\r
- if(wear_status != hrsresult.wearstatus)\r
- {\r
- wear_status = hrsresult.wearstatus;\r
- cywee_data = wear_status;\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE,&cywee_data);\r
- }\r
+ wear_status = hrsresult.wearstatus;\r
+ cywee_data = wear_status;\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE,&cywee_data);\r
}\r
}\r
\r
\r
if(hrs_wear_status == MSG_HRS_WEAR && hrsresult.hr_living == MSG_LIVING_TRUE)\r
{\r
- if(hrsresult.lastesthrs > 60 || hrsresult.lastesthrs == 0)\r
+ if(hrsresult.lastesthrs > 60 && hrsresult.lastesthrs < 220)\r
get_avg_hrs(hrsresult.lastesthrs);\r
+\r
hrsresult.wearstatus = MSG_HRS_WEAR;\r
}\r
else\r
hx3695_msg_callback_t func = hx3695_get_send_msg_callback_func();\r
if(func != NULL)\r
{\r
- PRINT("hrsresult.lastesthrs : %d \n",hrsresult.lastesthrs);\r
+ //PRINT("hrsresult.lastesthrs : %d \n",hrsresult.lastesthrs);\r
func(HX3695_MSG_TYPE_HRS_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
if(uapi_get_cywee_static_state())\r
{\r
func(HX3695_MSG_TYPE_WEARSTAT_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
}\r
\r
+ if(uapi_dev_runtime_get_train_status())\r
+ {\r
+ hx3695_wearstatus_update();\r
+ }\r
\r
//PRINT("hx3695 data_cnt: %d, hr_living: %d, hr_living_qu: %d, hr_living_std: %d, hr_result:%d \r\n",\r
//alg_results.data_cnt, hrsresult.hr_living, hrsresult.hr_living_qu, hrsresult.hr_living_std, hrsresult.lastesthrs);\r