Commit d61a4575 authored by 陈伟灿's avatar 陈伟灿

Merge branch 'cwc' into 'master'

【修改内容】增加场景设置中跨天情况下的逻辑处理

See merge request chenweican/k-sdk!57
parents b95c510a ddf07233
......@@ -914,6 +914,7 @@ int kk_scene_check_condition(const char *sceneId)
time_t startTime = 0,startTime_m = 0;
time_t endTime = 0,endTime_m = 0;
int duration = 0;
int crossDay = 0;
sqlite3_stmt *stmt;
kk_scene_ctx_t *ctx = _kk_scene_get_ctx();
time_t current = HAL_GetTime();
......@@ -925,17 +926,37 @@ int kk_scene_check_condition(const char *sceneId)
repeatday = sqlite3_column_int(stmt, DB_SCENECONDITION_REPEATDAY);
startTime = sqlite3_column_int(stmt, DB_SCENECONDITION_STARTTIME);
endTime = sqlite3_column_int(stmt, DB_SCENECONDITION_ENDTIME);
crossDay = sqlite3_column_int(stmt, DB_SCENECONDITION_CROSSDAY);
duration = endTime - startTime;
startTime_m = kk_scene_creat_new_starttime(startTime,current);
INFO_PRINT("current:%ld,startTime_m:%ld,repeatday:%d\n",current,startTime_m,repeatday);
/********check today is one of repeatday**************/
if((repeatday > 0) && (repeatday &(1<<(curWeek-1)))){
if(current >= startTime_m && current <= (startTime_m + duration)){
if(crossDay && current < startTime_m){
/*跨天处理,判断当前时间是否在上一天的结束时间内*/
if(current <= (startTime_m + duration - 86400)){
res = SUCCESS_RETURN;
}
}
else if(current >= startTime_m && current <= (startTime_m + duration)){
res = SUCCESS_RETURN;
}
else{
INFO_PRINT("time not match current:%ld,startTime_m:%ld,repeatday:%d\n",current,startTime_m,repeatday);
}
}
else if((repeatday > 0)&&(!(repeatday &(1<<(curWeek-1))))){
/*跨天处理,获取前一天的星期*/
if(crossDay == 1){
curWeek = (curWeek - 1) == 0? 7:(curWeek - 1);
/*前一天的星期必须要在重复星期内*/
if(repeatday &(1<<(curWeek-1))){
if(current <= (startTime_m + duration - 86400)){
res = SUCCESS_RETURN;
}
}
}
}
else{
if(current >= startTime && current <= (startTime + duration)){
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment