Author: fmueller
Date: Mon Aug 16 07:07:17 2010
New Revision: 9055
URL: http://svn.slimdevices.com/jive?rev=9055&view=rev
Log:
Bug: 16408
Description: Clean up statusbar functions.
Modified:
7.6/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/SqueezeboxFab4/SqueezeboxFab4Applet.lua
Modified:
7.6/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/SqueezeboxFab4/SqueezeboxFab4Applet.lua
URL:
http://svn.slimdevices.com/jive/7.6/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/SqueezeboxFab4/SqueezeboxFab4Applet.lua?rev=9055&r1=9054&r2=9055&view=diff
==============================================================================
---
7.6/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/SqueezeboxFab4/SqueezeboxFab4Applet.lua
(original)
+++
7.6/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/SqueezeboxFab4/SqueezeboxFab4Applet.lua
Mon Aug 16 07:07:17 2010
@@ -1,5 +1,5 @@
-local pairs, tonumber, tostring = pairs, tonumber, tostring
+local pairs, tonumber, tostring, unpack = pairs, tonumber, tostring, unpack
-- board specific driver
local fab4_bsp = require("fab4_bsp")
@@ -49,6 +49,10 @@
local jiveMain = jiveMain
local appletManager = appletManager
local settings = nil
+
+local UPDATE_WIRELESS = 0x01
+local UPDATE_POWER = 0x02
+
-- hack around global scope to allow bsp c code to call back to applet
local ourUeventHandler
@@ -153,9 +157,10 @@
brightnessTimer:start()
-- status bar updates
- self:update()
- iconbar.iconWireless:addTimer(5000, function() -- every 5 seconds
- self:update()
+ local updateTask = Task("statusbar", self, _updateTask)
+ updateTask:addTask(UPDATE_WIRELESS)
+ iconbar.iconWireless:addTimer(5000, function() -- every five seconds
+ updateTask:addTask(UPDATE_WIRELESS)
end)
Framework:addActionListener("soft_reset", self, _softResetAction, true)
@@ -533,36 +538,69 @@
iconbar:update()
end
-function update(self)
- Task("statusbar", self, _updateTask):addTask()
-end
-
-
-function _updateTask(self)
- local iface = Networking:activeInterface()
+
+local function _updateWirelessDone(self, iface, success)
local player = Player:getLocalPlayer()
- if not iface then
- iconbar:setWirelessSignal(nil)
- player:setSignalStrength(nil)
- else
- if iface:isWireless() then
- -- wireless strength
+ -- wireless
+ if iface:isWireless() then
+ if success then
local percentage, quality = iface:getSignalStrength()
iconbar:setWirelessSignal(quality ~= nil and quality or
"ERROR")
-
if player then
player:setSignalStrength(percentage)
end
- else
- -- wired
- local status = iface:status()
- iconbar:setWirelessSignal(not status.link and "ERROR"
or nil)
-
+ else
+ iconbar:setWirelessSignal("ERROR")
if player then
player:setSignalStrength(nil)
end
end
+ -- wired
+ else
+ if success then
+ iconbar:setWirelessSignal("ETHERNET")
+ else
+ iconbar:setWirelessSignal("ETHERNET_ERROR")
+ end
+ if player then
+ player:setSignalStrength(nil)
+ end
+ end
+end
+
+
+local function _updateWireless(self)
+ local iface = Networking:activeInterface()
+
+ Networking:checkNetworkHealth(
+ iface,
+ function(continue, err, msg, msg_param)
+ local message = self:string(msg, msg_param)
+ log:debug("_updateWireless status: ", message)
+
+ if not continue then
+ log:debug("_updateWireless: ", err)
+
+ _updateWirelessDone(self, iface, (err == 0))
+ end
+ end,
+ false,
+ nil
+ )
+end
+
+
+function _updateTask(self)
+ while true do
+ local what = unpack(Task:running().args)
+
+ if (what & UPDATE_WIRELESS) == UPDATE_WIRELESS then
+ _updateWireless(self)
+ end
+
+ -- suspend task
+ Task:yield(false)
end
end
_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/jive-checkins