.

Document Number: XMP1009

Date: 2011-08-31

Version: 1.0.3m

Example Sensors Profile

IMPORTANT: This specification is not a standard. It does not necessarily reflect the views of the DMTF or all of its members. Because this document is a Work in Progress, this specification may still change, perhaps profoundly. This document is available for public review and comment until the stated expiration date. This document expires on: 2012-02-28. Target version for DMTF Standard: 1.0.3. Provide any comments through the DMTF Feedback Portal: http://www.dmtf.org/standards/feedback

Document Type: Specification

Document Status: Work in Progress

Document Language: en-US

## Copyright notice

Copyright © 2006-2011 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. Members and non-members may reproduce DMTF specifications and documents, 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.

# CONTENTS

## Figures

[Insert table of figures here ...]

## Tables

[Insert table of tables here ...]

# Foreword

This document was prepared by the DMTF Physical Platform Profiles Working Group and Server Management Working Group

DMTF is a not-for-profit association of industry members dedicated to promoting enterprise and systems management and interoperability. For information about the DMTF, see http://www.dmtf.org.

Design Note: This document contains design notes (like this one), that provide information about the way the document is written, or to demonstrate certain things. Such design notes would not appear in a released version of this document.

Design Note: This MRP document represents DSP1009 1.0.2 as a machine readable profile. Since machine readable profiles need to be compliant to DSP1001 1.1, this document utilizes the newly introduced concepts, such as adaptations, features and collaboration diagrams. Its HTML version generated by the DSP8029 XSL stylesheet uses the new condensed format defined in DSP1001 1.1.

Design Note: This profile demonstrates how boilerplate text can be replaced with references to messages defined in an MRP Organization Message Registry. The copyright text demonstrates how to specify dynamic values within the message, for the copyright years.

## Acknowledgements

DMTF acknowledges the following individuals for their contributions to this document:

- Jon Hass, Dell Inc. (editor)
- Khachatur Papanyan, Dell Inc. (editor)
- Jim Davis, WBEM Solutions (editor)
- Linda Martinez, Dell Inc.
- Jeff Hilland, HP
- Christina Shaw, HP
- Aaron Merkin, IBM
- Jeff Lynch, IBM
- Perry Vincent, Intel
- John Leung, Intel

# Introduction

This document defines the usage of CIM classes used to represent and manage sensors in a managed environment. The document also defines the usage of CIM association classes that describe the relationship of the sensors with the sensored elements they measure and with DMTF profile implementation information. The information in this document is intended to be sufficient for a provider or consumer of this data to identify unambiguously the classes, properties, methods, and values that need to be instantiated and manipulated.

The target audience for this specification is implementers who are writing CIM-based providers or consumers of management interfaces that represent the components described in this document.

## Document conventions

### Typographical conventions

The following typographical conventions are used in this document:

- Document titles are marked in italics.
- Important terms that are used for the first time are marked in italics.
- Terms include a link to the term definition in the "Terms and definitions" clause, enabling easy navigation to the term definition.

### OCL usage conventions

Constraints in this document are specified using OCL (see OCL 2.0).

OCL statements are in monospaced font.

# Scope

The Sensors profile extends the management capabilities of referencing profiles by adding the capability to represent sensors, their relationship with the sensored elements they measure, and the implementation of this profile.

# Normative references

The following referenced documents are indispensable for the application of this document. For dated or versioned references, only the edition cited (including any corrigenda or DMTF update versions) applies. For references without a date or version, the latest published edition of the referenced document (including any corrigenda or DMTF update versions) applies.

DMTF DSP0004, CIM Infrastructure Specification 2.5,
http://www.dmtf.org/standards/published_documents/DSP0004_2.5.pdf

DMTF DSP0223, Generic Operations 1.0,
http://www.dmtf.org/standards/published_documents/DSP0223_1.0.pdf

DMTF DSP1001, Management Profile Specification Usage Guide 1.1,
http://www.dmtf.org/standards/published_documents/DSP1001_1.1.pdf

DMTF XMP1033, Example Profile Registration Profile (sample profile in DSP2023) 1.0,
http://www.dmtf.org/standards/published_documents/DSP2023_1.0.zip

OMG formal/06-05-01, Object Constraint Language 2.0,
http://www.omg.org/spec/OCL/2.0/

ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards,
http://isotc.iso.org/livelink/livelink?func=ll&objId=4230456&objAction=browse&sort=subtype

# Terms and definitions

In this document, some terms have a specific meaning beyond the normal English meaning. Those terms are defined in this clause.

## General

The terms "shall" ("required"), "shall not", "should" ("recommended"), "should not" ("not recommended"), "may", "need not" ("not required"), "can" and "cannot" in this document are to be interpreted as described in ISO/IEC Directives, Part2, Annex H. The terms in parenthesis are alternatives for the preceding term, for use in exceptional cases when the preceding term cannot be used for linguistic reasons. Note that ISO/IEC Directives, Part2, Annex H specifies additional alternatives. Occurrences of such additional alternatives shall be interpreted in their normal English meaning in this document.
The terms "clause", "subclause", "paragraph", "annex" in this document are to be interpreted as described in ISO/IEC Directives, Part2, Clause 5.
The terms "normative" and "informative" in this document are to be interpreted as described in ISO/IEC Directives, Part2, Clause 3. In this document, clauses, subclauses or annexes indicated with "(informative)" as well as notes and examples do not contain normative content.
The terms defined in DSP0004, DSP0223, and DSP1001 apply to this document.

The following additional terms are defined in this document.

##

analog sensor

sensor that measures an analog quantity (e.g. voltage) and provides a numeric value for the quantity. Also called a numeric sensor.

##

discrete sensor

sensor that provides discrete values for the quantity it measures (e.g. a lock is closed or open).

##

sensor

device that measures a physical quantity and makes a value for the quantity accessible to a programmatic observer.

##

sensored element

element in the managed environment that is measured by a sensor.

# Symbols and abbreviated terms

The abbreviations defined in DSP0004, DSP0223, and DSP1001 apply to this document.

This document does not define any additional abbreviations.

# Synopsis

Profile name: Example Sensors

Version: 1.0.3

Organization: DMTF

Abstract indicator: False

Profile type: Component

Schema: DMTF CIM 2.22 (experimental)

Central class adaptation: AbstractSensor

Scoping class adaptation: ComputerSystem

Scoping path: SystemDevice

The Sensors profile extends the management capabilities of referencing profiles by adding the capability to represent, monitor and control sensors, and to represent their relationship with sensored elements.

The following table identifies the profile references defined in this profile.

Profile references
Profile reference name | Profile name | Organi​zation | Version | Relation​ship | Description
--- | --- | --- | --- | --- | ---
PRP | Profile Registration | DMTF | 1.0 | Mandatory | Used to represent the implementation of this profile.

The following table identifies the features defined in this profile.

Features
Feature | Require​ment | Description
--- | --- | ---
SensorElementNameModification | Optional | See subclause "Feature: SensorElementNameModification".
SensorStateManagement | Optional | See subclause "Feature: SensorStateManagement".
LowerThresholdNonCriticalSupported | Optional | See subclause "Feature: LowerThresholdNonCriticalSupported".
UpperThresholdNonCriticalSupported | Optional | See subclause "Feature: UpperThresholdNonCriticalSupported".
LowerThresholdCriticalSupported | Optional | See subclause "Feature: LowerThresholdCriticalSupported".
UpperThresholdCriticalSupported | Optional | See subclause "Feature: UpperThresholdCriticalSupported".
LowerThresholdFatalSupported | Optional | See subclause "Feature: LowerThresholdFatalSupported".
UpperThresholdFatalSupported | Optional | See subclause "Feature: UpperThresholdFatalSupported".
LowerThresholdNonCriticalSettable | Optional | See subclause "Feature: LowerThresholdNonCriticalSettable".
UpperThresholdNonCriticalSettable | Optional | See subclause "Feature: UpperThresholdNonCriticalSettable".
LowerThresholdCriticalSettable | Optional | See subclause "Feature: LowerThresholdCriticalSettable".
UpperThresholdCriticalSettable | Optional | See subclause "Feature: UpperThresholdCriticalSettable".
LowerThresholdFatalSettable | Optional | See subclause "Feature: LowerThresholdFatalSettable".
UpperThresholdFatalSettable | Optional | See subclause "Feature: UpperThresholdFatalSettable".

The following table identifies the class adaptations defined in this profile.

Adaptations
Adaptation | Elements | Require​ment | Description
--- | --- | --- | ---
Instantiated, embedded and abstract adaptations
ComputerSystem | CIM_ComputerSystem | Mandatory | See subclause "Adaptation: ComputerSystem".
SystemDevice | CIM_SystemDevice | Mandatory | See subclause "Adaptation: SystemDevice".
AbstractSensor | CIM_Sensor | See derived adaptations | See subclause "Adaptation: AbstractSensor".
DiscreteSensor | CIM_Sensor | Mandatory | See subclause "Adaptation: DiscreteSensor".
NumericSensor | CIM_NumericSensor | Mandatory | See subclause "Adaptation: NumericSensor".
SensorCapabilities | CIM_EnabledLogicalElementCapabilities | Conditional | See subclause "Adaptation: SensorCapabilities".
ElementCapabilities | CIM_ElementCapabilities | Conditional | See subclause "Adaptation: ElementCapabilities".
SensoredElement | CIM_ManagedSystemElement | See derived adaptations | See subclause "Adaptation: SensoredElement".
AssociatedSensor | CIM_AssociatedSensor | Mandatory | See subclause "Adaptation: AssociatedSensor".
Indications and exceptions
This profile does not define any such adaptations.

The following table identifies the use cases and state descriptions defined in this profile.

Use cases and state descriptions
Name | Description
--- | ---
State description SimpleObjectDiagram | See subclause "State description: SimpleObjectDiagram".
Use case ShowAllSensorStates | See subclause "Use case: ShowAllSensorStates".
Use case FindSensorsOfSystemElement | See subclause "Use case: FindSensorsOfSystemElement".
Use case ChangeThreshold | See subclause "Use case: ChangeThreshold".
Use case ResetThresholds | See subclause "Use case: ResetThresholds".
Use case DetermineElementNameModifiability | See subclause "Use case: DetermineElementNameModifiability".
Use case DetermineStateManagementSupport | See subclause "Use case: DetermineStateManagementSupport".

# Description

The following two DMTF collaboration structure diagrams show all class adaptations defined in this profile, and all profiles referenced by this profile.

DMTF collaboration structure diagram for the Sensors profile

DMTF collaboration structure diagram for the ConcreteSensors component of the Sensors profile

The logical aspect of sensors in the managed environment is represented by instances of the following adaptations that are based on the abstract base adaptation AbstractSensor:

- The DiscreteSensor adaptation, representing discrete sensors.
- The NumericSensor adaptation, representing analog sensors.

The system hosting a sensor is represented by a ComputerSystem instance associated via SystemDevice to the AbstractSensor instance representing the sensor.

The sensored elements of a sensor are represented by SensoredElement instances associated via AssociatedSensor to the AbstractSensor instance representing the sensor. If no such instance is associated to a AbstractSensor instance, the corresponding sensor's scope is the entire system that hosts the sensor.

The capabilities of a sensor and of the implementation of its AbstractSensor adaptation are represented by a SensorCapabilities instance associated via ElementCapabilities to the AbstractSensor instance representing the sensor. SensorCapabilities instances can be shared between multiple AbstractSensor instances.

Conformance of an implementation to this profile is represented through the PRP profile.

# Implementation

## Features

### Feature: SensorElementNameModification

Implementing this feature provides support for client modification of the ElementName property of a AbstractSensor instance.

The requirement level for this feature is optional.

This feature can be made available to clients at the granularity of AbstractSensor instances.

It can be concluded that the feature is available for a AbstractSensor instance if:

- The following OCL derivation constraint evaluates to a Boolean value of True.

  OCL context: A AbstractSensor instance.

      derive: self.ElementCapabilities::Capabilities.ElementNameEditSupported

Otherwise, it can be concluded that the feature is not available.

The following profile elements are conditional or conditional exclusive on the implementation of this feature:

- SensorCapabilities adaptation.
- ElementCapabilities adaptation.
- MaxElementNameLen property in SensorCapabilities adaptation.
- ModifyInstance( ) operation in AbstractSensor adaptation.

### Feature: SensorStateManagement

Implementing this feature provides support for client management of the state of a sensor by means of the RequestStateChange( ) method.

The requirement level for this feature is optional.

This feature can be made available to clients at the granularity of AbstractSensor instances.

It can be concluded that the feature is available for a AbstractSensor instance if:

- The following OCL derivation constraint evaluates to a Boolean value of True.

  OCL context: A AbstractSensor instance.

      derive: self.ElementCapabilities::Capabilities.
          RequestedStatesSupported->notEmpty()

Otherwise, it can be concluded that the feature is not available.

The following profile elements are conditional or conditional exclusive on the implementation of this feature:

- SensorCapabilities adaptation.
- ElementCapabilities adaptation.
- RequestStateChange( ) method in AbstractSensor adaptation.

### Feature: LowerThresholdNonCriticalSupported

Implementing this feature provides support for the LowerThresholdNonCritical threshold of an analog sensor.

The requirement level for this feature is optional.

This feature can be made available to clients at the granularity of NumericSensor instances.

It can be concluded that the feature is available for a NumericSensor instance if:

- The following OCL derivation constraint evaluates to a Boolean value of True.

  OCL context: A NumericSensor instance.

      derive: self.SupportedThresholds->
          select( entry | entry = 0 /* LowerThresholdNonCritical */ )->size() = 1

Otherwise, it can be concluded that the feature is not available.

The following profile elements are conditional or conditional exclusive on the implementation of this feature:

- LowerThresholdNonCritical property in NumericSensor adaptation.

### Feature: UpperThresholdNonCriticalSupported

Implementing this feature provides support for the UpperThresholdNonCritical threshold of an analog sensor.

The requirement level for this feature is optional.

This feature can be made available to clients at the granularity of NumericSensor instances.

It can be concluded that the feature is available for a NumericSensor instance if:

- The following OCL derivation constraint evaluates to a Boolean value of True.

  OCL context: A NumericSensor instance.

      derive: self.SupportedThresholds->
          select( entry | entry = 1 /* UpperThresholdNonCritical */ )->size() = 1

Otherwise, it can be concluded that the feature is not available.

The following profile elements are conditional or conditional exclusive on the implementation of this feature:

- UpperThresholdNonCritical property in NumericSensor adaptation.

### Feature: LowerThresholdCriticalSupported

Implementing this feature provides support for the LowerThresholdCritical threshold of an analog sensor.

The requirement level for this feature is optional.

This feature can be made available to clients at the granularity of NumericSensor instances.

It can be concluded that the feature is available for a NumericSensor instance if:

- The following OCL derivation constraint evaluates to a Boolean value of True.

  OCL context: A NumericSensor instance.

      derive: self.SupportedThresholds->
          select( entry | entry = 2 /* LowerThresholdCritical */ )->size() = 1

Otherwise, it can be concluded that the feature is not available.

The following profile elements are conditional or conditional exclusive on the implementation of this feature:

- LowerThresholdCritical property in NumericSensor adaptation.

### Feature: UpperThresholdCriticalSupported

Implementing this feature provides support for the UpperThresholdCritical threshold of an analog sensor.

The requirement level for this feature is optional.

This feature can be made available to clients at the granularity of NumericSensor instances.

It can be concluded that the feature is available for a NumericSensor instance if:

- The following OCL derivation constraint evaluates to a Boolean value of True.

  OCL context: A NumericSensor instance.

      derive: self.SupportedThresholds->
          select( entry | entry = 3 /* UpperThresholdCritical */ )->size() = 1

Otherwise, it can be concluded that the feature is not available.

The following profile elements are conditional or conditional exclusive on the implementation of this feature:

- UpperThresholdCritical property in NumericSensor adaptation.

### Feature: LowerThresholdFatalSupported

Implementing this feature provides support for the LowerThresholdFatal threshold of an analog sensor.

The requirement level for this feature is optional.

This feature can be made available to clients at the granularity of NumericSensor instances.

It can be concluded that the feature is available for a NumericSensor instance if:

- The following OCL derivation constraint evaluates to a Boolean value of True.

  OCL context: A NumericSensor instance.

      derive: self.SupportedThresholds->
          select( entry | entry = 4 /* LowerThresholdFatal */ )->size() = 1

Otherwise, it can be concluded that the feature is not available.

The following profile elements are conditional or conditional exclusive on the implementation of this feature:

- LowerThresholdFatal property in NumericSensor adaptation.

### Feature: UpperThresholdFatalSupported

Implementing this feature provides support for the UpperThresholdFatal threshold of an analog sensor.

The requirement level for this feature is optional.

This feature can be made available to clients at the granularity of NumericSensor instances.

It can be concluded that the feature is available for a NumericSensor instance if:

- The following OCL derivation constraint evaluates to a Boolean value of True.

  OCL context: A NumericSensor instance.

      derive: self.SupportedThresholds->
          select( entry | entry = 5 /* UpperThresholdFatal */ )->size() = 1

Otherwise, it can be concluded that the feature is not available.

The following profile elements are conditional or conditional exclusive on the implementation of this feature:

- UpperThresholdFatal property in NumericSensor adaptation.

### Feature: LowerThresholdNonCriticalSettable

Implementing this feature provides support for setting the LowerThresholdNonCritical threshold of an analog sensor.

The requirement level for this feature is optional.

This feature can be made available to clients at the granularity of NumericSensor instances.

It can be concluded that the feature is available for a NumericSensor instance if:

- The following OCL derivation constraint evaluates to a Boolean value of True.

  OCL context: A NumericSensor instance.

      derive: self.SettableThresholds->
          select( entry | entry = 0 /* LowerThresholdNonCritical */ )->size() = 1

Otherwise, it can be concluded that the feature is not available.

The following profile elements are conditional or conditional exclusive on the implementation of this feature:

- RestoreDefaultThresholds( ) method in NumericSensor adaptation.
- ModifyInstance( ) operation in NumericSensor adaptation.

### Feature: UpperThresholdNonCriticalSettable

Implementing this feature provides support for setting the UpperThresholdNonCritical threshold of an analog sensor.

The requirement level for this feature is optional.

This feature can be made available to clients at the granularity of NumericSensor instances.

It can be concluded that the feature is available for a NumericSensor instance if:

- The following OCL derivation constraint evaluates to a Boolean value of True.

  OCL context: A NumericSensor instance.

      derive: self.SettableThresholds->
          select( entry | entry = 1 /* UpperThresholdNonCritical */ )->size() = 1

Otherwise, it can be concluded that the feature is not available.

The following profile elements are conditional or conditional exclusive on the implementation of this feature:

- RestoreDefaultThresholds( ) method in NumericSensor adaptation.
- ModifyInstance( ) operation in NumericSensor adaptation.

### Feature: LowerThresholdCriticalSettable

Implementing this feature provides support for setting the LowerThresholdCritical threshold of an analog sensor.

The requirement level for this feature is optional.

This feature can be made available to clients at the granularity of NumericSensor instances.

It can be concluded that the feature is available for a NumericSensor instance if:

- The following OCL derivation constraint evaluates to a Boolean value of True.

  OCL context: A NumericSensor instance.

      derive: self.SettableThresholds->
          select( entry | entry = 2 /* LowerThresholdCritical */ )->size() = 1

Otherwise, it can be concluded that the feature is not available.

The following profile elements are conditional or conditional exclusive on the implementation of this feature:

- RestoreDefaultThresholds( ) method in NumericSensor adaptation.
- ModifyInstance( ) operation in NumericSensor adaptation.

### Feature: UpperThresholdCriticalSettable

Implementing this feature provides support for setting the UpperThresholdCritical threshold of an analog sensor.

The requirement level for this feature is optional.

This feature can be made available to clients at the granularity of NumericSensor instances.

It can be concluded that the feature is available for a NumericSensor instance if:

- The following OCL derivation constraint evaluates to a Boolean value of True.

  OCL context: A NumericSensor instance.

      derive: self.SettableThresholds->
          select( entry | entry = 3 /* UpperThresholdCritical */ )->size() = 1

Otherwise, it can be concluded that the feature is not available.

The following profile elements are conditional or conditional exclusive on the implementation of this feature:

- RestoreDefaultThresholds( ) method in NumericSensor adaptation.
- ModifyInstance( ) operation in NumericSensor adaptation.

### Feature: LowerThresholdFatalSettable

Implementing this feature provides support for setting the LowerThresholdFatal threshold of an analog sensor.

The requirement level for this feature is optional.

This feature can be made available to clients at the granularity of NumericSensor instances.

It can be concluded that the feature is available for a NumericSensor instance if:

- The following OCL derivation constraint evaluates to a Boolean value of True.

  OCL context: A NumericSensor instance.

      derive: self.SettableThresholds->
          select( entry | entry = 4 /* LowerThresholdFatal */ )->size() = 1

Otherwise, it can be concluded that the feature is not available.

The following profile elements are conditional or conditional exclusive on the implementation of this feature:

- RestoreDefaultThresholds( ) method in NumericSensor adaptation.
- ModifyInstance( ) operation in NumericSensor adaptation.

### Feature: UpperThresholdFatalSettable

Implementing this feature provides support for setting the UpperThresholdFatal threshold of an analog sensor.

The requirement level for this feature is optional.

This feature can be made available to clients at the granularity of NumericSensor instances.

It can be concluded that the feature is available for a NumericSensor instance if:

- The following OCL derivation constraint evaluates to a Boolean value of True.

  OCL context: A NumericSensor instance.

      derive: self.SettableThresholds->
          select( entry | entry = 5 /* UpperThresholdFatal */ )->size() = 1

Otherwise, it can be concluded that the feature is not available.

The following profile elements are conditional or conditional exclusive on the implementation of this feature:

- RestoreDefaultThresholds( ) method in NumericSensor adaptation.
- ModifyInstance( ) operation in NumericSensor adaptation.

## Adaptations

### Conventions

This profile defines operation requirements based on DSP0223.

For adaptations of ordinary classes and of associations the requirements for operations are defined in adaptation-specific subclauses of the "Adaptations" clause.

For association traversal operation requirements that are specified only in the elements table of an adaptation (i.e. without operation-specific subclauses), the names of the association adaptations to be traversed are listed in the elements table.

The default initialization requirement level for property requirements is optional.

The default modification requirement level for property requirements is optional.

This profile repeats the effective values of certain Boolean qualifiers as part of property, method parameter, or method return value requirements. The following convention is established: If the name of a qualifier is listed, its effective value is True; if the qualifier name is not listed, its effective value is False. The convention is applied in the following cases:

- In: indicates that the parameter is an input parameter
- Out: indicates that the parameter is an output parameter
- Key: indicates that the property is a key (that is, its value is part of the instance path)
- Required: indicates that the element value shall be non-Null
- Null OK: indicates explicitly that the element value may be Null for mandatory, conditional or conditional exclusive properties. This information is not specified as a qualifier in the schema but as an indicator in the profile

### Adaptation: ComputerSystem: CIM_ComputerSystem

This adaptation models systems hosting sensors.

The implementation type of this adaptation is instantiated ordinary adaptation.

The requirement level for this adaptation is mandatory.

The following table identifies the element requirements for this adaptation.

ComputerSystem: Element requirements
Element | Require​ment | Description
--- | --- | ---
Operations
GetAssociatedInstancesWithPath( ) for SystemDevice | Mandatory | See DSP0223.
GetAssociatedInstancePaths( ) for SystemDevice | Mandatory | See DSP0223.
GetReferencingInstancesWithPath( ) for SystemDevice | Mandatory | See DSP0223.
GetReferencingInstancePaths( ) for SystemDevice | Mandatory | See DSP0223.

### Adaptation: SystemDevice: CIM_SystemDevice

#### General

This adaptation models the relationship between sensors that are represented by AbstractSensor instances and the systems hosting these sensors that are represented by ComputerSystem instances.

The implementation type of this adaptation is instantiated association adaptation.

The requirement level for this adaptation is mandatory.

The following table identifies the element requirements for this adaptation.

SystemDevice: Element requirements
Element | Require​ment | Description
--- | --- | ---
Properties
GroupComponent | Mandatory | Key, see subclause "Property: GroupComponent".
PartComponent | Mandatory | Key, see subclause "Property: PartComponent".
Operations
GetInstance( ) | Mandatory | See DSP0223.

#### Property: GroupComponent

The presentation requirement level for this property is mandatory.

The implementation shall satisfy the following constraints for this reference property:

- Referenced instances shall be of class adaptation ComputerSystem.
- The multiplicity of [1 .. 1] defined in the schema is not further constrained.

#### Property: PartComponent

The presentation requirement level for this property is mandatory.

The implementation shall satisfy the following constraints for this reference property:

- Referenced instances shall be of class adaptation AbstractSensor.
- The multiplicity of [0 .. *] defined in the schema is not further constrained.

### Adaptation: AbstractSensor: CIM_Sensor

#### General

This abstract adaptation provides a basis for derived adaptations in this or other profiles, that model specific types of sensors.

This profile defines the DiscreteSensor and NumericSensor adaptations to be based on this adaptation.

Design Note: This adaptation demonstrates several ways to define the associations traversed by association traversal operations. Note the different ways mrp:Association child elements are specified vs. defaulted. Note that if no associations are specified in the MRP profile, they are defaulted and appear explicitly in the HTML output. Note that a certain number of traversed associations triggers the generation of subclauses for the operations.

The implementation type of this adaptation is abstract ordinary adaptation.

The requirement level for this abstract adaptation is left to be defined in its derived adaptations.

The implementation shall satisfy the following constraint for this adaptation:

OCL constraint with context of a AbstractSensor instance:

    inv: ( self.mrpIsFeatureAvailable('SensorElementNameModification') or
        self.mrpIsFeatureAvailable('SensorStateManagement') )
    implies
        self.ElementCapabilities::Capabilities->size() = 1

The following table identifies the element requirements for this adaptation.

AbstractSensor: Element requirements
Element | Require​ment | Description
--- | --- | ---
Properties
SystemCreationClassName | Mandatory | Key, see schema definition.
SystemName | Mandatory | Key, see schema definition.
CreationClassName | Mandatory | Key, see schema definition.
DeviceID | Mandatory | Key, see schema definition.
ElementName | Mandatory | See subclause "Property: ElementName".
SensorType | Mandatory | See schema definition.
OtherSensorTypeDescription | Mandatory | Null OK, see subclause "Property: OtherSensorTypeDescription".
EnabledState | Mandatory | See subclause "Property: EnabledState".
RequestedState | Mandatory | See subclause "Property: RequestedState".
OperationalStatus | Mandatory | See schema definition.
HealthState | Mandatory | See schema definition.
Methods
RequestStateChange( ) | Conditional | See subclause "Method: RequestStateChange( )".
Operations
GetInstance( ) | Mandatory | See DSP0223.
GetClassInstancesWithPath( ) | Mandatory | See DSP0223.
GetClassInstancePaths( ) | Mandatory | See DSP0223.
ModifyInstance( ) | Conditional | See subclause "Operation: ModifyInstance( )".
GetAssociatedInstancesWithPath( ) for AssociatedSensor and others | Mandatory | See subclause "Operation: GetAssociatedInstancesWithPath( ) for AssociatedSensor".
GetAssociatedInstancePaths( ) for AssociatedSensor and others | Mandatory | See subclause "Operation: GetAssociatedInstancePaths( ) for AssociatedSensor".
GetReferencingInstancesWithPath( ) for AssociatedSensor and SystemDevice | Mandatory | See DSP0223.
GetReferencingInstancesWithPath( ) for ElementCapabilities | Optional | See DSP0223.
GetReferencingInstancePaths( ) for AssociatedSensor and SystemDevice | Mandatory | See DSP0223.
GetReferencingInstancePaths( ) for ElementCapabilities | Optional | See DSP0223.

#### Property: ElementName

The presentation requirement level for this property is mandatory.

The implementation shall satisfy the following constraint for this property:

OCL constraint with context of a AbstractSensor instance:

    inv: self.ElementName.size() <= self.ElementCapabilities::Capabilities.MaxElementNameLen

The modification requirement level for this property is conditional exclusive, with the following condition:

The SensorElementNameModification feature is implemented.

In order to enforce the length restriction specified in the MaxElementNameLen property of the associated SensorCapabilities instance, the implementation may reject or truncate property values that exceed that length.

#### Property: OtherSensorTypeDescription

The presentation requirement level for this property is mandatory.

The implementation shall satisfy the following constraint for this property:

OCL constraint with context of a AbstractSensor instance:

    inv: if self.SensorType = 1 /* Other */
    then (
        self.OtherSensorTypeDescription.isNotNull()
    ) else (
        self.OtherSensorTypeDescription.isNull()
    )

#### Property: EnabledState

The presentation requirement level for this property is mandatory.

The following table describes the mapping between values of this property and the corresponding sensor states.

Mapping between EnabledState values and sensor states
Value | Value description | Sensor state
--- | --- | ---
2 | Enabled | The sensor shall be operational.
3 | Disabled | The sensor shall be disabled.
5 | Not Applicable | The sensor's state is indeterminate, or sensor state management is not supported.

The value of this property may change as a result of the execution of the RequestStateChange( ) method or a change to the sensor's state by a non-CIM implementation.

#### Property: RequestedState

The presentation requirement level for this property is mandatory.

The implementation shall satisfy the following constraints for this property:

- OCL constraint with context of a AbstractSensor instance:

      inv: if self.mrpIsFeatureAvailable('SensorStateManagement')
      then (
          self.RequestedState = 5 /* No Change */ or
          self.RequestedState = 12 /* Not Applicable */ or
          self.ElementCapabilities::Capabilities.
              RequestedStatesSupported->contains(self.RequestedState)
      ) else (
          self.RequestedState = 12 /* Not Applicable */
      )

- OCL constraint with context of a AbstractSensor instance:

      init: if self.mrpIsFeatureAvailable('SensorStateManagement')
      then (
          self.RequestedState = 5 /* No Change */
      )

#### Method: RequestStateChange( )

The requirement level for this method is conditional, with the following condition:

The SensorStateManagement feature is implemented.

Successful execution of this method on an instance of this adaptation shall change the instance's state to the value specified in the RequestedState parameter.

Invoking this method multiple times may result in earlier requests being overwritten or lost.

The implementation shall satisfy the following constraints for this method:

- OCL constraint with context of a AbstractSensor instance:

      pre: self.ElementCapabilities::Capabilities.
          RequestedStatesSupported->contains(RequestedState)

- OCL constraint with context of a AbstractSensor instance:

      post: self.RequestedState = RequestedState

The following table identifies the parameter and return value requirements of the method.

RequestStateChange( ): Parameter requirements
Parameter | Description
--- | ---
RequestedState | In, see subclause "Parameter: RequestedState".
Job | Out, see subclause "Parameter: Job".
TimeoutPeriod | In, see subclause "Parameter: TimeoutPeriod".
ReturnValue | See subclause "Return value".

##### Parameter: RequestedState

The following table identifies input value requirements for this parameter:

RequestedState: Input value requirements
Input value | Require​ment | Description
--- | --- | ---
2 | Mandatory | 2 = Enabled; the sensor shall become operational.
3 | Mandatory | 3 = Disabled; the sensor shall become disabled.

##### Parameter: Job

If the request is being executed asynchronously, the value of this parameter shall reference a ConcreteJobProfile Error: A class adaptation "ConcreteJob" is referenced in a class adaptation link but is not defined or is defined more than once in this profile. instance representing the asynchronously executing request. Otherwise, the value of this parameter shall be NULL.

The implementation shall satisfy the following constraint for this reference parameter:

Referenced instances shall be of class adaptation ConcreteJobProfile Error: A class adaptation "ConcreteJob" is referenced in a class adaptation link but is not defined or is defined more than once in this profile..

##### Parameter: TimeoutPeriod

Client-specified maximum amount of time the transition to a new state is supposed to take:

- 0 or Null – No maximum time is specified
- Non-Null – The value specifies the maximum time allowed

If the maximum time expires, the method implementation may abort the execution. If it aborts, it shall return 2 (Error).

##### Return value

This method shall return one of the following return values:

RequestStateChange: Return values
Value | Description
--- | ---
0 | The state change was successfully performed.
1 | The method is not implemented.
2 | An error has occurred.
4096 | The request to change the state is being executed asynchronously, and the Job parameter references a ConcreteJobProfile Error: A class adaptation "ConcreteJob" is referenced in a class adaptation link but is not defined or is defined more than once in this profile. instance representing the request.

#### Operation: ModifyInstance( )

For general requirements on the implementation of this operation, see DSP0223.

The requirement level for this operation is conditional, with the following condition:

The SensorElementNameModification feature is implemented.

#### Operation: GetAssociatedInstancesWithPath( ) for AssociatedSensor and others

For general requirements on the implementation of this operation, see DSP0223.

The requirement level for this operation is mandatory.

This operation requirement applies when traversing the following association adaptations:

- AssociatedSensor
- ElementCapabilities
- SystemDevice

#### Operation: GetAssociatedInstancePaths( ) for AssociatedSensor and others

For general requirements on the implementation of this operation, see DSP0223.

The requirement level for this operation is mandatory.

This operation requirement applies when traversing the following association adaptations:

- AssociatedSensor
- ElementCapabilities
- SystemDevice

### Adaptation: DiscreteSensor: CIM_Sensor

#### General

This adaptation models discrete sensors.

The implementation type of this adaptation is instantiated ordinary adaptation.

The requirement level for this adaptation is mandatory.

The following table identifies the element requirements for this adaptation.

DiscreteSensor: Element requirements
Element | Require​ment | Description
--- | --- | ---
Base adaptations
AbstractSensor | Optional | See AbstractSensor.
Properties
CurrentState | Mandatory | See subclause "Property: CurrentState".
PossibleStates | Mandatory | See subclause "Property: PossibleStates".

#### Property: CurrentState

The presentation requirement level for this property is mandatory.

The implementation shall satisfy the following constraint for this property:

OCL constraint with context of a DiscreteSensor instance:

    inv: self.PossibleStates->contains(self.CurrentState)

#### Property: PossibleStates

The presentation requirement level for this property is mandatory.

The set of array entry values of this array property shall represent the set of allowable values for the CurrentState property. The mapping between these values and the actual condition of the discrete sensor is implementation specific.

The implementation shall satisfy the following constraint for this property:

OCL constraint with context of a DiscreteSensor instance:

    inv:
    self.SensorType = 2 /* Temperature */ implies
        self.PossibleStates->forAll( s |
            Set { "Bad", "Good", "Unknown" }->contains(s)) and
    self.SensorType = 3 /* Voltage */ implies
        self.PossibleStates->forAll( s |
            Set {"Bad", "Good", "Unknown" }->contains(s)) and
    self.SensorType = 4 /* Current */ implies
        self.PossibleStates->forAll( s |
            Set {"Bad", "Good", "Unknown" }->contains(s)) and
    self.SensorType = 5 /* Tachometer */ implies
        self.PossibleStates->forAll( s |
            Set {"Bad", "Good", "Unknown" }->contains(s)) and
    self.SensorType = 7 /* Switch */ implies
        self.PossibleStates->forAll( s |
            Set {"Closed", "Open", "Unknown" }->contains(s)) and
    self.SensorType = 8 /* Lock */ implies
        self.PossibleStates->forAll( s |
            Set {"Locked", "Unlocked", "Unknown" }->contains(s)) and
    self.SensorType = 9 /* Humidity */ implies
        self.PossibleStates->forAll( s |
            Set {"Humid", "Normal", "Unknown" }->contains(s)) and
    self.SensorType = 10 /* Smoke Detection */ implies
        self.PossibleStates->forAll( s |
            Set {"Smokey", "Normal", "Unknown" }->contains(s)) and
    self.SensorType = 11 /* Presence */ implies
        self.PossibleStates->forAll( s |
            Set {"Not Present", "Present", "Unknown" }->contains(s)) and
    self.SensorType = 12 /* Air Flow */ implies
        self.PossibleStates->forAll( s |
            Set {"Bad", "Good", "Unknown" }->contains(s)) and
    self.SensorType = 13 /* Power Consumption */ implies
        self.PossibleStates->forAll( s |
            Set {"Bad", "Good", "Unknown" }->contains(s)) and
    self.SensorType = 14 /* Power Production */ implies
        self.PossibleStates->forAll( s |
            Set {"Bad", "Good", "Unknown" }->contains(s)) and
    self.SensorType = 15 /* Pressure */ implies
        self.PossibleStates->forAll( s |
            Set {"Bad", "Good", "Unknown" }->contains(s))

### Adaptation: NumericSensor: CIM_NumericSensor

#### General

This adaptation models analog sensors.

The implementation type of this adaptation is instantiated ordinary adaptation.

The requirement level for this adaptation is mandatory.

The following table identifies the element requirements for this adaptation.

NumericSensor: Element requirements
Element | Require​ment | Description
--- | --- | ---
Base adaptations
AbstractSensor | Optional | See AbstractSensor.
Properties
BaseUnits | Mandatory | See schema definition.
UnitModifier | Mandatory | See schema definition.
RateUnits | Mandatory | See schema definition.
CurrentReading | Mandatory | See schema definition.
LowerThresholdNonCritical | Conditional | See subclause "Property: LowerThresholdNonCritical".
UpperThresholdNonCritical | Conditional | See subclause "Property: UpperThresholdNonCritical".
LowerThresholdCritical | Conditional | See subclause "Property: LowerThresholdCritical".
UpperThresholdCritical | Conditional | See subclause "Property: UpperThresholdCritical".
LowerThresholdFatal | Conditional | See subclause "Property: LowerThresholdFatal".
UpperThresholdFatal | Conditional | See subclause "Property: UpperThresholdFatal".
SupportedThresholds | Mandatory | See subclause "Property: SupportedThresholds".
SettableThresholds | Mandatory | See subclause "Property: SettableThresholds".
CurrentState | Mandatory | See subclause "Property: CurrentState".
PossibleStates | Mandatory | See subclause "Property: PossibleStates".
Methods
RestoreDefaultThresholds( ) | Conditional | See subclause "Method: RestoreDefaultThresholds( )".
Operations
ModifyInstance( ) | Conditional | See subclause "Operation: ModifyInstance( )".

#### Property: LowerThresholdNonCritical

The presentation requirement level for this property is conditional, with the following condition:

The LowerThresholdNonCriticalSupported feature is implemented.

The modification requirement level for this property is conditional, with the following condition:

The LowerThresholdNonCriticalSettable feature is implemented.

#### Property: UpperThresholdNonCritical

The presentation requirement level for this property is conditional, with the following condition:

The UpperThresholdNonCriticalSupported feature is implemented.

The modification requirement level for this property is conditional, with the following condition:

The UpperThresholdNonCriticalSettable feature is implemented.

#### Property: LowerThresholdCritical

The presentation requirement level for this property is conditional, with the following condition:

The LowerThresholdCriticalSupported feature is implemented.

The modification requirement level for this property is conditional, with the following condition:

The LowerThresholdCriticalSettable feature is implemented.

#### Property: UpperThresholdCritical

The presentation requirement level for this property is conditional, with the following condition:

The UpperThresholdCriticalSupported feature is implemented.

The modification requirement level for this property is conditional, with the following condition:

The UpperThresholdCriticalSettable feature is implemented.

#### Property: LowerThresholdFatal

The presentation requirement level for this property is conditional, with the following condition:

The LowerThresholdFatalSupported feature is implemented.

The modification requirement level for this property is conditional, with the following condition:

The LowerThresholdFatalSettable feature is implemented.

#### Property: UpperThresholdFatal

The presentation requirement level for this property is conditional, with the following condition:

The UpperThresholdFatalSupported feature is implemented.

The modification requirement level for this property is conditional, with the following condition:

The UpperThresholdFatalSettable feature is implemented.

#### Property: SupportedThresholds

The presentation requirement level for this property is mandatory.

The set of array entry values shall represent the set of thresholds that are implemented. If no thresholds are implemented, the array shall be empty.

#### Property: SettableThresholds

The presentation requirement level for this property is mandatory.

The set of array entry values shall represent the set of implemented thresholds that are modifiable.

If no thresholds are modifiable, the array shall be empty. The set of array entry values shall be a subset of the set of array entry values in the SupportedThresholds property.

#### Property: CurrentState

The presentation requirement level for this property is mandatory.

The implementation shall satisfy the following constraint for this property:

OCL constraint with context of a NumericSensor instance:

    inv: self.PossibleStates->contains(self.CurrentState)

#### Property: PossibleStates

The presentation requirement level for this property is mandatory.

The set of array entry values of this array property shall represent the set of allowable values for the CurrentState property. The mapping between these values and the actual condition of the analog sensor is implementation specific.

The implementation shall satisfy the following constraint for this property:

OCL constraint with context of a NumericSensor instance:

    define commonSet : Set =
        Set { "Non-Critical", "Lower Non-Critical", "Upper Non-Critical", "Critical",
            "Lower Critical", "Upper Critical", "Fatal", "Lower Fatal", "Upper Fatal",
            "Normal", "Unknown" }
    inv:
    self.SensorType = 3 /* Voltage */ implies
        self.PossibleStates->forAll( s | commonSet->contains(s)) and
    self.SensorType = 4 /* Current */ implies
        self.PossibleStates->forAll( s | commonSet->contains(s)) and
    self.SensorType = 5 /* Tachometer */ implies
        self.PossibleStates->forAll( s | commonSet->contains(s)) and
    self.SensorType = 9 /* Humidity */ implies
        self.PossibleStates->forAll( s | commonSet->contains(s)) and
    self.SensorType = 10 /* Smoke Detection */ implies
        self.PossibleStates->forAll( s | commonSet->contains(s)) and
    self.SensorType = 11 /* Presence */ implies
        self.PossibleStates->forAll( s | commonSet->contains(s)) and
    self.SensorType = 12 /* Air Flow */ implies
        self.PossibleStates->forAll( s | commonSet->contains(s)) and
    self.SensorType = 13 /* Power Consumption */ implies
        self.PossibleStates->forAll( s | commonSet->contains(s)) and
    self.SensorType = 14 /* Power Production */ implies
        self.PossibleStates->forAll( s | commonSet->contains(s)) and
    self.SensorType = 15 /* Pressure */ implies
        self.PossibleStates->forAll( s | commonSet->contains(s))

#### Method: RestoreDefaultThresholds( )

The requirement level for this method is conditional, with the following condition:

At least one of the following is true:

- The LowerThresholdNonCriticalSettable feature is implemented.
- The UpperThresholdNonCriticalSettable feature is implemented.
- The LowerThresholdCriticalSettable feature is implemented.
- The UpperThresholdCriticalSettable feature is implemented.
- The LowerThresholdFatalSettable feature is implemented.
- The UpperThresholdFatalSettable feature is implemented.

Successful execution of this method shall reset the values of the thresholds of the sensor represented by an instance of this adaptation to its default values.

The following table identifies the parameter and return value requirements of the method.

RestoreDefaultThresholds( ): Parameter requirements
Parameter | Description
--- | ---
ReturnValue | See subclause "Return value".

##### Return value

This method shall return one of the following return values:

RestoreDefaultThresholds: Return values
Value | Description
--- | ---
0 | The method has executed successfully.
1 | The method is not implemented.
2 | An error has occurred.

#### Operation: ModifyInstance( )

For general requirements on the implementation of this operation, see DSP0223.

The requirement level for this operation is conditional, with the following condition:

At least one of the following is true:

- The LowerThresholdNonCriticalSettable feature is implemented.
- The UpperThresholdNonCriticalSettable feature is implemented.
- The LowerThresholdCriticalSettable feature is implemented.
- The UpperThresholdCriticalSettable feature is implemented.
- The LowerThresholdFatalSettable feature is implemented.
- The UpperThresholdFatalSettable feature is implemented.

### Adaptation: SensorCapabilities: CIM_EnabledLogicalElementCapabilities

#### General

This adaptation models the capabilities of a sensor represented by the associated AbstractSensor instance, and of the implementation of that adaptation.

The implementation type of this adaptation is instantiated ordinary adaptation.

The requirement level for this adaptation is conditional, with the following condition:

At least one of the following is true:

- The SensorElementNameModification feature is implemented.
- The SensorStateManagement feature is implemented.

The following table identifies the element requirements for this adaptation.

SensorCapabilities: Element requirements
Element | Require​ment | Description
--- | --- | ---
Properties
InstanceID | Mandatory | Key, see schema definition.
RequestedStatesSupported | Mandatory | See subclause "Property: RequestedStatesSupported".
ElementNameEditSupported | Mandatory | See subclause "Property: ElementNameEditSupported".
MaxElementNameLen | Conditional | See subclause "Property: MaxElementNameLen".
Operations
GetInstance( ) | Mandatory | See DSP0223.
GetClassInstancesWithPath( ) | Mandatory | See DSP0223.
GetClassInstancePaths( ) | Mandatory | See DSP0223.
GetAssociatedInstancesWithPath( ) for ElementCapabilities | Mandatory | See DSP0223.
GetAssociatedInstancePaths( ) for ElementCapabilities | Mandatory | See DSP0223.
GetReferencingInstancesWithPath( ) for ElementCapabilities | Optional | See DSP0223.
GetReferencingInstancePaths( ) for ElementCapabilities | Optional | See DSP0223.

#### Property: RequestedStatesSupported

The presentation requirement level for this property is mandatory.

The set of array entry values of this property shall represent the set of supported requested states for the associated AbstractSensor instance.

The implementation shall satisfy the following constraint for this property:

OCL constraint with context of a SensorCapabilities instance:

    inv: if self.ElementCapabilities::ManagedElement.
        mrpIsFeatureAvailable('SensorStateManagement')
    then (
        self.RequestedStatesSupported->forAll( entry |
            Set { 2 /* Enabled */, 3 /* Disabled */, 11 /* Reset */ }->
            contains(entry))
    ) else (
        self.RequestedStatesSupported->size() = 0
    )

#### Property: ElementNameEditSupported

The presentation requirement level for this property is mandatory.

The implementation shall satisfy the following constraint for this property:

OCL constraint with context of a SensorCapabilities instance:

    inv: self.ElementCapabilities::ManagedElement.
        mrpIsFeatureAvailable('SensorElementNameModification') =
        self.ElementNameEditSupported

#### Property: MaxElementNameLen

The presentation requirement level for this property is conditional, with the following condition:

The SensorElementNameModification feature is implemented.

### Adaptation: ElementCapabilities: CIM_ElementCapabilities

#### General

This adaptation models the relationship between sensors that are represented by AbstractSensor instances and the capabilities of these sensors or their adaptation implementation that are represented by SensorCapabilities instances.

The implementation type of this adaptation is instantiated association adaptation.

The requirement level for this adaptation is conditional, with the following condition:

At least one of the following is true:

- The SensorElementNameModification feature is implemented.
- The SensorStateManagement feature is implemented.

The following table identifies the element requirements for this adaptation.

ElementCapabilities: Element requirements
Element | Require​ment | Description
--- | --- | ---
Properties
ManagedElement | Mandatory | Key, see subclause "Property: ManagedElement".
Capabilities | Mandatory | Key, see subclause "Property: Capabilities".
Operations
GetInstance( ) | Mandatory | See DSP0223.

#### Property: ManagedElement

The presentation requirement level for this property is mandatory.

The implementation shall satisfy the following constraints for this reference property:

- Referenced instances shall be of class adaptation AbstractSensor.
- The multiplicity of [1 .. *] defined in the schema is not further constrained.

#### Property: Capabilities

The presentation requirement level for this property is mandatory.

The implementation shall satisfy the following constraints for this reference property:

- Referenced instances shall be of class adaptation SensorCapabilities.
- The multiplicity of [0 .. *] defined in the schema is constrained to [0 .. 1].

### Adaptation: SensoredElement: CIM_ManagedSystemElement

This adaptation models sensored elements that are measured by sensors represented by associated AbstractSensor instances. AbstractSensor instances representing sensors that sensor the entire computer system hosting them (rather than elements within that computer system) shall not be associated that way.

The implementation type of this adaptation is abstract ordinary adaptation.

The requirement level for this abstract adaptation is left to be defined in its derived adaptations.

The following table identifies the element requirements for this adaptation.

SensoredElement: Element requirements
Element | Require​ment | Description
--- | --- | ---
Operations
GetAssociatedInstancesWithPath( ) for AssociatedSensor | Mandatory | See DSP0223.
GetAssociatedInstancePaths( ) for AssociatedSensor | Mandatory | See DSP0223.
GetReferencingInstancesWithPath( ) for AssociatedSensor | Mandatory | See DSP0223.
GetReferencingInstancePaths( ) for AssociatedSensor | Mandatory | See DSP0223.

### Adaptation: AssociatedSensor: CIM_AssociatedSensor

#### General

This adaptation models the relationship between sensors that are represented by AbstractSensor instances and the sensored elements measured by these sensors that are represented by SensoredElement instances.

The implementation type of this adaptation is instantiated association adaptation.

The requirement level for this adaptation is mandatory.

The following table identifies the element requirements for this adaptation.

AssociatedSensor: Element requirements
Element | Require​ment | Description
--- | --- | ---
Properties
Antecedent | Mandatory | Key, see subclause "Property: Antecedent".
Dependent | Mandatory | Key, see subclause "Property: Dependent".
Operations
GetInstance( ) | Mandatory | See DSP0223.

#### Property: Antecedent

The presentation requirement level for this property is mandatory.

The implementation shall satisfy the following constraints for this reference property:

- Referenced instances shall be of class adaptation AbstractSensor.
- The multiplicity of [0 .. *] defined in the schema is constrained to [1 .. *].

#### Property: Dependent

The presentation requirement level for this property is mandatory.

The implementation shall satisfy the following constraints for this reference property:

- Referenced instances shall be of class adaptation SensoredElement.
- The multiplicity of [0 .. *] defined in the schema is not further constrained.

# Use cases and state descriptions

## State description: SimpleObjectDiagram

The following figure shows a simple object diagram that represents a scenario that conforms to the requirements of this profile. In that scenario, there is one sensored element that is a fan, represented by an instance of CIM_Fan in the role of the SensoredElement adaptation. That fan has two sensors, a discrete sensor represented by the DiscreteSensor instance presencesensor1, and an analog sensor represented by the NumericSensor instance ntachsensor1. Both instances are associated with the SensoredElement instance through AssociatedSensor instances.

Based on the value 11 (Presence) of the SensorType property of the DiscreteSensor instance presencesensor1, the sensor represented by that instance is a presence sensor for the fan. In this implementation, only the values “Present” and “Not Present” are supported for the PossibleStates property.

Based on the value 5 (Tachometer) of the SensorType property of the NumericSensor instance ntachsensor1, the sensor represented by that instance is a speed sensor for the fan that provides numeric reading of the fan speed. Based on the value of the BaseUnits property (value 19 = RPM), and the RateUnits property showing no additional units, the fan speed is represented in RPM units. The CurrentReading property in this scenario has a value of 35, which is multiplied by the unit modifier represented by the UnitModifier property (value 2, so the actual multiplier is 10^2), to calculate the fan speed of 3500 RPM.

Simple object diagram

## Use case: ShowAllSensorStates

This use case describes the flow to obtain the current state of all sensored elements in a computer system, possibly including the computer system itself.

This use case has the following preconditions:

- A ComputerSystem instance is known.

The main flow for this use case consists of the following sequence of steps:

- Invoke the GetAssociatedInstancesWithPath( ) for SystemDevice operation on that ComputerSystem instance. This will retrieve all DiscreteSensor and NumericSensor instances representing sensors that are hosted by the computer system represented by that ComputerSystem instance.
- Iterate through these retrieved instances and inspect their DiscreteSensor. CurrentState and NumericSensor. CurrentState property values, which will represent the states of their sensored elements.

## Use case: FindSensorsOfSystemElement

This use case describes the flow to find the sensors for a given sensored element in a computer system.

This use case has the following preconditions:

- A SensoredElement instance is known.

The main flow for this use case consists of the following single step:

- Invoke the GetAssociatedInstancesWithPath( ) for AssociatedSensor operation on that SensoredElement instance. This will retrieve all DiscreteSensor and NumericSensor instances representing sensors that measure the sensored element represented by that SensoredElement instance.

## Use case: ChangeThreshold

This use case describes the flow to change the upper non-critical threshold of a given analog sensor.

This use case has the following preconditions:

- A NumericSensor instance is known.

The main flow for this use case consists of the following sequence of steps:

- Invoke the GetInstance( ) operation on that NumericSensor instance. This step may be skipped if the instance has been retrieved by other means already.
- Determine whether the SettableThresholds property in that instance contains an array entry value of 1 (UpperThresholdNonCritical).

- If so, the threshold may be changed. Change the threshold by invoking the ModifyInstance( ) operation on that NumericSensor instance, including the new value for the UpperThresholdNonCritical property in the modified instance.

  Otherwise, the threshold cannot be changed.

## Use case: ResetThresholds

This use case describes the flow to reset the thresholds of a given analog sensor.

This use case has the following preconditions:

- A NumericSensor instance is known.

The main flow for this use case consists of the following single step:

- Invoke the RestoreDefaultThresholds( ) method on that NumericSensor instance.

## Use case: DetermineElementNameModifiability

This use case describes the flow to determine whether the ElementName property of a given sensor can be modified.

This use case has the following preconditions:

- A DiscreteSensor or NumericSensor instance is known.

The main flow for this use case consists of the following sequence of steps:

- Retrieve the associated SensorCapabilities instance as follows:
  - Invoke the GetAssociatedInstancesWithPath( ) for ElementCapabilities operation on that DiscreteSensor or NumericSensor instance.

- Inspect the value of the ElementNameEditSupported property of that SensorCapabilities instance.

  If that value is TRUE, the client can modify the ElementName property of the given DiscreteSensor or NumericSensor instance.

## Use case: DetermineStateManagementSupport

This use case describes the flow to determine whether state management (i.e. the SensorStateManagement feature) is supported for a given sensor.

This use case has the following preconditions:

- A DiscreteSensor or NumericSensor instance is known.

The main flow for this use case consists of the following sequence of steps:

- Retrieve the associated SensorCapabilities instance as follows:
  - Invoke the GetAssociatedInstancesWithPath( ) for ElementCapabilities operation on that DiscreteSensor or NumericSensor instance.

- Inspect the value of the RequestedStatesSupported array property of that SensorCapabilities instance.

  If the array property contains at least one array entry, state management is supported for the sensor represented by the given DiscreteSensor or NumericSensor instance.

#
(informative)
Change log

Change log
Version | Date | Description
--- | --- | ---
1.0.0c | 2006-05-16 | DSP1009: Released as Preliminary Standard
1.0.0 | 2007-11-06 | DSP1009: Released as Final Standard
1.0.1 | 2008-09-25 | DSP1009: Released as DMTF Standard
1.0.2 | 2009-10-28 | DSP1009: Released as DMTF Standard, with the following changes: Changed the values for the EnabledState property
1.0.3m | 2011-08-31 | XMP1009: Included as a sample profile into DSP2023

# Bibliography

The following documents may provide additional background.

DMTF DSP1000, Management Profile Specification Template 1.1,
http://www.dmtf.org/standards/published_documents/DSP1000_1.1.pdf