[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:51:49 UTC 2009


The following commit has been merged in the master branch:
commit 1407084770689dc7d364d804e1e7ccfd1f06caf9
Author: Michael 'Mickey' Lauer <mickey at vanille-media.de>
Date:   Fri Jan 2 17:44:27 2009 +0100

    odeviced: kernel26: remove deprecated API in PowerSupply, add some new calls

diff --git a/framework/subsystems/odeviced/kernel26.py b/framework/subsystems/odeviced/kernel26.py
index e8ca0bd..5089c34 100644
--- a/framework/subsystems/odeviced/kernel26.py
+++ b/framework/subsystems/odeviced/kernel26.py
@@ -8,7 +8,7 @@ GPLv2 or later
 """
 
 MODULE_NAME = "odeviced.kernel26"
-__version__ = "0.9.9.3"
+__version__ = "0.9.9.4"
 
 from helpers import DBUS_INTERFACE_PREFIX, DBUS_PATH_PREFIX, readFromFile, writeToFile, cleanObjectName
 from framework.config import config
@@ -230,9 +230,18 @@ class PowerSupply( dbus.service.Object ):
         self.powerStatus = "unknown"
         self.online = False
         self.capacity = -1
+        self.isBattery = ( readFromFile( "%s/type" ) == "Battery" )
 
     def isPresent( self ):
-        return not ( readFromFile( "%s/present" % self.node ) != '1' )
+        present = readFromFile( "%s/present" % self.node )
+        online = readFromFile( "%s/online" % self.node )
+        return ( present == "1" or online == "1" )
+
+    def isOnline( self ):
+        return not ( readFromFile( "%s/online" % self.node ) != '1' )
+
+    def theType( self ):
+        return readFromFile( "%s/type" % self.node )
 
     def onUeventActivity( self, source, condition ):
         data = self.ueventsock.recv( 1024 )
@@ -252,6 +261,8 @@ class PowerSupply( dbus.service.Object ):
         return False # don't call me again
 
     def readCapacity( self ):
+        if not self.isBattery:
+            return 100
         if not self.isPresent():
             return -1
         data = readFromFile( "%s/capacity" % self.node )
@@ -273,7 +284,7 @@ class PowerSupply( dbus.service.Object ):
         capacity = self.readCapacity()
         self.sendCapacityIfChanged( capacity )
         if self.online:
-            if capacity > 98:
+            if capacity > 98: # older batteries will never reach 100
                 self.sendPowerStatusIfChanged( "full" )
         else: # offline
             if capacity <= 5:
@@ -295,8 +306,9 @@ class PowerSupply( dbus.service.Object ):
         except KeyError:
             pass
         else:
-            # FIXME: what should we do with the "Not Charging" state? It seems to be only a temporary state
-            # occuring during the time the charger has been physically inserted but not been yet enumerated on USB
+            # NOTE: "Not Charging" is an interesting state which can have two reasons:
+            # 1.) The charger has been physically inserted but the device has not yet enumerated on USB.
+            # 2.) The battery has been fully charged and we're now just grabbing power from the charger.
             if powerStatus != "not charging":
                 self.sendPowerStatusIfChanged( powerStatus )
         return False # don't call me again
@@ -316,20 +328,23 @@ class PowerSupply( dbus.service.Object ):
     def GetName( self ):
         return self.node.split("/")[-1]
 
+    @dbus.service.method( DBUS_INTERFACE, "", "s" )
+    def GetType( self ):
+        return self.theType()
+
+    # FIXME: we might want to remove that -- anyone really interested should rather walk through the sysfs path
     @dbus.service.method( DBUS_INTERFACE, "", "a{sv}" )
     def GetInfo( self ):
         # AC/BATs differ in lots of nodes. Do we want additional methods for present / online ?
+        keys = [ key for key in os.listdir( self.node ) if key != "uevent" if os.path.isfile( "%s/%s" % ( self.node, key ) ) ]
         dict = {}
-        for key in "capacity current_now energy_full energy_full_design energy_now manufacturer model_name status technology type voltage_min_design voltage_now present online".split():
+        for key in keys:
             dict[key] = readFromFile( "%s/%s" % ( self.node, key ) )
         return dict
 
-    # FIXME deprecated, should be removed
-    @dbus.service.method( DBUS_INTERFACE, "", "i" )
-    def GetEnergyPercentage( self ):
-        if self.capacity == -1:
-            self.onCapacityCheck()
-        return self.capacity
+    @dbus.service.method( DBUS_INTERFACE, "", "b" )
+    def IsPresent( self ):
+        return self.isPresent()
 
     @dbus.service.method( DBUS_INTERFACE, "", "i" )
     def GetCapacity( self ):
@@ -341,10 +356,6 @@ class PowerSupply( dbus.service.Object ):
     def GetPowerStatus( self ):
         return self.powerStatus
 
-    @dbus.service.method( DBUS_INTERFACE, "", "b" )
-    def IsPresent( self ):
-        return self.isPresent()
-
     #
     # dbus signals
     #

-- 
FSO frameworkd Debian packaging



More information about the pkg-fso-commits mailing list