Author: sir_richard Date: Sat Mar 13 22:06:22 2010 New Revision: 46188
URL: http://svn.reactos.org/svn/reactos?rev=46188&view=rev Log: [CMBATT]: ACPI-compliant. WMI-managed Control Method Battery Driver. Step 1: Define the interface and ACPI/PnP structures. The rest of the code is in my WC but needs ACPI Eval IOCTL support in ReactOS before it'll work.
Added: trunk/reactos/drivers/bus/acpi/cmbatt/ trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.c (with props) trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.h (with props) trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.rbuild (with props) trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.rc (with props) trunk/reactos/drivers/bus/acpi/cmbatt/cmbpnp.c (with props) trunk/reactos/drivers/bus/acpi/cmbatt/cmbwmi.c (with props) trunk/reactos/drivers/bus/acpi/cmbatt/cmexec.c (with props) Modified: trunk/reactos/drivers/bus/acpi/acpi.rbuild
Modified: trunk/reactos/drivers/bus/acpi/acpi.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/bus/acpi/acpi.rbuil... ============================================================================== --- trunk/reactos/drivers/bus/acpi/acpi.rbuild [iso-8859-1] (original) +++ trunk/reactos/drivers/bus/acpi/acpi.rbuild [iso-8859-1] Sat Mar 13 22:06:22 2010 @@ -3,6 +3,9 @@ <group xmlns:xi="http://www.w3.org/2001/XInclude"> <directory name="acpica"> <xi:include href="acpica/acpica.rbuild" /> +</directory> +<directory name="cmbatt"> + <xi:include href="cmbatt/cmbatt.rbuild" /> </directory> </group>
Added: trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/bus/acpi/cmbatt/cmb... ============================================================================== --- trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.c (added) +++ trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.c [iso-8859-1] Sat Mar 13 22:06:22 2010 @@ -1,0 +1,149 @@ +/* + * PROJECT: ReactOS ACPI-Compliant Control Method Battery + * LICENSE: BSD - See COPYING.ARM in the top level directory + * FILE: boot/drivers/bus/acpi/cmbatt/cmbatt.c + * PURPOSE: Main Initialization Code and IRP Handling + * PROGRAMMERS: ReactOS Portable Systems Group + */ + +/* INCLUDES *******************************************************************/ + +#include "cmbatt.h" + +/* GLOBALS ********************************************************************/ + +ULONG CmBattDebug; + +/* FUNCTIONS ******************************************************************/ + +VOID +NTAPI +CmBattPowerCallBack(PCMBATT_DEVICE_EXTENSION DeviceExtension, + PVOID Argument1, + PVOID Argument2) +{ + UNIMPLEMENTED; +} + +VOID +NTAPI +CmBattWakeDpc(PKDPC Dpc, + PCMBATT_DEVICE_EXTENSION FdoExtension, + PVOID SystemArgument1, + PVOID SystemArgument2) +{ + UNIMPLEMENTED; +} + +VOID +NTAPI +CmBattNotifyHandler(PCMBATT_DEVICE_EXTENSION DeviceExtension, + ULONG NotifyValue) +{ + UNIMPLEMENTED; +} + +VOID +NTAPI +CmBattUnload(PDEVICE_OBJECT DeviceObject) +{ + UNIMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattVerifyStaticInfo(ULONG StaData, + ULONG BatteryTag) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattOpenClose(PDEVICE_OBJECT DeviceObject, + PIRP Irp) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattIoctl(PDEVICE_OBJECT DeviceObject, + PIRP Irp) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattQueryTag(PCMBATT_DEVICE_EXTENSION DeviceExtension, + PULONG BatteryTag) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattDisableStatusNotify(PCMBATT_DEVICE_EXTENSION DeviceExtension) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattSetStatusNotify(PCMBATT_DEVICE_EXTENSION DeviceExtension, + ULONG BatteryTag, + PBATTERY_NOTIFY BatteryNotify) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattGetBatteryStatus(PCMBATT_DEVICE_EXTENSION DeviceExtension, + ULONG BatteryTag) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattQueryInformation(PCMBATT_DEVICE_EXTENSION DeviceExtension, + ULONG BatteryTag, + BATTERY_QUERY_INFORMATION_LEVEL Level, + OPTIONAL LONG AtRate, + PVOID Buffer, + ULONG BufferLength, + PULONG ReturnedLength) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattQueryStatus(PCMBATT_DEVICE_EXTENSION DeviceExtension, + ULONG BatteryTag, + PBATTERY_STATUS BatteryStatus) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +DriverEntry(PDRIVER_OBJECT DriverObject, + PUNICODE_STRING RegistryPath) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +/* EOF */
Propchange: trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/bus/acpi/cmbatt/cmb... ============================================================================== --- trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.h (added) +++ trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.h [iso-8859-1] Sat Mar 13 22:06:22 2010 @@ -1,0 +1,105 @@ +/* + * PROJECT: ReactOS ACPI-Compliant Control Method Battery + * LICENSE: BSD - See COPYING.ARM in the top level directory + * FILE: boot/drivers/bus/acpi/cmbatt/cmbatt.h + * PURPOSE: Main Header File + * PROGRAMMERS: ReactOS Portable Systems Group + */ + +#include <ntddk.h> +#include <initguid.h> +#include <batclass.h> +#include <acpiioct.h> +#include <wmilib.h> +#include <debug.h> + +#define CMBATT_GENERIC_STATUS 0x01 +#define CMBATT_GENERIC_INFO 0x02 +#define CMBATT_GENERIC_WARNING 0x04 +#define CMBATT_ACPI_WARNING 0x08 +#define CMBATT_POWER_INFO 0x10 +#define CMBATT_PNP_INFO 0x20 +#define CMBATT_ACPI_ENTRY_EXIT 0x40 +#define CMBATT_PNP_ENTRY_EXIT 0x200 +#define CMBATT_ACPI_ASSERT 0x400 + +typedef enum _CMBATT_EXTENSION_TYPE +{ + CmBattAcAdapter, + CmBattBattery +} CMBATT_EXTENSION_TYPE; + +typedef struct _ACPI_BST_DATA +{ + ULONG State; + ULONG PresentRate; + ULONG RemainingCapacity; + ULONG PresentVoltage; +} ACPI_BST_DATA, *PACPI_BST_DATA; + +typedef struct _ACPI_BIF_DATA +{ + ULONG PowerUnit; + ULONG DesignCapacity; + ULONG LastFullCapacity; + ULONG BatteryTechnology; + ULONG DesignVoltage; + ULONG DesignCapacityWarning; + ULONG DesignCapacityLow; + ULONG BatteryCapacityGranularity1; + ULONG BatteryCapacityGranularity2; + CHAR ModelNumber[256]; + CHAR SerialNubmer[256]; + CHAR BatteryType[256]; + CHAR OemInfo[256]; +} ACPI_BIF_DATA, *PACPI_BIF_DATA; + +typedef struct _CMBATT_DEVICE_EXTENSION +{ + CMBATT_EXTENSION_TYPE FdoType; + PDEVICE_OBJECT DeviceObject; + PDEVICE_OBJECT FdoDeviceObject; + PDEVICE_OBJECT PdoDeviceObject; + PDEVICE_OBJECT AttachedDevice; + FAST_MUTEX FastMutex; + ULONG HandleCount; + PIRP PowerIrp; + POWER_STATE PowerState; + WMILIB_CONTEXT WmiLibInfo; + ULONG WaitWakeEnable; + ULONG WmiCount; + KEVENT WmiEvent; + ULONG DeviceId; + PUNICODE_STRING DeviceName; + ACPI_INTERFACE_STANDARD2 AcpiInterface; + BOOLEAN DelayAr; + BOOLEAN DelayedArFlag; + PVOID ClassData; + BOOLEAN Started; + BOOLEAN NotifySent; + ULONG ArLock; + ULONG TagData; + ULONG Tag; + ULONG ModelNumberLength; + PCHAR ModelNumber; + ULONG SerialNumberLength; + PCHAR SerialNumber; + ULONG OemInfoLength; + PCHAR OemInfo; + ACPI_BST_DATA BstData; + ACPI_BIF_DATA BifData; + ULONG Id; + ULONG State; + ULONG RemainingCapacity; + ULONG PresentVoltage; + ULONG Rate; + BATTERY_INFORMATION StaticBatteryInformation; + ULONG BatteryCapacityGranularity1; + ULONG BatteryCapacityGranularity2; + BOOLEAN TripPointSet; + ULONG TripPointValue; + ULONG TripPointOld; + ULONGLONG InterruptTime; +} CMBATT_DEVICE_EXTENSION, *PCMBATT_DEVICE_EXTENSION; + +/* EOF */
Propchange: trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.h ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/bus/acpi/cmbatt/cmb... ============================================================================== --- trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.rbuild (added) +++ trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.rbuild [iso-8859-1] Sat Mar 13 22:06:22 2010 @@ -1,0 +1,13 @@ +<?xml version="1.0"?> +<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd"> +<module name="cmbattx" type="kernelmodedriver" installbase="system32/drivers" installname="cmbattx.sys"> + <library>ntoskrnl</library> + <library>hal</library> + <library>battc</library> + <include base="cmbatt">.</include> + <file>cmbatt.c</file> + <file>cmexec.c</file> + <file>cmbpnp.c</file> + <file>cmbwmi.c</file> + <file>cmbatt.rc</file> +</module>
Propchange: trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.rbuild ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/bus/acpi/cmbatt/cmb... ============================================================================== --- trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.rc (added) +++ trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.rc [iso-8859-1] Sat Mar 13 22:06:22 2010 @@ -1,0 +1,5 @@ +#define REACTOS_VERSION_DLL +#define REACTOS_STR_FILE_DESCRIPTION "Control Method Battery Miniclass Driver\0" +#define REACTOS_STR_INTERNAL_NAME "cmbatt\0" +#define REACTOS_STR_ORIGINAL_FILENAME "cmbatt.sys\0" +#include <reactos/version.rc>
Propchange: trunk/reactos/drivers/bus/acpi/cmbatt/cmbatt.rc ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/drivers/bus/acpi/cmbatt/cmbpnp.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/bus/acpi/cmbatt/cmb... ============================================================================== --- trunk/reactos/drivers/bus/acpi/cmbatt/cmbpnp.c (added) +++ trunk/reactos/drivers/bus/acpi/cmbatt/cmbpnp.c [iso-8859-1] Sat Mar 13 22:06:22 2010 @@ -1,0 +1,104 @@ +/* + * PROJECT: ReactOS ACPI-Compliant Control Method Battery + * LICENSE: BSD - See COPYING.ARM in the top level directory + * FILE: boot/drivers/bus/acpi/cmbatt/cmbpnp.c + * PURPOSE: Plug-and-Play IOCTL/IRP Handling + * PROGRAMMERS: ReactOS Portable Systems Group + */ + +/* INCLUDES *******************************************************************/ + +#include "cmbatt.h" + +/* FUNCTIONS ******************************************************************/ + +NTSTATUS +NTAPI +CmBattIoCompletion(PDEVICE_OBJECT DeviceObject, + PIRP Irp, + PKEVENT Event) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattGetAcpiInterfaces(PDEVICE_OBJECT DeviceObject, + PACPI_INTERFACE_STANDARD2 *AcpiInterface) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +VOID +NTAPI +CmBattDestroyFdo(PDEVICE_OBJECT DeviceObject) +{ + UNIMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattRemoveDevice(PDEVICE_OBJECT DeviceObject, + PIRP Irp) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattPowerDispatch(PDEVICE_OBJECT DeviceObject, + PIRP Irp) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattCreateFdo(PDRIVER_OBJECT DriverObject, + PDEVICE_OBJECT DeviceObject, + ULONG DeviceExtensionSize, + PDEVICE_OBJECT *NewDeviceObject) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattPnpDispatch(PDEVICE_OBJECT DeviceObject, + PIRP Irp) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattAddBattery(PDRIVER_OBJECT DriverObject, + PDEVICE_OBJECT DeviceObject) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattAddAcAdapter(PDRIVER_OBJECT DriverObject, + PDEVICE_OBJECT DeviceObject) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS NTAPI CmBattAddDevice(PDRIVER_OBJECT DriverObject, + PDEVICE_OBJECT DeviceObject) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +/* EOF */
Propchange: trunk/reactos/drivers/bus/acpi/cmbatt/cmbpnp.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/drivers/bus/acpi/cmbatt/cmbwmi.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/bus/acpi/cmbatt/cmb... ============================================================================== --- trunk/reactos/drivers/bus/acpi/cmbatt/cmbwmi.c (added) +++ trunk/reactos/drivers/bus/acpi/cmbatt/cmbwmi.c [iso-8859-1] Sat Mar 13 22:06:22 2010 @@ -1,0 +1,94 @@ +/* + * PROJECT: ReactOS ACPI-Compliant Control Method Battery + * LICENSE: BSD - See COPYING.ARM in the top level directory + * FILE: boot/drivers/bus/acpi/cmbatt/cmbwmi.c + * PURPOSE: WMI Interface + * PROGRAMMERS: ReactOS Portable Systems Group + */ + +/* INCLUDES *******************************************************************/ + +#include "cmbatt.h" + +/* FUNCTIONS ******************************************************************/ + +NTSTATUS +NTAPI +CmBattQueryWmiRegInfo(PDEVICE_OBJECT DeviceObject, + PULONG RegFlags, + PUNICODE_STRING InstanceName, + PUNICODE_STRING *RegistryPath, + PUNICODE_STRING MofResourceName, + PDEVICE_OBJECT *Pdo) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattQueryWmiDataBlock(PDEVICE_OBJECT DeviceObject, + PIRP Irp, + ULONG GuidIndex, + ULONG InstanceIndex, + ULONG InstanceCount, + PULONG InstanceLengthArray, + ULONG BufferAvail, + PUCHAR Buffer) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattSetWmiDataBlock(PDEVICE_OBJECT DeviceObject, + PIRP Irp, + ULONG GuidIndex, + ULONG InstanceIndex, + ULONG BufferSize, + PUCHAR Buffer) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattSetWmiDataItem(PDEVICE_OBJECT DeviceObject, + PIRP Irp, + ULONG GuidIndex, + ULONG InstanceIndex, + ULONG DataItemId, + ULONG BufferSize, + PUCHAR Buffer) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattWmiDeRegistration(PCMBATT_DEVICE_EXTENSION DeviceExtension) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattWmiRegistration(PCMBATT_DEVICE_EXTENSION DeviceExtension) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattSystemControl(PDEVICE_OBJECT DeviceObject, PIRP Irp) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +/* EOF */
Propchange: trunk/reactos/drivers/bus/acpi/cmbatt/cmbwmi.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/drivers/bus/acpi/cmbatt/cmexec.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/bus/acpi/cmbatt/cme... ============================================================================== --- trunk/reactos/drivers/bus/acpi/cmbatt/cmexec.c (added) +++ trunk/reactos/drivers/bus/acpi/cmbatt/cmexec.c [iso-8859-1] Sat Mar 13 22:06:22 2010 @@ -1,0 +1,100 @@ +/* + * PROJECT: ReactOS ACPI-Compliant Control Method Battery + * LICENSE: BSD - See COPYING.ARM in the top level directory + * FILE: boot/drivers/bus/acpi/cmbatt/cmexec.c + * PURPOSE: ACPI Method Execution/Evaluation Glue + * PROGRAMMERS: ReactOS Portable Systems Group + */ + +/* INCLUDES *******************************************************************/ + +#include "cmbatt.h" + +/* FUNCTIONS ******************************************************************/ + +NTSTATUS +NTAPI +GetDwordElement(PACPI_METHOD_ARGUMENT Argument, + PULONG Value) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +GetStringElement(PACPI_METHOD_ARGUMENT Argument, + PCHAR Value) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattGetPsrData(PDEVICE_OBJECT DeviceObject, + PULONG PsrData) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattGetBifData(PCMBATT_DEVICE_EXTENSION DeviceExtension, + PACPI_BIF_DATA BifData) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattGetBstData(PCMBATT_DEVICE_EXTENSION DeviceExtension, + PACPI_BST_DATA BstData) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattGetStaData(PDEVICE_OBJECT DeviceObject, + PULONG StaData) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattGetUniqueId(PDEVICE_OBJECT DeviceObject, + PULONG UniqueId) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattSetTripPpoint(PCMBATT_DEVICE_EXTENSION DeviceExtension, + ULONG AlarmValue) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +CmBattSendDownStreamIrp(PDEVICE_OBJECT DeviceObject, + ULONG IoControlCode, + PVOID InputBuffer, + ULONG InputBufferLength, + PACPI_EVAL_OUTPUT_BUFFER OutputBuffer, + ULONG OutputBufferLength) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +/* EOF */
Propchange: trunk/reactos/drivers/bus/acpi/cmbatt/cmexec.c ------------------------------------------------------------------------------ svn:eol-style = native