* @Author: penglei 1624952103@qq.com
* @Date: SLEPPNOTIFY24-06-26 19:36:48
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-09-30 11:47:04
+ * @LastEditTime: 2024-10-02 17:56:07
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp
* @Description:
*
#include "power_display_service.h"
#include "MainModel.h"
#include "cywee_service.h"
+#include "custom_runtime.h"
extern "C" errcode_t uapi_get_TIME_STR(uint32_t time, char *p_time, char date_separator, char time_separator, date_format_t format);
extern "C" int get_sleep_time_from_config_model(void);
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
}
}
if (fp == NULL)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "save_nap_sleep_data fopen fail");
- osal_mutex_unlock(&sleep_mutex);
return false;
}
fclose(fp);
- osal_mutex_unlock(&sleep_mutex);
-
return true;
}
{
memset(&nap_data, 0, sizeof(NAP_T));
memcpy_s(&nap_data, sizeof(NAP_T), data, sizeof(NAP_T));
+
+ //睡眠存储加锁与设runtime状态统一在外面处理
+ uapi_dev_runtime_set_sleep_storage_status(1);
+ errcode_t ret = osal_mutex_lock(&sleep_mutex);
+ if (ret != ERRCODE_SUCC)
+ {
+ PRINT(" sleep_mutex lock fail! ret=0x%x\n", ret);
+ uapi_dev_runtime_set_sleep_storage_status(0);
+ return;
+ }
save_nap_data(&nap_data);
+ osal_mutex_unlock(&sleep_mutex);
+ uapi_dev_runtime_set_sleep_storage_status(0);
}
uint32_t read_sleep_nap_data(char *data, uint32_t size, FILE *fp)
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)
}
fclose(fp);
- osal_mutex_unlock(&sleep_mutex);
-
return true;
}
{
memset(&sleep_data, 0, sizeof(SLEEP_T));
memcpy_s(&sleep_data, sizeof(SLEEP_T), data, sizeof(SLEEP_T));
+ //睡眠存储加锁与设runtime状态统一在外面处理
+ uapi_dev_runtime_set_sleep_storage_status(1);
+ errcode_t ret = osal_mutex_lock(&sleep_mutex);
+ if (ret != ERRCODE_SUCC)
+ {
+ PRINT(" sleep_mutex lock fail! ret=0x%x\n", ret);
+ uapi_dev_runtime_set_sleep_storage_status(0);
+ return;
+ }
save_sleep_data(&sleep_data);
+ osal_mutex_unlock(&sleep_mutex);
+ uapi_dev_runtime_set_sleep_storage_status(0);
// 刷新model里面的数据
// SleepModel::GetInstance().update_sleep(&sleep_data);
}