You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
4.3 KiB
124 lines
4.3 KiB
#ifndef _CBATTERY_H
|
|
#define _CBATTERY_H
|
|
|
|
/*
|
|
* title: cbattery.h
|
|
*
|
|
* purpose: header for wdm kernel battery object
|
|
*
|
|
*/
|
|
|
|
|
|
|
|
// HID USAGE PAGE NUMBERS
|
|
#define POWER_PAGE 0x84
|
|
#define BATTERY_PAGE 0x85
|
|
|
|
// HID USAGE NUMBERS (Power Page)
|
|
#define PRESENT_STATUS_ID 0x02
|
|
#define UPS_ID 0x04
|
|
#define POWER_SUMMARY_ID 0x24
|
|
#define VOLTAGE_ID 0x30
|
|
#define CURRENT_ID 0x31
|
|
#define CONFIG_VOLTAGE_ID 0x40
|
|
#define CONFIG_CURRENT_ID 0x41
|
|
#define DELAY_BEFORE_SHUTDOWN_ID 0x57
|
|
#define SHUTDOWN_IMMINENT_ID 0x69
|
|
#define MANUFACTURER_ID 0xfd
|
|
#define PRODUCT_ID 0xfe
|
|
#define SERIAL_NUMBER_ID 0xff
|
|
|
|
// HID USAGE NUMBERS (Battery Page)
|
|
#define REMAINING_CAPACITY_LIMIT_ID 0x29
|
|
#define CAPACITY_MODE_ID 0x2c
|
|
#define BELOW_REMAINING_CAPACITY_ID 0x42
|
|
#define CHARGING_ID 0x44
|
|
#define DISCHARGING_ID 0x45
|
|
#define REMAINING_CAPACITY_ID 0x66
|
|
#define FULL_CHARGED_CAPACITY_ID 0x67
|
|
#define RUNTIME_TO_EMPTY_ID 0x68
|
|
#define DESIGN_CAPACITY_ID 0x83
|
|
#define MANUFACTURE_DATE_ID 0x85
|
|
#define ICHEMISTRY_ID 0x89
|
|
#define WARNING_CAPACITY_LIMIT_ID 0x8c
|
|
#define GRANULARITY1_ID 0x8d
|
|
#define GRANULARITY2_ID 0x8e
|
|
#define OEM_INFO_ID 0x8f
|
|
#define AC_PRESENT_ID 0xd0
|
|
|
|
|
|
typedef enum {
|
|
PRESENT_STATUS_INDEX, // 0
|
|
UPS_INDEX, // 1
|
|
POWER_SUMMARY_INDEX, // 2
|
|
VOLTAGE_INDEX, // 3
|
|
CURRENT_INDEX, // 4
|
|
CONFIG_VOLTAGE_INDEX, // 5
|
|
CONFIG_CURRENT_INDEX, // 6
|
|
DELAY_BEFORE_SHUTDOWN_INDEX, // 7
|
|
SHUTDOWN_IMMINENT_INDEX, // 8
|
|
MANUFACTURER_INDEX, // 9
|
|
PRODUCT_INDEX, // a
|
|
SERIAL_NUMBER_INDEX, // b
|
|
REMAINING_CAPACITY_LIMIT_INDEX, // c
|
|
CAPACITY_MODE_INDEX, // d
|
|
BELOW_REMAINING_CAPACITY_INDEX, // e
|
|
CHARGING_INDEX, // f
|
|
DISCHARGING_INDEX, // 10
|
|
REMAINING_CAPACITY_INDEX, // 11
|
|
FULL_CHARGED_CAPACITY_INDEX, // 12
|
|
RUNTIME_TO_EMPTY_INDEX, // 13
|
|
DESIGN_CAPACITY_INDEX, // 14
|
|
MANUFACTURE_DATE_INDEX, // 15
|
|
CHEMISTRY_INDEX, // 16
|
|
WARNING_CAPACITY_LIMIT_INDEX, // 17
|
|
GRANULARITY1_INDEX, // 18
|
|
GRANULARITY2_INDEX, // 19
|
|
OEM_INFO_INDEX, // 1a
|
|
AC_PRESENT_INDEX, // 1b
|
|
MAX_USAGE_INDEXS // 1c
|
|
} USAGE_INDEX;
|
|
|
|
typedef struct {
|
|
USAGE Page;
|
|
USAGE UsageID;
|
|
} USAGE_ENTRY;
|
|
|
|
extern USAGE_ENTRY UsageArray[];
|
|
|
|
|
|
class CBattery
|
|
{
|
|
|
|
public: // accessors
|
|
CBattery(CHidDevice *);
|
|
~CBattery();
|
|
NTSTATUS RefreshStatus();
|
|
bool InitValues(); // initialize static values from device
|
|
bool GetSetValue(USAGE_INDEX, PULONG, bool);
|
|
CUString * GetCUString(USAGE_INDEX);
|
|
ULONG GetUnit(USAGE_INDEX);
|
|
SHORT GetExponent(USAGE_INDEX);
|
|
CUsage * GetUsage(USAGE_INDEX);
|
|
public: // members
|
|
PVOID m_pBatteryClass; // Battery Class handle
|
|
CHidDevice * m_pCHidDevice; // the hid device for this battery
|
|
BOOLEAN m_bIsCacheValid; // Is cached battery info currently valid?
|
|
|
|
//
|
|
// Battery
|
|
//
|
|
BOOLEAN m_bRelative; // indicates capacity in percent or absolute values
|
|
ULONGLONG m_RefreshTime;
|
|
BATTERY_STATUS m_BatteryStatus;
|
|
BATTERY_INFORMATION m_BatteryInfo;
|
|
PBATTERY_NOTIFY m_pBatteryNotify;
|
|
USHORT m_Tag;
|
|
CUString * m_pSerialNumber;
|
|
CUString * m_pOEMInformation;
|
|
CUString * m_pProduct;
|
|
CUString * m_pManufacturer;
|
|
BATTERY_MANUFACTURE_DATE m_ManufactureDate;
|
|
};
|
|
|
|
#endif // cbattery.h
|