+/* kIOPMSleepWakeUUIDKey
+ * Key refers to a CFStringRef that will uniquely identify
+ * a sleep/wake cycle for logging & tracking.
+ * The key becomes valid at the beginning of a sleep cycle - before we
+ * initiate any sleep/wake notifications.
+ * The key becomes invalid at the completion of a system wakeup. The
+ * property will not be present in the IOPMrootDomain's registry entry
+ * when it is invalid.
+ *
+ * See IOPMrootDomain notification kIOPMMessageSleepWakeUUIDChange
+ */
+ #define kIOPMSleepWakeUUIDKey "SleepWakeUUID"
+
+/* 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"
+
+/*******************************************************************************
+ *
+ * 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,
+
+ /*! kIOPMDriverAssertionReservedBit8
+ * Reserved for networking family.
+ */
+ kIOPMDriverAssertionReservedBit8 = 0x100
+};
+
+ /* 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 fro 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 fro 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 kIOPMDriverAssertionLevelKey "Level"
+#define kIOPMDriverAssertionAssertedKey "Assertions"
+