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

Reply via email to