ntdll: Add support for multi-battery systems and energy-reporting batteries on Linux

Current implementation of system.fill_battery_state only reads "charge_" and "current_" attributes. Some batteries expose different attributes, namely "power_" and "energy_". Added the required logic to support both types.

Further, when rewriting the function I also added support for systems with multiple batteries. Windows documentation was not clear but from what I gathered struct SYSTEM_BATTERY_STATE sets Charging and Discharging if ANY battery is charging/discharging. So, to check if the overall system is charging/discharging only Rate can be used.

Also cleaned the code related to "AC". There was a "fixme" there which I didn't fully undertand as SYSTEM_BATTERY_STATE.AcOnLine == True if any AC is present, so the proper logic was already implemented

Merge request reports

Loading