[CMBATT]: Implement CmBattQueryInformation and CmBattQueryStatus.
[reactos.git] / reactos / drivers / bus / acpi / cmbatt / cmbatt.h
1 /*
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
7 */
8
9 #include <ntddk.h>
10 #include <initguid.h>
11 #include <batclass.h>
12 #include <acpiioct.h>
13 #include <wmilib.h>
14 #include <debug.h>
15
16 #define CMBATT_GENERIC_STATUS 0x01
17 #define CMBATT_GENERIC_INFO 0x02
18 #define CMBATT_GENERIC_WARNING 0x04
19 #define CMBATT_ACPI_WARNING 0x08
20 #define CMBATT_POWER_INFO 0x10
21 #define CMBATT_PNP_INFO 0x20
22 #define CMBATT_ACPI_ENTRY_EXIT 0x40
23 #define CMBATT_PNP_ENTRY_EXIT 0x200
24 #define CMBATT_ACPI_ASSERT 0x400
25
26 typedef enum _CMBATT_EXTENSION_TYPE
27 {
28 CmBattAcAdapter,
29 CmBattBattery
30 } CMBATT_EXTENSION_TYPE;
31
32 #define ACPI_BATT_STAT_DISCHARG 0x0001
33 #define ACPI_BATT_STAT_CHARGING 0x0002
34 #define ACPI_BATT_STAT_CRITICAL 0x0004
35 #define ACPI_BATT_STAT_NOT_PRESENT 0x0007
36 #define ACPI_BATT_STAT_MAX 0x0007
37
38 typedef struct _ACPI_BST_DATA
39 {
40 ULONG State;
41 ULONG PresentRate;
42 ULONG RemainingCapacity;
43 ULONG PresentVoltage;
44 } ACPI_BST_DATA, *PACPI_BST_DATA;
45
46 typedef struct _ACPI_BIF_DATA
47 {
48 ULONG PowerUnit;
49 ULONG DesignCapacity;
50 ULONG LastFullCapacity;
51 ULONG BatteryTechnology;
52 ULONG DesignVoltage;
53 ULONG DesignCapacityWarning;
54 ULONG DesignCapacityLow;
55 ULONG BatteryCapacityGranularity1;
56 ULONG BatteryCapacityGranularity2;
57 CHAR ModelNumber[256];
58 CHAR SerialNubmer[256];
59 CHAR BatteryType[256];
60 CHAR OemInfo[256];
61 } ACPI_BIF_DATA, *PACPI_BIF_DATA;
62
63 typedef struct _CMBATT_DEVICE_EXTENSION
64 {
65 CMBATT_EXTENSION_TYPE FdoType;
66 PDEVICE_OBJECT DeviceObject;
67 PDEVICE_OBJECT FdoDeviceObject;
68 PDEVICE_OBJECT PdoDeviceObject;
69 PDEVICE_OBJECT AttachedDevice;
70 FAST_MUTEX FastMutex;
71 ULONG HandleCount;
72 PIRP PowerIrp;
73 POWER_STATE PowerState;
74 WMILIB_CONTEXT WmiLibInfo;
75 ULONG WaitWakeEnable;
76 ULONG WmiCount;
77 KEVENT WmiEvent;
78 ULONG DeviceId;
79 PUNICODE_STRING DeviceName;
80 ACPI_INTERFACE_STANDARD2 AcpiInterface;
81 BOOLEAN DelayAr;
82 BOOLEAN DelayedArFlag;
83 PVOID ClassData;
84 BOOLEAN Started;
85 BOOLEAN NotifySent;
86 ULONG ArLock;
87 ULONG TagData;
88 ULONG Tag;
89 ULONG ModelNumberLength;
90 PCHAR ModelNumber;
91 ULONG SerialNumberLength;
92 PCHAR SerialNumber;
93 ULONG OemInfoLength;
94 PCHAR OemInfo;
95 ACPI_BST_DATA BstData;
96 ACPI_BIF_DATA BifData;
97 ULONG Id;
98 ULONG State;
99 ULONG RemainingCapacity;
100 ULONG PresentVoltage;
101 ULONG Rate;
102 BATTERY_INFORMATION BatteryInformation;
103 ULONG BatteryCapacityGranularity1;
104 ULONG BatteryCapacityGranularity2;
105 BOOLEAN TripPointSet;
106 ULONG TripPointValue;
107 ULONG TripPointOld;
108 ULONGLONG InterruptTime;
109 } CMBATT_DEVICE_EXTENSION, *PCMBATT_DEVICE_EXTENSION;
110
111 NTSTATUS
112 NTAPI
113 CmBattPowerDispatch(
114 PDEVICE_OBJECT DeviceObject,
115 PIRP Irp
116 );
117
118 NTSTATUS
119 NTAPI
120 CmBattPnpDispatch(
121 PDEVICE_OBJECT DeviceObject,
122 PIRP Irp
123 );
124
125 NTSTATUS
126 NTAPI
127 CmBattAddDevice(
128 PDRIVER_OBJECT DriverObject,
129 PDEVICE_OBJECT DeviceObject
130 );
131
132 NTSTATUS
133 NTAPI
134 CmBattSystemControl(
135 PDEVICE_OBJECT DeviceObject,
136 PIRP Irp
137 );
138
139 /* EOF */