123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- #include "power_windows.h"
- bool PowerWindows::GetPowerInfo_Windows() {
- SYSTEM_POWER_STATUS status;
- bool need_details = FALSE;
-
- if (!GetSystemPowerStatus(&status)) {
-
- power_state = OS::POWERSTATE_UNKNOWN;
- } else if (status.BatteryFlag == 0xFF) {
- power_state = OS::POWERSTATE_UNKNOWN;
- } else if (status.BatteryFlag & (1 << 7)) {
- power_state = OS::POWERSTATE_NO_BATTERY;
- } else if (status.BatteryFlag & (1 << 3)) {
- power_state = OS::POWERSTATE_CHARGING;
- need_details = TRUE;
- } else if (status.ACLineStatus == 1) {
- power_state = OS::POWERSTATE_CHARGED;
- need_details = TRUE;
- } else {
- power_state = OS::POWERSTATE_ON_BATTERY;
- need_details = TRUE;
- }
- percent_left = -1;
- nsecs_left = -1;
- if (need_details) {
- const int pct = (int)status.BatteryLifePercent;
- const int secs = (int)status.BatteryLifeTime;
- if (pct != 255) {
- percent_left = (pct > 100) ? 100 : pct;
- }
- if (secs != 0xFFFFFFFF) {
- nsecs_left = secs;
- }
- }
- return TRUE;
- }
- OS::PowerState PowerWindows::get_power_state() {
- if (GetPowerInfo_Windows()) {
- return power_state;
- } else {
- return OS::POWERSTATE_UNKNOWN;
- }
- }
- int PowerWindows::get_power_seconds_left() {
- if (GetPowerInfo_Windows()) {
- return nsecs_left;
- } else {
- return -1;
- }
- }
- int PowerWindows::get_power_percent_left() {
- if (GetPowerInfo_Windows()) {
- return percent_left;
- } else {
- return -1;
- }
- }
- PowerWindows::PowerWindows() :
- nsecs_left(-1),
- percent_left(-1),
- power_state(OS::POWERSTATE_UNKNOWN) {
- }
- PowerWindows::~PowerWindows() {
- }
|