// Copyright (c) 2008 DMTF.  All Rights Reserved.
   [Version ( "2.19.1" ), 
    UMLPackagePath ( "CIM::Core::PowerMgmt" ), 
    Description ( 
       "A class derived from Service that describes power management "
       "functionality, hosted on a System. Whether this service might "
       "be used to affect the power state of a particular element is "
       "defined by the CIM_ServiceAvailable ToElement association." )]
class CIM_PowerManagementService : CIM_Service {


      [Deprecated { 
          "CIM_PowerManagementService.RequestPowerStateChange" }, 
       Description ( 
          "The CIM_PowerManagementService.RequestPowerStateChange "
          "method should be used instead of SetPowerState method, "
          "which is deprecated. 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 with 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 be 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\' can 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);

      [Description ( 
          "RequestPowerStateChange defines the desired power state "
          "of the managed element, and when the element should be "
          "put into that state. The RequestPowerStateChange method "
          "has five input parameters and a result code. \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 AssociatedPowerManagementService 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"
          "- Job is a reference to the job if started. \n"
          "- TimeOutPeriod indicates the maximum amount of time a "
          "client is expects the transition to take. \n"
          "See CIM_PowerStateCapabilities for descriptions of "
          "PowerState parameter enumerations." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096", 
          "4097", "4098", "4099", "4100..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", 
          "Unknown or Unspecified Error", 
          "Cannot complete within Timeout Period", "Failed", 
          "Invalid Parameter", "In Use", "DMTF Reserved", 
          "Method Parameters Checked - Job Started", 
          "Invalid State Transition", 
          "Use of Timeout Parameter Not Supported", "Busy", 
          "Method Reserved", "Vendor Specific" }]
   uint32 RequestPowerStateChange(
         [IN, Description ( "The power state for ManagedElement." ), 
          ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", 
             "10", "11", "12", "13", "14", "15", "16" }, 
          Values { "Power On", "Sleep - Light", "Sleep - Deep", 
             "Power Cycle (Off Soft)", "Power Off - Hard", 
             "Hibernate", "Power Off - Soft", 
             "Power Cycle (Off Hard)", "Master Bus Reset", 
             "Diagnostic Interrupt (NMI)", 
             "Power Off - Soft Graceful", 
             "Power Off - Hard Graceful", 
             "Master Bus Reset Graceful", 
             "Power Cycle (Off - Soft Graceful)", 
             "Power Cycle (Off - Hard Graceful)" }]
      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, 
         [IN ( false ), OUT, Description ( 
             "Reference to the job (can be null if the task is completed)."
              )]
      CIM_ConcreteJob REF Job, 
         [IN, Description ( 
             "A timeout period that specifies the maximum amount "
             "of time that the client expects the transition to "
             "the new state to take. The interval format must be "
             "used to specify the TimeoutPeriod. A value of 0 or "
             "a null parameter indicates that the client has no "
             "time requirements for the transition. \n"
             "If this property does not contain 0 or null and "
             "the implementation does not support this "
             "parameter, a return code of \'Use Of Timeout "
             "Parameter Not Supported\' must be returned." )]
      datetime TimeoutPeriod);

};
