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