1*6aed176cSClemens Zeidler /* 2*6aed176cSClemens Zeidler * Copyright 2009, Haiku, Inc. All Rights Reserved. 3*6aed176cSClemens Zeidler * Distributed under the terms of the MIT License. 4*6aed176cSClemens Zeidler * 5*6aed176cSClemens Zeidler * Authors: 6*6aed176cSClemens Zeidler * Clemens Zeidler, haiku@clemens-zeidler.de 7*6aed176cSClemens Zeidler */ 8*6aed176cSClemens Zeidler 9*6aed176cSClemens Zeidler #ifndef ACPI_DRIVER_INTERFACE_H 10*6aed176cSClemens Zeidler #define ACPI_DRIVER_INTERFACE_H 11*6aed176cSClemens Zeidler 12*6aed176cSClemens Zeidler #include "DriverInterface.h" 13*6aed176cSClemens Zeidler 14*6aed176cSClemens Zeidler #include <Locker.h> 15*6aed176cSClemens Zeidler #include <ObjectList.h> 16*6aed176cSClemens Zeidler 17*6aed176cSClemens Zeidler const int8 kRateBufferSize = 10; 18*6aed176cSClemens Zeidler 19*6aed176cSClemens Zeidler class RateBuffer 20*6aed176cSClemens Zeidler { 21*6aed176cSClemens Zeidler public: 22*6aed176cSClemens Zeidler RateBuffer(); 23*6aed176cSClemens Zeidler void AddRate(int32 rate); 24*6aed176cSClemens Zeidler int32 GetMeanRate(); 25*6aed176cSClemens Zeidler 26*6aed176cSClemens Zeidler private: 27*6aed176cSClemens Zeidler int32 fRateBuffer[kRateBufferSize]; 28*6aed176cSClemens Zeidler int8 fPosition; 29*6aed176cSClemens Zeidler int8 fSize; 30*6aed176cSClemens Zeidler int8 fCurrentSize; 31*6aed176cSClemens Zeidler }; 32*6aed176cSClemens Zeidler 33*6aed176cSClemens Zeidler 34*6aed176cSClemens Zeidler class Battery 35*6aed176cSClemens Zeidler { 36*6aed176cSClemens Zeidler public: 37*6aed176cSClemens Zeidler Battery(int driverHandler); 38*6aed176cSClemens Zeidler ~Battery(); 39*6aed176cSClemens Zeidler 40*6aed176cSClemens Zeidler status_t InitCheck(); 41*6aed176cSClemens Zeidler 42*6aed176cSClemens Zeidler status_t GetBatteryInfo(battery_info* info); 43*6aed176cSClemens Zeidler status_t GetExtendedBatteryInfo( 44*6aed176cSClemens Zeidler acpi_extended_battery_info* info); 45*6aed176cSClemens Zeidler 46*6aed176cSClemens Zeidler private: 47*6aed176cSClemens Zeidler void _Init(); 48*6aed176cSClemens Zeidler 49*6aed176cSClemens Zeidler 50*6aed176cSClemens Zeidler int fDriverHandler; 51*6aed176cSClemens Zeidler status_t fInitStatus; 52*6aed176cSClemens Zeidler 53*6aed176cSClemens Zeidler acpi_extended_battery_info fExtendedBatteryInfo; 54*6aed176cSClemens Zeidler 55*6aed176cSClemens Zeidler RateBuffer fRateBuffer; 56*6aed176cSClemens Zeidler }; 57*6aed176cSClemens Zeidler 58*6aed176cSClemens Zeidler 59*6aed176cSClemens Zeidler class ACPIDriverInterface : public PowerStatusDriverInterface 60*6aed176cSClemens Zeidler { 61*6aed176cSClemens Zeidler public: 62*6aed176cSClemens Zeidler virtual ~ACPIDriverInterface(); 63*6aed176cSClemens Zeidler 64*6aed176cSClemens Zeidler virtual status_t Connect(); 65*6aed176cSClemens Zeidler virtual status_t GetBatteryInfo(battery_info* info, int32 index); 66*6aed176cSClemens Zeidler virtual status_t GetExtendedBatteryInfo( 67*6aed176cSClemens Zeidler acpi_extended_battery_info* info, int32 index); 68*6aed176cSClemens Zeidler 69*6aed176cSClemens Zeidler virtual int32 GetBatteryCount(); 70*6aed176cSClemens Zeidler 71*6aed176cSClemens Zeidler protected: 72*6aed176cSClemens Zeidler virtual void _WatchPowerStatus(); 73*6aed176cSClemens Zeidler virtual status_t _FindDrivers(const char* path); 74*6aed176cSClemens Zeidler 75*6aed176cSClemens Zeidler BObjectList<Battery> fDriverList; 76*6aed176cSClemens Zeidler 77*6aed176cSClemens Zeidler BLocker fBatteryStatusLock; 78*6aed176cSClemens Zeidler }; 79*6aed176cSClemens Zeidler 80*6aed176cSClemens Zeidler #endif 81