1/////////////////////////////////////////////////////////////////////////////// 2// Name: src/msw/power.cpp 3// Purpose: power management functions for MSW 4// Author: Vadim Zeitlin 5// Modified by: 6// Created: 2006-05-27 7// RCS-ID: $Id: power.cpp 48517 2007-09-02 20:24:14Z JS $ 8// Copyright: (c) 2006 Vadim Zeitlin <vadim@wxwindows.org> 9// Licence: wxWindows licence 10/////////////////////////////////////////////////////////////////////////////// 11 12// ============================================================================ 13// declarations 14// ============================================================================ 15 16// ---------------------------------------------------------------------------- 17// headers 18// ---------------------------------------------------------------------------- 19 20// for compilers that support precompilation, includes "wx.h". 21#include "wx/wxprec.h" 22 23#ifdef __BORLANDC__ 24 #pragma hdrstop 25#endif 26 27#ifndef WX_PRECOMP 28#endif //WX_PRECOMP 29 30#include "wx/power.h" 31#include "wx/msw/private.h" 32 33#if !defined(__WINCE_STANDARDSDK__) 34 35#ifdef __WXWINCE__ 36 typedef SYSTEM_POWER_STATUS_EX SYSTEM_POWER_STATUS; 37 BOOL GetSystemPowerStatus(SYSTEM_POWER_STATUS *status) 38 { 39 return GetSystemPowerStatusEx(status, TRUE); 40 } 41#endif 42 43// ---------------------------------------------------------------------------- 44// helper functions 45// ---------------------------------------------------------------------------- 46 47static inline bool wxGetPowerStatus(SYSTEM_POWER_STATUS *sps) 48{ 49 if ( !::GetSystemPowerStatus(sps) ) 50 { 51 wxLogLastError(_T("GetSystemPowerStatus()")); 52 return false; 53 } 54 55 return true; 56} 57 58#endif 59 60// ============================================================================ 61// implementation 62// ============================================================================ 63 64wxPowerType wxGetPowerType() 65{ 66#if !defined(__WINCE_STANDARDSDK__) 67 SYSTEM_POWER_STATUS sps; 68 if ( wxGetPowerStatus(&sps) ) 69 { 70 switch ( sps.ACLineStatus ) 71 { 72 case 0: 73 return wxPOWER_BATTERY; 74 75 case 1: 76 return wxPOWER_SOCKET; 77 78 default: 79 wxLogDebug(_T("Unknown ACLineStatus=%u"), sps.ACLineStatus); 80 case 255: 81 break; 82 } 83 } 84#endif 85 86 return wxPOWER_UNKNOWN; 87} 88 89wxBatteryState wxGetBatteryState() 90{ 91#if !defined(__WINCE_STANDARDSDK__) 92 SYSTEM_POWER_STATUS sps; 93 if ( wxGetPowerStatus(&sps) ) 94 { 95 // there can be other bits set in the flag field ("charging" and "no 96 // battery"), extract only those which we need here 97 switch ( sps.BatteryFlag & 7 ) 98 { 99 case 1: 100 return wxBATTERY_NORMAL_STATE; 101 102 case 2: 103 return wxBATTERY_LOW_STATE; 104 105 case 3: 106 return wxBATTERY_CRITICAL_STATE; 107 } 108 } 109#endif 110 111 return wxBATTERY_UNKNOWN_STATE; 112} 113