-// Battery's time remaining estimate is invalid this long (seconds) after a wake
-#define kIOPMPSInvalidWakeSecondsKey "BatteryInvalidWakeSeconds"
-
-// Battery must wait this long (seconds) after being completely charged before
-// the battery is settled.
-#define kIOPMPSPostChargeWaitSecondsKey "PostChargeWaitSeconds"
-
-// Battery must wait this long (seconds) after being completely discharged
-// before the battery is settled.
-#define kIOPMPSPostDishargeWaitSecondsKey "PostDischargeWaitSeconds"
-
-
-
-// PM Settings Controller setting types
-// Settings types used primarily with:
-// IOPMrootDomain::registerPMSettingController
-// The values are identical to the similarly named keys for use in user space
-// PM settings work. Those keys are defined in IOPMLibPrivate.h.
-#define kIOPMSettingWakeOnRingKey "Wake On Modem Ring"
-#define kIOPMSettingRestartOnPowerLossKey "Automatic Restart On Power Loss"
-#define kIOPMSettingWakeOnACChangeKey "Wake On AC Change"
-#define kIOPMSettingSleepOnPowerButtonKey "Sleep On Power Button"
-#define kIOPMSettingWakeOnClamshellKey "Wake On Clamshell Open"
-#define kIOPMSettingReduceBrightnessKey "ReduceBrightness"
-#define kIOPMSettingDisplaySleepUsesDimKey "Display Sleep Uses Dim"
-#define kIOPMSettingTimeZoneOffsetKey "TimeZoneOffsetSeconds"
-
-// Setting controlling drivers can register to receive scheduled wake data
-// Either in "CF seconds" type, or structured calendar data in a formatted
-// IOPMCalendarStruct defined below.
-#define kIOPMSettingAutoWakeSecondsKey "wake"
-#define kIOPMSettingAutoWakeCalendarKey "WakeByCalendarDate"
-#define kIOPMSettingAutoPowerSecondsKey "poweron"
-#define kIOPMSettingAutoPowerCalendarKey "PowerByCalendarDate"
-
-// Debug seconds auto wake
-// Used by sleep cycling debug tools
-#define kIOPMSettingDebugWakeRelativeKey "WakeRelativeToSleep"
-#define kIOPMSettingDebugPowerRelativeKey "PowerRelativeToShutdown"
-
-struct IOPMCalendarStruct {
- UInt32 year;
- UInt8 month;
- UInt8 day;
- UInt8 hour;
- UInt8 minute;
- UInt8 second;
-};
-typedef struct IOPMCalendarStruct IOPMCalendarStruct;
+// DEFAULT public and private features for machines whose device tree
+// does NOT contain this information (pre-Core99).
+
+// For Cuda-based Desktops
+
+#define kStdDesktopPMFeatures kPMHasWakeupTimerMask |\
+ kPMHasProcessorCyclingMask |\
+ kPMHasDimmingSupportMask |\
+ kPMHasStartupTimerMask |\
+ kPMSupportsServerModeAPIMask |\
+ kPMHasUPSIntegrationMask
+
+#define kStdDesktopPrivPMFeatures kPMHasExtdBattInfoMask |\
+ kPMHasICTControlMask |\
+ kPMHasLegacyDesktopSleepMask
+
+#define kStdDesktopNumBatteries 0
+
+// For Wallstreet (PowerBook G3 Series 1998)
+
+#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
+
+// For 101 (PowerBook G3 Series 1999)
+
+#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
+
+ // returned by powerStateWillChange and powerStateDidChange:
+#define IOPMAckImplied 0 // acknowledgement of power state change is implied
+#define IOPMWillAckLater 1 // acknowledgement of power state change will come later
+
+ // returned by requestDomainState
+#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
+
+ // returned by changeStateTo
+#define IOPMParameterError 7 // requested state doesn't exist
+#define IOPMNotYetInitialized 8 // device not yet fully hooked into power management "graph"
+
+
+ // used by Root Domain UserClient