[pkg-fso-commits] [SCM] framworkd debian packageing branch, master, updated. milestone2-110-g76700a0
Michael 'Mickey' Lauer
mickey at vanille-media.de
Tue Sep 2 10:34:57 UTC 2008
The following commit has been merged in the master branch:
commit ce06f9f0ecccd4777e05a6dbf23851015460669f
Author: Michael 'Mickey' Lauer <mickey at vanille-media.de>
Date: Wed Aug 27 23:58:21 2008 +0200
odeviced: kernel26: fix power supply class logic, if not present
Yay, this now works even if battery is hot-swapped -- even if you change
from a TH (which has no power supply support yet) to a CC (which has).
diff --git a/framework/subsystems/odeviced/kernel26.py b/framework/subsystems/odeviced/kernel26.py
index 1dee099..49efb05 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.3"
+__version__ = "0.9.4"
from helpers import DBUS_INTERFACE_PREFIX, DBUS_PATH_PREFIX, readFromFile, writeToFile, cleanObjectName
from framework.config import config
@@ -138,7 +138,10 @@ class PowerSupply( dbus.service.Object ):
self.powerStatus = "unknown"
self.online = False
- self.capacity = 0
+ self.capacity = -1
+
+ def isPresent( self ):
+ return not ( readFromFile( "%s/present" % self.node ) != '1' )
def onUeventActivity( self, source, condition ):
data = self.ueventsock.recv( 1024 )
@@ -157,25 +160,40 @@ class PowerSupply( dbus.service.Object ):
gobject.idle_add( self.handlePropertyChange, dict( [ x.split('=') for x in parts if '=' in x ] ) )
return False # don't call me again
- def onCapacityCheck( self ):
+ def readCapacity( self ):
+ if not self.isPresent():
+ return -1
data = readFromFile( "%s/capacity" % self.node )
try:
capacity = int( data )
except ValueError:
- pass
+ energy_full = readFromFile( "%s/energy_full" % self.node )
+ energy_now = readFromFile( "%s/energy_now" % self.node )
+ if energy_full == "N/A" or energy_now == "N/A":
+ return -1
+ else:
+ return 100 * int(energy_now) / int(energy_full)
else:
- self.capacity = capacity # save for later queries
- if self.online:
- if capacity > 98:
- self.sendPowerStatusIfChanged( "Full" )
- else: # offline
- if capacity < 5:
- self.sendPowerStatusIfChanged( "Empty" )
- elif capacity < 10:
- self.sendPowerStatusIfChanged( "Critical" )
+ return capacity
+
+ def onCapacityCheck( self ):
+ if not self.isPresent():
+ return True # call me again
+ capacity = self.readCapacity()
+ self.sendCapacityIfChanged( capacity )
+ if self.online:
+ if capacity > 98:
+ self.sendPowerStatusIfChanged( "Full" )
+ else: # offline
+ if capacity <= 5:
+ self.sendPowerStatusIfChanged( "Empty" )
+ elif capacity <= 10:
+ self.sendPowerStatusIfChanged( "Critical" )
return True # call me again
def handlePropertyChange( self, properties ):
+ if not self.isPresent():
+ return False # don't call me again
logger.debug( "got property change from uevent socket: %s" % properties )
try:
self.online = ( properties["POWER_SUPPLY_ONLINE"] == '1' )
@@ -196,8 +214,12 @@ class PowerSupply( dbus.service.Object ):
if powerStatus != self.powerStatus:
self.PowerStatus( powerStatus )
+ def sendCapacityIfChanged( self, capacity ):
+ if capacity != self.capacity:
+ self.Capacity( capacity )
+
#
- # dbus
+ # dbus methods
#
@dbus.service.method( DBUS_INTERFACE, "", "s" )
def GetName( self ):
@@ -211,28 +233,40 @@ class PowerSupply( dbus.service.Object ):
dict[key] = readFromFile( "%s/%s" % ( self.node, key ) )
return dict
+ # FIXME deprecated, should be removed
@dbus.service.method( DBUS_INTERFACE, "", "i" )
def GetEnergyPercentage( self ):
- capacity = readFromFile( "%s/capacity" % self.node )
- if capacity != "N/A":
- return int(capacity)
+ if self.capacity == -1:
+ self.onCapacityCheck()
+ return self.capacity
- energy_full = readFromFile( "%s/energy_full" % self.node )
- energy_now = readFromFile( "%s/energy_now" % self.node )
- if energy_full == "N/A" or energy_now == "N/A":
- return -1
- else:
- return 100 * int(energy_now) / int(energy_full)
+ @dbus.service.method( DBUS_INTERFACE, "", "i" )
+ def GetCapacity( self ):
+ if self.capacity == -1:
+ self.onCapacityCheck()
+ return self.capacity
@dbus.service.method( DBUS_INTERFACE, "", "s" )
def GetPowerStatus( self ):
return self.powerStatus
+ @dbus.service.method( DBUS_INTERFACE, "", "b" )
+ def IsPresent( self ):
+ return self.isPresent()
+
+ #
+ # dbus signals
+ #
@dbus.service.signal( DBUS_INTERFACE, "s" )
def PowerStatus( self, status ):
self.powerStatus = status
logger.info( "power status now %s" % status )
+ @dbus.service.signal( DBUS_INTERFACE, "i" )
+ def Capacity( self, percent ):
+ self.capacity = percent
+ logger.info( "capacity now %d" % percent )
+
#----------------------------------------------------------------------------#
class PowerSupplyApm( dbus.service.Object ):
#----------------------------------------------------------------------------#
--
framworkd debian packageing
More information about the pkg-fso-commits
mailing list