#ifndef _IOKIT_IOPM_H
#define _IOKIT_IOPM_H
#define IOPMMaxPowerStates 10
typedef unsigned long IOPMPowerFlags;
#define IOPMNotAttainable 0x0001
#define IOPMPowerOn 0x0002
#define IOPMClockNormal 0x0004
#define IOPMClockRunning 0x0008
#define IOPMWakeupEnabled 0x0010
#define IOPMAuxPowerOn 0x0020
#define IOPMDeviceUsable 0x8000
#define IOPMMaxPerformance 0x4000
#define IOPMContextRetained 0x2000
#define IOPMConfigRetained 0x1000
#define IOPMNotPowerManaged 0x0800
#define IOPMSoftSleep 0x0400
#define IOPMNextHigherState 1
#define IOPMHighestState 2
#define IOPMNextLowerState 3
#define IOPMLowestState 4
enum { kPMbroadcastAggressiveness = 1,
kPMunIdleDevice,
kPMsleepDemand,
kPMwakeSignal,
kPMallowSleep,
kPMcancelSleep
};
enum {
kClamshellClosedEventMask = (1<<0), kDockingBarEventMask = (1<<1), kACPlugEventMask = (1<<2), kFrontPanelButtonEventMask = (1<<3), kBatteryStatusEventMask = (1<<4) };
enum {
kIOPMSleepNow = (1<<0), kIOPMAllowSleep = (1<<1), kIOPMPreventSleep = (1<<2), kIOPMPowerButton = (1<<3), kIOPMClamshellClosed = (1<<4), kIOPMPowerEmergency = (1<<5), kIOPMIgnoreClamshell = (1<<6) };
enum {
kPMHasWakeupTimerMask = (1<<0), kPMHasSharedModemPortMask = (1<<1), kPMHasProcessorCyclingMask = (1<<2), kPMMustProcessorCycleMask = (1<<3), kPMHasReducedSpeedMask = (1<<4), kPMDynamicSpeedChangeMask = (1<<5), kPMHasSCSIDiskModeMask = (1<<6), kPMCanGetBatteryTimeMask = (1<<7), kPMCanWakeupOnRingMask = (1<<8), kPMHasDimmingSupportMask = (1<<9), kPMHasStartupTimerMask = (1<<10), kPMHasChargeNotificationMask = (1<<11), kPMHasDimSuspendSupportMask = (1<<12), kPMHasWakeOnNetActivityMask = (1<<13), kPMHasWakeOnLidMask = (1<<14), kPMCanPowerOffPCIBusMask = (1<<15), kPMHasDeepSleepMask = (1<<16), kPMHasSleepMask = (1<<17), kPMSupportsServerModeAPIMask = (1<<18), kPMHasUPSIntegrationMask = (1<<19) };
enum {
kPMHasExtdBattInfoMask = (1<<0), kPMHasBatteryIDMask = (1<<1), kPMCanSwitchPowerMask = (1<<2), kPMHasCelsiusCyclingMask = (1<<3), kPMHasBatteryPredictionMask = (1<<4), kPMHasPowerLevelsMask = (1<<5), kPMHasSleepCPUSpeedMask = (1<<6), kPMHasBtnIntHandlersMask = (1<<7), kPMHasSCSITermPowerMask = (1<<8), kPMHasADBButtonHandlersMask = (1<<9), kPMHasICTControlMask = (1<<10), kPMHasLegacyDesktopSleepMask = (1<<11), kPMHasDeepIdleMask = (1<<12), kPMOpenLidPreventsSleepMask = (1<<13), kPMClosedLidCausesSleepMask = (1<<14), kPMHasFanControlMask = (1<<15), kPMHasThermalControlMask = (1<<16), kPMHasVStepSpeedChangeMask = (1<<17), kPMEnvironEventsPolledMask = (1<<18) };
#define kStdDesktopPMFeatures kPMHasWakeupTimerMask |\
kPMHasProcessorCyclingMask |\
kPMHasDimmingSupportMask |\
kPMHasStartupTimerMask |\
kPMSupportsServerModeAPIMask |\
kPMHasUPSIntegrationMask
#define kStdDesktopPrivPMFeatures kPMHasExtdBattInfoMask |\
kPMHasICTControlMask |\
kPMHasLegacyDesktopSleepMask
#define kStdDesktopNumBatteries 0
#define kWallstreetPMFeatures kPMHasWakeupTimerMask |\
kPMHasProcessorCyclingMask |\
kPMHasReducedSpeedMask |\
kPMDynamicSpeedChangeMask |\
kPMHasSCSIDiskModeMask |\
kPMCanGetBatteryTimeMask |\
kPMHasDimmingSupportMask |\
kPMHasChargeNotificationMask |\
kPMHasDimSuspendSupportMask |\
kPMHasSleepMask
#define kWallstreetPrivPMFeatures kPMHasExtdBattInfoMask |\
kPMHasBatteryIDMask |\
kPMCanSwitchPowerMask |\
kPMHasADBButtonHandlersMask |\
kPMHasSCSITermPowerMask |\
kPMHasICTControlMask |\
kPMClosedLidCausesSleepMask |\
kPMEnvironEventsPolledMask
#define kStdPowerBookPMFeatures kWallstreetPMFeatures
#define kStdPowerBookPrivPMFeatures kWallstreetPrivPMFeatures
#define kStdPowerBookNumBatteries 2
#define k101PMFeatures kPMHasWakeupTimerMask |\
kPMHasProcessorCyclingMask |\
kPMHasReducedSpeedMask |\
kPMDynamicSpeedChangeMask |\
kPMHasSCSIDiskModeMask |\
kPMCanGetBatteryTimeMask |\
kPMHasDimmingSupportMask |\
kPMHasChargeNotificationMask |\
kPMHasDimSuspendSupportMask |\
kPMHasSleepMask |\
kPMHasUPSIntegrationMask
#define k101PrivPMFeatures kPMHasExtdBattInfoMask |\
kPMHasBatteryIDMask |\
kPMCanSwitchPowerMask |\
kPMHasADBButtonHandlersMask |\
kPMHasSCSITermPowerMask |\
kPMHasICTControlMask |\
kPMClosedLidCausesSleepMask |\
kPMEnvironEventsPolledMask
#define IOPMNoErr 0 // normal return
#define IOPMAckImplied 0 // acknowledgement of power state change is implied
#define IOPMWillAckLater 1 // acknowledgement of power state change will come later
#define IOPMBadSpecification 4 // unrecognized specification parameter
#define IOPMNoSuchState 5 // no power state matches search specification
#define IOPMCannotRaisePower 6 // a device cannot change its power for some reason
#define IOPMParameterError 7 // requested state doesn't exist
#define IOPMNotYetInitialized 8 // device not yet fully hooked into power management "graph"
enum {
kPMGeneralAggressiveness = 0,
kPMMinutesToDim,
kPMMinutesToSpinDown,
kPMMinutesToSleep
};
#define kMaxType kPMMinutesToSleep
#define kIOBatteryInfoKey "IOBatteryInfo"
#define kIOBatteryCurrentChargeKey "Current"
#define kIOBatteryCapacityKey "Capacity"
#define kIOBatteryFlagsKey "Flags"
#define kIOBatteryVoltageKey "Voltage"
#define kIOBatteryAmperageKey "Amperage"
enum {
kIOBatteryInstalled = (1 << 2),
kIOBatteryCharge = (1 << 1),
kIOBatteryChargerConnect = (1 << 0)
};
#if KERNEL && __cplusplus
class IOService;
enum {
kIOPowerEmergencyLevel = 1000
};
enum {
kIOPMSubclassPolicy,
kIOPMSuperclassPolicy1
};
struct stateChangeNote{
IOPMPowerFlags stateFlags;
unsigned long stateNum;
void * powerRef;
};
typedef struct stateChangeNote stateChangeNote;
struct sleepWakeNote{
void * powerRef;
unsigned long returnValue;
};
typedef struct sleepWakeNote sleepWakeNote;
extern void IOPMRegisterDevice(const char *, IOService *);
#endif
#endif