Author: bklaas
Date: Mon Jan 14 20:29:28 2008
New Revision: 1437

URL: http://svn.slimdevices.com?rev=1437&root=Jive&view=rev
Log:
Bug: 5806
Description: 
add a firmwarestatus subscription that runs every 5 mins, only for SBC and not 
jive_desktop
if new fw is available from SC, push on the upgrade window

change SetupFirmwareUpgrade to allow a passed url to forceUpgrade method
(seems like the same thing could be done in SetupFirmwareMeta instead of using 
a global, but I'm not going to break something that isn't broken...)

Modified:
    trunk/jive/src/pkg/jive/share/applets/SlimBrowser/SlimBrowserApplet.lua
    
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/SetupFirmwareUpgradeApplet.lua

Modified: 
trunk/jive/src/pkg/jive/share/applets/SlimBrowser/SlimBrowserApplet.lua
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive/share/applets/SlimBrowser/SlimBrowserApplet.lua?rev=1437&root=Jive&r1=1436&r2=1437&view=diff
==============================================================================
--- trunk/jive/src/pkg/jive/share/applets/SlimBrowser/SlimBrowserApplet.lua 
(original)
+++ trunk/jive/src/pkg/jive/share/applets/SlimBrowser/SlimBrowserApplet.lua Mon 
Jan 14 20:29:28 2008
@@ -81,6 +81,7 @@
 local KEY_VOLUME_DOWN        = jive.ui.KEY_VOLUME_DOWN
 local KEY_VOLUME_UP          = jive.ui.KEY_VOLUME_UP
 
+local JIVE_VERSION           = jive.JIVE_VERSION
 local jiveMain               = jiveMain
 local iconbar                = iconbar
 local jnt                    = jnt
@@ -699,6 +700,36 @@
                
        else
                log:error(err)
+       end
+end
+
+-- _firmwareSink
+-- returns a sink with a closure to self
+-- cmd is passed so we know what process function to call
+-- this sink receives notifications of new Jive firmware available
+local function _firmwareSink(self, cmd)
+       return function(chunk, err) 
+               log:info("FIRMWARE SINK")
+               if err then
+                       log:warn(err)
+                       return
+               end
+                  
+               local _data = chunk.data
+               if _data and _data.firmwareUpgrade and 
tonumber(_data.firmwareUpgrade) == 1 then
+                       -- time to make the donuts
+                       log:warn("New firmware detected!")
+                       local fwApplet = 
AppletManager:loadApplet("SetupFirmwareUpgrade")
+                       if fwApplet then
+                               fwApplet:forceUpgrade(_data.firmwareUrl)        
+                               -- you've gotten the fw upgrade notice, so quit 
requesting it
+                               if _server and _player then
+                                       log:warn("unsubscribing from 
firmwarestatus")
+                                       
_server.comet:unsubscribe('/slim/firmwarestatus/' .. _player.id)
+                               end
+                       end
+                       return
+               end
        end
 end
 
@@ -1793,6 +1824,23 @@
        _server = player:getSlimServer()
        _string = function(token) return self:string(token) end
 
+       if _player then                                
+               local fwApplet = 
AppletManager:loadApplet("SetupFirmwareUpgrade")
+               -- no need to bother if we don't have the SetupFirmware applet 
(e.g., when running jive_desktop)
+               if fwApplet then
+                       log:warn('**** SUBSCRIBING to /slim/firmwarestatus/', 
_player.id)
+                       local fwcmd = { 'firmwareupgrade', 'firmwareVersion:' 
.. JIVE_VERSION, 'subscribe:3600' }
+                       _server.comet:subscribe(
+                               '/slim/firmwarestatus/' .. _player.id,
+                               _firmwareSink(sink, fwcmd, fwApplet),
+                               _player.id,
+                               fwcmd
+                       )
+               end
+               AppletManager:freeApplet("SetupFirmwareUpgrade")
+       end
+
+
        log:warn('**** SUBSCRIBING to /slim/menustatus/', _player.id)
        local cmd = { 'menustatus' }
        _server.comet:subscribe(
@@ -1907,8 +1955,10 @@
 
        -- unsubscribe from this player's menustatus
        log:warn("***** UNSUBSCRIBING FROM /slim/menustatus/", _player.id)
+       log:warn("***** UNSUBSCRIBING FROM /slim/firmwarestatus/", _player.id)
        if _server and _player then
                _server.comet:unsubscribe('/slim/menustatus/' .. _player.id)
+               _server.comet:unsubscribe('/slim/firmwarestatus/' .. _player.id)
        end
 
        if _player then

Modified: 
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/SetupFirmwareUpgradeApplet.lua
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/SetupFirmwareUpgradeApplet.lua?rev=1437&root=Jive&r1=1436&r2=1437&view=diff
==============================================================================
--- 
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/SetupFirmwareUpgradeApplet.lua
 (original)
+++ 
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/SetupFirmwareUpgradeApplet.lua
 Mon Jan 14 20:29:28 2008
@@ -75,14 +75,17 @@
 oo.class(_M, Applet)
 
 
-function forceUpgrade(self)
+function forceUpgrade(self, upgUrl)
        local window = Window("window", self:string("UPDATE"), 
firmwareupgradeTitleStyle)
        window:setAllowScreensaver(false)
 
        local menu = SimpleMenu("menu")
        menu:setCloseable(false)
 
-       local url = upgradeUrl[1]
+       local url
+       if not upgUrl then
+               url = upgradeUrl[1]
+       end
        if not url then
                url = DEFAULT_FIRMWARE_URL
        end

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

Reply via email to