// uapi_dev_runtime_set_sleep_status(0);\r
// do_cywee_service_check_msg(CYWEE_SERVICE_CMD_GET_SLEEP_DATA, NULL);\r
\r
+ bool ret = OHOS::sleep_mutex_init();\r
+ if(!ret)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sleep_mutex_init failed !!! ");\r
+ }\r
+\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "起床啦! curTime.tm_hour:%d curTime.tm_min:%d curTime.tm_sec:%d ", curTime.tm_hour, curTime.tm_min, curTime.tm_sec);\r
\r
if (curTime.tm_hour == wake_time_hour && curTime.tm_min == wake_time_min && curTime.tm_sec == 0)\r
// 进入睡眠检测模式并退出小睡检测模式\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
+ bool ret = OHOS::sleep_mutex_init();\r
+ if(!ret)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sleep_mutex_init failed !!! ");\r
+ }\r
int cmd = 1;\r
uapi_dev_runtime_set_sleep_status(0); // 清零睡眠状态\r
uapi_dev_runtime_set_absolute_static_status(0); // 清零绝对静止状态\r
* @Author: penglei 1624952103@qq.com
* @Date: SLEPPNOTIFY24-06-26 19:36:48
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-09-23 18:21:49
+ * @LastEditTime: 2024-09-27 18:44:18
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp
* @Description:
*
static uint32_t sleep_update_timestamp = 0;
static uint32_t nap_update_timestamp = 0;
- /*获取最新睡眠时间戳*/
+ static uint8_t sleep_mutex_installed = 0;
+ static osal_mutex sleep_mutex;
+
+ bool sleep_mutex_init(void)
+ {
+ if(sleep_mutex_installed == 1)
+ return true;
+
+ if(sleep_mutex_installed == 0)
+ {
+ errcode_t ret = osal_mutex_init(&sleep_mutex);
+ if (ret != ERRCODE_SUCC)
+ {
+ PRINT("sleep_mutex lock fail! ret=0x%x\n", ret);
+ return false;
+ }
+ sleep_mutex_installed = 1;
+ }
+ return true;
+ }
+
+ /*获取最新睡眠时间戳*/
uint32_t get_sleep_update_timestamp(void)
{
if(nap_update_timestamp<=sleep_update_timestamp)
return nap_update_timestamp;
}
+
bool save_nap_data(NAP_T *data)
{
+ errcode_t ret;
+ ret = osal_mutex_lock(&sleep_mutex);
+ if (ret != ERRCODE_SUCC)
+ {
+ PRINT(" sleep_mutex lock fail! ret=0x%x\n", ret);
+ return false;
+ }
+
struct stat info;
char dir_path[64] = {0};
char file_path[64] = {0};
{
if (mkdir("user/userdata/sleep", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
{
+ osal_mutex_unlock(&sleep_mutex);
return false; // Failed to create folder
}
}
if (mkdir(dir_path, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mkdir fail %s", dir_path);
+ osal_mutex_unlock(&sleep_mutex);
return false; // Failed to create folder
}
}
uint32_t creationTime;
- int ret = uapi_get_timestampe_ss(&creationTime);
+ uapi_get_timestampe_ss(&creationTime);
sprintf_s(file_path, 64, NAP_PATH, day, creationTime);
if (fp == NULL)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "save_nap_sleep_data fopen fail");
+ osal_mutex_unlock(&sleep_mutex);
return false;
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "save_nap_sleep_data succ");
fclose(fp);
+
+ osal_mutex_unlock(&sleep_mutex);
+
return true;
}
bool save_sleep_data(SLEEP_T *data)
{
-
+ errcode_t ret;
+ ret = osal_mutex_lock(&sleep_mutex);
+ if (ret != ERRCODE_SUCC)
+ {
+ PRINT(" sleep_mutex lock fail! ret=0x%x\n", ret);
+ return false;
+ }
+
if(access(time_file_path, F_OK) == -1)
{
memset(time_file_path,0,sizeof(time_file_path));
if (fp == NULL)
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "save_sleep_data fopen fail");
+ osal_mutex_unlock(&sleep_mutex);
return false;
}
if(fp == NULL)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "save_sleep_data fopen fail");
+ osal_mutex_unlock(&sleep_mutex);
return false;
}
// if(data->wake_up_timestamp != 0)
if(fp == NULL)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "save_sleep_data fopen fail");
+ osal_mutex_unlock(&sleep_mutex);
return false;
}
fwrite(data->sleep_status, sizeof(SLEEP_STATE_T), data->status_num, fp);
}
fclose(fp);
+
+ osal_mutex_unlock(&sleep_mutex);
+
return true;
}
bool read_sleep_data(SLEEP_T *data)
{
+ errcode_t ret;
+
+ ret = osal_mutex_lock(&sleep_mutex);
+
+ if (ret != ERRCODE_SUCC)
+ {
+ PRINT(" sleep_mutex lock fail! ret=0x%x\n", ret);
+ return false;
+ }
+
char day[12] = {0};
uapi_get_YYMMDD_Time(day, '\0');
if (fp == NULL)
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "read_sleep_data fopen fail");
+ osal_mutex_unlock(&sleep_mutex);
return false;
}
if (sleep_type == 0)
{
fclose(fp);
+ osal_mutex_unlock(&sleep_mutex);
return false;
}
sleep_update_timestamp = wake_up_timestamp;
fclose(fp);
-
+
+ osal_mutex_unlock(&sleep_mutex);
+
return true;
- }
+}
void set_sleep_data(SLEEP_T *data)
{