[Server-devel] [PATCH] Add a portable (if slow) check for power

martin.langhoff at gmail.com martin.langhoff at gmail.com
Mon Jun 16 13:46:35 EDT 2008


From: Martin Langhoff <martin at laptop.org>

This patch adds a fallback portable check for
power using HAL. This adds ~100ms on XO-1 HW.
---
 ds_backup.sh |   33 +++++++++++++++++++++++++++++++--
 1 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/ds_backup.sh b/ds_backup.sh
index ceea99a..98547d1 100755
--- a/ds_backup.sh
+++ b/ds_backup.sh
@@ -15,8 +15,37 @@
 #
 # Author: Martin Langhoff <martin at laptop.org>
 #
-B_LEVEL=`cat /sys/class/power_supply/olpc-battery/capacity`
-AC_STAT=`cat /sys/class/power_supply/olpc-ac/online`
+
+if [ -e /sys/class/power_supply/olpc-battery/capacity \
+     -a -e /sys/class/power_supply/olpc-ac/online ]
+then
+    # OLPC HW
+    B_LEVEL=`cat /sys/class/power_supply/olpc-battery/capacity`
+    AC_STAT=`cat /sys/class/power_supply/olpc-ac/online`
+else
+    # Portable, but 100ms slower on XO-1
+    # Note - we read the 1st battery, and the 1st AC
+    # TODO: Smarter support for >1 battery
+    B_HAL=`hal-find-by-capability --capability battery | head -n1`
+    AC_HAL=`hal-find-by-capability --capability ac_adapter`
+    if [ -z $B_HAL -o -z $AC_HAL ]
+    then
+	# We do expect a battery & AC
+	exit 1;
+    fi
+
+    B_LEVEL=`hal-get-property --udi $B_HAL --key battery.charge_level.percentage`
+    AC_STAT=`hal-get-property --udi $AC_HAL --key ac_adapter.present`
+
+    # hal reports ac adapter presence as 'true'
+    # ... translate...
+    if [ AC_STAT = 'true' ]
+    then
+	AC_STAT=1
+    else
+	AC_STAT=0
+    fi
+fi
 
 # If we are on battery, and below 30%, leave it for later
 if [ $AC_STAT == "0" -a $B_LEVEL -lt 30 ]
-- 
1.5.4.34.g053d9



More information about the Server-devel mailing list