// ===================================================================
// Title:       Physical Components 2.8
// Filename:    Physical28_Component.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 Physical Model defines modeling concepts related
//              to actual boxes and packaging. This file defines
//              the concepts related to components and chips.
// 
//              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.8 Preliminary
// CR1005 - Deprecate several boolean properties in the physical model
//          that overlap.  Create a new property to express their
//          meaning.
// CR1019 - CIM Versioning for 2.8 Preliminary
// 
// Change Log for v2.7
// CR623 - Fix the DMI mapping string to include the attribute number
//         PhysicalMemory.FormFactor, .MemoryType, .TotalWidth,
//         .DataWidth, .Speed, .Capacity, .BankLabel.
// ==================================================================

#pragma locale ("en_US")


// ==================================================================
// PhysicalComponent
// ==================================================================
   [Version ( "2.8.0" ), Description (
       "The PhysicalComponent class represents any low-level or basic "
       "Component within a Package. A Component object either can not "
       "or does not need to be decomposed into its constituent parts. "
       "For example, an ASIC (or Chip) can not be further decomposed. "
       "A tape for data storage (PhysicalMedia) does not need to be "
       "decomposed. Any PhysicalElement that is not a Link, Connector, "
       "or Package is a descendent (or member) of this class. For "
       "example, the UART chipset on an internal modem Card would be a "
       "subclass (if additional properties or associations are "
       "defined) or an instance of PhysicalComponent.")]
class CIM_PhysicalComponent : CIM_PhysicalElement {

      [Description (
          "The RemovalCapabilites property is used to describe the "
          "conditions under which a PhysicalPackage can be removed. "
          "Since all PhysicalPackages are not removable, this property "
          "defaults to 2, 'Not Applicable'."), 
       ValueMap { "0", "2", "3", "4" }, 
       Values { "Unknown", "Not Applicable", "Removable when off",
          "Removable when on or off" }]
   uint16 RemovalConditions = 2;

      [Deprecated { "CIM_PhysicalComponent.RemovalConditions" }, 
       Description (
          "The use of this property is being deprecated. Instead "
          "RemovalConditions should be used. The RemovalConditions "
          "property addresses whether a PhysicalComponent is removable "
          "with or without power being applied. \n"
          "\n"
          "A PhysicalComponent is Removable if it is designed to be "
          "taken in and out of the physical container in which it is "
          "normally found, without impairing the function of the "
          "overall packaging. A Component can still be Removable if "
          "power must be 'off' in order to perform the removal. If "
          "power can be 'on' and the Component removed, then the "
          "Element is both Removable and HotSwappable. For example, an "
          "upgradeable Processor chip is Removable.")]
   boolean Removable;

      [Deprecated { "No Value" }, Description (
          "The use of this property is being deprecated because it is "
          "redundant with the FRU class and its associations. A "
          "PhysicalComponent is Replaceable if it is possible to "
          "replace (FRU or upgrade) the Element with a physically "
          "different one. For example, some ComputerSystems allow the "
          "main Processor chip to be upgraded to one of a higher clock "
          "rating. In this case, the Processor is said to be "
          "Replaceable. All Removable Components are inherently "
          "Replaceable.")]
   boolean Replaceable;

      [Deprecated { "CIM_PhysicalComponent.RemovalConditions" }, 
       Description (
          "The use of this property is being deprecated. Instead "
          "RemovalConditions should be used. The RemovalConditions "
          "property addresses whether a PhysicalComponent is removable "
          "with or without power being applied. \n"
          "\n"
          "A PhysicalComponent is HotSwappable if it is possible to "
          "replace the Element with a physically different but "
          "equivalent one while the containing Package has power "
          "applied to it (ie, is 'on'). For example, a fan Component "
          "may be designed to be HotSwappable. All HotSwappable "
          "Components are inherently Removable and Replaceable.")]
   boolean HotSwappable;
};


// ==================================================================
// PackagedComponent
// ==================================================================
   [Association, Aggregation, Version ( "2.6.0" ), Description (
       "A Component is typically contained by a PhysicalPackage, such "
       "as a Chassis or Card. The PackagedComponent association makes "
       "this relationship explicit. In the first sentence, the word, "
       "'typically', is used. This is because a Component may be "
       "removed from, or not yet inserted into, its containing Package "
       "(ie, the Removable boolean is TRUE). Therefore, a Component "
       "may not always be associated with a container.")]
class CIM_PackagedComponent : CIM_Container {

      [Aggregate, Override ( "GroupComponent" ), Max ( 1 ), 
       Description (
          "The PhysicalPackage that contains Component(s).")]
   CIM_PhysicalPackage REF GroupComponent;

      [Override ( "PartComponent" ), Description (
          "The PhysicalComponent which is contained in the Package.")]
   CIM_PhysicalComponent REF PartComponent;
};


// ==================================================================
// Chip
// ==================================================================
   [Version ( "2.6.0" ), Description (
       "The Chip class represents any type of integrated circuit "
       "hardware, including ASICs, processors, memory chips, etc.")]
class CIM_Chip : CIM_PhysicalComponent {

      [Description (
          "The implementation form factor for the Chip. For example, "
          "values such as SIMM (7), TSOP (9) or PGA (10) can be "
          "specified."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
          "20", "21", "22", "23" }, 
       Values { "Unknown", "Other", "SIP", "DIP", "ZIP", "SOJ",
          "Proprietary", "SIMM", "DIMM", "TSOP", 
          // 10             
          "PGA", "RIMM", "SODIMM", "SRIMM", "SMD", "SSMP", "QFP",
          "TQFP", "SOIC", "LCC", 
          // 20             
          "PLCC", "BGA", "FPBGA", "LGA" }]
   uint16 FormFactor;
};


// ==================================================================
// PhysicalMemory
// ==================================================================
   [Version ( "2.7.0" ), Description (
       "PhysicalMemory is a subclass of CIM_Chip, representing low "
       "level memory devices - SIMMS, DIMMs, raw memory chips, etc.")]
class CIM_PhysicalMemory : CIM_Chip {

      [Override ( "FormFactor" ), 
       MappingStrings { "MIF.DMTF|Memory Device|005.6" }]
   uint16 FormFactor;

      [Description (
          "The type of PhysicalMemory."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
          "20" }, 
       Values { "Unknown", "Other", "DRAM", "Synchronous DRAM",
          "Cache DRAM", "EDO", "EDRAM", "VRAM", "SRAM", "RAM", 
          //10 
          "ROM", "Flash", "EEPROM", "FEPROM", "EPROM", "CDRAM",
          "3DRAM", "SDRAM", "SGRAM", "RDRAM", 
          // 20             
          "DDR" }, 
       MappingStrings { "MIF.DMTF|Memory Device|005.9" }]
   uint16 MemoryType;

      [Description (
          "Total width, in bits, of the PhysicalMemory, including "
          "check or error correction bits. If there are no error "
          "correction bits, the value in this property should match "
          "that specified for DataWidth."), 
       Units ( "Bits" ), 
       MappingStrings { "MIF.DMTF|Memory Device|005.7" }]
   uint16 TotalWidth;

      [Description (
          "Data width of the PhysicalMemory, in bits. A data width of "
          "0 and a TotalWidth of 8 would indicate that the Memory is "
          "solely used to provide error correction bits."), 
       Units ( "Bits" ), 
       MappingStrings { "MIF.DMTF|Memory Device|005.8" }]
   uint16 DataWidth;

      [Description (
          "The speed of the PhysicalMemory, in nanoseconds."), 
       Units ( "NanoSeconds" ), 
       MappingStrings { "MIF.DMTF|Memory Device|005.24" }]
   uint32 Speed;

      [Description (
          "The total capacity of this PhysicalMemory, in bytes."), 
       Units ( "Bytes" ), 
       MappingStrings { "MIF.DMTF|Memory Device|005.5" }]
   uint64 Capacity;

      [Description (
          "A string identifying the physically labeled bank where the "
          "Memory is located - for example, 'Bank 0' or 'Bank A'."), 
       MaxLen ( 64 ), 
       MappingStrings { "MIF.DMTF|Memory Device|005.4" }]
   string BankLabel;

      [Description (
          "Specifies the position of the PhysicalMemory in a 'row'. "
          "For example, if it takes two 8-bit memory devices to form a "
          "16- bit row, then a value of '2'means that this Memory is "
          "the second device. 0 is an invalid value for this property."), 
       MappingStrings { "MIF.DMTF|Memory Device Mapped Addresses|001.6" 
          }]
   uint32 PositionInRow;

      [Description (
          "The position of this PhysicalMemory in an interleave. 0 "
          "indicates non-interleaved. 1 indicates the first position, "
          "2 the second position and so on. For example, in a 2:1 "
          "interleave, a value of '1' would indicate that the Memory "
          "is in the 'even' position."), 
       MappingStrings { "MIF.DMTF|Memory Device Mapped Addresses|001.7" 
          }]
   uint32 InterleavePosition;
};


// ==================================================================
// MemoryOnCard
// ==================================================================
   [Association, Aggregation, Version ( "2.6.0" ), Description (
       "PhysicalMemory can be located on HostingBoards, adapter Cards, "
       "etc. This association explicitly defines this relationship of "
       "Memory to Cards.")]
class CIM_MemoryOnCard : CIM_PackagedComponent {

      [Aggregate, Override ( "GroupComponent" ), Max ( 1 ), 
       Description (
          "The Card that includes or 'contains' Memory.")]
   CIM_Card REF GroupComponent;

      [Override ( "PartComponent" ), Description (
          "The PhysicalMemory which is located on the Card.")]
   CIM_PhysicalMemory REF PartComponent;
};


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