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