From 0d302b43e234b1ed907effe95ec2d1fd3faecb0d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Micha=C5=82=20=27Wolvverine=27=20Panasiewicz?= Date: Wed, 27 Sep 2006 00:04:56 +0000 Subject: [PATCH] - no flood to log Changed files: acpid.battery.sh -> 1.6 --- acpid.battery.sh | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/acpid.battery.sh b/acpid.battery.sh index 4c74db7..70d3a8d 100644 --- a/acpid.battery.sh +++ b/acpid.battery.sh @@ -10,16 +10,18 @@ if [ $# != 1 ]; then fi set $* -AC=/proc/acpi/ac_adapter/AC -BAT=/proc/acpi/battery/$2 +AC=/proc/acpi/ac_adapter/ADP1 +BAT=/proc/acpi/battery/BAT1 +STATE_FILE=/tmp/ac_bat_acpid.state # get the AC connector state (plugged/unplugged) from /proc filesystem. AC_STATE=`sed -n 's/^.*\(off\|on\)-line.*/\1/p' $AC/state` - +AC_STATE_OLD=`cat "$STATE_FILE" | awk '{print $1};'` # get the battery state from /proc filesystem BAT_CAPACITY=`awk '/^remaining\ capacity:/ {print $3}' $BAT/state` BAT_WARNING=`awk '/^alarm:/ {print $2}' $BAT/alarm` BAT_CRITICAL=`awk '/^design\ capacity\ low:/ {print $4}' $BAT/info` +BAT_STATE_OLD=`cat "$STATE_FILE" | awk '{print $2};'` if [ "$BAT_CAPACITY" -le "$((BAT_CRITICAL+200))" -a "$AC_STATE" = "off" ]; then BAT_STATE=critical elif [ "$BAT_CAPACITY" -le "$((BAT_WARNING+200))" -a "$AC_STATE" = "off" ]; then @@ -27,11 +29,13 @@ elif [ "$BAT_CAPACITY" -le "$((BAT_WARNING+200))" -a "$AC_STATE" = "off" ]; then else BAT_STATE=normal fi +echo "$AC_STATE $BAT_STATE" > "$STATE_FILE" -case "$AC_STATE" in +if [ "$AC_STATE" != "$AC_STATE_OLD" ]; then + case "$AC_STATE" in on) # AC connector plugged in - logger "acpid: `basename $AC` connector plugged in." + logger "acpid: `basename $AC` connector plugged in. State: $AC_STATE." # deactivate standby (spindown) timeout for the drive #hdparm -q -S 0 /dev/hda # handle processor @@ -40,24 +44,26 @@ case "$AC_STATE" in ;; off) # AC connector unplugged - logger "acpid: `basename $AC` connector unplugged." + logger "acpid: `basename $AC` connector unplugged. State: $AC_STATE." # activate standby (spindown) timeout for the drive # timeout 5 minutes (man hdparm, for more informations) - #hdparm -q -S 60 /dev/hda + #hdparm -q -S 60 /dev/sda # handle processor #echo 4 > /proc/acpi/processor/CPU0/throttling #echo 3 > /proc/acpi/processor/CPU0/performance ;; *) # AC connector in undetermined state - logger "acpid: Could not determine new `basename $AC` connector state." + logger "acpid: Could not determine new `basename $AC` connector state: $AC_STATE." ;; -esac + esac +fi -case "$BAT_STATE" in +if [ "$BAT_STATE" != "$BAT_STATE_OLD" ]; then + case "$BAT_STATE" in warning) # battery passed acpi alarm state and AC unplugged - logger "acpid: Remaining `basename $BAT` battery capacity low." + logger "acpid: Remaining `basename $BAT` battery capacity low. State: $BAT_STATE." # play alarm sound #play /path_to/alarm.wav # put computer to sleep @@ -66,7 +72,7 @@ case "$BAT_STATE" in ;; critical) # some laptops generate acpi event when machine is about to turn off - logger "acpid: Remaining `basename $BAT` battery capacity VERY low." + logger "acpid: Remaining `basename $BAT` battery capacity VERY low. State: $BAT_STATE." # play alarm sound #play /path_to/alarm.wav # put computer to sleep @@ -78,6 +84,7 @@ case "$BAT_STATE" in ;; *) # battery in undetermined state - logger "acpid: Could not determine `basename $BAT` battery state." + logger "acpid: Could not determine `basename $BAT` battery state: $BAT_STATE." ;; -esac + esac +fi -- 2.43.0