Author: titmuss
Date: Mon Jan 21 03:37:39 2008
New Revision: 1534

URL: http://svn.slimdevices.com?rev=1534&root=Jive&view=rev
Log:
Bug: 5467
Description:
Choose Player screen now scans for Squeezeboxen awaiting configuration.


Modified:
    trunk/jive/src/pkg/jive/share/applets/SelectPlayer/SelectPlayerApplet.lua
    
trunk/jive/src/pkg/jive/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua

Modified: 
trunk/jive/src/pkg/jive/share/applets/SelectPlayer/SelectPlayerApplet.lua
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive/share/applets/SelectPlayer/SelectPlayerApplet.lua?rev=1534&root=Jive&r1=1533&r2=1534&view=diff
==============================================================================
--- trunk/jive/src/pkg/jive/share/applets/SelectPlayer/SelectPlayerApplet.lua 
(original)
+++ trunk/jive/src/pkg/jive/share/applets/SelectPlayer/SelectPlayerApplet.lua 
Mon Jan 21 03:37:39 2008
@@ -35,9 +35,12 @@
 local Framework          = require("jive.ui.Framework")
 
 local Udap               = require("jive.net.Udap")
+local hasWireless, Wireless  = pcall(require, "jive.net.Wireless")
 
 local log                = require("jive.utils.log").logger("applets.setup")
 local debug              = require("jive.utils.debug")
+
+local SetupSqueezeboxApplet = 
require("applets.SetupSqueezebox.SetupSqueezeboxApplet")
 
 local jiveMain           = jiveMain
 local jnt                = jnt
@@ -56,6 +59,10 @@
 function init(self, ...)
        self.playerItem = {}
        self.scanResults = {}
+
+       if hasWireless then
+               self.wireless = Wireless(jnt, "eth0")
+       end
 
        jnt:subscribe(self)
        self:manageSelectPlayerMenu()
@@ -198,7 +205,7 @@
 
 
 -- add a squeezebox discovered using udap or an adhoc network
-function _addSqueezeboxItem(self, mac, name, adhoc)
+function _addSqueezeboxItem(self, mac, name)
        local item = {
                id = _unifyMac(mac),
                text = name or self:string("SQUEEZEBOX_NAME", string.sub(mac, 
7)),
@@ -209,9 +216,14 @@
                                           return
                                   end
 
+                                  local adhoc = self.scanResults[mac].adhoc
+                                  if self.scanResults[mac].udap then
+                                          adhoc = nil
+                                  end
+
                                   -- setup squeezebox, this will set current
                                   -- player on completion
-                                  sbsetup:startSqueezeboxSetup(mac, nil,
+                                  sbsetup:startSqueezeboxSetup(mac, adhoc,
                                                                function()
                                                                        
jiveMain:closeToHome()
                                                                end)
@@ -260,7 +272,7 @@
 
        window:addWidget(menu)
 
-       window:addTimer(1000, function() self:_scan() end)
+       window:addTimer(5000, function() self:_scan() end)
 
 
        window:addListener(EVENT_WINDOW_ACTIVE,
@@ -306,7 +318,7 @@
        local pkt = Udap.parseUdap(chunk.data)
 
        if pkt.uapMethod ~= "adv_discover"
---             or pkt.ucp.device_status ~= "wait_slimserver"
+               or pkt.ucp.device_status ~= "wait_slimserver"
                or pkt.ucp.type ~= "squeezebox" then
                -- we are only looking for squeezeboxen trying to connect to SC
                return
@@ -320,7 +332,7 @@
                        udap = true,
                }
 
-               self:_addSqueezeboxItem(mac, name, nil)
+               self:_addSqueezeboxItem(mac, name)
        end
 end
 
@@ -333,13 +345,40 @@
        local packet = Udap.createAdvancedDiscover(nil, 1)
        self.udap:send(function() return packet end, "255.255.255.255")
 
-       -- remove squeezeboxen not seen for 10 seconds
+       -- scan for players in setup state
+       if hasWireless then
+               self.wireless:scan(function(scanTable)
+                                          _scanComplete(self, scanTable)
+                                  end)
+       end
+
+       -- remove squeezeboxen not seen for 20 seconds
        local now = os.time()
        for mac, entry in pairs(self.scanResults) do
-               if os.difftime(now, entry.lastScan) > 10 then
+               if os.difftime(now, entry.lastScan) > 20 then
                        self.playerMenu:removeItem(self.playerItem[mac])
                        self.playerItem[mac] = nil
                        self.scanResults[mac] = nil
+               end
+       end
+end
+
+
+function _scanComplete(self, scanTable, keepOldEntries)
+       local now = os.time()
+
+       for ssid, entry in pairs(scanTable) do
+               local mac, ether = SetupSqueezeboxApplet:ssidIsSqueezebox(ssid)
+
+               log:warn("MAC=", mac, " ETHER=", ether)
+
+               if mac and not self.scanResults[mac] then
+                       self.scanResults[mac] = {
+                               lastScan = os.time(),
+                               adhoc = ssid,
+                       }
+
+                       self:_addSqueezeboxItem(mac, name)
                end
        end
 end

Modified: 
trunk/jive/src/pkg/jive/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua?rev=1534&root=Jive&r1=1533&r2=1534&view=diff
==============================================================================
--- 
trunk/jive/src/pkg/jive/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua 
(original)
+++ 
trunk/jive/src/pkg/jive/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua 
Mon Jan 21 03:37:39 2008
@@ -95,9 +95,6 @@
        -- squeezeboxen" screen will need to be added.
        if hasWireless then
                self:_scanComplete(self.wireless:scanResults(), keepOldEntries)
-
-               -- find jive network configuration
-               Task("readConfig", self, t_readJiveConfig):addTask()
        end
 
        window:addListener(EVENT_WINDOW_ACTIVE,
@@ -294,8 +291,17 @@
                -- full configuration via adhoc network
                local _, hasEthernet = self:ssidIsSqueezebox(adhoc)
 
-               _setupInit(self, mac, hasEthernet)
-               _setupConfig(self)
+               -- find jive network configuration
+               Task("readConfig", self,
+                    function(self)
+                            -- read jive network config
+                            _readJiveConfig(self)
+
+                            -- complete setup data
+                            _setupInit(self, mac, hasEthernet)
+                            _setupConfig(self)
+                    end):addTask()
+
        else
                -- SqueezeCenter configuration with udap
                _setupInit(self, mac, nil)
@@ -305,12 +311,6 @@
 
                _setAction(self, t_waitSqueezeboxNetwork, "find_slimserver")
                _setupSqueezebox(self)
-       end
-
-       -- remove squeezebox from scan results
-       if self.scanResults and self.scanResults[mac] then
-               self.scanMenu:removeItem(self.scanResults[mac].item)
-               self.scanResults[mac] = nil
        end
 end
 
@@ -429,10 +429,10 @@
        self.mac = mac or self.mac
        self.ether = ether or self.ether
 
-       if self.bridged then
-               self.interface = 'bridged'
-       else
-               self.interface = nil
+       -- remove squeezebox from scan results
+       if self.scanResults and self.scanResults[mac] then
+               self.scanMenu:removeItem(self.scanResults[mac].item)
+               self.scanResults[mac] = nil
        end
 
        -- task for performing setup
@@ -451,7 +451,10 @@
 function _setupConfig(self)
        log:info("_setupConfig interface=", self.interface, " ipaddr=", 
self.networkMethod)
 
-       if self.interface == nil then
+       if self.bridged then
+               self.interface = 'bridged'
+
+       elseif self.interface == nil then
                if self.ether == '-' then
                        -- wireless only
                        self.interface = 'wireless'
@@ -736,7 +739,7 @@
 
 -- reads the existing network configuraton on Jive, including ssid,
 -- network id, dhcp/static ip information.
-function t_readJiveConfig(self)
+function _readJiveConfig(self)
        -- read the existing network configuration
        local statusStr = self.wireless:request("STATUS-VERBOSE")
        local status = {}

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

Reply via email to