From c7dea747519f99584002084df3dce546f37df8b5 Mon Sep 17 00:00:00 2001 From: Emeric Planet Date: Thu, 13 Apr 2017 21:46:21 +0200 Subject: [PATCH] Add battery capacity parsing (#216) The Linux power supply class defines three entries to provide battery status. One of them wasn't used: POWER_SUPPLY_CAPACITY. https://www.kernel.org/doc/Documentation/power/power_supply_class.txt --- src/print_battery_info.c | 4 ++++ testcases/014-battery-capacity/expected_output.txt | 1 + testcases/014-battery-capacity/i3status.conf | 13 +++++++++++++ testcases/014-battery-capacity/uevent | 7 +++++++ testcases/015-battery-capacity/expected_output.txt | 1 + testcases/015-battery-capacity/i3status.conf | 13 +++++++++++++ testcases/015-battery-capacity/uevent | 10 ++++++++++ 7 files changed, 49 insertions(+) create mode 100644 testcases/014-battery-capacity/expected_output.txt create mode 100644 testcases/014-battery-capacity/i3status.conf create mode 100644 testcases/014-battery-capacity/uevent create mode 100644 testcases/015-battery-capacity/expected_output.txt create mode 100644 testcases/015-battery-capacity/i3status.conf create mode 100644 testcases/015-battery-capacity/uevent diff --git a/src/print_battery_info.c b/src/print_battery_info.c index 7883a11..f15cbfa 100644 --- a/src/print_battery_info.c +++ b/src/print_battery_info.c @@ -138,9 +138,13 @@ static bool slurp_battery_info(struct battery_info *batt_info, yajl_gen json_gen if (BEGINS_WITH(last, "POWER_SUPPLY_ENERGY_NOW=")) { watt_as_unit = true; batt_info->remaining = atoi(walk + 1); + batt_info->percentage_remaining = -1; } else if (BEGINS_WITH(last, "POWER_SUPPLY_CHARGE_NOW=")) { watt_as_unit = false; batt_info->remaining = atoi(walk + 1); + batt_info->percentage_remaining = -1; + } else if (BEGINS_WITH(last, "POWER_SUPPLY_CAPACITY=") && batt_info->remaining == -1) { + batt_info->percentage_remaining = atoi(walk + 1); } else if (BEGINS_WITH(last, "POWER_SUPPLY_CURRENT_NOW=")) batt_info->present_rate = abs(atoi(walk + 1)); else if (BEGINS_WITH(last, "POWER_SUPPLY_VOLTAGE_NOW=")) diff --git a/testcases/014-battery-capacity/expected_output.txt b/testcases/014-battery-capacity/expected_output.txt new file mode 100644 index 0000000..3f97d1b --- /dev/null +++ b/testcases/014-battery-capacity/expected_output.txt @@ -0,0 +1 @@ +Touchpad: 100.00% BAT \ No newline at end of file diff --git a/testcases/014-battery-capacity/i3status.conf b/testcases/014-battery-capacity/i3status.conf new file mode 100644 index 0000000..d48aa50 --- /dev/null +++ b/testcases/014-battery-capacity/i3status.conf @@ -0,0 +1,13 @@ +general { + output_format = "none" +} + +order += "battery 1" + +battery 1 { + format = "Touchpad: %percentage %status %remaining" + format_down = "No touchpad" + path = "/sys/class/power_supply/hid-ff:ff:ff:ff:ff:ff-battery/uevent" + path = "testcases/014-battery-capacity/uevent" + low_threshold = 10 +} diff --git a/testcases/014-battery-capacity/uevent b/testcases/014-battery-capacity/uevent new file mode 100644 index 0000000..5f06cc9 --- /dev/null +++ b/testcases/014-battery-capacity/uevent @@ -0,0 +1,7 @@ +POWER_SUPPLY_NAME=hid-70:cd:60:f7:a0:5c-battery +POWER_SUPPLY_PRESENT=1 +POWER_SUPPLY_ONLINE=1 +POWER_SUPPLY_CAPACITY=100 +POWER_SUPPLY_MODEL_NAME=applemagictrackpad +POWER_SUPPLY_STATUS=Discharging +POWER_SUPPLY_SCOPE=Device diff --git a/testcases/015-battery-capacity/expected_output.txt b/testcases/015-battery-capacity/expected_output.txt new file mode 100644 index 0000000..663a593 --- /dev/null +++ b/testcases/015-battery-capacity/expected_output.txt @@ -0,0 +1 @@ +Touchpad: 30.64% BAT 02:09:32 diff --git a/testcases/015-battery-capacity/i3status.conf b/testcases/015-battery-capacity/i3status.conf new file mode 100644 index 0000000..60e626f --- /dev/null +++ b/testcases/015-battery-capacity/i3status.conf @@ -0,0 +1,13 @@ +general { + output_format = "none" +} + +order += "battery 1" + +battery 1 { + format = "Touchpad: %percentage %status %remaining" + format_down = "No touchpad" + path = "/sys/class/power_supply/hid-ff:ff:ff:ff:ff:ff-battery/uevent" + path = "testcases/015-battery-capacity/uevent" + low_threshold = 10 +} diff --git a/testcases/015-battery-capacity/uevent b/testcases/015-battery-capacity/uevent new file mode 100644 index 0000000..ac74624 --- /dev/null +++ b/testcases/015-battery-capacity/uevent @@ -0,0 +1,10 @@ +POWER_SUPPLY_CAPACITY=100 +POWER_SUPPLY_CURRENT_NOW=1107000 +POWER_SUPPLY_CHARGE_FULL_DESIGN=7800000 +POWER_SUPPLY_CHARGE_NOW=2390000 +POWER_SUPPLY_NAME=hid-70:cd:60:f7:a0:5c-battery +POWER_SUPPLY_PRESENT=1 +POWER_SUPPLY_ONLINE=1 +POWER_SUPPLY_MODEL_NAME=applemagictrackpad +POWER_SUPPLY_STATUS=Discharging +POWER_SUPPLY_SCOPE=Device -- 2.39.5