// Copyright (c) 2010 DMTF.  All rights reserved.
   [Version ( "2.26.0" ), 
    UMLPackagePath ( "CIM::Device::CoolingAndPower" ), 
    Description ( 
       "Capabilities and management of the Battery. This class applies "
       "to both batteries in Laptop Systems and other internal or "
       "external batteries, such as an uninterruptible power supply "
       "(UPS)." )]
class CIM_Battery : CIM_LogicalDevice {

      [Description ( 
          "Description of the charge status of the Battery. Values "
          "such as \"Fully Charged\" (value=3) or \"Partially "
          "Charged\" (value=11) can be specified. The value, 10, is "
          "not valid in the CIM Schema because in DMI it represents "
          "that no battery is installed. In this case, this object "
          "should not be instantiated. The valuemaps: 6(Charging), "
          "7(Charging and High), 8(Charging and Low), and 9(Charing "
          "and Critical) has been deprecated in lieu of the "
          "ChargingStatus property. 10(Undefined) has been "
          "deprecated in lieu of 2(Unknown)." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", 
          "11", "12", "13", "..", "32768..65535" }, 
       Values { "Other", "Unknown", "Fully Charged", "Low", 
          "Critical", "Charging", "Charging and High", 
          "Charging and Low", "Charging and Critical", "Undefined", 
          "Partially Charged", "Learning", "Overcharged", 
          "DMTF Reserved", "Vendor Specific" }, 
       MappingStrings { "MIF.DMTF|Portable Battery|003.14" }]
   uint16 BatteryStatus;

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

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

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

      [Description ( 
          "An enumeration that describes the chemistry of the Battery."
           ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "..", 
          "32768..65535" }, 
       Values { "Other", "Unknown", "Lead Acid", "Nickel Cadmium", 
          "Nickel Metal Hydride", "Lithium-ion", "Zinc air", 
          "Lithium Polymer", "DMTF Reserved", "Vendor Specified" }, 
       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" }, 
       PUnit ( "watt * hour * 10^-3" )]
   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. The "
          "end of life of a Battery 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" }, 
       PUnit ( "watt * hour * 10^-3" )]
   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" }, 
       PUnit ( "volt * 10^-3" )]
   uint64 DesignVoltage;

      [Description ( 
          "The Smart Battery Data Specification version number that "
          "is 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 in minutes to charge the battery "
          "fully at the current charging rate and usage." ), 
       Units ( "Minutes" ), 
       MappingStrings { "MIF.DMTF|Portable Battery|003.16" }, 
       PUnit ( "minute" )]
   uint32 TimeToFullCharge;

      [Description ( 
          "Indicates the expected lifetime of the Battery 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" ), 
       PUnit ( "minute" )]
   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" ), 
       PUnit ( "minute" )]
   uint32 MaxRechargeTime;

      [Description ( 
          "The number of times the Battery has been recharged." )]
   uint32 RechargeCount;

      [Description ( 
          "The maximum number of times the Battery can be recharged." )]
   uint32 MaxRechargeCount;

      [Description ( 
          "The Battery\'s remaining charge capacity in mWatt-hours." ), 
       Units ( "MilliWattHours" ), 
       PUnit ( "watt * hour * 10^-3" )]
   uint32 RemainingCapacity;

      [Description ( 
          "The maximum error (as a percentage) in the mWatt-hour "
          "data reported by RemainingCapacity property." ), 
       Units ( "Percentage" ), 
       PUnit ( "percent" )]
   uint8 RemainingCapacityMaxError;

      [Description ( 
          "The description of the battery chemistry when the "
          "Chemistry property has value 1 (Other). The property "
          "shall be implemented if the Chemistry property has value "
          "1(Other)." )]
   string OtherChemistryDescription;

      [Description ( 
          "ChargingStatus indicates whether the battery is "
          "charging. Charging - the battery is charging. "
          "Discharging - the battery is discharging. Idle - the "
          "batter is neither charging nor discharging." ), 
       ValueMap { "0", "2", "3", "4", "..", "32768..65535" }, 
       Values { "Unknown", "Charging", "Discharging", "Idle", 
          "DMTF Reserved", "Vendor Specified" }]
   uint16 ChargingStatus;

      [Description ( 
          "An estimate of the percentage of the overall battery "
          "health. It indicates how much the battery has "
          "deteriorated over time. It can take values 0 to 100; 255 "
          "if it is unknown." ), 
       Units ( "Percentage" ), 
       PUnit ( "percent" )]
   uint8 HealthPercent;


};
