https://git.reactos.org/?p=reactos.git;a=commitdiff;h=30ac80f36b927dfa35007268ad72ce9a46201fda

commit 30ac80f36b927dfa35007268ad72ce9a46201fda
Author:     Hervé Poussineau <hpous...@reactos.org>
AuthorDate: Wed Feb 14 22:25:44 2024 +0100
Commit:     Hervé Poussineau <hpous...@reactos.org>
CommitDate: Mon Aug 12 11:56:18 2024 +0200

    [CMBATT] Implement CmBattVerifyStaticInfo
---
 drivers/bus/acpi/cmbatt/cmbatt.c | 34 ++++++++++++++++++++++++++++++++--
 1 file changed, 32 insertions(+), 2 deletions(-)

diff --git a/drivers/bus/acpi/cmbatt/cmbatt.c b/drivers/bus/acpi/cmbatt/cmbatt.c
index f0e7b04a39e..09d9c81d837 100644
--- a/drivers/bus/acpi/cmbatt/cmbatt.c
+++ b/drivers/bus/acpi/cmbatt/cmbatt.c
@@ -278,8 +278,38 @@ NTAPI
 CmBattVerifyStaticInfo(PCMBATT_DEVICE_EXTENSION DeviceExtension,
                        ULONG BatteryTag)
 {
-    UNIMPLEMENTED;
-    return STATUS_NOT_IMPLEMENTED;
+    ACPI_BIF_DATA BifData;
+    PBATTERY_INFORMATION Info = &DeviceExtension->BatteryInformation;
+    NTSTATUS Status;
+
+    Status = CmBattGetBifData(DeviceExtension, &BifData);
+    if (NT_SUCCESS(Status))
+    {
+        RtlZeroMemory(Info, sizeof(*Info));
+        Info->Capabilities = BATTERY_SYSTEM_BATTERY;
+        Info->Technology = BifData.BatteryTechnology;
+        RtlCopyMemory(Info->Chemistry, BifData.BatteryType, 4);
+        // FIXME: take from _BIX method: Info->CycleCount
+        DeviceExtension->BifData = BifData;
+
+        if (BifData.PowerUnit == 1)
+        {
+            DPRINT1("FIXME: need to convert mAh into mWh\n");
+            Info->DesignedCapacity = BATTERY_UNKNOWN_CAPACITY;
+            Info->FullChargedCapacity = BATTERY_UNKNOWN_CAPACITY;
+            Info->DefaultAlert1 = BATTERY_UNKNOWN_CAPACITY;
+            Info->DefaultAlert2 = BATTERY_UNKNOWN_CAPACITY;
+        }
+        else
+        {
+            Info->DesignedCapacity = BifData.DesignCapacity;
+            Info->FullChargedCapacity = BifData.LastFullCapacity;
+            Info->DefaultAlert1 = BifData.DesignCapacityLow;
+            Info->DefaultAlert2 = BifData.DesignCapacityWarning;
+        }
+    }
+
+    return Status;
 }
 
 NTSTATUS

Reply via email to