2 * PROJECT: ReactOS ACPI-Compliant Control Method Battery
3 * LICENSE: BSD - See COPYING.ARM in the top level directory
4 * FILE: boot/drivers/bus/acpi/cmbatt/cmbatt.h
5 * PURPOSE: Main Header File
6 * PROGRAMMERS: ReactOS Portable Systems Group
17 #define IOCTL_BATTERY_QUERY_UNIQUE_ID \
18 CTL_CODE(FILE_DEVICE_BATTERY, 0x101, METHOD_BUFFERED, FILE_READ_ACCESS) // 0x294404
20 #define IOCTL_BATTERY_QUERY_STA \
21 CTL_CODE(FILE_DEVICE_BATTERY, 0x102, METHOD_BUFFERED, FILE_READ_ACCESS) // 0x294408
23 #define IOCTL_BATTERY_QUERY_PSR \
24 CTL_CODE(FILE_DEVICE_BATTERY, 0x103, METHOD_BUFFERED, FILE_READ_ACCESS) // 0x29440C
26 #define IOCTL_BATTERY_SET_TRIP_POINT \
27 CTL_CODE(FILE_DEVICE_BATTERY, 0x104, METHOD_BUFFERED, FILE_READ_ACCESS) // 0x294410
29 #define IOCTL_BATTERY_QUERY_BIF \
30 CTL_CODE(FILE_DEVICE_BATTERY, 0x105, METHOD_BUFFERED, FILE_READ_ACCESS) // 0x294414
32 #define IOCTL_BATTERY_QUERY_BST \
33 CTL_CODE(FILE_DEVICE_BATTERY, 0x106, METHOD_BUFFERED, FILE_READ_ACCESS) // 0x294418
35 #define CMBATT_GENERIC_STATUS 0x01
36 #define CMBATT_GENERIC_INFO 0x02
37 #define CMBATT_GENERIC_WARNING 0x04
38 #define CMBATT_ACPI_WARNING 0x08
39 #define CMBATT_POWER_INFO 0x10
40 #define CMBATT_PNP_INFO 0x20
41 #define CMBATT_ACPI_ENTRY_EXIT 0x40
42 #define CMBATT_PNP_ENTRY_EXIT 0x200
43 #define CMBATT_ACPI_ASSERT 0x400
45 typedef enum _CMBATT_EXTENSION_TYPE
49 } CMBATT_EXTENSION_TYPE
;
51 #define ACPI_BUS_CHECK 0x00
52 #define ACPI_DEVICE_CHECK 0x01
54 #define ACPI_STA_PRESENT 0x01
55 #define ACPI_STA_ENABLED 0x02
56 #define ACPI_STA_SHOW_UI 0x04
57 #define ACPI_STA_FUNCTIONAL 0x08
58 #define ACPI_STA_BATTERY_PRESENT 0x10
60 #define ACPI_BATT_NOTIFY_STATUS 0x80
61 #define ACPI_BATT_NOTIFY_INFO 0x81
63 #define ACPI_BATT_STAT_DISCHARG 0x0001
64 #define ACPI_BATT_STAT_CHARGING 0x0002
65 #define ACPI_BATT_STAT_CRITICAL 0x0004
67 #define CM_MAX_VALUE 0x7FFFFFFF
68 #define CM_UNKNOWN_VALUE 0xFFFFFFFF
70 typedef struct _ACPI_BST_DATA
74 ULONG RemainingCapacity
;
76 } ACPI_BST_DATA
, *PACPI_BST_DATA
;
78 #define ACPI_BATT_POWER_UNIT_WATTS 0x0
79 #define ACPI_BATT_POWER_UNIT_AMPS 0x1
81 typedef struct _ACPI_BIF_DATA
85 ULONG LastFullCapacity
;
86 ULONG BatteryTechnology
;
88 ULONG DesignCapacityWarning
;
89 ULONG DesignCapacityLow
;
90 ULONG BatteryCapacityGranularity1
;
91 ULONG BatteryCapacityGranularity2
;
92 CHAR ModelNumber
[256];
93 CHAR SerialNubmer
[256];
94 CHAR BatteryType
[256];
96 } ACPI_BIF_DATA
, *PACPI_BIF_DATA
;
98 #define CMBATT_AR_NOTIFY 0x01
99 #define CMBATT_AR_INSERT 0x02
100 #define CMBATT_AR_REMOVE 0x04
102 typedef struct _CMBATT_DEVICE_EXTENSION
104 CMBATT_EXTENSION_TYPE FdoType
;
105 PDEVICE_OBJECT DeviceObject
;
106 PDEVICE_OBJECT FdoDeviceObject
;
107 PDEVICE_OBJECT PdoDeviceObject
;
108 PDEVICE_OBJECT AttachedDevice
;
109 FAST_MUTEX FastMutex
;
112 POWER_STATE PowerState
;
113 WMILIB_CONTEXT WmiLibInfo
;
114 BOOLEAN WaitWakeEnable
;
115 IO_REMOVE_LOCK RemoveLock
;
117 PUNICODE_STRING DeviceName
;
118 ACPI_INTERFACE_STANDARD AcpiInterface
;
119 BOOLEAN DelayNotification
;
127 ULONG ModelNumberLength
;
129 ULONG SerialNumberLength
;
133 ACPI_BST_DATA BstData
;
134 ACPI_BIF_DATA BifData
;
137 ULONG RemainingCapacity
;
138 ULONG PresentVoltage
;
140 BATTERY_INFORMATION BatteryInformation
;
141 ULONG BatteryCapacityGranularity1
;
142 ULONG BatteryCapacityGranularity2
;
143 BOOLEAN TripPointSet
;
144 ULONG TripPointValue
;
146 ULONGLONG InterruptTime
;
147 } CMBATT_DEVICE_EXTENSION
, *PCMBATT_DEVICE_EXTENSION
;
152 PDEVICE_OBJECT DeviceObject
,
159 PDEVICE_OBJECT DeviceObject
,
166 PDRIVER_OBJECT DriverObject
,
167 PDEVICE_OBJECT DeviceObject
173 PDEVICE_OBJECT DeviceObject
,
180 PCMBATT_DEVICE_EXTENSION DeviceExtension
,
181 PACPI_BST_DATA BstData
187 PDEVICE_OBJECT DeviceObject
,
194 PDEVICE_OBJECT DeviceObject
,
201 PCMBATT_DEVICE_EXTENSION DeviceExtension
,
202 PACPI_BIF_DATA BifData
208 PCMBATT_DEVICE_EXTENSION DeviceExtension
,
215 IN PCMBATT_DEVICE_EXTENSION DeviceExtension
,
221 CmBattWmiDeRegistration(
222 PCMBATT_DEVICE_EXTENSION DeviceExtension
227 CmBattWmiRegistration(
228 PCMBATT_DEVICE_EXTENSION DeviceExtension
234 PDEVICE_OBJECT DeviceObject
,
240 CmBattQueryInformation(
241 IN PCMBATT_DEVICE_EXTENSION FdoExtension
,
243 IN BATTERY_QUERY_INFORMATION_LEVEL InfoLevel
,
244 IN OPTIONAL LONG AtRate
,
246 IN ULONG BufferLength
,
247 OUT PULONG ReturnedLength
253 IN PCMBATT_DEVICE_EXTENSION DeviceExtension
,
255 IN PBATTERY_STATUS BatteryStatus
260 CmBattSetStatusNotify(
261 IN PCMBATT_DEVICE_EXTENSION DeviceExtension
,
263 IN PBATTERY_NOTIFY BatteryNotify
268 CmBattDisableStatusNotify(
269 IN PCMBATT_DEVICE_EXTENSION DeviceExtension
275 IN PCMBATT_DEVICE_EXTENSION DeviceExtension
,
279 extern PDEVICE_OBJECT AcAdapterPdo
;
280 extern ULONG CmBattDebug
;