+/* kIOPMMessageInternalBatteryFullyDischarged
+ * The battery has drained completely to its "Fully Discharged" state.
+ */
+#define kIOPMMessageInternalBatteryFullyDischarged \
+ iokit_family_msg(sub_iokit_powermanagement, 0x120)
+
+/* kIOPMMessageSystemPowerEventOccurred
+ * Some major system thermal property has changed, and interested clients may
+ * modify their behavior.
+ */
+#define kIOPMMessageSystemPowerEventOccurred \
+ iokit_family_msg(sub_iokit_powermanagement, 0x130)
+
+
+/*******************************************************************************
+ *
+ * Power commands issued to root domain
+ * Use with IOPMrootDomain::receivePowerNotification()
+ *
+ * These commands are issued from system drivers only:
+ * ApplePMU, AppleSMU, IOGraphics, AppleACPIFamily
+ *
+ ******************************************************************************/
+enum {
+ kIOPMSleepNow = (1<<0), // put machine to sleep now
+ kIOPMAllowSleep = (1<<1), // allow idle sleep
+ kIOPMPreventSleep = (1<<2), // do not allow idle sleep
+ kIOPMPowerButton = (1<<3), // power button was pressed
+ kIOPMClamshellClosed = (1<<4), // clamshell was closed
+ kIOPMPowerEmergency = (1<<5), // battery dangerously low
+ kIOPMDisableClamshell = (1<<6), // do not sleep on clamshell closure
+ kIOPMEnableClamshell = (1<<7), // sleep on clamshell closure
+ kIOPMProcessorSpeedChange = (1<<8), // change the processor speed
+ kIOPMOverTemp = (1<<9), // system dangerously hot
+ kIOPMClamshellOpened = (1<<10) // clamshell was opened
+};
+
+
+/*******************************************************************************
+ *
+ * Power Management Return Codes
+ *
+ ******************************************************************************/
+enum {
+ kIOPMNoErr = 0,
+ // Returned by powerStateWillChange and powerStateDidChange:
+ // Immediate acknowledgement of power state change
+ kIOPMAckImplied = 0,
+ // Acknowledgement of power state change will come later
+ kIOPMWillAckLater = 1,
+
+ // Returned by requestDomainState:
+ // Unrecognized specification parameter
+ kIOPMBadSpecification = 4,
+ // No power state matches search specification
+ kIOPMNoSuchState = 5,
+
+ // Device cannot change its power for some reason
+ kIOPMCannotRaisePower = 6,
+
+ // Returned by changeStateTo:
+ // Requested state doesn't exist
+ kIOPMParameterError = 7,
+ // Device not yet fully hooked into power management
+ kIOPMNotYetInitialized = 8,
+
+ // And the old constants; deprecated
+ IOPMNoErr = kIOPMNoErr,
+ IOPMAckImplied = kIOPMAckImplied,
+ IOPMWillAckLater = kIOPMWillAckLater,
+ IOPMBadSpecification = kIOPMBadSpecification,
+ IOPMNoSuchState = kIOPMNoSuchState,
+ IOPMCannotRaisePower = kIOPMCannotRaisePower,
+ IOPMParameterError = kIOPMParameterError,
+ IOPMNotYetInitialized = kIOPMNotYetInitialized
+};
+
+
+// IOPMPowerSource class descriptive strings
+// Power Source state is published as properties to the IORegistry under these
+// keys.
+#define kIOPMPSExternalConnectedKey "ExternalConnected"
+#define kIOPMPSExternalChargeCapableKey "ExternalChargeCapable"
+#define kIOPMPSBatteryInstalledKey "BatteryInstalled"
+#define kIOPMPSIsChargingKey "IsCharging"
+#define kIOPMFullyChargedKey "FullyCharged"
+#define kIOPMPSAtWarnLevelKey "AtWarnLevel"
+#define kIOPMPSAtCriticalLevelKey "AtCriticalLevel"
+#define kIOPMPSCurrentCapacityKey "CurrentCapacity"
+#define kIOPMPSMaxCapacityKey "MaxCapacity"
+#define kIOPMPSDesignCapacityKey "DesignCapacity"
+#define kIOPMPSTimeRemainingKey "TimeRemaining"
+#define kIOPMPSAmperageKey "Amperage"
+#define kIOPMPSVoltageKey "Voltage"
+#define kIOPMPSCycleCountKey "CycleCount"
+#define kIOPMPSMaxErrKey "MaxErr"
+#define kIOPMPSAdapterInfoKey "AdapterInfo"
+#define kIOPMPSLocationKey "Location"
+#define kIOPMPSErrorConditionKey "ErrorCondition"
+#define kIOPMPSManufacturerKey "Manufacturer"
+#define kIOPMPSManufactureDateKey "ManufactureDate"
+#define kIOPMPSModelKey "Model"
+#define kIOPMPSSerialKey "Serial"
+#define kIOPMDeviceNameKey "DeviceName"
+#define kIOPMPSLegacyBatteryInfoKey "LegacyBatteryInfo"
+#define kIOPMPSBatteryHealthKey "BatteryHealth"
+#define kIOPMPSHealthConfidenceKey "HealthConfidence"
+#define kIOPMPSCapacityEstimatedKey "CapacityEstimated"
+
+// Definitions for battery location, in case of multiple batteries.
+// A location of 0 is unspecified
+// Location is undefined for single battery systems