[pkg-fso-commits] [SCM] FSO frameworkd Debian packaging branch, master, updated. milestone4-368-g700ab82

Michael 'Mickey' Lauer mickey at vanille-media.de
Mon Feb 2 18:52:03 UTC 2009


The following commit has been merged in the master branch:
commit 56b2b138db011572598cc3120f04d1e2a25d6f1a
Author: Michael 'Mickey' Lauer <mickey at vanille-media.de>
Date:   Fri Jan 23 20:38:53 2009 +0100

    odeviced: powercontrol_neo: use bind/unbind way of controlling ar6k power to get the maximum
    power saving. This obsoletes wireless.pyx and -- at this point of time -- we no longer require Cython.

diff --git a/ChangeLog b/ChangeLog
index a7e5702..bc94b08 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-01-23	Michael Lauer	<mlauer at vanille-media.de>
+	
+	* [odeviced]: powercontrol_neo: Use bind/unbind way of controlling ar6k power to get the maximum
+	power saving. This obsoletes wireless.pyx. At this point of time we no longer require Cython.
+
 2009-01-21	Michael Lauer	<mlauer at vanille-media.de>
 
 	* resource: Fixed bug in checkedmethod and checkedsyncmethod decorators. Previously we only got
diff --git a/framework/config.py b/framework/config.py
index 5e216e9..05a12f6 100644
--- a/framework/config.py
+++ b/framework/config.py
@@ -16,7 +16,8 @@ DBUS_PATH_PREFIX = "/org/freesmartphone"
 
 NEEDS_VERSION = 1
 
-__version__ = "1.1.0"
+__version__ = "1.1.1"
+
 __all__ = ( \
     "DBUS_BUS_NAME_PREFIX",
     "DBUS_INTERFACE_PREFIX",
diff --git a/framework/subsystems/odeviced/powercontrol.py b/framework/subsystems/odeviced/powercontrol.py
index 40e2916..bc26732 100644
--- a/framework/subsystems/odeviced/powercontrol.py
+++ b/framework/subsystems/odeviced/powercontrol.py
@@ -60,6 +60,7 @@ class GenericPowerControl( dbus.service.Object ):
             self.Power( self.name, expectedPower )
         else:
             logger.warning( "%s expected a power change for %s to %s which didn't happen" % ( __name__, self.name, expectedPower ) )
+        return False # mainloop: don't call me again
 
     #
     # dbus methods
@@ -76,7 +77,7 @@ class GenericPowerControl( dbus.service.Object ):
     def SetPower( self, power ):
         if power != self.getPower():
             self.setPower( power )
-            gobject.idle_add( lambda self=self: self.sendPowerSignal( power ) )
+            gobject.timeout_add_seconds( 3, lambda self=self: self.sendPowerSignal( power ) )
         else:
             # FIXME should we issue an error here or just silently ignore?
             pass
diff --git a/framework/subsystems/odeviced/powercontrol_neo.py b/framework/subsystems/odeviced/powercontrol_neo.py
index 44f7fc4..1073b2c 100644
--- a/framework/subsystems/odeviced/powercontrol_neo.py
+++ b/framework/subsystems/odeviced/powercontrol_neo.py
@@ -11,7 +11,7 @@ Module: powercontrol_neo
 """
 
 MODULE_NAME = "odeviced.powercontrol_neo"
-__version__ = "0.7.3"
+__version__ = "0.8.0"
 
 from helpers import readFromFile, writeToFile
 from powercontrol import GenericPowerControl, ResourceAwarePowerControl
@@ -21,12 +21,6 @@ import os, subprocess, sys
 import logging
 logger = logging.getLogger( MODULE_NAME )
 
-try:
-    import wireless
-except ImportError:
-    wireless = None
-    logger.error( "wireless module not available" )
-
 #----------------------------------------------------------------------------#
 class NeoBluetoothPowerControl( ResourceAwarePowerControl ):
 #----------------------------------------------------------------------------#
@@ -71,15 +65,11 @@ class NeoWifiPowerControl( ResourceAwarePowerControl ):
         ResourceAwarePowerControl.__init__( self, bus, "WiFi", node )
 
     def setPower( self, power ):
-        if power:
-            subprocess.call( "wmiconfig -i eth0 --wlan enable".split() )
-            wireless.wifiSetOn( "eth0", 1 )
-        else:
-            wireless.wifiSetOn( "eth0", 0 )
-            subprocess.call( "wmiconfig -i eth0 --wlan disable".split() )
+        powernode = "bind" if power else "unbind"
+        writeToFile( "%s/%s" % ( self.node, powernode ), "s3c2440-sdi" )
 
     def getPower( self ):
-        return wireless.wifiIsOn( "eth0" )
+        return "eth0" in os.listdir( "/sys/class/net" )
 
 #----------------------------------------------------------------------------#
 def factory( prefix, controller ):
@@ -88,25 +78,22 @@ def factory( prefix, controller ):
     dbus server objects"""
     bus = controller.bus
 
-    def walk( objects, dirname, fnames ):
-        if walk.lookForBT and "neo1973-pm-bt.0" in fnames:
-            objects.append( NeoBluetoothPowerControl( bus, "%s/%s" % ( dirname, "neo1973-pm-bt.0" ) ) )
-            walk.lookForBT = False # only have one BT interface
-        if walk.lookForUSB and "s3c2410-ohci" in fnames: # works both for 1973 and FreeRunner
-            objects.append( NeoUsbHostPowerControl( bus, "%s/%s" % ( dirname, "s3c2410-ohci" ) ) )
-            walk.lookForUSB = False # only have one USB host
+    DEVICE_DIR = "/sys/bus/platform/devices"
+    DRIVER_DIR = "/sys/bus/platform/drivers"
+
+    devices = os.listdir( DEVICE_DIR )
+    drivers = os.listdir( DRIVER_DIR )
 
     objects = []
-    # scan for device nodes
 
-    devicespath = "/sys/bus/platform/devices"
-    walk.lookForBT = True
-    walk.lookForUSB = True
-    walk( objects, devicespath, os.listdir( devicespath ) )
+    if "neo1973-pm-bt.0" in devices:
+        objects.append( NeoBluetoothPowerControl( bus, "%s/%s" % ( DEVICE_DIR, "neo1973-pm-bt.0" ) ) )
+
+    if "s3c2410-ohci" in devices:
+        objects.append( NeoUsbHostPowerControl( bus, "%s/%s" % ( DEVICE_DIR, "s3c2410-ohci" ) ) )
 
-    # check for network interfaces
-    if ( wireless is not None ) and "eth0" in os.listdir( "/sys/class/net"):
-        objects.append( NeoWifiPowerControl( bus, "/sys/class/net/eth0" ) )
+    if "s3c2440-sdi" in drivers:
+        objects.append( NeoWifiPowerControl( bus, "%s/%s" % ( DRIVER_DIR, "s3c2440-sdi" ) ) )
 
     return objects
 
diff --git a/framework/subsystems/odeviced/wifi.c b/framework/subsystems/odeviced/wifi.c
deleted file mode 100644
index f13cd74..0000000
--- a/framework/subsystems/odeviced/wifi.c
+++ /dev/null
@@ -1,72 +0,0 @@
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <stdio.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#include <netdb.h>
-#include <unistd.h>
-
-#include <linux/if.h>
-#include <linux/wireless.h>
-
-int wifi_radio_is_on (const char *iface)
-{
-    struct iwreq wrq;
-    int sock = socket (AF_INET, SOCK_DGRAM, 0);
-    if (!sock)
-    {
-        perror( "Unable to open socket" );
-        return 0;
-    }
-
-    memset (&wrq, 0, sizeof (struct iwreq));
-    strncpy ((char *)&wrq.ifr_name, iface, IFNAMSIZ);
-
-    if (ioctl (sock, SIOCGIWTXPOW, &wrq) != 0)
-    {
-        perror( "Error performing ioctl" );
-        close (sock);
-        return 0;
-    }
-
-    close (sock);
-
-    return !wrq.u.txpower.disabled;
-}
-
-int wifi_radio_set_on (const char *iface, int enable)
-{
-    struct iwreq wrq;
-    int sock = socket (AF_INET, SOCK_DGRAM, 0);
-    if (!sock)
-    {
-        perror( "Unable to open socket" );
-        return 0;
-    }
-
-    memset (&wrq, 0, sizeof (struct iwreq));
-    strncpy ((char *)&wrq.ifr_name, iface, IFNAMSIZ);
-
-    if (ioctl (sock, SIOCGIWTXPOW, &wrq) != 0)
-    {
-        perror( "Error performing ioctl" );
-        close (sock);
-        return 0;
-    }
-
-    if ( wrq.u.txpower.disabled != !enable )
-    {
-        wrq.u.txpower.disabled = !enable;
-
-        if (ioctl (sock, SIOCSIWTXPOW, &wrq) != 0)
-        {
-            perror( "Error performing ioctl" );
-            close (sock);
-            return 0;
-        }
-    }
-
-    close (sock);
-    return 1;
-}
diff --git a/framework/subsystems/odeviced/wireless.pyx b/framework/subsystems/odeviced/wireless.pyx
deleted file mode 100644
index c84bde3..0000000
--- a/framework/subsystems/odeviced/wireless.pyx
+++ /dev/null
@@ -1,10 +0,0 @@
-cdef extern from "wifi.c":
-    int wifi_radio_is_on(char*)
-    int wifi_radio_set_on(char*, int)
-
-def wifiIsOn(char* interface):
-    return wifi_radio_is_on(interface)
-
-def wifiSetOn(char* interface, int enable):
-    wifi_radio_set_on(interface, enable)
-
diff --git a/setup.py b/setup.py
index 1ecd29e..710c02d 100644
--- a/setup.py
+++ b/setup.py
@@ -1,6 +1,7 @@
 from distutils.core import setup
 from distutils.extension import Extension
-from Cython.Distutils import build_ext
+# We do not require Cython currently
+#from Cython.Distutils import build_ext
 
 import os
 
@@ -12,14 +13,14 @@ packages = [ x[0] for x in os.walk( "framework" ) ]
 
 setup(
     name = "The FreeSmartphone Framework Daemon",
-    version = "0.8.4.8",
+    version = "0.8.4.9",
     author = "Michael 'Mickey' Lauer et. al.",
     author_email = "mlauer at vanille-media.de",
     url = "http://www.freesmartphone.org",
-    ext_modules = [
-      Extension("framework.subsystems.odeviced.wireless", ["framework/subsystems/odeviced/wireless.pyx"], libraries = [])
-      ],
-    cmdclass = {'build_ext': build_ext},
+    #ext_modules = [
+    #  Extension("framework.subsystems.odeviced.wireless", ["framework/subsystems/odeviced/wireless.pyx"], libraries = [])
+    #  ],
+    #cmdclass = {'build_ext': build_ext},
     packages = packages,
     scripts = [ "framework/frameworkd", "tools/cli-framework" ],
     data_files = [

-- 
FSO frameworkd Debian packaging



More information about the pkg-fso-commits mailing list