|
Top Previous Next |
The IVI Foundation uses the term instrument class to refer to a distinct set of functionality for a canonical instrument type. Although there are many different types of instruments used in test and measurement and their functionality varies considerably, many of these instruments naturally fall into distinct categories, or types. Often these instruments are categorized based upon the type of measurements they can perform or the type of output they can produce. For each instrument class, the IVI Foundation publishes a specification, known as the class specification. Each class specification lays out the requirements for compliance with that class specification. An IVI driver that complies with a class specification is said to be a class-compliant IVI driver. The primary purpose of an IVI class specification is to detail the set of functions and attributes that an IVI driver must support in order to be class-compliant. The class specification carefully prescribes the exact name of each function, along with the parameter list and the API hierarchy, as well as other behavior details. Currently, the IVI Foundation has defined and approved specifications for twelve instrument classes. These specifications are available from the IVI Foundation. •IVI-4.1: IviScope Class Specification •IVI-4.2: IviDmm Class Specification •IVI-4.3: IviFgen Class Specification •IVI-4.4: IviDCPwr Class Specification •IVI-4.5: IviACPwr Class Specification •IVI-4.6: IviSwtch Class Specification •IVI-4.7: IviPwrMeter Class Specification •IVI-4.8: IviSpecAn Class Specification •IVI-4.10: IviRFSigGen Class Specification •IVI-4.12: IviCounter Class Specification •IVI-4.13: IviDownconverter Class Specification •IVI-4.14: IviUpconverter Class Specification •IVI-4.15: IviDigitizer Class Specification
|
|
It is crucial to understand that IVI-C class drivers are not shipped as part of the IVI Shared Components. Rather, class drivers must be obtained from a 3rd party vendor. Furthermore, IVI-C interchangeability does not extend to interchanging class drivers. Specifically, a client application built using class drivers from Vendor A must be modified, re-compiled, and re-linked if it is to use class drivers from Vendor B. |
The class driver exposes the functions defined in a particular IVI instrument class. All of the class driver functions have generic names, so that client applications have no driver-specific references. For example, rather than naming a function "ag34401_Configure", which is obviously device-specific, the class driver will expose the function with the name "IviDmm_Configure".
IVI-C client applications link to the class driver and call into the class driver's Initialize function providing a logical name. This logical name is the same as that described for IVI-COM drivers above. Specifically, the logical name identifies a specific IVI-C driver that the class driver should load. Once the specific driver is loaded, subsequent function calls on the class driver are delegated to the corresponding function in the specific driver. In this way, IVI-C client applications can be written generically against a class driver and incorporate new specific drivers without modification.
Each IVI class specification partitions IVI-defined functionality into two groups -- base capabilities and extension groups.
The Base Capabilities group contains functionality that all IVI drivers must implement if they wish to claim conformance with the instrument class in question. Typically, the Base Capabilities group represents the "least common denominator" of functionality for an instrument class, so most commercial instruments can be expected to support this level of capability.
As an example, the IviDmm Base Capabilities group contains functions for range, resolution, and triggering. Most commercial DMMs possess at least these capabilities, so any IVI driver that wishes to claim IviDmm-compliance must support this group of functionality.
IVI uses Extension Groups to define functionality that is found in many instruments of a particular class but may not be as common as the functionality expressed in the Base Capabilities. One may think of Extension Groups as being standard definitions for "optional" functionality in an IVI driver.
Extension Groups provide a means for more advanced intruments to expose functionality in an interchangeable fashion, while still allowing simpler instruments to be class-compliant. For instance, not all DMMs have the ability to perform temperature measurements. Thus, the IviDmm class specification uses the IviDmmTemperature Extension Group to define temperature measurement capabilities.
Simply put, an Extension Group is making the statement to the driver developer, "You do not have to provide these capabilities in your IVI driver, but if you do, you must do it according to the IVI definition." An IVI driver can be class-compliant without supporting any of the extension groups in its instrument class. All IVI drivers expose a GroupCapabilities attribute that returns a comma-separated list of the extension groups supported by the driver. Using this attribute, client applications and tools can programmatically determine what optional functionality is present in an IVI driver.