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