Author: titmuss
Date: Tue Jul  8 07:26:03 2008
New Revision: 2673

URL: http://svn.slimdevices.com?rev=2673&root=Jive&view=rev
Log:
Bug: 5378
Description:
Remember details about the last Player and Server that jive was connected to. 
When jive starts (or power on for the 
Controller), then it automatically tries to reconnect to the last 
Player/Server, sending WOL if needed.


Modified:
    
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SlimDiscovery/SlimDiscoveryApplet.lua
    
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SlimDiscovery/SlimDiscoveryMeta.lua
    7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua
    7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/SlimServer.lua

Modified: 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SlimDiscovery/SlimDiscoveryApplet.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SlimDiscovery/SlimDiscoveryApplet.lua?rev=2673&root=Jive&r1=2672&r2=2673&view=diff
==============================================================================
--- 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SlimDiscovery/SlimDiscoveryApplet.lua
 (original)
+++ 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SlimDiscovery/SlimDiscoveryApplet.lua
 Tue Jul  8 07:26:03 2008
@@ -466,10 +466,25 @@
 
        local playerId = player and player:getId() or false
 
-       if settings.currentPlayer ~= playerId then
+       if settings.playerId ~= playerId then
                -- update player
                log:info("selected player: ", player)
 
+               settings.playerId = playerId
+               settings.playerInit = player and player:getInit()
+
+               local server = player and player:getSlimServer() or false
+               if server then
+                       settings.squeezeNetwork = server:isSqueezeNetwork()
+
+                       -- remember server if it's not SN
+                       if not settings.squeezeNetwork then
+                               settings.serverName = server:getName()
+                               settings.serverInit = server:getInit()
+                       end
+               end
+
+               -- legacy setting
                settings.currentPlayer = playerId
                self:storeSettings()
        end

Modified: 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SlimDiscovery/SlimDiscoveryMeta.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SlimDiscovery/SlimDiscoveryMeta.lua?rev=2673&root=Jive&r1=2672&r2=2673&view=diff
==============================================================================
--- 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SlimDiscovery/SlimDiscoveryMeta.lua
 (original)
+++ 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SlimDiscovery/SlimDiscoveryMeta.lua
 Tue Jul  8 07:26:03 2008
@@ -20,6 +20,7 @@
 local AppletMeta    = require("jive.AppletMeta")
 
 local Player        = require("jive.slim.Player")
+local SlimServer    = require("jive.slim.SlimServer")
 
 local debug         = require("jive.utils.debug")
 local log           = require("jive.utils.log").logger("applets.setup")
@@ -67,10 +68,33 @@
        -- SlimDiscovery is a resident Applet
        local slimDiscovery = appletManager:loadApplet("SlimDiscovery")
 
-       -- Set current player
-       if settings.currentPlayer then
-               slimDiscovery:setCurrentPlayer(Player(jnt, 
settings.currentPlayer))
+       local player, server
+
+       -- Current server
+       if settings.serverName then
+               server = SlimServer(jnt, settings.serverName)
+               server:updateInit(settings.serverInit)
        end
+
+       -- Current player
+       if settings.playerId then
+               player = Player(jnt, settings.playerId)
+
+               if settings.squeezeNetwork then
+                       player:updateInit(nil, settings.playerInit)
+               else
+                       player:updateInit(server, settings.playerInit)
+               end
+
+       elseif settings.currentPlayer then
+               -- legacy setting
+               player = Player(jnt, settings.currentPlayer)
+       end
+
+       if player then
+               slimDiscovery:setCurrentPlayer(player)
+       end
+
 
        -- With the MP firmware when SqueezeNetwork is selected a dummy player 
with an ff mac
        -- address is selected, and then a firmware update starts. When this 
mac address is seen 

Modified: 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua?rev=2673&root=Jive&r1=2672&r2=2673&view=diff
==============================================================================
--- 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua (original)
+++ 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua Tue Jul  8 
07:26:03 2008
@@ -218,6 +218,7 @@
 
                -- player state from SC
                state = {},
+               mode = "off",
 
                isOnStage = false,
 
@@ -228,6 +229,32 @@
        playerIds[obj.id] = obj
 
        return obj
+end
+
+
+-- Update player on start up
+function updateInit(self, slimServer, init)
+       self.info.name = init.name
+       self.info.model = init.model
+       self.info.connected = false
+
+       self.lastSeen = 0 -- don't timeout
+       playerList[self.id] = self
+
+       if slimServer then
+               log:info(self, " new for ", slimServer)
+               self.slimServer = slimServer
+               self.slimServer:_addPlayer(self)
+       end
+end
+
+
+-- State needed for updateInit
+function getInit(self)
+       return {
+               name = self.info.name,
+               model = self.info.model,
+       }
 end
 
 
@@ -1126,6 +1153,9 @@
 -- tell the player to connect to another server
 function connectToServer(self, server)
 
+       -- make sure the server we are connecting to is awake
+       server:wakeOnLan()
+
        if self.config == "needsServer" then
                _udapConnect(self, server)
                return

Modified: 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/SlimServer.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/SlimServer.lua?rev=2673&root=Jive&r1=2672&r2=2673&view=diff
==============================================================================
--- 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/SlimServer.lua 
(original)
+++ 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/SlimServer.lua Tue 
Jul  8 07:26:03 2008
@@ -289,7 +289,7 @@
                netstate = 'disconnected',
 
                -- number of user activated requests
-               numUserRequests = 0,
+               userRequests = {},
 
                -- artwork state below here
 
@@ -330,6 +330,25 @@
        obj.artworkFetchTask = Task("artwork", obj, processArtworkQueue)
        
        return obj
+end
+
+
+-- Update server on start up
+function updateInit(self, init)
+       self.ip = init.ip
+       self.mac = init.mac
+
+       self.lastSeen = 0 -- don't timeout
+       serverList[self.id] = self
+end
+
+
+-- State needed for updateInit
+function getInit(self)
+       return {
+               ip = self.ip,
+               mac = self.mac,
+       }
 end
 
 
@@ -449,6 +468,11 @@
                return
        end
 
+       if self.lastSeen == 0 then
+               log:debug("Server ip address is not known")
+               return
+       end
+
        log:info(self, ":connect")
 
        assert(self.comet)
@@ -520,7 +544,8 @@
        end
 
        -- always send the notification
-       self.jnt:notify('serverDisconnected', self, self.numUserRequests)
+       debug.dump(self.userRequests, 5)
+       self.jnt:notify('serverDisconnected', self, #self.userRequests)
 end
 
 
@@ -1001,11 +1026,12 @@
                self:connect()
        end
 
-       self.numUserRequests = self.numUserRequests + 1
+       local req = { func, ... }
+       table.insert(self.userRequests, req)
 
        self.comet:request(
                function(...)
-                       self.numUserRequests = self.numUserRequests - 1
+                       table.delete(self.userRequests, req)
                        if func then
                                func(...)
                        end

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

Reply via email to