// Copyright (c) 2012 DMTF.  All rights reserved.
   [Version ( "2.32.0" ), 
    UMLPackagePath ( "CIM::Device::Sensors" ), 
    Description ( 
       "A Sensor is an entity capable of measuring or reporting the "
       "characteristics of some physical property - for example, the "
       "temperature or voltage characteristics of a Computer System." )]
class CIM_Sensor : CIM_LogicalDevice {

      [Description ( 
          "The Type of the Sensor, e.g. Voltage or Temperature "
          "Sensor. If the type is set to \"Other\", then the "
          "OtherSensorType Description can be used to further "
          "identify the type, or if the Sensor has numeric "
          "readings, then the type of the Sensor can be implicitly "
          "determined by the Units. A description of the different "
          "Sensor types is as follows: A Temperature Sensor "
          "measures the environmental temperature. Voltage and "
          "Current Sensors measure electrical voltage and current "
          "readings. A Tachometer measures speed/revolutions of a "
          "Device. For example, a Fan Device can have an associated "
          "Tachometer which measures its speed. A Counter is a "
          "general purpose Sensor that measures some numerical "
          "property of a Device. A Counter value can be cleared, "
          "but it never decreases. A Switch Sensor has states like "
          "Open/Close, On/Off, or Up/Down. A Lock has states of "
          "Locked/Unlocked. Humidity, Smoke Detection and Air Flow "
          "Sensors measure the equivalent environmental "
          "characteristics. A Presence Sensor detects the presence "
          "of a PhysicalElement. A Power Consumption Sensor "
          "measures the instantaneous power consumed by a managed "
          "element. A Power Production Sensor measures the "
          "instantaneous power produced by a managed element such "
          "as a power supply or a voltage regulator. A pressure "
          "sensor is used to report pressure. Intrusion sensor "
          "reports an intrusion of an enclosure regardless whether "
          "it was authorized or not." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "10", "11", "12", "13", "14", "15", "16", "..", 
          "32768..65535" }, 
       Values { "Unknown", "Other", "Temperature", "Voltage", 
          "Current", "Tachometer", "Counter", "Switch", "Lock", 
          "Humidity", "Smoke Detection", "Presence", "Air Flow", 
          "Power Consumption", "Power Production", "Pressure", 
          "Intrusion", "DMTF Reserved", "Vendor Reserved" }, 
       ModelCorrespondence { "CIM_Sensor.OtherSensorTypeDescription" }]
   uint16 SensorType;

      [Description ( 
          "A string describing the Sensor type - used when the "
          "SensorType property is set to \"Other\"." ), 
       MaxLen ( 128 ), 
       ModelCorrespondence { "CIM_Sensor.SensorType" }]
   string OtherSensorTypeDescription;

      [Description ( 
          "PossibleStates enumerates the string outputs of the "
          "Sensor. For example, a \"Switch\" Sensor may output the "
          "states \"On\", or \"Off\". Another implementation of the "
          "Switch may output the states \"Open\", and \"Close\". "
          "Another example is a NumericSensor supporting "
          "thresholds. This Sensor can report the states like "
          "\"Normal\", \"Upper Fatal\", \"Lower Non-Critical\", "
          "etc. A NumericSensor that does not publish readings and "
          "thresholds, but stores this data internally, can still "
          "report its states." ), 
       MaxLen ( 128 )]
   string PossibleStates[];

      [Description ( 
          "The current state indicated by the Sensor. This is "
          "always one of the \"PossibleStates\"." ), 
       MaxLen ( 128 )]
   string CurrentState;

      [Description ( 
          "The polling interval that the Sensor hardware or the "
          "instrumentation uses to determine the current state of "
          "the Sensor." ), 
       Units ( "NanoSeconds" ), 
       PUnit ( "second * 10^-9" )]
   uint64 PollingInterval;

      [Description ( 
          "SensorContext indicates the purpose and context of the "
          "sensor. For example, the property may indicate what "
          "entity is being monitored or where the sensor is "
          "installed. Contextual and location information should be "
          "provided using associations to existing model elements. "
          "This property may be used if additional differentiation "
          "is necessary beyond that which is possible to convey "
          "using associations or values of SensorType. The value "
          "shall be formatted using the following algorithm: \n"
          "<OrgID>:<LocalID> \n"
          "Where <OrgID> and <LocalID> are separated by a colon "
          "(:), and where <OrgID> shall include a copyrighted, "
          "trademarked, or otherwise unique name that is owned by "
          "the business entity that is creating or defining the "
          "SensorContext or that is a registered ID assigned to the "
          "business entity by a recognized global authority. In "
          "addition, to ensure uniqueness, <OrgID> shall not "
          "contain a colon (:). \n"
          "<LocalID> is chosen by the business entity and should "
          "not be reused to identify different underlying "
          "(real-world) elements." )]
   string SensorContext;


};
