mirror of
https://github.com/reactos/reactos.git
synced 2025-02-28 19:32:59 +00:00
[COMPBATT] Prepare the base foundation for the header file
- Introduce some new constructs - Annotate the function prototypes with SAL2 - Re-structure & remove some useless fields in COMPBATT_DEVICE_EXTENSION and COMPBATT_BATTERY_DATA
This commit is contained in:
parent
3ff9c476a0
commit
04cd478035
1 changed files with 127 additions and 48 deletions
|
@ -1,20 +1,81 @@
|
|||
/*
|
||||
* PROJECT: ReactOS Composite Battery Driver
|
||||
* LICENSE: BSD - See COPYING.ARM in the top level directory
|
||||
* FILE: boot/drivers/bus/acpi/compbatt/compbatt.h
|
||||
* PURPOSE: Main Header File
|
||||
* PROGRAMMERS: ReactOS Portable Systems Group
|
||||
* PROJECT: ReactOS Composite Battery Driver
|
||||
* LICENSE: BSD - See COPYING.ARM in the top level directory
|
||||
* PURPOSE: Composite battery main header file
|
||||
* COPYRIGHT: Copyright 2010 ReactOS Portable Systems Group
|
||||
* Copyright 2024 George Bișoc <george.bisoc@reactos.org>
|
||||
*/
|
||||
|
||||
/* INCLUDES *******************************************************************/
|
||||
|
||||
#ifndef _COMPBATT_PCH_
|
||||
#define _COMPBATT_PCH_
|
||||
|
||||
#include <wdm.h>
|
||||
#include <batclass.h>
|
||||
|
||||
/* DEFINES ********************************************************************/
|
||||
|
||||
//
|
||||
// I/O remove lock allocate tag
|
||||
//
|
||||
#define COMPBATT_TAG 'aBoC'
|
||||
|
||||
//
|
||||
// Composite battery flags
|
||||
//
|
||||
#define COMPBATT_BATTERY_INFORMATION_PRESENT 0x04
|
||||
#define COMPBATT_STATUS_NOTIFY_SET 0x10
|
||||
#define COMPBATT_TAG_ASSIGNED 0x80
|
||||
|
||||
//
|
||||
// IRP complete worker mode states
|
||||
//
|
||||
#define COMPBATT_QUERY_TAG 1
|
||||
#define COMPBATT_READ_STATUS 2
|
||||
|
||||
//
|
||||
// Low/High capacity wait constants
|
||||
//
|
||||
#define COMPBATT_WAIT_MIN_LOW_CAPACITY 0
|
||||
#define COMPBATT_WAIT_MAX_HIGH_CAPACITY 0x7FFFFFFF
|
||||
|
||||
//
|
||||
// One hour in seconds, used to calculate the total rate of each battery for time estimation
|
||||
//
|
||||
#define COMPBATT_ATRATE_HOUR_IN_SECS 3600
|
||||
|
||||
//
|
||||
// Time constant of which the battery status data is considered fresh (50000000 * 100ns == 5s)
|
||||
//
|
||||
#define COMPBATT_FRESH_STATUS_TIME 50000000
|
||||
|
||||
//
|
||||
// Macro that calculates the delta of a battery's capacity
|
||||
//
|
||||
#define COMPUTE_BATT_CAP_DELTA(LowDiff, Batt, TotalRate) \
|
||||
((ULONG)(((LONGLONG)LowDiff * (Batt)->BatteryStatus.Rate) / TotalRate))
|
||||
|
||||
//
|
||||
// Macro that calculates the "At Rate" time drain of the battery
|
||||
//
|
||||
#define COMPUTE_ATRATE_DRAIN(Batt, Time) \
|
||||
((LONG)((Batt)->BatteryStatus.Capacity) * COMPBATT_ATRATE_HOUR_IN_SECS / Time)
|
||||
|
||||
//
|
||||
// Composite battery debug levels
|
||||
//
|
||||
#define COMPBATT_DEBUG_INFO 0x1
|
||||
#define COMPBATT_DEBUG_TRACE 0x2
|
||||
#define COMPBATT_DEBUG_WARN 0x4
|
||||
#define COMPBATT_DEBUG_ERR 0x10
|
||||
#define COMPBATT_DEBUG_ALL_LEVELS (COMPBATT_DEBUG_INFO | COMPBATT_DEBUG_TRACE | COMPBATT_DEBUG_WARN | COMPBATT_DEBUG_ERR)
|
||||
|
||||
/* STRUCTURES *****************************************************************/
|
||||
|
||||
//
|
||||
// Individual ACPI battery data
|
||||
//
|
||||
typedef struct _COMPBATT_BATTERY_DATA
|
||||
{
|
||||
LIST_ENTRY BatteryLink;
|
||||
|
@ -22,13 +83,14 @@ typedef struct _COMPBATT_BATTERY_DATA
|
|||
PDEVICE_OBJECT DeviceObject;
|
||||
PIRP Irp;
|
||||
WORK_QUEUE_ITEM WorkItem;
|
||||
BOOLEAN WaitFlag;
|
||||
UCHAR Mode;
|
||||
BATTERY_WAIT_STATUS WaitStatus;
|
||||
union
|
||||
{
|
||||
BATTERY_WAIT_STATUS WorkerWaitStatus;
|
||||
BATTERY_STATUS WorkerStatus;
|
||||
};
|
||||
ULONG WorkerTag;
|
||||
} WorkerBuffer;
|
||||
ULONG Tag;
|
||||
ULONG Flags;
|
||||
BATTERY_INFORMATION BatteryInformation;
|
||||
|
@ -37,6 +99,9 @@ typedef struct _COMPBATT_BATTERY_DATA
|
|||
UNICODE_STRING BatteryName;
|
||||
} COMPBATT_BATTERY_DATA, *PCOMPBATT_BATTERY_DATA;
|
||||
|
||||
//
|
||||
// Composite battery device extension data
|
||||
//
|
||||
typedef struct _COMPBATT_DEVICE_EXTENSION
|
||||
{
|
||||
PVOID ClassData;
|
||||
|
@ -47,110 +112,124 @@ typedef struct _COMPBATT_DEVICE_EXTENSION
|
|||
ULONG Flags;
|
||||
BATTERY_INFORMATION BatteryInformation;
|
||||
BATTERY_STATUS BatteryStatus;
|
||||
BATTERY_WAIT_STATUS WaitNotifyStatus;
|
||||
ULONGLONG InterruptTime;
|
||||
POWER_STATE PowerState;
|
||||
ULONG LowCapacity;
|
||||
ULONG HighCapacity;
|
||||
PDEVICE_OBJECT AttachedDevice;
|
||||
PDEVICE_OBJECT DeviceObject;
|
||||
PVOID NotificationEntry;
|
||||
} COMPBATT_DEVICE_EXTENSION, *PCOMPBATT_DEVICE_EXTENSION;
|
||||
|
||||
/* PROTOTYPES *****************************************************************/
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CompBattAddDevice(
|
||||
IN PDRIVER_OBJECT DriverObject,
|
||||
IN PDEVICE_OBJECT PdoDeviceObject
|
||||
_In_ PDRIVER_OBJECT DriverObject,
|
||||
_In_ PDEVICE_OBJECT PdoDeviceObject
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CompBattPowerDispatch(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp
|
||||
_In_ PDEVICE_OBJECT DeviceObject,
|
||||
_In_ PIRP Irp
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CompBattPnpDispatch(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp
|
||||
_In_ PDEVICE_OBJECT DeviceObject,
|
||||
_In_ PIRP Irp
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CompBattQueryInformation(
|
||||
IN PCOMPBATT_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
|
||||
_In_ PCOMPBATT_DEVICE_EXTENSION FdoExtension,
|
||||
_In_ ULONG Tag,
|
||||
_In_ BATTERY_QUERY_INFORMATION_LEVEL InfoLevel,
|
||||
_In_opt_ LONG AtRate,
|
||||
_In_ PVOID Buffer,
|
||||
_In_ ULONG BufferLength,
|
||||
_Out_ PULONG ReturnedLength
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CompBattQueryStatus(
|
||||
IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension,
|
||||
IN ULONG Tag,
|
||||
IN PBATTERY_STATUS BatteryStatus
|
||||
_In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension,
|
||||
_In_ ULONG Tag,
|
||||
_Out_ PBATTERY_STATUS BatteryStatus
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CompBattGetEstimatedTime(
|
||||
_Out_ PULONG Time,
|
||||
_In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CompBattSetStatusNotify(
|
||||
IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension,
|
||||
IN ULONG BatteryTag,
|
||||
IN PBATTERY_NOTIFY BatteryNotify
|
||||
_In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension,
|
||||
_In_ ULONG BatteryTag,
|
||||
_In_ PBATTERY_NOTIFY BatteryNotify
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CompBattDisableStatusNotify(
|
||||
IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension
|
||||
_In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CompBattQueryTag(
|
||||
IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension,
|
||||
OUT PULONG Tag
|
||||
_In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension,
|
||||
_Out_ PULONG Tag
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CompBattMonitorIrpComplete(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp,
|
||||
IN PKEVENT Event
|
||||
_In_ PDEVICE_OBJECT DeviceObject,
|
||||
_In_ PIRP Irp,
|
||||
_In_ PVOID Context
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
VOID
|
||||
NTAPI
|
||||
CompBattMonitorIrpCompleteWorker(
|
||||
IN PCOMPBATT_BATTERY_DATA BatteryData
|
||||
_In_ PCOMPBATT_BATTERY_DATA BatteryData
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CompBattGetDeviceObjectPointer(
|
||||
IN PUNICODE_STRING DeviceName,
|
||||
IN ACCESS_MASK DesiredAccess,
|
||||
OUT PFILE_OBJECT *FileObject,
|
||||
OUT PDEVICE_OBJECT *DeviceObject
|
||||
_In_ PUNICODE_STRING DeviceName,
|
||||
_In_ ACCESS_MASK DesiredAccess,
|
||||
_Out_ PFILE_OBJECT *FileObject,
|
||||
_Out_ PDEVICE_OBJECT *DeviceObject
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
BatteryIoctl(
|
||||
IN ULONG IoControlCode,
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PVOID InputBuffer,
|
||||
IN ULONG InputBufferLength,
|
||||
IN PVOID OutputBuffer,
|
||||
IN ULONG OutputBufferLength,
|
||||
IN BOOLEAN InternalDeviceIoControl
|
||||
_In_ ULONG IoControlCode,
|
||||
_In_ PDEVICE_OBJECT DeviceObject,
|
||||
_In_ PVOID InputBuffer,
|
||||
_In_ ULONG InputBufferLength,
|
||||
_Out_ PVOID OutputBuffer,
|
||||
_Inout_ ULONG OutputBufferLength,
|
||||
_In_ BOOLEAN InternalDeviceIoControl
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CompBattRemoveBattery(
|
||||
_In_ PUNICODE_STRING BatteryName,
|
||||
_In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension
|
||||
);
|
||||
|
||||
extern ULONG CompBattDebug;
|
||||
|
|
Loading…
Reference in a new issue