// ===================================================================
// Title:       Physical Components 2.7
// Filename:    Physical27_Component.mof
// Version:     2.7.0
// Release:     Final
// Date:        03/31/03
// ===================================================================
// 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.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.6.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 (
        "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;
    
    [Description (
        "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;
    
    [Description (
        "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 {
    
    [Override ("GroupComponent"), Aggregate, 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 {
    
    [Override ("GroupComponent"), Aggregate, 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
// ===================================================================
