Ticket #6951: acpi_battery_r1.patch

File acpi_battery_r1.patch, 1.2 KB (added by kallisti5, 13 years ago)

patch hrev1

  • src/add-ons/kernel/drivers/power/acpi_battery/acpi_battery.cpp

     
    44 *
    55 * Authors:
    66 *      Clemens Zeidler, haiku@clemens-zeidler.de
     7 *      Alexander von Gluck, kallisti5@unixzen.com
    78 */
    89
    910#include "acpi_battery.h"
     
    5960
    6061    pointer = object->data.package.objects;
    6162    batteryStatus->state = (pointer->object_type == ACPI_TYPE_INTEGER)
    62         ? pointer->data.integer : -1;
     63        ? pointer->data.integer : BATTERY_CRITICAL_STATE;
    6364
    6465    pointer++;
    6566    batteryStatus->current_rate = (pointer->object_type == ACPI_TYPE_INTEGER)
     
    7374    batteryStatus->voltage = (pointer->object_type == ACPI_TYPE_INTEGER)
    7475        ? pointer->data.integer : -1;
    7576
     77    /* If key values are all < 0, it is likely that the battery slot is empty
     78       or the battery is damaged.  Set BATTERY_CRITICAL_STATE */
     79    if (batteryStatus->voltage < 0
     80        && batteryStatus->current_rate < 0
     81        && batteryStatus->capacity < 0) {
     82        batteryStatus->state = BATTERY_CRITICAL_STATE;
     83    }
     84   
     85
    7686exit:
    7787    free(buffer.pointer);
    7888    return status;