summaryrefslogtreecommitdiff
path: root/power_now
diff options
context:
space:
mode:
authorzachir <zachir@librem.one>2025-07-30 13:55:49 -0500
committerzachir <zachir@librem.one>2025-07-30 13:55:49 -0500
commit31860e9bf13ad942b82627dfd77be4c4d8bab6fb (patch)
treece4d63d71bbffba92f978cbe181b4688cc0f28b4 /power_now
parenteeb54dc363b89436945ece5e7b43a0ff12cc8543 (diff)
Update power_now to be more extensible
Diffstat (limited to 'power_now')
-rwxr-xr-xpower_now91
1 files changed, 81 insertions, 10 deletions
diff --git a/power_now b/power_now
index a575cb2..520310b 100755
--- a/power_now
+++ b/power_now
@@ -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