refactor how battery status string is composed

simplify and make sure health and charge state are printed next to each other for the same battery

Signed-off-by: gaspar-ilom <gasparilom@riseup.net>
This commit is contained in:
gaspar-ilom 2025-02-23 00:06:51 +01:00
parent 60faa5f05c
commit 543ab5543e
No known key found for this signature in database
2 changed files with 12 additions and 18 deletions

View File

@ -1220,22 +1220,11 @@ fromhex_plain() {
fold -w 60 | xxd -p -r
}
print_battery_health() {
for battery in /sys/class/power_supply/BAT*; do
if [[ -d "${battery}" ]]; then
battery_health=$(awk "BEGIN {printf \"%d\", ($(cat "${battery}/charge_full")/$(cat "${battery}/charge_full_design")*100)}")
echo "$(basename "${battery}") ${battery_health}"
fi
done
}
print_battery_charge() {
for battery in /sys/class/power_supply/BAT*; do
if [[ -d "${battery}" ]]; then
battery_charge=$(awk "BEGIN {printf \"%d\", ($(cat "${battery}/charge_now")/$(cat "${battery}/charge_full")*100)}")
echo "$(basename "${battery}") ${battery_charge}"
fi
done
print_battery_state() {
battery="$1"
battery_charge=$(awk "BEGIN {printf \"%d\", ($(cat "${battery}/charge_now")/$(cat "${battery}/charge_full")*100)}")
battery_health=$(awk "BEGIN {printf \"%d\", ($(cat "${battery}/charge_full")/$(cat "${battery}/charge_full_design")*100)}")
echo "$(basename "${battery}") ${battery_charge} ${battery_health}"
}
generate_random_mac_address() {

View File

@ -164,8 +164,13 @@ file_selector() {
}
show_system_info() {
TRACE_FUNC
battery_status=$(paste <(print_battery_charge) <(print_battery_health) | awk '{printf "\\nBattery %s charge: %s%\\nBattery %s health: %s%", substr($1,4), $2, substr($3,4), $4}; END { if (NR!=0) printf "\\n"}')
battery_status=""
for battery in /sys/class/power_supply/BAT*; do
if [[ -d "${battery}" ]]; then
battery_status+="$(awk '{printf "\\nBattery %s charge: %s%\\nBattery %s health: %s%", substr($1,4), $2, substr($1,4), $3}' <<< "$(print_battery_state "${battery}")")"
fi
done
battery_status="${battery_status:+${battery_status}\n}"
memtotal=$(cat /proc/meminfo | grep 'MemTotal' | tr -s ' ' | cut -f2 -d ' ')
memtotal=$((${memtotal} / 1024 / 1024 + 1))