Author: titmuss
Date: Tue Jan 22 13:55:56 2008
New Revision: 1560

URL: http://svn.slimdevices.com?rev=1560&root=Jive&view=rev
Log:
 [EMAIL PROTECTED] (orig r1545):  titmuss | 2008-01-21 21:59:10 +0000
 Bug: 6624
 Description:
 Close network connections before rebooting/powering off. This is done for 
Power Off, Firmware Upgrade, Factory Reset and 
 the desktop Quit applets.
 
 Bug: 6651
 Description:
 Allow the user to power off with the home key when battery low warning is 
visible (untested).
 
 Bug: 6682
 Description:
 Don't allow SC or the user to interrupt firmware updates. Disconnect from SC 
before starting the update, and ignore all 
 user input. Any key/scroll will still wakeup the screen. Also correctly detect 
errors when downloading firmware, and 
 display the error window. This had broken when converting to use co-routines.
 
 

Modified:
    trunk/   (props changed)
    trunk/jive/src/pkg/jive/share/jive/ui/Framework.lua
    trunk/jive/src/pkg/jive/src/ui/jive.h
    trunk/jive/src/pkg/jive/src/ui/lua_jiveui.c
    trunk/jive/src/pkg/jive/src/ui/lua_jiveui.pkg
    trunk/jive/src/pkg/jive_desktop/share/applets/Quit/QuitMeta.lua
    
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFactoryReset/SetupFactoryResetApplet.lua
    
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/SetupFirmwareUpgradeApplet.lua
    
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/Upgrade.lua
    
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua

Propchange: trunk/
------------------------------------------------------------------------------
--- svk:merge (original)
+++ svk:merge Tue Jan 22 13:55:56 2008
@@ -1,3 +1,3 @@
-bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/7.0:1544
+bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/7.0:1545
 bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/SN:1083
 bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/scrolling:1378

Modified: trunk/jive/src/pkg/jive/share/jive/ui/Framework.lua
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive/share/jive/ui/Framework.lua?rev=1560&root=Jive&r1=1559&r2=1560&view=diff
==============================================================================
--- trunk/jive/src/pkg/jive/share/jive/ui/Framework.lua (original)
+++ trunk/jive/src/pkg/jive/share/jive/ui/Framework.lua Tue Jan 22 13:55:56 2008
@@ -271,6 +271,32 @@
 
 --[[
 
+=head2 jive.ui.Framework:wakeup()
+
+Power management wakeup.
+
+=cut
+--]]
+function wakeup(self)
+end
+
+
+--[[
+
+=head2 jive.ui.Framework:registerWakeup()
+
+Register a power management wakeup function.
+
+=cut
+--]]
+function registerWakeup(self, wakeup)
+       _assert(type(wakeup) == "function")
+       self.wakeup = wakeup
+end
+
+
+--[[
+
 =head2 jive.ui.Framework:addWidget(widget)
 
 Add a global widget I<widget> to the screen. The global widgets are shown on 
all windows.

Modified: trunk/jive/src/pkg/jive/src/ui/jive.h
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive/src/ui/jive.h?rev=1560&root=Jive&r1=1559&r2=1560&view=diff
==============================================================================
--- trunk/jive/src/pkg/jive/src/ui/jive.h (original)
+++ trunk/jive/src/pkg/jive/src/ui/jive.h Tue Jan 22 13:55:56 2008
@@ -102,6 +102,8 @@
 
        JIVE_EVENT_KEY_ALL              = ( JIVE_EVENT_KEY_DOWN | 
JIVE_EVENT_KEY_UP | JIVE_EVENT_KEY_PRESS | JIVE_EVENT_KEY_HOLD ),
        JIVE_EVENT_MOUSE_ALL            = ( JIVE_EVENT_MOUSE_DOWN | 
JIVE_EVENT_MOUSE_PRESS | JIVE_EVENT_MOUSE_HOLD ),
+       JIVE_EVENT_ALL_INPUT            = ( JIVE_EVENT_KEY_ALL | 
JIVE_EVENT_MOUSE_ALL | JIVE_EVENT_SCROLL),
+
        JIVE_EVENT_VISIBLE_ALL          = ( JIVE_EVENT_SHOW | JIVE_EVENT_HIDE ),
        JIVE_EVENT_ALL                  = 0xFFFFFF,
 } JiveEventType;

Modified: trunk/jive/src/pkg/jive/src/ui/lua_jiveui.c
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive/src/ui/lua_jiveui.c?rev=1560&root=Jive&r1=1559&r2=1560&view=diff
==============================================================================
--- trunk/jive/src/pkg/jive/src/ui/lua_jiveui.c (original)
+++ trunk/jive/src/pkg/jive/src/ui/lua_jiveui.c Tue Jan 22 13:55:56 2008
@@ -2068,6 +2068,7 @@
    tolua_constant(tolua_S,"EVENT_MOTION",JIVE_EVENT_MOTION);
    tolua_constant(tolua_S,"EVENT_KEY_ALL",JIVE_EVENT_KEY_ALL);
    tolua_constant(tolua_S,"EVENT_MOUSE_ALL",JIVE_EVENT_MOUSE_ALL);
+   tolua_constant(tolua_S,"EVENT_ALL_INPUT",JIVE_EVENT_ALL_INPUT);
    tolua_constant(tolua_S,"EVENT_VISIBLE_ALL",JIVE_EVENT_VISIBLE_ALL);
    tolua_constant(tolua_S,"EVENT_ALL",JIVE_EVENT_ALL);
    tolua_constant(tolua_S,"EVENT_UNUSED",JIVE_EVENT_UNUSED);

Modified: trunk/jive/src/pkg/jive/src/ui/lua_jiveui.pkg
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive/src/ui/lua_jiveui.pkg?rev=1560&root=Jive&r1=1559&r2=1560&view=diff
==============================================================================
--- trunk/jive/src/pkg/jive/src/ui/lua_jiveui.pkg (original)
+++ trunk/jive/src/pkg/jive/src/ui/lua_jiveui.pkg Tue Jan 22 13:55:56 2008
@@ -107,6 +107,7 @@
 
        JIVE_EVENT_KEY_ALL @ EVENT_KEY_ALL              = ( JIVE_EVENT_KEY_DOWN 
| JIVE_EVENT_KEY_UP | JIVE_EVENT_KEY_PRESS | JIVE_EVENT_KEY_HOLD ),
        JIVE_EVENT_MOUSE_ALL @ EVENT_MOUSE_ALL          = ( 
JIVE_EVENT_MOUSE_DOWN | JIVE_EVENT_MOUSE_PRESS | JIVE_EVENT_MOUSE_HOLD ),
+       JIVE_EVENT_ALL_INPUT @ EVENT_ALL_INPUT          = ( JIVE_EVENT_KEY_ALL 
| JIVE_EVENT_MOUSE_ALL | JIVE_EVENT_SCROLL),
        JIVE_EVENT_VISIBLE_ALL @ EVENT_VISIBLE_ALL              = ( 
JIVE_EVENT_SHOW | JIVE_EVENT_HIDE ),
        JIVE_EVENT_ALL @ EVENT_ALL                      = 0xFFFFFF,
 } EventType;

Modified: trunk/jive/src/pkg/jive_desktop/share/applets/Quit/QuitMeta.lua
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive_desktop/share/applets/Quit/QuitMeta.lua?rev=1560&root=Jive&r1=1559&r2=1560&view=diff
==============================================================================
--- trunk/jive/src/pkg/jive_desktop/share/applets/Quit/QuitMeta.lua (original)
+++ trunk/jive/src/pkg/jive_desktop/share/applets/Quit/QuitMeta.lua Tue Jan 22 
13:55:56 2008
@@ -43,6 +43,10 @@
                node = 'home',
                text = self:string("QUIT"),
                callback = function() 
+                       -- disconnect from SqueezeCenter
+                       local slimDiscovery = 
appletManager:loadApplet("SlimDiscovery")
+                       slimDiscovery.serversObj:disconnect()
+
                        return (EVENT_CONSUME | EVENT_QUIT)
                end,
                weight = 1000,

Modified: 
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFactoryReset/SetupFactoryResetApplet.lua
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFactoryReset/SetupFactoryResetApplet.lua?rev=1560&root=Jive&r1=1559&r2=1560&view=diff
==============================================================================
--- 
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFactoryReset/SetupFactoryResetApplet.lua
 (original)
+++ 
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFactoryReset/SetupFactoryResetApplet.lua
 Tue Jan 22 13:55:56 2008
@@ -5,6 +5,7 @@
 local os                     = require("os")
 
 local Applet                 = require("jive.Applet")
+local Framework              = require("jive.ui.Framework")
 local Icon                   = require("jive.ui.Icon")
 local Label                  = require("jive.ui.Label")
 local Popup                  = require("jive.ui.Popup")
@@ -14,6 +15,11 @@
 local Window                 = require("jive.ui.Window")
 
 local log                    = 
require("jive.utils.log").logger("applets.setup")
+
+local EVENT_ALL_INPUT        = jive.ui.EVENT_ALL_INPUT
+local EVENT_CONSUME          = jive.ui.EVENT_CONSUME
+
+local appletManager          = appletManager
 
 
 module(...)
@@ -48,19 +54,35 @@
 
 
 function _factoryReset(self)
-       local window = Popup("popupIcon")
-       window:addWidget(Icon("iconConnected"))
-       window:addWidget(Label("text", self:string("RESET_RESETTING")))
+       -- disconnect from SqueezeCenter
+       local slimDiscovery = appletManager:loadApplet("SlimDiscovery")
+       slimDiscovery.serversObj:disconnect()
 
-       window:addTimer(2000, function()
-                                     log:warn("Factory reset...")
+       local popup = Popup("popupIcon")
+       popup:addWidget(Icon("iconConnected"))
+       popup:addWidget(Label("text", self:string("RESET_RESETTING")))
 
-                                     -- touch .factoryreset and reboot
-                                     io.open("/.factoryreset", "w"):close()
-                                     os.execute("/bin/busybox reboot -f")
+       -- make sure this popup remains on screen
+       popup:setAllowScreensaver(false)
+       popup:setAlwaysOnTop(true)
+       popup:setAutoHide(false)
+
+       -- we're shutting down, so prohibit any key presses or holds
+       Framework:addListener(EVENT_ALL_INPUT,
+                             function () 
+                                     return EVENT_CONSUME
+                             end,
+                             true)
+
+       popup:addTimer(2000, function()
+                                    log:info("Factory reset...")
+
+                                    -- touch .factoryreset and reboot
+                                    io.open("/.factoryreset", "w"):close()
+                                    os.execute("/bin/busybox reboot -f")
                              end)
 
-       self:tieAndShowWindow(window)
+       self:tieAndShowWindow(popup)
 end
 
 

Modified: 
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/SetupFirmwareUpgradeApplet.lua
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/SetupFirmwareUpgradeApplet.lua?rev=1560&root=Jive&r1=1559&r2=1560&view=diff
==============================================================================
--- 
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/SetupFirmwareUpgradeApplet.lua
 (original)
+++ 
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/SetupFirmwareUpgradeApplet.lua
 Tue Jan 22 13:55:56 2008
@@ -36,6 +36,7 @@
 local log                    = 
require("jive.utils.log").logger("applets.setup")
 
 local jnt                    = jnt
+local appletManager          = appletManager
 local upgradeUrl             = upgradeUrl
 
 local EVENT_ACTION           = jive.ui.EVENT_ACTION
@@ -50,6 +51,7 @@
 local LAYOUT_CENTER          = jive.ui.LAYOUT_CENTER
 local LAYOUT_NONE            = jive.ui.LAYOUT_NONE
 
+local EVENT_ALL_INPUT        = jive.ui.EVENT_ALL_INPUT
 local EVENT_KEY_PRESS        = jive.ui.EVENT_KEY_PRESS
 local EVENT_KEY_HOLD         = jive.ui.EVENT_KEY_HOLD
 local EVENT_WINDOW_ACTIVE    = jive.ui.EVENT_WINDOW_ACTIVE
@@ -229,31 +231,51 @@
                return self:_chargeBattery()
        end
 
-       local window = Popup("popupIcon")
+       local popup = Popup("popupIcon")
 
        self.icon = Icon("iconConnecting")
-       window:addWidget(self.icon)
+       popup:addWidget(self.icon)
 
        self.textarea = Label("text", self:string("UPDATE_DOWNLOAD", ""))
-       window:addWidget(self.textarea)
-
-       -- no way to exit this window
-       -- FIXME add global handler to block all key events
-       window:addListener(EVENT_KEY_PRESS,
-                          function(event)
-                                  return EVENT_CONSUME
-                          end)
+       popup:addWidget(self.textarea)
+
+       -- make sure this popup remains on screen
+       popup:setAllowScreensaver(false)
+       popup:setAlwaysOnTop(true)
+       popup:setAutoHide(false)
+
+       -- no way to exit this popup
+       self.upgradeListener =
+               Framework:addListener(EVENT_ALL_INPUT,
+                                     function()
+                                             Framework.wakeup()
+                                             return EVENT_CONSUME
+                                     end,
+                                     true)
+
+       -- disconnect from SqueezeCenter, we don't want to up
+       -- interrupted during the firmware upgrade.
+       local slimDiscovery = appletManager:loadApplet("SlimDiscovery")
+       slimDiscovery.serversObj:disconnect()
 
        -- start the upgrade
        self.upgrade = Upgrade(self.url)
        Task("upgrade", self, _t_upgrade, _upgradeFailed):addTask()
 
-       self:tieAndShowWindow(window)
+       self:tieAndShowWindow(popup)
        return window
 end
 
 
 function _upgradeFailed(self)
+       -- unblock keys
+       Framework:removeListener(self.upgradeListener)
+       self.upgradeListener = nil
+
+       -- reconnect to server
+       local slimDiscovery = appletManager:loadApplet("SlimDiscovery")
+       slimDiscovery.serversObj:connect()
+
        local window = Window("window", self:string("UPDATE_FAILURE"))
 
        local menu = SimpleMenu("menu",

Modified: 
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/Upgrade.lua
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/Upgrade.lua?rev=1560&root=Jive&r1=1559&r2=1560&view=diff
==============================================================================
--- 
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/Upgrade.lua
 (original)
+++ 
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SetupFirmwareUpgrade/Upgrade.lua
 Tue Jan 22 13:55:56 2008
@@ -166,7 +166,13 @@
        local length = 0
        local part = nil
 
-       return function(chunk)
+       return function(chunk, err)
+                      if err then
+                              log:info("sinkErr=", err)
+                              self.sinkErr = err
+                              return 0
+                      end
+
                       Task:yield(true)
 
                       if type(chunk) == "string" then
@@ -376,6 +382,7 @@
 
        local parsedUrl = url.parse(self.url)
        self.downloadBytes = 0
+       self.sinkErr = false
 
        local t, err
        if parsedUrl.scheme == "file" then
@@ -396,7 +403,7 @@
 
                        Task:yield()
                        if not t then
-                               return not err, err
+                               return false, err
                        end
                end 
 
@@ -409,12 +416,17 @@
                local http = SocketHttp(jnt, uri.host, uri.port, uri.host)
                http:fetch(req)
 
-               while not self.downloadClose do
+               while not self.sinkErr and not self.downloadClose do
                        local totalBytes = 
req:t_getResponseHeader("Content-Length")
                        if totalBytes then
                                callback(false, "UPDATE_DOWNLOAD", 
math.floor((self.downloadBytes / totalBytes) * 100) .. "%")
                        end
                        Task:yield(true)
+               end
+
+               if self.sinkErr then
+                       log:info("sinkErr=", sinkErr)
+                       return false, self.sinkErr
                end
 
                return true

Modified: 
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua?rev=1560&root=Jive&r1=1559&r2=1560&view=diff
==============================================================================
--- 
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua
 (original)
+++ 
trunk/jive/src/pkg/jive_squeezeboxjive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua
 Tue Jan 22 13:55:56 2008
@@ -35,6 +35,7 @@
 
 local jnt                    = jnt
 local iconbar                = iconbar
+local appletManager          = appletManager
 
 local EVENT_ACTION           = jive.ui.EVENT_ACTION
 local EVENT_CONSUME          = jive.ui.EVENT_CONSUME
@@ -52,6 +53,7 @@
 local EVENT_KEY_DOWN         = jive.ui.EVENT_KEY_DOWN
 local EVENT_KEY_PRESS        = jive.ui.EVENT_KEY_PRESS
 local EVENT_KEY_HOLD         = jive.ui.EVENT_KEY_HOLD
+local EVENT_ALL_INPUT        = jive.ui.EVENT_ALL_INPUT
 local EVENT_SCROLL           = jive.ui.EVENT_SCROLL
 local EVENT_SWITCH           = 0x400000 -- XXXX fixme when public
 local EVENT_MOTION           = 0x800000 -- XXXX fixme when public
@@ -110,6 +112,11 @@
                log:warn("Watchdog timer is disabled")
        end
 
+       -- register wakeup function
+       Framework:registerWakeup(function()
+                                        wakeup(self)
+                                end)
+
        -- wireless
        self.Wireless = Wireless(jnt, "eth0")
 
@@ -124,7 +131,7 @@
                                      local sw,val = event:getSwitch()
 
                                      if sw == SW_AC_POWER then
-                                             log:warn("acpower=", val)
+                                             log:info("acpower=", val)
 
                                              self.acpower = (val == 0)
                                              self:update()
@@ -245,13 +252,11 @@
                             -- FIXME schedule updates from server
                     end
 
-       if( player) then
+       if player then
                player.slimServer.comet:request(sink,
                                        player:getId(),
                                        { 'date' }
                                )
-       else
-               log:warn("player is nil")
        end
 end
 
@@ -260,8 +265,7 @@
        -- matches date format 2007-09-08T20:40:42+00:00
        local CCYY, MM, DD, hh, mm, ss, TZ = string.match(date, 
"(%d%d%d%d)%-(%d%d)%-(%d%d)T(%d%d):(%d%d):(%d%d)([-+]%d%d:%d%d)")
 
-       log:warn("date=", date)
-       log:warn("CCYY=", CCYY, " MM=", MM, " DD=", DD, " hh=", hh, " mm=", mm, 
" ss=", ss, " TZ=", TZ)
+       log:info("CCYY=", CCYY, " MM=", MM, " DD=", DD, " hh=", hh, " mm=", mm, 
" ss=", ss, " TZ=", TZ)
 
        -- set system date
        os.execute("date " .. MM..DD..hh..mm..CCYY.."."..ss)
@@ -397,7 +401,6 @@
        local window = Window("window", menuItem.text, squeezeboxjiveTitleStyle)
 
        local level = jiveBSP.ioctl(12) / 2047
-       log:warn("level is ", level);
 
        local slider = Slider("slider", 1, 32, level,
                              function(slider, value, done)
@@ -521,7 +524,7 @@
 function setPowerState(self, state)
        local settings = self:getSettings()
 
-       log:warn("setPowerState=", state, " acpower=", self.acpower)
+       log:info("setPowerState=", state, " acpower=", self.acpower)
        self.powerState = state
 
        -- kill the timer
@@ -591,7 +594,6 @@
        end
 
        if interval > 0 then
-               log:warn("interval=", interval)
                self.powerTimer:setInterval(interval)
                self.powerTimer:start()
        end
@@ -599,8 +601,6 @@
 
 
 function lockScreen(self)
-       log:warn("lock screen")
-
        -- lock
        local popup = Popup("popupIcon")
        -- FIXME change icon and text
@@ -635,8 +635,6 @@
 
 
 function unlockScreen(self)
-       log:warn("unlock screen")
-
        if self.lockedPopup then
                -- unlock
                Framework:removeListener(self.lockedListener)
@@ -661,6 +659,11 @@
        popup:addWidget(Icon("iconBatteryLow"))
        popup:addWidget(Label("text", self:string("BATTERY_LOW")))
 
+       -- make sure this popup remains on screen
+       popup:setAllowScreensaver(false)
+       popup:setAlwaysOnTop(true)
+       popup:setAutoHide(false)
+
        self.batteryPopup = popup
 
        popup:addTimer(30000,
@@ -670,11 +673,16 @@
                       true)
 
        -- consume all key and scroll events
-       self.batteryListener= Framework:addListener(EVENT_SCROLL | 
EVENT_KEY_DOWN | EVENT_KEY_PRESS,
-                                                   function(event)
-                                                           return EVENT_CONSUME
-                                                   end,
-                                                   true)
+       self.batteryListener
+               = Framework:addListener(EVENT_SCROLL | EVENT_KEY_PRESS | 
EVENT_KEY_DOWN | EVENT_KEY_HOLD,
+                                       function(event)
+                                               -- allow power off
+                                               if event:getType() == 
EVENT_KEY_HOLD and event:getKeyCode() == KEY_HOME then
+                                                       self:settingsPowerOff()
+                                               end
+                                               return EVENT_CONSUME
+                                       end,
+                                       true)
 
        -- make sure the display is on
        self:setBrightness()
@@ -722,17 +730,26 @@
 
 
 function settingsPowerOff(self)
+       -- disconnect from SqueezeCenter
+       local slimDiscovery = appletManager:loadApplet("SlimDiscovery")
+       slimDiscovery.serversObj:disconnect()
+
        local popup = Popup("popupIcon")
 
        popup:addWidget(Icon("iconPower"))
        popup:addWidget(Label("text", self:string("GOODBYE")))
+
+       -- make sure this popup remains on screen
        popup:setAllowScreensaver(false)
+       popup:setAlwaysOnTop(true)
+       popup:setAutoHide(false)
 
        -- we're shutting down, so prohibit any key presses or holds
-       popup:addListener(EVENT_KEY_PRESS | EVENT_KEY_HOLD, 
-                               function () 
-                                       return EVENT_CONSUME
-                               end)
+       Framework:addListener(EVENT_ALL_INPUT,
+                             function () 
+                                     return EVENT_CONSUME
+                             end,
+                             true)
 
        popup:addTimer(4000, 
                function()
@@ -748,10 +765,11 @@
 
 
 function _powerOff(self)
-       log:warn("POWEROFF")
+       log:info("Poweroff begin")
 
        self:_setBrightness(true, 0, 0,
                            function()
+                                   log:info("Poweroff on")
                                    os.execute("/sbin/poweroff")
                            end)
 end

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

Reply via email to