Index: jive/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua =================================================================== --- jive/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua (revision 2010) +++ jive/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua (working copy) @@ -42,7 +42,7 @@ local setupsqueezeboxTitleStyle = 'settingstitle' local SETUP_TIMEOUT = 45 -- 45 second timeout for each action -local SETUP_EXTENDED_TIMEOUT = 85 -- 85 second timeout in case Squeezebox is upgrading after first connecting to SC +local SETUP_EXTENDED_TIMEOUT = 180 -- 180 second timeout in case Squeezebox is upgrading after first connecting to SC module(...) oo.class(_M, Applet) @@ -1291,6 +1291,9 @@ -- increase timeout if the player is upgrading if player:isNeedsUpgrade() then + -- make sure we are in the waiting for slimserver state, this is + -- needed in case the set slimserver udap packets got lost + _setAction(self, t_waitSlimserver) self._totalTimeout = SETUP_EXTENDED_TIMEOUT return end @@ -1311,6 +1314,16 @@ end +-- called when player comes back from firmware update. If the +-- player record was never removed while it was upgrading, this +-- is the only message we get when it comes back. +function notify_playerNeedsUpgrade(self, player, needsUpgrade) + if not needsUpgrade then + notify_playerNew(self, player) + end +end + + -- make sure Jive is reconnected to it's network when setup fails. function t_connectJiveOnFailure(self) log:info("connectJiveOnFailure adhoc_ssid=", self.adhoc_ssid) Index: jive/share/jive/slim/Player.lua =================================================================== --- jive/share/jive/slim/Player.lua (revision 2010) +++ jive/share/jive/slim/Player.lua (working copy) @@ -159,16 +159,6 @@ end end --- _setPlayerNeedsUpgrade() --- sends notification of player_needs_upgrade value. -local function _setPlayerNeedsUpgrade(self, playerNeedsUpgrade) - local needsUpgrade = (tonumber(playerNeedsUpgrade) == 1) - if needsUpgrade != self.needsUpgrade then - self.needsUpgrade = needsUpgrade - self.jnt:notify('playerNeedsUpgrade', self, self:isNeedsUpgrade()) - end -end - -- _whatsPlaying(obj) -- returns the track_id from a playerstatus structure local function _whatsPlaying(obj) @@ -278,6 +268,16 @@ return end + -- Update player state + local lastNeedsUpgrade = self.needsUpgrade + self.needsUpgrade = (tonumber(playerInfo.player_needs_upgrade) == 1) + + -- FIXME the object state needs setting before any notifications + -- this is now changed for needsUpgrade, but still needs to be done + -- for all other player state + + + -- Send player notifications if self.slimServer ~= slimServer then -- delete from old server if self.slimServer then @@ -292,7 +292,10 @@ self.model = playerInfo.model - _setPlayerNeedsUpgrade(self, playerInfo.player_needs_upgrade) + if lastNeedsUpgrade != self.needsUpgrade then + self.jnt:notify('playerNeedsUpgrade', self, self:isNeedsUpgrade()) + end + _setPlayerName(self, playerInfo.name) _setPlayerPower(self, tonumber(playerInfo.power)) _setConnected(self, playerInfo.connected)