diff options
| author | streetturtle <streetturtle@users.noreply.github.com> | 2023-01-17 22:20:39 -0500 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-17 22:20:39 -0500 | 
| commit | 5f5aa85bed6d4f35796e342d5dbca63f94f4c377 (patch) | |
| tree | e87ae523206ec542a8995af5e49ae314380d584d /battery-widget | |
| parent | 72d53d1e871b30326f070127796e9672559e4046 (diff) | |
| parent | ed355dbf46e370c7a9207001a8007ff9bc929b73 (diff) | |
Merge pull request #384 from shuber2/fix-bat-unknownstatus
Fix bat unknownstatus
Diffstat (limited to 'battery-widget')
| -rw-r--r-- | battery-widget/battery.lua | 23 | 
1 files changed, 16 insertions, 7 deletions
| diff --git a/battery-widget/battery.lua b/battery-widget/battery.lua index 452d7ef..4b02a7c 100644 --- a/battery-widget/battery.lua +++ b/battery-widget/battery.lua @@ -125,20 +125,25 @@ local function worker(user_args)          local battery_info = {}          local capacities = {}          for s in stdout:gmatch("[^\r\n]+") do +            -- Match a line with status and charge level              local status, charge_str, _ = string.match(s, '.+: ([%a%s]+), (%d?%d?%d)%%,?(.*)')              if status ~= nil then +                -- Enforce that for each entry in battery_info there is an +                -- entry in capacities of zero. If a battery has status +                -- "Unknown" then there is no capacity reported and we treat it +                -- as zero capactiy for later calculations.                  table.insert(battery_info, {status = status, charge = tonumber(charge_str)}) -            else -                local cap_str = string.match(s, '.+:.+last full capacity (%d+)') -                table.insert(capacities, tonumber(cap_str)) +                table.insert(capacities, 0)              end -        end -        local capacity = 0 -        for _, cap in ipairs(capacities) do -            capacity = capacity + cap +            -- Match a line where capacity is reported +            local cap_str = string.match(s, '.+:.+last full capacity (%d+)') +            if cap_str ~= nil then +                capacities[#capacities] = tonumber(cap_str) or 0 +            end          end +        local capacity = 0          local charge = 0          local status          for i, batt in ipairs(battery_info) do @@ -148,7 +153,11 @@ local function worker(user_args)                      -- this is arbitrary, and maybe another metric should be used                  end +                -- Adds up total (capacity-weighted) charge and total capacity. +                -- It effectively ignores batteries with status "Unknown" as we +                -- treat them with capacity zero.                  charge = charge + batt.charge * capacities[i] +                capacity = capacity + capacities[i]              end          end          charge = charge / capacity | 
