// ===================================================================
// Title:  Core Power Management
// $State: Exp $
// $Date: 2004/08/15 05:55:36 $
// $Source: /cvsroot/wbemservices/open/mof/dmtf/2.9/Core_PowerMgmt.mof,v $
// $Revision: 1.1 $
// ===================================================================
//#pragma inLine ("Includes/copyright.inc")
// Copyright 1998-2004 Distributed Management Task Force, Inc. (DMTF).
// All rights reserved.
// DMTF is a not-for-profit association of industry members dedicated
// to promoting enterprise and systems management and interoperability.
// DMTF specifications and documents may be reproduced for uses
// consistent with this purpose by members and non-members,
// provided that correct attribution is given.
// As DMTF specifications may be revised from time to time,
// the particular version and release date should always be noted.
// 
// Implementation of certain elements of this standard or proposed
// standard may be subject to third party patent rights, including
// provisional patent rights (herein "patent rights"). DMTF makes
// no representations to users of the standard as to the existence
// of such rights, and is not responsible to recognize, disclose, or
// identify any or all such third party patent right, owners or
// claimants, nor for any incomplete or inaccurate identification or
// disclosure of such rights, owners or claimants. DMTF shall have no
// liability to any party, in any manner or circumstance, under any
// legal theory whatsoever, for failure to recognize, disclose, or
// identify any such third party patent rights, or for such party's
// reliance on the standard or incorporation thereof in its product,
// protocols or testing procedures. DMTF shall have no liability to
// any party implementing such standard, whether such implementation
// is foreseeable or not, nor to any patent owner or claimant, and shall
// have no liability or responsibility for costs or losses incurred if
// a standard is withdrawn or modified after publication, and shall be
// indemnified and held harmless by any party implementing the
// standard from any and all claims of infringement by a patent owner
// for such implementations.
// 
// For information about patents held by third-parties which have
// notified the DMTF that, in their opinion, such patent may relate to
// or impact implementations of DMTF standards, visit
// http://www.dmtf.org/about/policies/disclosures.php.
//#pragma inLine
// ===================================================================
// Description: The Core Model defines basic management concepts.
//              This file defines the concepts for power
//              management.
// 
//              The object classes below are listed in an order that
//              avoids forward references. Required objects, defined
//              by other working groups, are omitted.
// ==================================================================
// Change Log for v2.9 Preliminary
// CR1314 - Convert power state names to use more standard terminology
// CR1315 - Add PowerStatesSupported to PowerManagementCapabilities
// 
// Change Log for v2.8 Final
// CR1210 - Removal of experimental qualifiers for core.
// CR1223 - SysDev Omnibus CR - Minor MOF corrections.
// 
// Change Log for v2.8 Preliminary
// CR932  - Add power mode status to OperationalStatus.
//           Move the specific power mode states from availability
//          to a property between the PowerMgmt service and its ME.
//          Remove the overlapping properties from Logical Device.
// CR950 - Add ArrayType to CIM_ManagedSystemElement properties
// CR1002 -  Move the power on statistics to their own statistic class
// CR1019 - CIM Versioning for 2.8 Preliminary
// 
// Change Log for v2.7 Final
// CR968 - Remove the Experimental qualifier
// 
// Change Log for v2.7
// CR720 - Introduce PowerManagementCapabilities &
//         PowerManagementService
// ===================================================================

#pragma locale ("en_US")

// ===================================================================
// PowerManagementCapabilites
// ===================================================================
   [Version ( "2.8.1000" ), Description (
       "A class derived from Capabilities that describes the power "
       "management aspects of an element (typically a system or "
       "device). The element's power management capabilities are "
       "decoupled from a PowerManagementService, since a single "
       "service could apply to multiple elements, each with specific "
       "capabilities.")]
class CIM_PowerManagementCapabilities : CIM_Capabilities {

      [Description (
          "An enumeration indicating the specific power-related "
          "capabilities of a managed element. Since this is an array, "
          "multiple values may be specified. The current values in the "
          "enumeration are: \n"
          "0 = Unknown \n"
          "1 = Other \n"
          "2 = Power Saving Modes Entered Automatically, describing "
          "that a managed element can change its power state based on "
          "usage or other criteria \n"
          "3 = Power State Settable, indicating that the SetPowerState "
          "method is supported \n"
          "4 = Power Cycling Supported, indicating that the "
          "SetPowerState method can be invoked with the PowerState "
          "input variable set to 'Power Cycle' \n"
          "5 = Timed Power On Supported, indicating that the "
          "SetPowerState method can be invoked with the PowerState "
          "input variable set to 'Power Cycle' and the Time parameter "
          "set to a specific date and time, or interval, for power-on."), 
       ValueMap { "0", "1", "2", "3", "4", "5" }, 
       Values { "Unknown", "Other",
          "Power Saving Modes Entered Automatically",
          "Power State Settable", "Power Cycling Supported",
          "Timed Power On Supported" }, 
       MappingStrings { "MIF.DMTF|System Power Controls|001.2" }, 
       ModelCorrespondence { "CIM_PowerManagementCapabilities." 
          "OtherPowerCapabilitiesDescriptions",
          "CIM_PowerManagementService.SetPowerState" }]
   uint16 PowerCapabilities[];

      [Description (
          "An array of strings describing an element's additional "
          "power management capabilities, used when the "
          "PowerCapabilities array includes the value 1, \"Other\"."), 
       ModelCorrespondence { 
          "CIM_PowerManagementCapabilities.PowerCapabilities" }]
   string OtherPowerCapabilitiesDescriptions[];

      [Experimental, Description (
          "An enumeration indicating the power states supported by a "
          "managed element. Since this is an array, multiple values "
          "may be specified. The current values in the enumeration "
          "are: \n"
          "0 = On, corresponding to ACPI state G0 or S0 or D0. \n"
          "1 = Sleep - Light, corresponding to ACPI state G1 or S1/S2 "
          "or D1. \n"
          "2 = Sleep - Deep, corresponding to ACPI state G1 or S3 or "
          "D2. \n"
          "3 = Off - Soft, corresponding to ACPI state G2 or S5 or D3. "
          "\n4 = Power Cycle (Off - Soft), corresponding to ACPI state "
          "G2 or S5 or D3 but where the managed element is set to "
          "return to power state \"On\" at a pre-determined time. \n"
          "5 = Hibernate (Off - Soft), corresponding to ACPI state S4 "
          "where the managed element's state is preserved and will be "
          "recovered upon powering up. \n"
          "6 = Off - Hard, corresponding to ACPI state G3 or S5 or D3. "
          "\n.. = DMTF Reserved. \n"
          "0x7FFF..0xFFFF = Vendor Specific."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..",
          "0x7FFF..0xFFFF" }, 
       Values { "On", "Sleep - Light", "Sleep - Deep", "Off - Soft",
          "Power Cycle (Off - Soft)", "Hibernate (Off - Soft)",
          "Off - Hard", "DMTF Reserved", "Vendor Specific" }, 
       MappingStrings { "IEEE P1621 | 3.2" }, 
       ModelCorrespondence { "CIM_PowerManagementService.SetPowerState" 
          }]
   uint16 PowerStatesSupported[];
};

// ===================================================================
// PowerManagementService
// ===================================================================
   [Version ( "2.7.0" ), Description (
       "A class derived from Service that describes power management "
       "functionality, hosted on a System. The fact that this service "
       "may be used to affect the power state of a particular element "
       "is defined by the CIM_ServiceAvailable ToElement association.")]
class CIM_PowerManagementService : CIM_Service {
      [Description (
          "SetPowerState defines the desired power state of the "
          "managed element, and when the element should be put into "
          "that state. The SetPowerState method has three input "
          "parameters, no output parameters, and a result. \n"
          "- PowerState indicates the desired power state. \n"
          "- ManagedElement indicates the element whose state is set. "
          "This element SHOULD be associated to the service using the "
          "ServiceAvailableToElement relationship. \n"
          "- Time indicates when the power state should be set, either "
          "as a regular date-time value or as an interval value (where "
          "the interval begins when the method invocation is "
          "received). \n"
          "Note that when the PowerState parameter is equal to 5, "
          "\"Power Cycle (Off -Soft)\", the Time parameter indicates "
          "when the managed element should powered on again. Power off "
          "is immediate. \n"
          "SetPowerState should return 0 if successful, 1 if the "
          "specified State and Time request is not supported for the "
          "element, and some other value if any other error occurred. "
          "In a subclass, the set of possible return codes could be "
          "specified, using a ValueMap qualifier on the method. The "
          "strings to which the ValueMap contents are 'translated' may "
          "also be specified in the subclass as a Values array "
          "qualifier.")]
   uint32 SetPowerState( 
         [IN, Description (
             "The power state for ManagedElement."), 
          ValueMap { "1", "2", "3", "4", "5", "6", "7", "8" }, 
          Values { "On", "Sleep - Light", "Sleep -Deep",
             "Vendor Specific", "Power Cycle (Off - Soft)",
             "Off - Hard", "Hibernate (Off - Soft)", "Off - Soft" }, 
          MappingStrings { "IEEE P1621 | 3.2" }]
      uint16 PowerState, 
         [IN, Description (
             "ManagedElement indicates the element whose state is set.")]
      CIM_ManagedElement REF ManagedElement, 
         [IN, Description (
             "Time indicates when the power state should be set, "
             "either as a regular date-time value or as an interval "
             "value (where the interval begins when the method "
             "invocation is received.")]
      datetime Time); 
};

// ==================================================================
// AssociatedPowerManagementService
// ==================================================================
   [Association, Experimental, Version ( "2.8.1000" ), Description (
       "The assoication between a managed system element, and it's "
       "power management service.")]
class CIM_AssociatedPowerManagementService : CIM_ServiceAvailableToElement {

      [Override ( "ServiceProvided" ), Max ( 1 ), Description (
          "The Service that is available.")]
   CIM_PowerManagementService REF ServiceProvided;

      [Description (
          "The current power state of the associated Managed System "
          "Element."), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7",
          "8","..","0x7FFF..0xFFFF" }, 
       Values { "Other", "On", "Sleep - Light", "Sleep -Deep",
          "Power Cycle (Off - Soft)", "Off - Hard",
          "Hibernate (Off - Soft)", "Off - Soft", "DMTF Reserved",
          "Vendor Specific" }, 
       MappingStrings { "MIF.DMTF|System Power Controls|001.2" }, 
       ModelCorrespondence { 
          "CIM_PowerManagementCapabilities.PowerCapabilities" }]
   uint16 PowerState;

      [Description (
          "A string describing an element's additional power "
          "management state, used when the PowerState is set to the "
          "value 1, \"Other\"."), 
       ModelCorrespondence { 
          "CIM_AssociatedPowerManagementService.PowerState" }]
   string OtherPowerState;

      [Description (
          "The time when the element will be powered on again, used "
          "when the PowerState is set to the value 5, \"Power Cycle "
          "(Soft - Off)\"."), 
       ModelCorrespondence { 
          "CIM_AssociatedPowerManagementService.PowerState" }]
   datetime PowerOnTime;
};

// ==================================================================
// PoweredStatisticalData
// ==================================================================
   [Experimental, Version ( "2.8.1000" ), Description (
       "Statistical information related to the powered on time of a "
       "Managed Element.")]
class CIM_PoweredStatisticalData : CIM_StatisticalData {

      [Description (
          "The amount of consecutive time that the managed element has "
          "been powered on.")]
   datetime PowerOnHours;

      [Description (
          "The total amount of time that the managed element has been "
          "powered on.")]
   datetime TotalPowerOnHours;
};


// ===================================================================
// end of file
// ===================================================================
