Author: titmuss
Date: Fri Feb 8 08:32:23 2008
New Revision: 1863
URL: http://svn.slimdevices.com?rev=1863&root=Jive&view=rev
Log:
Bug: 6580
Description:
Code to suspend Jive after an hour with no activity. The code is currently
disabled
while I do further testing.
Modified:
branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua
branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SqueezeboxJive/SqueezeboxJiveMeta.lua
Modified:
branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua
URL:
http://svn.slimdevices.com/branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua?rev=1863&root=Jive&r1=1862&r2=1863&view=diff
==============================================================================
---
branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua
(original)
+++
branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua
Fri Feb 8 08:32:23 2008
@@ -1,6 +1,6 @@
-- stuff we use
-local pcall, tostring = pcall, tostring
+local ipairs, pcall, tostring = ipairs, pcall, tostring
local oo = require("loop.simple")
local string = require("string")
@@ -26,6 +26,7 @@
local Slider = require("jive.ui.Slider")
local Surface = require("jive.ui.Surface")
local Textarea = require("jive.ui.Textarea")
+local Task = require("jive.ui.Task")
local Tile = require("jive.ui.Tile")
local Timer = require("jive.ui.Timer")
local Checkbox = require("jive.ui.Checkbox")
@@ -124,7 +125,7 @@
end)
-- wireless
- self.Wireless = Wireless(jnt, "eth0")
+ self.wireless = Wireless(jnt, "eth0")
iconbar.iconWireless:addTimer(5000, -- every 5 seconds
function()
@@ -314,7 +315,7 @@
end
-- wireless strength
- local quality = self.Wireless:getLinkQuality()
+ local quality = self.wireless:getLinkQuality()
iconbar:setWirelessSignal(quality ~= nil and quality or "ERROR")
end
@@ -542,6 +543,7 @@
self:_setCPUSpeed(true)
if self.audioVolume ~= nil then
+ log:info("Restore effect volume ", self.audioVolume)
Audio:setEffectVolume(self.audioVolume)
self.audioVolume = nil
end
@@ -574,6 +576,7 @@
self:setBrightness()
if self.audioVolume ~= nil then
+ log:info("Restore effect volume ",
self.audioVolume)
Audio:setEffectVolume(self.audioVolume)
self.audioVolume = nil
end
@@ -585,6 +588,7 @@
self:setBrightness()
if self.audioVolume ~= nil then
+ log:info("Restore effect volume ",
self.audioVolume)
Audio:setEffectVolume(self.audioVolume)
self.audioVolume = nil
end
@@ -602,13 +606,18 @@
self:_setBrightness(true, 0, 0)
self:_setCPUSpeed(false)
- self.audioVolume = Audio:getEffectVolume()
- Audio:setEffectVolume(0)
+ if not self.audioVolume then
+ self.audioVolume = Audio:getEffectVolume()
+ log:info("Store effect volume ",
self.audioVolume)
+ Audio:setEffectVolume(0)
+ end
if state == "sleep" then
interval = settings.suspendTimeout
+
elseif state == "suspend" then
- log:error("FIXME suspend now...")
+ -- XXXX
+ -- self:_suspend()
end
end
end
@@ -808,6 +817,86 @@
end
+function _suspendTask(self)
+ -- check existing network config
+ local status = self.wireless:t_wpaStatus()
+ local zeroconf = string.match(status.ip_address, "^169.254.") ~= nil
+
+ -- suspend
+ os.execute("/etc/init.d/suspend")
+
+ -- wake up power state
+ self:wakeup()
+
+ -- start timer to resume this task every second
+ self.suspendPopup:addTimer(1000,
+ function()
+ self.suspendTask:addTask()
+ end)
+
+ while true do
+ local status = self.wireless:t_wpaStatus()
+
+ -- network connected?
+ log:info("resume ip=", status.ip_address, " zeroconf=",
zeroconf)
+ if status.wpa_state == "COMPLETED" and status.ip_address and
(not string.match(status.ip_address, "^169.254.") or zeroconf) then
+
+ -- force reconnections
+ jnt:notify("networkConnected")
+
+ -- close popup
+ self.suspendPopup:hide()
+
+ -- wake up
+ self:wakeup()
+
+ self.suspendPopup = nil
+ self.suspendTask = nil
+
+ return
+ end
+
+ Task:yield(false)
+ end
+end
+
+
+function _suspend(self)
+ log:info("Suspend ...")
+
+ -- draw popup ready for resume
+ local popup = Popup("popupIcon")
+ popup:setAllowScreensaver(false)
+ popup:setAlwaysOnTop(true)
+ popup:setAutoHide(false)
+
+ popup:addWidget(Icon("iconConnecting"))
+ popup:addWidget(Label("text", self:string("PLEASE_WAIT")))
+
+ -- ignore all events
+ popup:addListener(EVENT_ALL_INPUT,
+ function(event)
+ return EVENT_CONSUME
+ end)
+
+ popup:show(Window.transitionNone)
+ self.suspendPopup = popup
+
+ -- make sure the cpu is fast when we resume
+ self:_setCPUSpeed(true)
+
+ -- enable frame updates
+ Framework:setUpdateScreen(true)
+
+ -- force popup to be drawn to the framebuffer
+ Framework:updateScreen()
+
+ -- start suspend task
+ self.suspendTask = Task("networkStatus", self, _suspendTask)
+ self.suspendTask:addTask()
+end
+
+
function _powerOff(self)
log:info("Poweroff begin")
Modified:
branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SqueezeboxJive/SqueezeboxJiveMeta.lua
URL:
http://svn.slimdevices.com/branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SqueezeboxJive/SqueezeboxJiveMeta.lua?rev=1863&root=Jive&r1=1862&r2=1863&view=diff
==============================================================================
---
branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SqueezeboxJive/SqueezeboxJiveMeta.lua
(original)
+++
branches/7.0/jive/src/pkg/jive_squeezeboxjive/share/applets/SqueezeboxJive/SqueezeboxJiveMeta.lua
Fri Feb 8 08:32:23 2008
@@ -19,11 +19,11 @@
function defaultSettings(meta)
return {
- brightness = 32,
- dimmedTimeout = 10000,
- sleepTimeout = 60000,
- hibernateTimeout = 300000,
- dimmedAC = false
+ brightness = 32,
+ dimmedTimeout = 10000, -- 10 seconds
+ sleepTimeout = 60000, -- 60 seconds
+ suspendTimeout = 3600000, -- 1 hour
+ dimmedAC = false
}
end
_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/cgi-bin/mailman/listinfo/jive-checkins