// 睡眠状态
enum class SLEEPSTATE
{
- NOSLEEP = 0,
+ WALK = 0,
SLEEPNOTIFY,
SLEPP,
- WALK,
};
-
+ // 睡眠存储数据
+ typedef struct
+ {
+ uint8_t sleep_state; // 睡眠状态
+ int sleeptime; // 睡眠时间
+ int walktime; // 醒来时间
+ int totaltime; // 睡眠总时间
+ } SleepDataUI;
class SleepModel
{
public:
void set_sleep_state(SLEEPSTATE state);
SLEEPSTATE get_sleep_state();
+ SleepDataUI *ReadSleepData(); // 读取睡眠数据
+ bool UpdateSleepData(const SleepDataUI &data); // 更新睡眠数据
private:
SleepModel();
uint8_t sleep_total_time = 0;
uint8_t goal_total_time = 0;
- SLEEPSTATE sleepstate_ = SLEEPSTATE::NOSLEEP;
+ SLEEPSTATE sleepstate_ = SLEEPSTATE::WALK;
};
}
// 更新一下配置
set_sleep_goal();
+
+ // 刷新一下文件
}
void SleepModel::update_time_info(uint32_t timestamp, std::string &timeStr)
// 睡眠字符串 以及总时长
goalStr = goalsleepStr + "-" + goalwalkStr;
- goal_total_time = goal_walk_hour * 60 + goal_walk_min;
+
+ // goal_total_time 计算
+ int total_hours;
+ if (goal_walk_hour < goal_sleep_hour)
+ {
+ total_hours = (goal_walk_hour + 24) - goal_sleep_hour; // 跨天情况
+ }
+ else
+ {
+ total_hours = goal_walk_hour - goal_sleep_hour;
+ }
+
+ int total_minutes = goal_walk_min - goal_sleep_min;
+ if (total_minutes < 0)
+ {
+ total_hours--; // 如果分钟差为负数,小时差减1
+ total_minutes += 60; // 转换为正数,加60分钟
+ }
+
+ goal_total_time = (total_hours == 0 && total_minutes < 60) ? 1 : total_hours; // 确保最小时间为1小时
}
// 获取睡眠总时长(小时)
int SleepModel::get_sleep_hour()
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Updata SleppTime!");
RootView::GetInstance()->Invalidate();
}
+ // 更新目标时间
+ int totaltime = SleepModel::GetInstance().get_sleep_goal();
+ UpdateLabel(goaltime, totaltime, STR_SLEEPMGOAL);
}
void SleepView::ClearAll()