1/* 2 * Copyright 2004-2011, Haiku, Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef POWER_MANAGMENT_H 6#define POWER_MANAGMENT_H 7 8 9#include <Drivers.h> 10 11 12// io controls 13enum { 14 // ioctl response with kMagicFreqID 15 IDENTIFY_DEVICE = B_DEVICE_OP_CODES_END + 20001, 16 17 GET_BATTERY_INFO, 18 GET_EXTENDED_BATTERY_INFO, 19 WATCH_BATTERY, 20 STOP_WATCHING_BATTERY 21}; 22 23 24// ACPI Battery: 25// magic id returned by IDENTIFY_DEVICE 26const uint32 kMagicACPIBatteryID = 17822; 27 28 29// Our known battery states 30#define BATTERY_DISCHARGING 0x01 31#define BATTERY_CHARGING 0x02 32#define BATTERY_CRITICAL_STATE 0x04 33#define BATTERY_NOT_CHARGING 0x08 34 35#define BATTERY_MAX_STRING_LENGTH 32 36 37 38typedef struct { 39 uint32 state; 40 uint32 current_rate; 41 uint32 capacity; 42 uint32 voltage; 43} acpi_battery_info; 44 45 46typedef struct { 47 uint32 power_unit; 48#define ACPI_BATTERY_UNIT_MW 0 49#define ACPI_BATTERY_UNIT_MA 1 50 uint32 design_capacity; 51 uint32 last_full_charge; 52 uint32 technology; 53 uint32 design_voltage; 54 uint32 design_capacity_warning; 55 uint32 design_capacity_low; 56 uint32 capacity_granularity_1; 57 uint32 capacity_granularity_2; 58 char model_number[BATTERY_MAX_STRING_LENGTH]; 59 char serial_number[BATTERY_MAX_STRING_LENGTH]; 60 char type[BATTERY_MAX_STRING_LENGTH]; 61 char oem_info[BATTERY_MAX_STRING_LENGTH]; 62 // ACPI 4.0 and later 63 uint16 revision; 64#define ACPI_BATTERY_REVISION_0 0 65#define ACPI_BATTERY_REVISION_1 1 66#define ACPI_BATTERY_REVISION_BIF 0xffff 67 uint32 cycles; 68 uint32 accuracy; 69 uint32 max_sampling_time; 70 uint32 min_sampling_time; 71 uint32 max_average_interval; 72 uint32 min_average_interval; 73 // ACPI 6.0 and later 74 uint32 swapping_capability; 75#define ACPI_BATTERY_SWAPPING_NO 0 76#define ACPI_BATTERY_SWAPPING_COLD 1 77#define ACPI_BATTERY_SWAPPING_HOT 2 78} acpi_extended_battery_info; 79 80 81#endif 82