Shift X2 status from legacy to archived
[khatus.git] / x4 / bin / khatus_x4_parse_upower
CommitLineData
4411059d
SK
1#! /usr/bin/awk -f
2
3# When parsing 'upower --dump'
4/^Device:[ \t]+/ {
5 device["path"] = $2
6 next
7}
8
9# When parsing 'upower --monitor-detail'
10/^\[[0-9]+:[0-9]+:[0-9]+\.[0-9]+\][ \t]+device changed:[ \t]+/ {
11 device["path"] = $4
12 next
13}
14
15/ native-path:/ && device["path"] {
16 device["native_path"] = $2
17 next
18}
19
20# BEGIN battery
21/ battery/ && device["path"] {
22 device["is_battery"] = 1
23 next
24}
25
26/ state:/ && device["is_battery"] {
27 device["battery_state"] = $2
28 next
29}
30
31/ energy:/ && device["is_battery"] {
32 device["energy"] = $2
33 next
34}
35
36/ energy-full:/ && device["is_battery"] {
37 device["energy_full"] = $2
38 next
39}
40
41/ percentage:/ && device["is_battery"] {
42 device["battery_percentage"] = $2
43 sub("%$", "", device["battery_percentage"])
44 next
45}
46
47/^$/ && device["is_battery"] {
48 print("battery_state" , aggregate_battery_state())
49 print("battery_percentage", aggregate_battery_percentage())
50}
51# END battery
52
53# BEGIN line-power
54/ line-power/ && device["path"] {
55 device["is_line_power"] = 1
56 next
57}
58
59/ online:/ && device["is_line_power"] {
60 device["line_power_online"] = $2
61 next
62}
63
64/^$/ && device["is_line_power"] {
65 print("line_power", device["line_power_online"])
66}
67# END line-power
68
69/^$/ {
70 delete device
71 next
72}
73
74function aggregate_battery_percentage( bat, curr, full) {
75 _battery_energy[device["native_path"]] = device["energy"]
76 _battery_energy_full[device["native_path"]] = device["energy_full"]
77 for (bat in _battery_energy) {
78 curr = curr + _battery_energy[bat]
79 full = full + _battery_energy_full[bat]
80 }
81 return ((curr / full) * 100)
82}
83
84function aggregate_battery_state( curr, bat, new) {
85 _battery_state[device["native_path"]] = device["battery_state"]
86 curr = device["battery_state"]
87 for (bat in _battery_state) {
88 new = _battery_state[bat]
89 if (new == "discharging") {
90 curr = new
91 } else if (curr != "discharging" && new == "charging") {
92 curr = new
93 }
94 }
95 return curr
96}
This page took 0.031056 seconds and 4 git commands to generate.