[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