sync with trunk r46493
[reactos.git] / drivers / bus / acpi / cmbatt / cmbatt.h
index f3583f8..8f952d2 100644 (file)
 #include <batclass.h>
 #include <acpiioct.h>
 #include <wmilib.h>
+#include <wdmguid.h>
 #include <debug.h>
 
+#define IOCTL_BATTERY_QUERY_UNIQUE_ID  \
+    CTL_CODE(FILE_DEVICE_BATTERY, 0x101, METHOD_BUFFERED, FILE_READ_ACCESS) // 0x294404 
+     
+#define IOCTL_BATTERY_QUERY_STA  \
+    CTL_CODE(FILE_DEVICE_BATTERY, 0x102, METHOD_BUFFERED, FILE_READ_ACCESS) // 0x294408
+
+#define IOCTL_BATTERY_QUERY_PSR  \
+    CTL_CODE(FILE_DEVICE_BATTERY, 0x103, METHOD_BUFFERED, FILE_READ_ACCESS) // 0x29440C     
+
+#define IOCTL_BATTERY_SET_TRIP_POINT \
+    CTL_CODE(FILE_DEVICE_BATTERY, 0x104, METHOD_BUFFERED, FILE_READ_ACCESS) // 0x294410
+
+#define IOCTL_BATTERY_QUERY_BIF \
+    CTL_CODE(FILE_DEVICE_BATTERY, 0x105, METHOD_BUFFERED, FILE_READ_ACCESS) // 0x294414
+
+#define IOCTL_BATTERY_QUERY_BST \
+    CTL_CODE(FILE_DEVICE_BATTERY, 0x106, METHOD_BUFFERED, FILE_READ_ACCESS) // 0x294418
+     
 #define CMBATT_GENERIC_STATUS   0x01
 #define CMBATT_GENERIC_INFO     0x02
 #define CMBATT_GENERIC_WARNING  0x04
@@ -29,6 +48,25 @@ typedef enum _CMBATT_EXTENSION_TYPE
     CmBattBattery
 } CMBATT_EXTENSION_TYPE;
 
+#define ACPI_BUS_CHECK              0x00
+#define ACPI_DEVICE_CHECK           0x01
+
+#define ACPI_STA_PRESENT            0x01
+#define ACPI_STA_ENABLED            0x02
+#define ACPI_STA_SHOW_UI            0x04
+#define ACPI_STA_FUNCTIONAL         0x08
+#define ACPI_STA_BATTERY_PRESENT    0x10
+
+#define ACPI_BATT_NOTIFY_STATUS     0x80
+#define ACPI_BATT_NOTIFY_INFO       0x81
+
+#define ACPI_BATT_STAT_DISCHARG                0x0001
+#define ACPI_BATT_STAT_CHARGING                0x0002
+#define ACPI_BATT_STAT_CRITICAL                0x0004
+
+#define CM_MAX_VALUE                0x7FFFFFFF
+#define CM_UNKNOWN_VALUE            0xFFFFFFFF
+
 typedef struct _ACPI_BST_DATA
 {
     ULONG State;
@@ -37,6 +75,9 @@ typedef struct _ACPI_BST_DATA
     ULONG PresentVoltage;
 } ACPI_BST_DATA, *PACPI_BST_DATA;
 
+#define ACPI_BATT_POWER_UNIT_WATTS  0x0
+#define ACPI_BATT_POWER_UNIT_AMPS   0x1
+
 typedef struct _ACPI_BIF_DATA
 {
     ULONG PowerUnit;
@@ -54,6 +95,10 @@ typedef struct _ACPI_BIF_DATA
     CHAR OemInfo[256];
 } ACPI_BIF_DATA, *PACPI_BIF_DATA;
 
+#define CMBATT_AR_NOTIFY            0x01
+#define CMBATT_AR_INSERT            0x02
+#define CMBATT_AR_REMOVE            0x04
+
 typedef struct _CMBATT_DEVICE_EXTENSION
 {
     CMBATT_EXTENSION_TYPE FdoType;
@@ -66,18 +111,17 @@ typedef struct _CMBATT_DEVICE_EXTENSION
     PIRP PowerIrp;
     POWER_STATE PowerState;
     WMILIB_CONTEXT WmiLibInfo;
-    ULONG WaitWakeEnable;
-    ULONG WmiCount;
-    KEVENT WmiEvent;
+    BOOLEAN WaitWakeEnable;
+    IO_REMOVE_LOCK RemoveLock;
     ULONG DeviceId;
     PUNICODE_STRING DeviceName;
-    ACPI_INTERFACE_STANDARD2 AcpiInterface;
-    BOOLEAN DelayAr;
-    BOOLEAN DelayedArFlag;
+    ACPI_INTERFACE_STANDARD AcpiInterface;
+    BOOLEAN DelayNotification;
+    BOOLEAN ArFlag;
     PVOID ClassData;
     BOOLEAN Started;
     BOOLEAN NotifySent;
-    ULONG ArLock;
+    LONG ArLockValue;
     ULONG TagData;
     ULONG Tag;
     ULONG ModelNumberLength;
@@ -93,7 +137,7 @@ typedef struct _CMBATT_DEVICE_EXTENSION
     ULONG RemainingCapacity;
     ULONG PresentVoltage;
     ULONG Rate;
-    BATTERY_INFORMATION StaticBatteryInformation;
+    BATTERY_INFORMATION BatteryInformation;
     ULONG BatteryCapacityGranularity1;
     ULONG BatteryCapacityGranularity2;
     BOOLEAN TripPointSet;
@@ -129,5 +173,110 @@ CmBattSystemControl(
     PDEVICE_OBJECT DeviceObject,
     PIRP Irp
 );
+
+NTSTATUS
+NTAPI
+CmBattGetBstData(
+    PCMBATT_DEVICE_EXTENSION DeviceExtension,
+    PACPI_BST_DATA BstData
+);
+
+NTSTATUS
+NTAPI
+CmBattGetPsrData(
+    PDEVICE_OBJECT DeviceObject,
+    PULONG PsrData
+);
+
+NTSTATUS
+NTAPI
+CmBattGetStaData(
+    PDEVICE_OBJECT DeviceObject,
+    PULONG StaData
+);
+
+NTSTATUS
+NTAPI
+CmBattGetBifData(
+    PCMBATT_DEVICE_EXTENSION DeviceExtension,
+    PACPI_BIF_DATA BifData
+);
+
+NTSTATUS
+NTAPI
+CmBattSetTripPpoint(
+    PCMBATT_DEVICE_EXTENSION DeviceExtension,
+    ULONG AlarmValue
+);
+
+VOID
+NTAPI
+CmBattNotifyHandler(
+    IN PCMBATT_DEVICE_EXTENSION DeviceExtension,
+    IN ULONG NotifyValue
+);
+
+NTSTATUS
+NTAPI
+CmBattWmiDeRegistration(
+    PCMBATT_DEVICE_EXTENSION DeviceExtension
+);
+
+NTSTATUS
+NTAPI
+CmBattWmiRegistration(
+    PCMBATT_DEVICE_EXTENSION DeviceExtension
+);
+
+NTSTATUS
+NTAPI
+CmBattGetUniqueId(
+    PDEVICE_OBJECT DeviceObject,
+    PULONG UniqueId
+);
+
+NTSTATUS
+NTAPI
+CmBattQueryInformation(
+    IN PCMBATT_DEVICE_EXTENSION FdoExtension,
+    IN ULONG Tag,
+    IN BATTERY_QUERY_INFORMATION_LEVEL InfoLevel,
+    IN OPTIONAL LONG AtRate,
+    IN PVOID Buffer,
+    IN ULONG BufferLength,
+    OUT PULONG ReturnedLength
+);
+                       
+NTSTATUS
+NTAPI
+CmBattQueryStatus(
+    IN PCMBATT_DEVICE_EXTENSION DeviceExtension,
+    IN ULONG Tag,
+    IN PBATTERY_STATUS BatteryStatus
+);
+
+NTSTATUS
+NTAPI
+CmBattSetStatusNotify(
+    IN PCMBATT_DEVICE_EXTENSION DeviceExtension,
+    IN ULONG BatteryTag,
+    IN PBATTERY_NOTIFY BatteryNotify
+);
+
+NTSTATUS
+NTAPI
+CmBattDisableStatusNotify(
+    IN PCMBATT_DEVICE_EXTENSION DeviceExtension
+);
+
+NTSTATUS
+NTAPI
+CmBattQueryTag(
+    IN PCMBATT_DEVICE_EXTENSION DeviceExtension,
+    OUT PULONG Tag
+);
+
+extern PDEVICE_OBJECT AcAdapterPdo;
+extern ULONG CmBattDebug;
+
 /* EOF */