#!/bin/bash ################################# #POWER MANAGEMENT INTERFACE FOR Z2 # -JAGSPH 2010 VERSION 0.11 # http://zipit.rootnexus.org/ # with help from #zipit irc.freenode.net # rkdavis, mozzwald ######### # Vars for LID # #SCREEN BRIGHTNESS SCRB=500 #BATTERY POWERED SCREEN BRIGHTNESS BTDISP=420 #KEY BRIGHTNESS (JUST LEAVE THEM OFF) KEYB=0 #How fast do we check the lid open/close status LIDTIME=2 #################################### #Vars for power management interface # # #Read status with nubmers only #This is now done in the loop function #BATST="`cat /proc/apm | awk '{ print $7}'| awk -F "" '{print $1$2}'`" # # #Low Threshold BATLT="46" #Warning Threshold BATWT="50" #High Threshold BATHT="80" #Fully Charged on AC FULLC="89" #Polling Time POLL=30 #Warned? WARN=0 WARNS=0 function warning1 { if [ "$WARN" -eq "1" ]; then echo "Function warning1 Doing nothing" else xmessage -center "Power low; SHUTDOWN:$BATLT CUR:$BATST" WARN=1 fi } function warning2 { if [ "$WARNS" -eq "1" ]; then echo "Function warning2 Doing nothing" else xmessage -center "Power low; Shutdown in 2 MIN; Save Work" & WARNS=1 fi } function fullcharge { echo Fully Charged Function echo "#################################" if [ "$BATST" -lt "$FULLC" ]; then echo Charge is $BATST out of $FULLC else #echo $BATST greather than $FULLC echo "FC: Fully Chared $BATST OF $FULLC" fi } function batpower { echo On battery power function echo "#################################" if [ "$BATST" -lt "$BATHT" ]; then echo $BATST less than $BATHT echo System Is Officially on battery power else #echo $BATST greather than $BATHT #echo "System Is over the $BATHT Threshold" echo "BAT: Charging over $BATST over $BATHT on AC Power" #echo "Even though it may not be" #echo "Since we cannot accurately calculate" #echo "BP: $BATST of $BATHT Threshold" fi echo "" } function warn { echo Warning Function echo "#################################" if [ "$BATST" -lt "$BATWT" ]; then #echo $BATST less than $BATWT echo Warning echo System will shutdown at $BATLT echo System is at $BATST warning1 & sleep 2 WARN=1 #xmessage -center "Power low; SHUTDOWN:$BATLT CUR:$BATST" else #echo $BATST greather than $BATWT echo "WARN: $BATST of $BATWT Threshold" fi echo "" } function low { echo Low Function echo "#################################" if [ "$BATST" -lt "$BATLT" ]; then echo $BATST less than $BATLT echo System shutdown in 120 Seconds echo Save your work warning2 & sleep 5 WARNS=1 sleep 120 ; op shutdown else echo "LOW: $BATST above $BATLT Shutdown Threshold" fi echo "" } function lid { while true ; do LID="`cat /proc/irq/162/spurious | grep count | awk '{ print $2}'`" #echo $LID rem=$(( $LID % 2 )) if [ $rem -eq 0 ] then echo "$LID is even number" echo "According to this we should turn on the display.. right?" #echo $SCRB > /sys/class/backlight/pwm-backlight.0/brightness #echo $KEYB > /sys/class/backlight/pwm-backlight.1/brightness disppwr else echo "$LID is odd number" echo "According to this we should turn off the display, right?" echo 0 > /sys/class/backlight/pwm-backlight.1/brightness echo 0 > /sys/class/backlight/pwm-backlight.0/brightness fi sleep $LIDTIME done } function poweredby { while true ; do POWERED=`cat /sys/devices/platform/z2-battery/power_supply/Z2/status` if [ "$POWERED" = "Charging" ]; then echo "We are on AC $POWERED. So we do nothing" else echo "We are not on AC $POWERED. So we are entering the battery-daemon." echo $BTDISP > /sys/class/backlight/pwm-backlight.0/brightness BATST="`cat /proc/apm | awk '{ print $7}'| awk -F "" '{print $1$2}'`" echo "System is reporting "$BATST"% from /proc/apm" clear; low; warn; batpower; fullcharge; sleep $POLL fi sleep $POLL done } function disppwr { POWERED=`cat /sys/devices/platform/z2-battery/power_supply/Z2/status` if [ "$POWERED" = "Charging" ]; then echo $SCRB > /sys/class/backlight/pwm-backlight.0/brightness else echo $BTDISP > /sys/class/backlight/pwm-backlight.0/brightness fi } function loop { while true ; do poweredby sleep $POLL done } #Entry Point ############# # # # lid & #FORK() sleep 1 #CHILL loop; #ENTER POWER MANAGEMENT DAEMON