diff options
-rwxr-xr-x | power_now | 91 |
1 files changed, 81 insertions, 10 deletions
@@ -1,15 +1,86 @@ #!/bin/sh -unset QUIET -BATTERY="BAT0" -while getopts ":mq" o; do case "${o}" in +unset QUIET MILLIWATTS TOTAL +BATTERY="ALL" + +while getopts "b:mqt" o; do case "${o}" in q) QUIET="y" ;; m) MILLIWATTS="y" ;; - *) BATTERY="$OPTARG" ;; + t) + TOTAL="y" + BATTERY="ALL" + ;; + b) BATTERY="$OPTARG" ;; esac done -[ -n "$QUIET" ] || printf "Power now is " -if [ -z "$MILLIWATTS" ]; then - cat /sys/class/power_supply/BAT0/current_now /sys/class/power_supply/BAT0/voltage_now | xargs | awk '{print $1*$2/1e12 " W"}' -else - cat /sys/class/power_supply/BAT0/current_now /sys/class/power_supply/BAT0/voltage_now | xargs | awk '{print $1*$2/1e9 " mW"}' -fi +#TOTALPOWER='0' + +case "$BATTERY" in + "ALL") + for battery in $(ls -1 /sys/class/power_supply | grep 'BAT'); do + DIRNAME="/sys/class/power_supply/${battery}" + if [ -f "${DIRNAME}/power_now" ]; then + if [ -n "${MILLIWATTS}" ]; then + POWER="$(cat "${DIRNAME}/power_now" | awk '{print $1/1e3}' | head -1)" + else + POWER="$(cat "${DIRNAME}/power_now" | awk '{print $1/1e6}' | head -1)" + fi + elif [ -f "${DIRNAME}/current_now" ]; then + if [ -n "${MILLIWATTS}" ]; then + POWER="$(cat "${DIRNAME}/current_now" "${DIRNAME}/voltage_now" | awk '{print $1*$2/1e9}' | head -1)" + else + POWER="$(cat "${DIRNAME}/current_now" "${DIRNAME}/voltage_now" | awk '{print $1*$2/1e12}' | head -1)" + fi + fi + if [ -n "${TOTAL}" ]; then + TOTALPOWER="$(echo "${TOTALPOWER}" "${POWER}" | awk '{print $1+$2}'| head -1)" + else + if [ -z "${QUIET}" ]; then + printf "Power in ${battery} is " + fi + printf "${POWER}" + if [ -n "${MILLIWATTS}" ]; then + echo " mW" + else + echo " W" + fi + fi + done + if [ -n "${TOTAL}" ]; then + if [ -z "${QUIET}" ]; then + printf "Total power is " + fi + printf "${TOTALPOWER}" + if [ -n "${MILLIWATTS}" ]; then + echo " mW" + else + echo " W" + fi + fi + ;; + *) + DIRNAME="/sys/class/power_supply/${BATTERY}" + [ -d "${DIRNAME}" ] || echo "No such battery!" + if [ -f "${DIRNAME}/power_now" ]; then + if [ -n "${MILLIWATTS}" ]; then + POWER="$(cat "${DIRNAME}/power_now" | awk '{print $1/1e3}' | head -1)" + else + POWER="$(cat "${DIRNAME}/power_now" | awk '{print $1/1e6}' | head -1)" + fi + elif [ -f "${DIRNAME}/current_now" ]; then + if [ -n "${MILLIWATTS}" ]; then + POWER="$(cat "${DIRNAME}/current_now" "${DIRNAME}/voltage_now" | awk '{print $1*$2/1e9}' | head -1)" + else + POWER="$(cat "${DIRNAME}/current_now" "${DIRNAME}/voltage_now" | awk '{print $1*$2/1e12}' | head -1)" + fi + fi + if [ -z "${QUIET}" ]; then + printf "Power in ${BATTERY} is " + fi + printf "${POWER}" + if [ -n "${MILLIWATTS}" ]; then + echo " mW" + else + echo " W" + fi + ;; +esac |