AppleSmartBattery.h [plain text]
#ifndef __AppleSmartBattery__
#define __AppleSmartBattery__
#include <IOKit/IOService.h>
#include <IOKit/pwr_mgt/IOPMPowerSource.h>
#include <IOKit/smbus/IOSMBusController.h>
#include "AppleSmartBatteryCommands.h"
#include "AppleSmartBatteryManager.h"
class AppleSmartBatteryManager;
class AppleSmartBattery : public IOPMPowerSource {
OSDeclareDefaultStructors(AppleSmartBattery)
protected:
AppleSmartBatteryManager *fProvider;
IOWorkLoop *fWorkLoop;
IOTimerEventSource *fPollTimer;
bool fCancelPolling;
bool fPollingNow;
IOSMBusTransaction fTransaction;
int fMachinePath;
void setMaxErr(int error);
int maxErr(void);
void setDeviceName(OSSymbol *sym);
OSSymbol *deviceName(void);
void setFullyCharged(bool);
bool fullyCharged(void);
void setAverageTimeToEmpty(int seconds);
int averageTimeToEmpty(void);
void setAverageTimeToFull(int seconds);
int averageTimeToFull(void);
void setManufactureDate(int date);
int manufactureDate(void);
void oneTimeBatterySetup(void);
public:
static AppleSmartBattery *smartBattery(void);
virtual bool init(void);
virtual bool start(IOService *provider);
bool pollBatteryState(int path = 0);
IOReturn setPowerState(unsigned long which, IOService *whom);
void handleBatteryInserted(void);
void handleBatteryRemoved(void);
private:
void clearBatteryState(bool do_update);
void timedOut(void);
void rebuildLegacyIOBatteryInfo(void);
bool transactionCompletion(void *ref, IOSMBusTransaction *transaction);
IOReturn readWordAsync(uint8_t address, uint8_t cmd);
IOReturn readBlockAsync(uint8_t address, uint8_t cmd);
};
#endif