Author: bklaas
Date: Mon May 24 11:23:45 2010
New Revision: 8803

URL: http://svn.slimdevices.com/jive?rev=8803&view=rev
Log:
Bug: 15663
Description: also send WOL 5 minutes before snoozed alarm is set to refire

Modified:
    
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/AlarmSnooze/AlarmSnoozeApplet.lua

Modified: 
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/AlarmSnooze/AlarmSnoozeApplet.lua
URL: 
http://svn.slimdevices.com/jive/7.5/trunk/squeezeplay/src/squeezeplay/share/applets/AlarmSnooze/AlarmSnoozeApplet.lua?rev=8803&r1=8802&r2=8803&view=diff
==============================================================================
--- 
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/AlarmSnooze/AlarmSnoozeApplet.lua
 (original)
+++ 
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/AlarmSnooze/AlarmSnoozeApplet.lua
 Mon May 24 11:23:45 2010
@@ -89,13 +89,6 @@
                        log:warn('**** self.server:                 ', 
self.server)
                        if self.server then
                                log:warn('**** self.server.mac:                 
', self.server.mac)
-                       end
-                       if self.RTCAlarmTimer:isRunning() and self.debugRTCTime 
and self.debugRTCTime > 0 then
-                               local timeToAlarm = self.debugRTCTime / 1000
-                               log:warn('**** RTC time:       ', timeToAlarm)
-                               if self.debugRTCTime > 0 then   
-                                       self.debugRTCTime = self.debugRTCTime - 
1000
-                               end
                        end
                        if self.RTCAlarmTimer:isRunning() and self.debugRTCTime 
and self.debugRTCTime > 0 then
                                local timeToAlarm = self.debugRTCTime / 1000
@@ -631,7 +624,7 @@
 
 
 function _stopDecodeStatePoller(self)
-       if self.decodeStatePoller:isRunning() then
+       if self.decodeStatePoller and self.decodeStatePoller:isRunning() then
                log:warn('stopping decodeStatePoller')
                self.decodeStatePoller:stop()
        end
@@ -639,10 +632,12 @@
 
 
 function _startDecodeStatePoller(self)
-       if self.decodeStatePoller:isRunning() then
-               self.decodeStatePoller:restart()
-       else
-               self.decodeStatePoller:start()
+       if self.decodeStatePoller then
+               if self.decodeStatePoller:isRunning() then
+                       self.decodeStatePoller:restart()
+               else
+                       self.decodeStatePoller:start()
+               end
        end
 end
 
@@ -679,41 +674,56 @@
                self.debugRTCTime = interval
        else
                -- get msecs between now and requested alarm
-               -- add 10 secs for fallback timer to bias alarm toward server 
wakeup
-               local sleepMsecs = self:_deltaMsecs(self.alarmNext + 10);
-               log:warn('_startTimer: starting RTC fallback alarm timer (', 
sleepMsecs, ')')
-               self.RTCAlarmTimer:setInterval(sleepMsecs)
-               self.debugRTCTime = sleepMsecs
-
-               -- WOL timer is set when sleepMsecs is more than 5:00 away
-               local wolLeadTime = 1000 * 60 * 5 -- 5 minutes
-               if sleepMsecs > wolLeadTime then
-                       self.wakeOnLanTimer:setInterval(sleepMsecs - 
wolLeadTime)
-                       self.debugWOLTime = sleepMsecs - wolLeadTime
-                       if self.wakeOnLanTimer:isRunning() then
-                               self.wakeOnLanTimer:restart()
-                       else
-                               self.wakeOnLanTimer:start()
-                       end
-               -- if it's within 5 minutes, send a WOL packet as a best effort
-               elseif self.server then
-                       log:warn('SEND WOL NOW')
-                       self.server:wakeOnLan()
-               end
-       end
+               interval = self:_deltaMsecs(self.alarmNext)
+
+               -- add 20 secs for fallback timer to bias alarm toward server 
wakeup
+               local rtcSleepMsecs = interval + 20000
+
+               log:warn('_startTimer: starting RTC fallback alarm timer (', 
rtcSleepMsecs, ')')
+               self.RTCAlarmTimer:setInterval(rtcSleepMsecs)
+               self.debugRTCTime = rtcSleepMsecs
+
+               -- restart the WOL timer for 5 minutes, or immediately send WOL 
if alarm is within 5 mins
+               self:_wolTimerRestart(interval)
+
+       end
+
        self.RTCAlarmTimer:start()
 end
 
 
+function _wolTimerRestart(self, msecsToAlarm)
+       local wolLeadTime = 1000 * 60 * 5 -- 5 minutes
+       if msecsToAlarm > wolLeadTime then
+               self.wakeOnLanTimer:setInterval(msecsToAlarm - wolLeadTime)
+               self.debugWOLTime = msecsToAlarm - wolLeadTime
+               if self.wakeOnLanTimer:isRunning() then
+                       self.wakeOnLanTimer:restart()
+               else
+                       self.wakeOnLanTimer:start()
+               end
+       -- if it's within 5 minutes, send a WOL packet as a best effort
+       elseif self.server then
+               log:warn('SEND WOL NOW')
+               self.debugWOLTime = 0
+               self.server:wakeOnLan()
+       end     
+end
+
+
 function _alarmSnooze(self)
        
        log:warn('_alarmSnooze: alarmInProgress is ', self.alarmInProgress, ' : 
connection status is ', self.localPlayer:isConnected())
 
        self:_stopTimer()
 
+       log:warn('_alarmSnooze: fallback alarm snoozing for ', 
alarmSnoozeSeconds,'  + 20 seconds')
        local alarmSnoozeSeconds = self.localPlayer:getAlarmSnoozeSeconds()
-       log:warn('_alarmSnooze: fallback alarm snoozing for ', 
alarmSnoozeSeconds,'  + 20 seconds')
-       self:_startTimer(alarmSnoozeSeconds * 1000 + 20000 )
+       local fallbackAlarmMsecs = alarmSnoozeSeconds * 1000 + 20000 
+       self.debugRTCTime = fallbackAlarmMsecs
+
+       self:_startTimer(fallbackAlarmMsecs)
+       self:_wolTimerRestart(alarmSnoozeSeconds * 1000)
        
        if self.alarmInProgress == 'rtc' then
                log:warn('_alarmSnooze: stopping fallback alarm audio')

_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/jive-checkins

Reply via email to