bat_freebsd: adds wear-level between remaining_capacity and present_rate
Signed-off-by: Andreas Geisenhainer <psycorama@datenhalde.de>
This commit is contained in:
parent
163aed7213
commit
8c56196c0c
|
@ -3,12 +3,15 @@
|
||||||
-- from the battery
|
-- from the battery
|
||||||
-----------------------------------------------------
|
-----------------------------------------------------
|
||||||
local setmetatable = setmetatable
|
local setmetatable = setmetatable
|
||||||
|
|
||||||
local bat_acpi = {}
|
local bat_acpi = {}
|
||||||
|
|
||||||
local function worker(format)
|
local function worker(format)
|
||||||
|
local battery = "batt"
|
||||||
|
if warg then
|
||||||
|
battery = warg
|
||||||
|
end
|
||||||
local bat_info = {}
|
local bat_info = {}
|
||||||
local pcall = "acpiconf -i batt"
|
local pcall = "acpiconf -i " .. battery
|
||||||
local f = io.popen(pcall)
|
local f = io.popen(pcall)
|
||||||
for line in f:lines("*line") do
|
for line in f:lines("*line") do
|
||||||
for key,value in string.gmatch(line, "(.+):%s+(.+)") do
|
for key,value in string.gmatch(line, "(.+):%s+(.+)") do
|
||||||
|
@ -32,12 +35,20 @@ local function worker(format)
|
||||||
-- battery capacity in percent
|
-- battery capacity in percent
|
||||||
local percent = tonumber(string.gsub(bat_info["Remaining capacity"], "[^%d]", ""), 10)
|
local percent = tonumber(string.gsub(bat_info["Remaining capacity"], "[^%d]", ""), 10)
|
||||||
|
|
||||||
-- Calculate remaining (charging or discharging) time
|
-- use remaining (charging or discharging) time calculated by acpiconf
|
||||||
local time = bat_info["Remaining time"]
|
local time = bat_info["Remaining time"]
|
||||||
if time == "unknown" then
|
if time == "unknown" then
|
||||||
time = "∞"
|
time = "∞"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- calculate wear level from (last full / design) capacity
|
||||||
|
local wear = "N/A"
|
||||||
|
if bat_info["Last full capacity"] and bat_info["Design capacity"] then
|
||||||
|
local l_full = tonumber(string.gsub(bat_info["Last full capacity"], "[^%d]", ""), 10)
|
||||||
|
local design = tonumber(string.gsub(bat_info["Design capacity"], "[^%d]", ""), 10)
|
||||||
|
wear = math.floor( 100 - (l_full / design * 100))
|
||||||
|
end
|
||||||
|
|
||||||
-- dis-/charging rate as presented by battery
|
-- dis-/charging rate as presented by battery
|
||||||
local rate = string.gsub( string.gsub(bat_info["Present rate"], ".*mA[^%d]+", ""), "[%s]+mW.*", "")
|
local rate = string.gsub( string.gsub(bat_info["Present rate"], ".*mA[^%d]+", ""), "[%s]+mW.*", "")
|
||||||
rate = string.format( "% 2.1f", tonumber(rate / 1000))
|
rate = string.format( "% 2.1f", tonumber(rate / 1000))
|
||||||
|
@ -46,8 +57,9 @@ local function worker(format)
|
||||||
-- * state (high "↯", discharging "-", charging "+", N/A "⌁" }
|
-- * state (high "↯", discharging "-", charging "+", N/A "⌁" }
|
||||||
-- * remaining_capacity (percent)
|
-- * remaining_capacity (percent)
|
||||||
-- * remaining_time, by battery
|
-- * remaining_time, by battery
|
||||||
|
-- * wear level (percent)
|
||||||
-- * present_rate (mW)
|
-- * present_rate (mW)
|
||||||
return {state, percent, time, rate}
|
return {state, percent, time, wear, rate}
|
||||||
end
|
end
|
||||||
|
|
||||||
return setmetatable(bat_acpi, { __call = function(_, ...) return worker(...) end })
|
return setmetatable(bat_acpi, { __call = function(_, ...) return worker(...) end })
|
||||||
|
|
Loading…
Reference in New Issue