aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael 'Mickey' Lauer <mickey@vanille-media.de>2011-05-10 20:06:27 +0200
committerMichael 'Mickey' Lauer <mickey@vanille-media.de>2011-05-10 20:06:27 +0200
commitc078f4fb384cdf959fb37af7f194947f48df3543 (patch)
treeb795b4fa4b366f5c454f4b586890a9032e614dd5
parent2314e200ab656f1dbad3132ca0799e3af29fa6c6 (diff)
downloadcornucopia-c078f4fb384cdf959fb37af7f194947f48df3543.tar.gz
cornucopia-c078f4fb384cdf959fb37af7f194947f48df3543.tar.bz2
cornucopia-c078f4fb384cdf959fb37af7f194947f48df3543.zip
fsodeviced: kernel26_powersupply: add support for reading capacity from charge_{now|full} nodes,
which apparantly some of the newer modules are using
-rw-r--r--fsodeviced/src/plugins/kernel26_powersupply/plugin.vala13
1 files changed, 9 insertions, 4 deletions
diff --git a/fsodeviced/src/plugins/kernel26_powersupply/plugin.vala b/fsodeviced/src/plugins/kernel26_powersupply/plugin.vala
index 4814e3c1..9baa149f 100644
--- a/fsodeviced/src/plugins/kernel26_powersupply/plugin.vala
+++ b/fsodeviced/src/plugins/kernel26_powersupply/plugin.vala
@@ -125,12 +125,18 @@ class PowerSupply : FreeSmartphone.Device.PowerSupply,
message( "capacity node not available, using energy_full and energy_now" );
#endif
- // fall back to energy_full and energy_now
- var energy_full = FsoFramework.FileHandling.read( "%s/energy_full".printf( sysfsnode ) );
- var energy_now = FsoFramework.FileHandling.read( "%s/energy_now".printf( sysfsnode ) );
+ // then, try energy_full and energy_now
+ var energy_full = FsoFramework.FileHandling.readIfPresent( "%s/energy_full".printf( sysfsnode ) );
+ var energy_now = FsoFramework.FileHandling.readIfPresent( "%s/energy_now".printf( sysfsnode ) );
if ( energy_full != "" && energy_now != "" )
return (int) ( ( energy_now.to_double() / energy_full.to_double() ) * 100.0 );
+ // as a last resort, try charge_full and charge_now
+ var charge_full = FsoFramework.FileHandling.readIfPresent( "%s/charge_full".printf( sysfsnode ) );
+ var charge_now = FsoFramework.FileHandling.readIfPresent( "%s/charge_now".printf( sysfsnode ) );
+ if ( charge_full != "" && charge_now != "" )
+ return (int) ( ( charge_now.to_double() / charge_full.to_double() ) * 100.0 );
+
return -1;
}
@@ -259,7 +265,6 @@ class AggregatePowerSupply : FreeSmartphone.Device.PowerSupply, FsoFramework.Abs
logger.warning( "Not present; treating it like an AC adapter" );
typ = "ac";
}
- return;
}
var status = "unknown";