// ===================================================================
// Title:       Device Cooling and Power 2.8
// Filename:    Device28_CoolingAndPower.mof
// Version:     2.8
// Status:      Final
// Date:        Jan 26, 2004
// ===================================================================
// Copyright 1998-2003 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.
// ===================================================================
// Description: The Device Model extends the management concepts that
//              are related to LogicalDevices. This file defines
//              the concepts and classes to manage cooling and
//              supply power to devices.
// 
//              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 2.8 Final.
// CR1223 - SysDev Omnibus CR - Minor MOF corrections.
// 
// Change Log for v2.7
// CR621 - Deprecate PackageCooling
// CR622 - Fix the DMI mapping string to include the attribute number
//         for Battery.BatteryStatus, .EstimatedRunTime, .Chemistry,
//           .DesignCapacity, .FullChargeCapacity, .DesignVoltage,
//           .SmartBatteryVersion, & .TimeToFullCharge,
//         PowerSupply.Range1InputVoltageLow, .Range1InputVoltageHigh,
//           .Range1InputFrequencyLow, .Range1InputFrequencyHigh,
//           .Range2InputVoltageLow, .Range2InputVoltageHigh,
//           .Range2InputFrequencyLow, .Range2InputFrequencyHigh,
//           .ActiveInputVoltage, .TypeOfRangeSwitching, &
//           .TotalOutputPower
// ==================================================================

#pragma locale ("en_US")


// ===================================================================
// CoolingDevice
// ===================================================================
   [Version ( "2.6.0" ), Description (
       "Capabilities and management of CoolingDevices.")]
class CIM_CoolingDevice : CIM_LogicalDevice {

      [Description (
          "ActiveCooling is a boolean indicating that the Cooling "
          "Device provides active (as opposed to passive) cooling.")]
   boolean ActiveCooling;
};


// ===================================================================
// Refrigeration
// ===================================================================
   [Version ( "2.6.0" ), Description (
       "Capabilities and management of a Refrigeration CoolingDevice.")]
class CIM_Refrigeration : CIM_CoolingDevice {
};


// ===================================================================
// HeatPipe
// ===================================================================
   [Version ( "2.6.0" ), Description (
       "Capabilities and management of a HeatPipe CoolingDevice.")]
class CIM_HeatPipe : CIM_CoolingDevice {
};


// ===================================================================
// Fan
// ===================================================================
   [Version ( "2.6.0" ), Description (
       "Capabilities and management of a Fan CoolingDevice.")]
class CIM_Fan : CIM_CoolingDevice {

      [Description (
          "Indication of whether the fan supports variable speeds.")]
   boolean VariableSpeed;

      [Description (
          "DesiredSpeed is the currently requested fan speed, defined "
          "in Revolutions per Minute, when a variable speed fan is "
          "supported (VariableSpeed boolean = TRUE). The current speed "
          "is determined via a sensor (CIM_Tachometer) that is "
          "associated with the Fan using the CIM_AssociatedSensor "
          "relationship."), 
       Units ( "Revolutions per Minute" )]
   uint64 DesiredSpeed;

      [Description (
          "Requests that the Fan speed be set to the value specified "
          "in the method's input parameter. The return value should be "
          "0 if the request was successfully executed, 1 if the "
          "request is not supported and some other value if an 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 SetSpeed ( 
         [IN, Description (
             "The desired speed for the fan.")]
      uint64 DesiredSpeed); 
};


// ===================================================================
// AssociatedCooling
// ===================================================================
   [Association, Version ( "2.6.0" ), Description (
       "Many Devices, such as processors or power supplies, require "
       "their own cooling devices. This association indicates where "
       "fans or other CoolingDevices are specific to a Device, versus "
       "providing enclosure or cabinet cooling.")]
class CIM_AssociatedCooling : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "The CoolingDevice.")]
   CIM_CoolingDevice REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The LogicalDevice being cooled.")]
   CIM_LogicalDevice REF Dependent;
};


// ===================================================================
// Battery
// ===================================================================
   [Version ( "2.7.0" ), Description (
       "Capabilities and management of the Battery LogicalDevice. This "
       "class applies to both batteries in Laptop Systems and other "
       "internal/external batteries, such as used in, or as UPSs.")]
class CIM_Battery : CIM_LogicalDevice {

      [Description (
          "Description of the Battery's charge status. Values such as "
          "\"Fully Charged\" (value=3) or \"Partially Charged\" (11) "
          "can be specified. The value, 10, is not valid in the CIM "
          "Schema since in DMI it represents that no battery is "
          "installed. In this case, this object should not be "
          "instantiated."), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
          "11" }, 
       Values { "Other", "Unknown", "Fully Charged", "Low", "Critical",
          "Charging", "Charging and High", "Charging and Low",
          "Charging and Critical", 
          // 10             
          "Undefined", "Partially Charged" }, 
       MappingStrings { "MIF.DMTF|Portable Battery|003.14" }]
   uint16 BatteryStatus;

      [Description (
          "TimeOnBattery indicates the elapsed time in seconds since "
          "the ComputerSystem, UPS, ... last switched to battery "
          "power, or the time since the System or UPS was last "
          "restarted, whichever is less. Zero shall be returned if the "
          "Battery is 'on line'."), 
       Units ( "Seconds" )]
   uint32 TimeOnBattery;

      [Description (
          "EstimatedRunTime is an estimate in minutes of the time to "
          "battery charge depletion under the present load conditions "
          "if the utility power is off, or lost and remains off, or a "
          "Laptop is disconnected from a power source."), 
       Units ( "Minutes" ), 
       MappingStrings { "MIF.DMTF|Portable Battery|003.15" }]
   uint32 EstimatedRunTime;

      [Description (
          "An estimate of the percentage of full charge remaining."), 
       Units ( "Percent" ), Gauge]
   uint16 EstimatedChargeRemaining;

      [Description (
          "An enumeration that describes the Battery's chemistry."), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8" }, 
       Values { "Other", "Unknown", "Lead Acid", "Nickel Cadmium",
          "Nickel Metal Hydride", "Lithium-ion", "Zinc air",
          "Lithium Polymer" }, 
       MappingStrings { "MIF.DMTF|Portable Battery|003.7" }]
   uint16 Chemistry;

      [Description (
          "The design capacity of the battery in mWatt-hours. If this "
          "property is not supported, enter 0."), 
       Units ( "MilliWattHours" ), 
       MappingStrings { "MIF.DMTF|Portable Battery|003.8" }]
   uint32 DesignCapacity;

      [Description (
          "The full charge capacity of the battery in mWatt-hours. "
          "Comparison of this value to the Battery DesignCapacity "
          "determines when the Battery requires replacement. A "
          "Battery's end of life is typically when the FullCharge "
          "Capacity falls below 80% of the DesignCapacity. If this "
          "property is not supported, enter 0."), 
       Units ( "MilliWattHours" ), 
       MappingStrings { "MIF.DMTF|Portable Battery|003.11" }]
   uint32 FullChargeCapacity;

      [Description (
          "The design voltage of the battery in mVolts. If this "
          "attribute is not supported, enter 0."), 
       Units ( "MilliVolts" ), 
       MappingStrings { "MIF.DMTF|Portable Battery|003.9" }]
   uint64 DesignVoltage;

      [Description (
          "The Smart Battery Data Specification version number "
          "supported by this Battery. If the Battery does not support "
          "this function, the value should be left blank."), 
       MaxLen ( 64 ), 
       MappingStrings { "MIF.DMTF|Portable Battery|003.10" }]
   string SmartBatteryVersion;

      [Description (
          "The remaining time to charge the battery fully in minutes "
          "at the current charging rate and usage."), 
       Units ( "Minutes" ), 
       MappingStrings { "MIF.DMTF|Portable Battery|003.16" }]
   uint32 TimeToFullCharge;

      [Description (
          "Indicates the Battery's expected lifetime in minutes, "
          "assuming that the Battery is fully charged. This property "
          "represents the total expected life of the Battery, not its "
          "current remaining life, which is indicated by the "
          "EstimatedRunTime property."), 
       Units ( "Minutes" )]
   uint32 ExpectedLife;

      [Description (
          "MaxRechargeTime indicates the maximum time, in minutes, to "
          "fully charge the Battery. This property represents the time "
          "to recharge a fully depleted Battery, not the current "
          "remaining charging time, which is indicated in the "
          "TimeToFullCharge property."), 
       Units ( "Minutes" )]
   uint32 MaxRechargeTime;
};


// ===================================================================
// AssociatedBattery
// ===================================================================
   [Association, Version ( "2.6.0" ), Description (
       "A LogicalDevice may use or require one or more Batteries. This "
       "relationship is described by the AssociatedBattery dependency. "
       "It is also possible to model the individual Batteries that "
       "comprise a UPS, using this association.")]
class CIM_AssociatedBattery : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "The Battery.")]
   CIM_Battery REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The LogicalDevice needing or associated with the Battery.")]
   CIM_LogicalDevice REF Dependent;
};


// ===================================================================
// PowerSupply
// ===================================================================
   [Version ( "2.7.0" ), Description (
       "Capabilities and management of the PowerSupply LogicalDevice.")]
class CIM_PowerSupply : CIM_LogicalDevice {

      [Description (
          "Boolean indicating that the PowerSupply is a switching (vs "
          "linear) supply.")]
   boolean IsSwitchingSupply;

      [Description (
          "The low voltage of Input Voltage Range 1 for this Power "
          "Supply, in millivolts. A value of 0 denotes 'unknown'."), 
       Units ( "MilliVolts" ), 
       MappingStrings { "MIF.DMTF|Power Supply|004.7" }]
   uint32 Range1InputVoltageLow;

      [Description (
          "The high voltage of Input Voltage Range 1 for this Power "
          "Supply, in millivolts. A value of 0 denotes 'unknown'."), 
       Units ( "MilliVolts" ), 
       MappingStrings { "MIF.DMTF|Power Supply|004.8" }]
   uint32 Range1InputVoltageHigh;

      [Description (
          "The frequency (in Hertz) at the low end of this Power "
          "Supply's Input Frequency Range 1. A value of zero implies "
          "DC."), 
       Units ( "Hertz" ), 
       MappingStrings { "MIF.DMTF|Power Supply|004.17" }]
   uint32 Range1InputFrequencyLow;

      [Description (
          "The frequency (in Hertz) at the high end of this Power "
          "Supply's Input Frequency Range 1. A value of zero implies "
          "DC."), 
       Units ( "Hertz" ), 
       MappingStrings { "MIF.DMTF|Power Supply|004.18" }]
   uint32 Range1InputFrequencyHigh;

      [Description (
          "The low voltage of Input Voltage Range 2 for this Power "
          "Supply, in millivolts. A value of 0 denotes 'unknown'."), 
       Units ( "MilliVolts" ), 
       MappingStrings { "MIF.DMTF|Power Supply|004.11" }]
   uint32 Range2InputVoltageLow;

      [Description (
          "The high voltage of Input Voltage Range 2 for this Power "
          "Supply, in millivolts. A value of 0 denotes 'unknown'."), 
       Units ( "MilliVolts" ), 
       MappingStrings { "MIF.DMTF|Power Supply|004.12" }]
   uint32 Range2InputVoltageHigh;

      [Description (
          "The frequency (in Hertz) at the low end of this Power "
          "Supply's Input Frequency Range 2. A value of zero implies "
          "DC."), 
       Units ( "Hertz" ), 
       MappingStrings { "MIF.DMTF|Power Supply|004.19" }]
   uint32 Range2InputFrequencyLow;

      [Description (
          "The frequency (in Hertz) at the high end of this Power "
          "Supply's Input Frequency Range 2. A value of zero implies "
          "DC."), 
       Units ( "Hertz" ), 
       MappingStrings { "MIF.DMTF|Power Supply|004.20" }]
   uint32 Range2InputFrequencyHigh;

      [Description (
          "ActiveInputVoltage indicates which input voltage range is "
          "currently in use. Range 1, 2 or both can be specified using "
          "the values 3, 4 or 5, respectively. If the Supply is not "
          "currently drawing power, the value 6 (\"Neither\") can be "
          "specified. This information is necessary in the case of a "
          "UPS, a subclass of PowerSupply."), 
       ValueMap { "1", "2", "3", "4", "5", "6" }, 
       Values { "Other", "Unknown", "Range 1", "Range 2", "Both",
          "Neither" }, 
       MappingStrings { "MIF.DMTF|Power Supply|004.15" }]
   uint16 ActiveInputVoltage;

      [Description (
          "TypeOfRangeSwitching describes the kind of input voltage "
          "range switching implemented in this PowerSupply. For "
          "example, autoswitching can be specified (value=4)."), 
       ValueMap { "1", "2", "3", "4", "5", "6" }, 
       Values { "Other", "Unknown", "Manual", "Autoswitch",
          "Wide Range", "Not Applicable" }, 
       MappingStrings { "MIF.DMTF|Power Supply|004.16" }]
   uint16 TypeOfRangeSwitching;

      [Description (
          "Represents the total output power of the PowerSupply in "
          "milliWatts. 0 denotes 'unknown'."), 
       Units ( "MilliWatts" ), 
       MappingStrings { "MIF.DMTF|Power Supply|004.21" }]
   uint32 TotalOutputPower;
};


// ===================================================================
// SuppliesPower
// ===================================================================
   [Association, Version ( "2.6.0" ), Description (
       "The SuppliesPower relationship indicates that a Device is in "
       "the power domain of the referenced PowerSupply or UPS. It "
       "indicates which Device(s) are dependent on the PowerSupply, "
       "and hence, which Devices are affected if the Supply is lost.")]
class CIM_SuppliesPower : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "The Supply providing power.")]
   CIM_PowerSupply REF Antecedent;

      [Override ( "Dependent" ), Description (
          "A LogicalDevice in the power domain of the Supply.")]
   CIM_LogicalDevice REF Dependent;
};


// ===================================================================
// UninterruptiblePowerSupply
// ===================================================================
   [Version ( "2.6.0" ), Description (
       "Capabilities and management of an UninterruptiblePowerSupply. "
       "The properties of the UPS Device indicate when incoming power "
       "is trimmed or boosted, and the aggregated information of the "
       "batteries, generators, etc. that comprise the Device. These "
       "individual components (for example, multiple batteries) can "
       "also be independently modeled and associated with the UPS.")]
class CIM_UninterruptiblePowerSupply : CIM_PowerSupply {

      [Override ( "Range1InputVoltageLow" ), Description (
          "If the voltage (in millivolts) drops below the value "
          "specified by Range1InputVoltageLow, the UPS will compensate "
          "by boosting the voltage using its power source(s). A value "
          "of 0 indicates that the voltage at which boosting occurs is "
          "'unknown'."), 
       Units ( "MilliVolts" )]
   uint32 Range1InputVoltageLow;

      [Override ( "Range1InputVoltageHigh" ), Description (
          "If the voltage (in millivolts) rises above the value "
          "specified by Range1InputVoltageHigh, the UPS will "
          "compensate by trimming the voltage. A value of 0 indicates "
          "that the voltage at which trimming occurs is 'unknown'."), 
       Units ( "MilliVolts" )]
   uint32 Range1InputVoltageHigh;

      [Override ( "Range2InputVoltageLow" ), Description (
          "If the voltage (in millivolts) drops below the value "
          "specified by Range2InputVoltageLow, the UPS will compensate "
          "by boosting the voltage using its power source(s). A value "
          "of 0 indicates that the voltage at which boosting occurs is "
          "'unknown'."), 
       Units ( "MilliVolts" )]
   uint32 Range2InputVoltageLow;

      [Override ( "Range2InputVoltageHigh" ), Description (
          "If the voltage (in millivolts) rises above the value "
          "specified by Range2InputVoltageHigh, the UPS will "
          "compensate by trimming the voltage. A value of 0 indicates "
          "that the voltage at which trimming occurs is 'unknown'."), 
       Units ( "MilliVolts" )]
   uint32 Range2InputVoltageHigh;

      [Description (
          "The indication of the capacity remaining in the UPS' "
          "batteries, generator, ... A value of \"Normal\" (2) "
          "indicates that the remaining estimated minutes of run-time "
          "is greater than the UPS' defined 'low power' state "
          "(typically two minutes). A value of \"Low\" (3) indicates "
          "that the remaining estimated minutes of run-time is less "
          "than or equal to the UPS' defined 'low power' state. A "
          "value of \"Depleted\" (4) indicates that the UPS will be "
          "unable to sustain the present load when and if the utility "
          "power is lost (including the possibility that the utility "
          "power is currently absent)."), 
       ValueMap { "1", "2", "3", "4" }, 
       Values { "Unknown", "Normal", "Low", "Depleted" }, 
       MappingStrings { "MIF.DMTF|UPS Battery|001.1" }]
   uint16 RemainingCapacityStatus;

      [Description (
          "TimeOnBackup indicates the elapsed time in seconds since "
          "the UPS last switched to battery power, generator, ... Or, "
          "the time since the UPS was last restarted, whichever is "
          "less. Zero shall be returned if the UPS is 'on line'."), 
       Units ( "Seconds" ), 
       MappingStrings { "MIF.DMTF|UPS Battery|001.2" }]
   uint32 TimeOnBackup;

      [Description (
          "EstimatedRunTime is an estimate in minutes of the time to "
          "battery, generator, ... depletion under the present load "
          "conditions if the utility power is off, or lost and remains "
          "off."), 
       Units ( "Minutes" ), 
       MappingStrings { "MIF.DMTF|UPS Battery|001.3" }]
   uint32 EstimatedRunTime;

      [Description (
          "An estimate of the percentage of full charge remaining for "
          "a UPS (that uses battery technology)."), 
       Units ( "Percent" ), Gauge, 
       MappingStrings { "MIF.DMTF|UPS Battery|001.4" }]
   uint16 EstimatedChargeRemaining;
};

// ==================================================================
// PackageCooling
// ==================================================================
   [Association, Deprecated { "CIM_PackageDependency" },
       Version ( "2.7.0" ), Description (
       "Often, a CoolingDevice is installed in a Package such as a "
       "Chassis or a Rack, not for a specific Device, but to assist in "
       "the cooling of the Package in general. The use of this "
       "association has been deprecated. Instead, the more generic "
       "PackageDependency relationship should be used.")]
class CIM_PackageCooling : CIM_PackageDependency {

      [Deprecated { "CIM_PackageDependency.Antecedent" },
          Override ( "Antecedent" ), Description (
          "The CoolingDevice for the Package.")]
   CIM_CoolingDevice REF Antecedent;

      [Deprecated { "CIM_PackageDependency.Dependent" },
          Override ( "Dependent" ), Description (
          "The PhysicalPackage whose environment is cooled.")]
   CIM_PhysicalPackage REF Dependent;
};


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