Tweak BatteryInfo

This commit is contained in:
Wojtek Figat
2021-01-11 16:38:12 +01:00
parent 1d2e2e5575
commit 6252c111b4
3 changed files with 38 additions and 32 deletions

View File

@@ -199,7 +199,7 @@ public:
/// Gets the current state of the audio playback (playing/paused/stopped). /// Gets the current state of the audio playback (playing/paused/stopped).
/// </summary> /// </summary>
/// <returns>The value.</returns> /// <returns>The value.</returns>
API_PROPERTY() FORCE_INLINE States GetState() const API_PROPERTY() FORCE_INLINE AudioSource::States GetState() const
{ {
return _state; return _state;
} }

View File

@@ -5,43 +5,45 @@
#include "Engine/Core/Types/BaseTypes.h" #include "Engine/Core/Types/BaseTypes.h"
/// <summary> /// <summary>
/// Power supply status. /// Contains information about power supply (battery).
/// </summary>
API_ENUM() enum class ACLineStatus : byte
{
/// <summary>
/// Power supply is not connected.
/// </summary>
Offline = 0,
/// <summary>
/// Power supply is connected.
/// </summary>
Online = 1,
/// <summary>
/// Unknown status.
/// </summary>
Unknown = 255
};
/// <summary>
/// Contains information about power supply (Battery).
/// </summary> /// </summary>
API_STRUCT() struct BatteryInfo API_STRUCT() struct BatteryInfo
{ {
DECLARE_SCRIPTING_TYPE_MINIMAL(BatteryInfo); DECLARE_SCRIPTING_TYPE_MINIMAL(BatteryInfo);
/// <summary> /// <summary>
/// Power supply status. /// Power supply status.
/// </summary> /// </summary>
API_FIELD() ACLineStatus ACLineStatus; API_ENUM() enum class States
{
/// <summary>
/// Unknown status.
/// </summary>
Unknown,
/// <summary>
/// Power supply is connected and battery is charging.
/// </summary>
BatteryCharging,
/// <summary>
/// Device is running on a battery.
/// </summary>
BatteryDischarging,
/// <summary>
/// Device is connected to the stable power supply (AC).
/// </summary>
Connected,
};
/// <summary> /// <summary>
/// Battery percentage left. /// Power supply state.
/// </summary> /// </summary>
API_FIELD() byte BatteryLifePercent; API_FIELD() BatteryInfo::States State = BatteryInfo::States::Unknown;
/// <summary> /// <summary>
/// Remaining battery life time in second. /// Battery percentage left (normalized to 0-1 range).
/// </summary> /// </summary>
API_FIELD() uint32 BatteryLifeTime; API_FIELD() float BatteryLifePercent = 1.0f;
}; };

View File

@@ -315,9 +315,13 @@ BatteryInfo Win32Platform::GetBatteryInfo()
BatteryInfo info; BatteryInfo info;
SYSTEM_POWER_STATUS status; SYSTEM_POWER_STATUS status;
GetSystemPowerStatus(&status); GetSystemPowerStatus(&status);
info.ACLineStatus = (ACLineStatus)status.ACLineStatus; info.BatteryLifePercent = (float)status.BatteryLifePercent / 255.0f;
info.BatteryLifePercent = status.BatteryLifePercent; if (status.BatteryFlag & 8)
info.BatteryLifeTime = status.BatteryLifeTime; info.State = BatteryInfo::States::BatteryCharging;
else if (status.BatteryFlag & 1 || status.BatteryFlag & 2 || status.BatteryFlag & 4)
info.State = BatteryInfo::States::BatteryDischarging;
else if (status.ACLineStatus == 1 || status.BatteryFlag & 128)
info.State = BatteryInfo::States::Connected;
return info; return info;
} }