Handle multiple batteries
[khatus.git] / src / awk / exe / parse_upower.awk
index 07af1cb..09150c9 100644 (file)
     next
 }
 
+/  native-path:/ && device["path"] {
+    device["native_path"] = $2
+    next
+}
+
 # BEGIN battery
 /  battery/ && device["path"] {
     device["is_battery"] = 1
     next
 }
 
+/    energy:/ && device["is_battery"] {
+    device["energy"] = $2
+    next
+}
+
+/    energy-full:/ && device["is_battery"] {
+    device["energy_full"] = $2
+    next
+}
+
 /    percentage:/ && device["is_battery"] {
     device["battery_percentage"] = $2
     sub("%$", "", device["battery_percentage"])
@@ -28,8 +43,8 @@
 }
 
 /^$/ && device["is_battery"] {
-    print("battery_state"     , device["battery_state"])
-    print("battery_percentage", device["battery_percentage"])
+    print("battery_state"     , aggregate_battery_state())
+    print("battery_percentage", aggregate_battery_percentage())
 }
 # END battery
 
     delete device
     next
 }
+
+function aggregate_battery_percentage(    bat, curr, full) {
+    _battery_energy[device["native_path"]] = device["energy"]
+    _battery_energy_full[device["native_path"]] = device["energy_full"]
+    for (bat in _battery_energy) {
+        curr = curr + _battery_energy[bat]
+        full = full + _battery_energy_full[bat]
+    }
+    return ((curr / full) * 100)
+}
+
+function aggregate_battery_state(    curr, bat, new) {
+    _battery_state[device["native_path"]] = device["battery_state"]
+    curr = device["battery_state"]
+    for (bat in _battery_state) {
+        new = _battery_state[bat]
+        if (new == "discharging") {
+            curr = new
+        } else if (curr != "discharging" && new == "charging") {
+            curr = new
+        }
+    }
+    return curr
+}
This page took 0.028525 seconds and 4 git commands to generate.