Author: bklaas
Date: Tue Jan 26 13:29:43 2010
New Revision: 8402
URL: http://svn.slimdevices.com/jive?rev=8402&view=rev
Log:
r38...@daddymac-520 (orig r8401): bklaas | 2010-01-26 15:09:22 -0500
Fixed Bug: 14870
Description: This checkin has been tested against a set of 11 test cases and
passed all of them
executive UI decision: button actions other than 'go', 'back', 'mute',
'volume_up', 'volume_down', 'power', and 'pause' are consumed when the alarm
window is active
remove window listener for EVENT_WINDOW_POP, as it now serves no purpose
(because of executive UI decision)
self.alarmInProgress remains 'rtc' when snooze is hit
make sure sledgehammer is true when it needs to be
clean up code
obey server-side setting for alarmSnoozeSeconds by adding a player method
Player:getAlarmSnoozeSeconds(). Defaults to 540 seconds (9 minutes)
add 20 seconds to snooze fallback timer to give server the chance it needs to
fire alarm after snooze expires
add a status poller for debug (disabled by default)
Modified:
7.5/trunk/ (props changed)
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/AlarmSnooze/AlarmSnoozeApplet.lua
7.5/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua
Propchange: 7.5/trunk/
------------------------------------------------------------------------------
--- svk:merge (original)
+++ svk:merge Tue Jan 26 13:29:43 2010
@@ -12,7 +12,7 @@
bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.4/private-branches/fab4-autoswitch:5831
bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.4/private-branches/fab4-skin:4552
bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.4/private-branches/new-alsa:6567
-bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.4/trunk:8381
+bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.4/trunk:8401
bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/7.0:2013
bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/SN:1083
bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/scrolling:1378
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=8402&r1=8401&r2=8402&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
Tue Jan 26 13:29:43 2010
@@ -54,6 +54,7 @@
-- as it will be set again whenever it is invoked by an
self.alarmNext param
timeToAlarm = 86400000
end
+ self.debugRTCTime = timeToAlarm
self.RTCAlarmTimer = Timer(timeToAlarm,
function ()
log:warn("RTC ALARM FIRING")
@@ -70,7 +71,29 @@
end,
true
)
-
+
+ self.statusPoller = Timer(1000,
+ function ()
+ local status = decode:status()
+ log:warn('----------------------------------')
+ log:warn('**** self.alarmInProgress: ',
self.alarmInProgress)
+ log:warn('**** status.audioState: ',
status.audioState)
+ log:warn('**** self.localPlayer.alarmState: ',
self.localPlayer:getAlarmState())
+ log:warn('**** RTC fallback running?: ',
self.RTCAlarmTimer:isRunning())
+ 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
+ end,
+ false)
+
+ -- this timer is for debug purposes only, to log state information
every second for tracking purposes
+ -- very useful when needed...
+ -- self.statusPoller:start()
+
if startTimer then
self:_startTimer()
end
@@ -138,9 +161,7 @@
if self.RTCAlarmTimer:isRunning() then
log:warn('clear alarm directive
received while RTC timer is running! Stopping. Careful now...')
end
- if self.decodeStatePoller:isRunning() then
- self.decodeStatePoller:stop()
- end
+ self:_stopDecodeStatePoller()
self:_stopTimer()
else
log:warn('clear alarm directive received while
fallback alarm in progress! ignoring')
@@ -149,9 +170,7 @@
elseif alarmState == 'set' then
log:warn('an upcoming alarm is set, but none is
currently active')
- if self.decodeStatePoller:isRunning() then
- self.decodeStatePoller:stop()
- end
+ self:_stopDecodeStatePoller()
end
-- store alarmNext data as epoch seconds
@@ -172,8 +191,10 @@
self:storeSettings()
self:_setWakeupTime()
- self:_stopTimer()
- self:_startTimer()
+ if self.alarmInProgress ~= 'rtc' then
+ self:_stopTimer()
+ self:_startTimer()
+ end
end
end
end
@@ -191,7 +212,7 @@
--debug.dump(status)
log:warn('alarm_sledgehammerRearm(', caller,'): ',
self.alarmInProgress, ' alarm in progress - audioState is ', status.audioState)
- if self.alarmInProgress and status.audioState ~= 1 then
+ if self.alarmInProgress and self.alarmInProgress ~= 'snooze' and
status.audioState ~= 1 then
hammer = true
end
@@ -379,11 +400,7 @@
-- when the alarm time is hit, unset the wakeup mcu time
self:_setWakeupTime('none')
- if self.decodeStatePoller:isRunning() then
- self.decodeStatePoller:restart()
- else
- self.decodeStatePoller:start()
- end
+ self:_startDecodeStatePoller()
if caller == 'server' then
-- if we're connected, first drop the now playing window
underneath the alarm window
@@ -456,10 +473,11 @@
return EVENT_CONSUME
end
- local hideWindowAction = function()
- window:playSound("WINDOWHIDE")
- self:_alarmOff(true)
- return EVENT_UNUSED
+ local consumeAction = function()
+ log:warn('Consuming this action')
+ Framework:playSound("BUMP")
+ window:bumpLeft()
+ return EVENT_CONSUME
end
local offAction = function()
@@ -476,7 +494,12 @@
menu:addActionListener("power", self, offAction)
menu:addActionListener("mute", self, snoozeAction)
- window:ignoreAllInputExcept({ 'go', 'back', 'power', 'mute',
'volume_up', 'volume_down' }, hideWindowAction)
+ window:ignoreAllInputExcept(
+ --these actions are not ignored
+ { 'go', 'back', 'power', 'mute', 'volume_up', 'volume_down',
'pause' },
+ -- consumeAction is the callback issued for all "ignored" input
+ consumeAction
+ )
menu:setHeaderWidget(headerGroup)
@@ -485,29 +508,13 @@
window:setAllowScreensaver(false)
window:show(Window.transitionFadeIn)
- -- If the window leaves the screen through any means,
self.alarmInProgress gets set to none, fallback alarm audio gets stopped,
decodeStatePoller gets stopped
- window:addListener(EVENT_WINDOW_POP,
- function()
- if self.alarmInProgress == 'rtc' then
- self.localPlayer:stop(true)
- iconbar:setAlarm('OFF')
- log:warn('_alarmOff: RTC alarm canceled')
- end
- if self.decodeStatePoller:isRunning() then
- self.decodeStatePoller:stop()
- end
- self.alarmInProgress = nil
- self.alarmWindow = nil
- log:warn('self.alarmInProgress set to: ',
self.alarmInProgress)
- end
- )
-
window:addTimer(1000,
function()
self:_updateTime()
end
)
+ window:setAlwaysOnTop(true)
self.alarmWindow = window
self.timeWidget = label
@@ -542,9 +549,7 @@
self.alarmWindow:playSound("WINDOWHIDE")
self:_hideAlarmWindow()
- if self.decodeStatePoller:isRunning() then
- self.decodeStatePoller:stop()
- end
+ self:_stopDecodeStatePoller()
if self.localPlayer:isConnected() and stopStream then
log:warn('_alarmOff: send stopAlarm to connected server')
@@ -557,6 +562,7 @@
if self.RTCAlarmTimer:isRunning() then
log:warn('_stopTimer: stopping RTC fallback alarm timer')
self.RTCAlarmTimer:stop()
+ self.debugRTCTime = 0
end
if self.wakeOnLanTimer:isRunning() then
log:warn('_stopTimer: stopping WOL timer')
@@ -565,6 +571,23 @@
end
+function _stopDecodeStatePoller(self)
+ if self.decodeStatePoller:isRunning() then
+ log:warn('stopping decodeStatePoller')
+ self.decodeStatePoller:stop()
+ end
+end
+
+
+function _startDecodeStatePoller(self)
+ if self.decodeStatePoller:isRunning() then
+ self.decodeStatePoller:restart()
+ else
+ self.decodeStatePoller:start()
+ end
+end
+
+
function _inFuture(self)
if not self.alarmNext then
return false
@@ -587,18 +610,21 @@
if self.RTCAlarmTimer:isRunning() then
self.RTCAlarmTimer:stop()
+ self.debugRTCTime = 0
log:warn('_startTimer: stopping RTC fallback alarm timer')
end
if interval then
log:warn('starting RTC fallback alarm timer for interval ',
interval)
self.RTCAlarmTimer:setInterval(interval)
+ 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 11 minutes
away (660,000 msecs)
if sleepMsecs > 660000 then
@@ -618,26 +644,28 @@
log:warn('_alarmSnooze: alarmInProgress is ', self.alarmInProgress, ' :
connection status is ', self.localPlayer:isConnected())
- log:warn('_alarmSnooze: fallback alarm snoozing for hardwired 9
minutes')
self:_stopTimer()
- -- start another hardwired timer for 9 minutes
- self:_startTimer(540000)
- --self:_startTimer(20000)
+
+ local alarmSnoozeSeconds = self.localPlayer:getAlarmSnoozeSeconds()
+ log:warn('_alarmSnooze: fallback alarm snoozing for ',
alarmSnoozeSeconds,' + 20 seconds')
+ self:_startTimer(alarmSnoozeSeconds * 1000 + 20000 )
if self.alarmInProgress == 'rtc' then
log:warn('_alarmSnooze: stopping fallback alarm audio')
-- stop playback
self.localPlayer:stop(true)
+ else
+ self.alarmInProgress = 'snooze'
end
if self.localPlayer:isConnected() then
log:warn('_alarmSnooze: sending snooze command to connected
server for connected player ', self.localPlayer)
self.localPlayer:snooze()
end
+ self:_stopDecodeStatePoller()
self.alarmWindow:playSound("WINDOWHIDE")
self:_hideAlarmWindow()
- self.alarmInProgress = 'snooze'
end
Modified: 7.5/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua
URL:
http://svn.slimdevices.com/jive/7.5/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua?rev=8402&r1=8401&r2=8402&view=diff
==============================================================================
--- 7.5/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua (original)
+++ 7.5/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua Tue Jan 26
13:29:43 2010
@@ -1178,7 +1178,6 @@
-- ignore player status sent with an error
return
end
-
-- update our state in one go
local oldState = self.state
self.state = event.data
@@ -1193,6 +1192,8 @@
-- add 1 to playlist_cur_index to get 1-based place in playlist
self.playlistCurrentIndex = event.data.playlist_cur_index and
tonumber(event.data.playlist_cur_index) + 1
self.definedPresets = event.data.preset_loop
+ -- alarm snooze seconds for player, defaults to 540
+ self.alarmSnoozeSeconds = event.data.alarm_snooze_seconds
-- update our player state, and send notifications
-- create a playerInfo table, to allow code reuse
@@ -1845,6 +1846,9 @@
return self.lastSeen
end
+function getAlarmSnoozeSeconds(self)
+ return self.alarmSnoozeSeconds or 540
+end
function isConnected(self)
return self.slimServer and self.slimServer:isConnected() and
self.info.connected
_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/jive-checkins