diff --git a/de1plus/gui.tcl b/de1plus/gui.tcl index 401c98e2..37057043 100644 --- a/de1plus/gui.tcl +++ b/de1plus/gui.tcl @@ -927,7 +927,7 @@ proc show_going_to_sleep_page {} { return } - if {[ifexists ::app_updating] == 1} { + if {[ifexists ::app_updating] == 1} { msg "delaying screen saver because tablet app is updating" delay_screen_saver return @@ -937,7 +937,17 @@ proc show_going_to_sleep_page {} { msg "delaying screen saver because firmware is updating" delay_screen_saver return - } + } + + # make scheduler work on "keep awake" logic + if {[ifexists ::scheduler_awake] == 1} { + msg "delaying screen saver 60 sec because of scheduler" + stop_screen_saver_timer + if {$::settings(screen_saver_delay) != 0 } { + set ::screen_saver_alarm_handle [after 60000 "show_going_to_sleep_page"] + } + return + } puts "show_going_to_sleep_page" if {$::de1(current_context) == "sleep" || $::de1(current_context) == "saver"} { diff --git a/de1plus/vars.tcl b/de1plus/vars.tcl index 208d836a..a521f373 100644 --- a/de1plus/vars.tcl +++ b/de1plus/vars.tcl @@ -193,6 +193,11 @@ proc set_alarms_for_de1_wake_sleep {} { set sleep_seconds [expr {[next_alarm_time $::settings(scheduler_sleep)] - [clock seconds]}] set ::alarms_for_de1_sleep [after [expr {1000 * $sleep_seconds}] scheduler_sleep] + + # if we are in the middle of the scheduled period at startup, set the awake flag if using new scheduler logic + if {[ifexists ::settings(scheduler_logic)] == 1 && $wake_seconds > $sleep_seconds} { + set ::scheduler_awake 1 + } #msg "Wake schedule set for [next_alarm_time $::settings(scheduler_wake)] in $wake_seconds seconds" #msg "Sleep schedule set for [next_alarm_time $::settings(scheduler_sleep)] in $sleep_seconds seconds" @@ -200,18 +205,30 @@ proc set_alarms_for_de1_wake_sleep {} { } proc scheduler_wake {} { - msg "Scheduled wake occured at [clock format [clock seconds]]" + msg "Scheduled wake occurred at [clock format [clock seconds]]" + + # set "keep awake" flag if user has chosen new scheduler logic + if {[ifexists ::settings(scheduler_logic)] == 1} { + set ::scheduler_awake 1 + } + start_idle - # after alarm has occured go ahead and set the alarm for tommorrow + # after alarm has occurred go ahead and set the alarm for tommorrow after 2000 set_alarms_for_de1_wake_sleep } proc scheduler_sleep {} { - msg "Scheduled sleep occured at [clock format [clock seconds]]" - start_sleep - - # after alarm has occured go ahead and set the alarm for tommorrow + msg "Scheduled end occurred at [clock format [clock seconds]]" + + # if user has chosen new scheduler logic, clear "keep awake" flag (which will allow machine to sleep per idle timer), else immediately sleep + if {[ifexists ::settings(scheduler_logic)] == 1} { + unset ::scheduler_awake + } else { + start_sleep + } + + # after alarm has occurred go ahead and set the alarm for tommorrow after 2000 set_alarms_for_de1_wake_sleep } @@ -3814,4 +3831,4 @@ proc when_to_start_pour_tracking_advanced {} { } else { return [translate "Immediately"] } -} \ No newline at end of file +}