From e647e20b4a12ea4bfea8e39a9a87e75d070ce210 Mon Sep 17 00:00:00 2001 From: gaspar-ilom Date: Wed, 26 Feb 2025 23:09:35 +0100 Subject: [PATCH] refactor printing of battery state to confuse less users only print the battery manufacturer in case there is more than one battery, otherwise omit it make the code more readable for non-bash developers extract common functions Signed-off-by: gaspar-ilom --- initrd/bin/oem-system-info-xx30 | 8 +------ initrd/etc/functions | 41 ++++++++++++++++++++++++++++----- initrd/etc/gui_functions | 8 +------ 3 files changed, 37 insertions(+), 20 deletions(-) diff --git a/initrd/bin/oem-system-info-xx30 b/initrd/bin/oem-system-info-xx30 index a76a0eff..41f57d27 100755 --- a/initrd/bin/oem-system-info-xx30 +++ b/initrd/bin/oem-system-info-xx30 @@ -12,13 +12,7 @@ export BG_COLOR_MAIN_MENU="normal" TRACE_FUNC -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}" +battery_status="$(print_battery_state)" usb="$(lsusb)" pci="$(lspci)" diff --git a/initrd/etc/functions b/initrd/etc/functions index 81809b4e..61fb34fe 100644 --- a/initrd/etc/functions +++ b/initrd/etc/functions @@ -1217,13 +1217,42 @@ fromhex_plain() { fold -w 60 | xxd -p -r } -print_battery_state() { - TRACE_FUNC +print_battery_charge() { + local battery battery="$1" - DEBUG "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}" + echo "$((100*$(cat "${battery}/charge_now")/$(cat "${battery}/charge_full")))" +} + +print_battery_health() { + local battery + battery="$1" + echo "$((100*$(cat "${battery}/charge_full")/$(cat "${battery}/charge_full_design")))" +} + +print_battery_name() { + local battery + battery="$1" + echo "$(cat "${battery}/manufacturer") $(cat "${battery}/model_name")" +} + +# Print the charging and health state for all batteries +# Print the maufacturer and model name for each battery if more than 1 +# The printed string contains the full formatting including leading an trailing "\n" strings +print_battery_state() { + local battery_status + battery_status="" + all_batteries=(/sys/class/power_supply/BAT*) + for battery in "${all_batteries[@]}"; do + if [[ -d "${battery}" ]]; then + battery_name="Battery" + if [ "${#all_batteries[@]}" -gt 1 ]; then + battery_name+=" $(print_battery_name "${battery}")" + fi + battery_status+="\n${battery_name} charge: $(print_battery_charge "${battery}")%" + battery_status+="\n${battery_name} health: $(print_battery_health "${battery}")%" + fi + done + echo "${battery_status:+${battery_status}\n}" } generate_random_mac_address() { diff --git a/initrd/etc/gui_functions b/initrd/etc/gui_functions index 2b370c1f..f636e591 100755 --- a/initrd/etc/gui_functions +++ b/initrd/etc/gui_functions @@ -165,13 +165,7 @@ file_selector() { show_system_info() { TRACE_FUNC - 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}" + battery_status="$(print_battery_state)" memtotal=$(cat /proc/meminfo | grep 'MemTotal' | tr -s ' ' | cut -f2 -d ' ') memtotal=$((${memtotal} / 1024 / 1024 + 1))