+/* kIOPMBootSessionUUIDKey
+ * Key refers to a CFStringRef that will uniquely identify
+ * a boot cycle.
+ * The key becomes valid at boot time and remains valid
+ * till shutdown. The property value will remain same across
+ * sleep/wake/hibernate cycle.
+ */
+#define kIOPMBootSessionUUIDKey "BootSessionUUID"
+
+/* kIOPMDeepSleepEnabledKey
+ * Indicates the Deep Sleep enable state.
+ * It has a boolean value.
+ * true == Deep Sleep is enabled
+ * false == Deep Sleep is disabled
+ * not present == Deep Sleep is not supported on this hardware
+ */
+#define kIOPMDeepSleepEnabledKey "Standby Enabled"
+
+/* kIOPMDeepSleepDelayKey
+ * Key refers to a CFNumberRef that represents the delay in seconds before
+ * entering Deep Sleep state. The property is not present if Deep Sleep is
+ * unsupported.
+ */
+#define kIOPMDeepSleepDelayKey "Standby Delay"
+
+/* kIOPMDestroyFVKeyOnStandbyKey
+ * Specifies if FileVault key can be stored when going to standby mode
+ * It has a boolean value,
+ * true == Destroy FV key when going to standby mode
+ * false == Retain FV key when going to standby mode
+ * not present == Retain FV key when going to standby mode
+ */
+#define kIOPMDestroyFVKeyOnStandbyKey "DestroyFVKeyOnStandby"
+
+/*******************************************************************************
+ *
+ * Properties that can control power management behavior
+ *
+ ******************************************************************************/
+
+/* kIOPMResetPowerStateOnWakeKey
+ * If an IOService publishes this key with the value of kOSBooleanTrue,
+ * then PM will disregard the influence from changePowerStateToPriv() or
+ * any activity tickles that occurred before system sleep when resolving
+ * the initial device power state on wake. Influences from power children
+ * and changePowerStateTo() are not eliminated. At the earliest opportunity
+ * upon system wake, PM will query the driver for a new power state to be
+ * installed as the initial changePowerStateToPriv() influence, by calling
+ * initialPowerStateForDomainState() with both kIOPMRootDomainState and
+ * kIOPMPowerOn flags set. The default implementation will always return
+ * the lowest power state. Drivers can override this default behavior to
+ * immediately raise the power state when there are work blocked on the
+ * power change, and cannot afford to wait until the next activity tickle.
+ * This property should be statically added to a driver's plist or set at
+ * runtime before calling PMinit().
+ */
+#define kIOPMResetPowerStateOnWakeKey "IOPMResetPowerStateOnWake"
+
+/*******************************************************************************
+ *
+ * Driver PM Assertions
+ *
+ ******************************************************************************/
+
+/* Driver Assertion bitfield description
+ * Driver PM assertions are defined by these bits.
+ */
+enum {
+ /*! kIOPMDriverAssertionCPUBit
+ * When set, PM kernel will prefer to leave the CPU and core hardware
+ * running in "Dark Wake" state, instead of sleeping.
+ */
+ kIOPMDriverAssertionCPUBit = 0x01,
+
+ /*! kIOPMDriverAssertionUSBExternalDeviceBit
+ * When set, driver is informing PM that an external USB device is attached.
+ */
+ kIOPMDriverAssertionUSBExternalDeviceBit = 0x04,
+
+ /*! kIOPMDriverAssertionBluetoothHIDDevicePairedBit
+ * When set, driver is informing PM that a Bluetooth HID device is paired.
+ */
+ kIOPMDriverAssertionBluetoothHIDDevicePairedBit = 0x08,
+
+ /*! kIOPMDriverAssertionExternalMediaMountedBit
+ * When set, driver is informing PM that an external media is mounted.
+ */
+ kIOPMDriverAssertionExternalMediaMountedBit = 0x10,
+
+ /*! kIOPMDriverAssertionReservedBit5
+ * Reserved for Thunderbolt.
+ */
+ kIOPMDriverAssertionReservedBit5 = 0x20,
+
+ /*! kIOPMDriverAssertionPreventDisplaySleepBit
+ * When set, the display should remain powered on while the system's awake.
+ */
+ kIOPMDriverAssertionPreventDisplaySleepBit = 0x40,
+
+ /*! kIOPMDriverAssertionReservedBit7
+ * Reserved for storage family.
+ */
+ kIOPMDriverAssertionReservedBit7 = 0x80,
+
+ /*! kIOPMDriverAssertionMagicPacketWakeEnabledBit
+ * When set, driver is informing PM that magic packet wake is enabled.
+ */
+ kIOPMDriverAssertionMagicPacketWakeEnabledBit = 0x100,
+
+ /*! kIOPMDriverAssertionNetworkKeepAliveActiveBit
+ * When set, driver is informing PM that it is holding the network
+ * interface up to do TCPKeepAlive
+ */
+ kIOPMDriverAssertionNetworkKeepAliveActiveBit = 0x200
+};
+
+ /* kIOPMAssertionsDriverKey
+ * This kIOPMrootDomain key refers to a CFNumberRef property, containing
+ * a bitfield describing the aggregate PM assertion levels.
+ * Example: A value of 0 indicates that no driver has asserted anything.
+ * Or, a value of <link>kIOPMDriverAssertionCPUBit</link>
+ * indicates that a driver (or drivers) have asserted a need for CPU and video.
+ */
+#define kIOPMAssertionsDriverKey "DriverPMAssertions"
+
+ /* kIOPMAssertionsDriverKey
+ * This kIOPMrootDomain key refers to a CFNumberRef property, containing
+ * a bitfield describing the aggregate PM assertion levels.
+ * Example: A value of 0 indicates that no driver has asserted anything.
+ * Or, a value of <link>kIOPMDriverAssertionCPUBit</link>
+ * indicates that a driver (or drivers) have asserted a need for CPU and video.
+ */
+#define kIOPMAssertionsDriverDetailedKey "DriverPMAssertionsDetailed"
+
+/*******************************************************************************
+ *
+ * Kernel Driver assertion detailed dictionary keys
+ *
+ * Keys decode the Array & dictionary data structure under IOPMrootDomain property
+ * kIOPMAssertionsDriverKey.
+ *
+ */
+#define kIOPMDriverAssertionIDKey "ID"
+#define kIOPMDriverAssertionCreatedTimeKey "CreatedTime"
+#define kIOPMDriverAssertionModifiedTimeKey "ModifiedTime"
+#define kIOPMDriverAssertionOwnerStringKey "Owner"
+#define kIOPMDriverAssertionOwnerServiceKey "ServicePtr"
+#define kIOPMDriverAssertionRegistryEntryIDKey "RegistryEntryID"
+#define kIOPMDriverAssertionLevelKey "Level"
+#define kIOPMDriverAssertionAssertedKey "Assertions"
+