Component Setting
Global and Grouped Settings
In addition to the settings defined for test steps, DUTs, and instruments, there are several "built in" settings collections. These can be divided into two categories: Global and Grouped.
- Global settings are shown under the Settings menu. At a minimum, you will find settings for the Engine, Editor, and Results.
- Grouped settings are applicable to a particular configuration profile and are shown under the Settings > GroupName menu. The Bench settings (shown under the Settings > Bench menu) is an example of grouped settings.
Creating a New Global/Grouped Settings Dialog
OpenTAP developers can create their own settings dialogs under the Settings or Settings > GroupName menus. By default, the dialog appears under the Settings menu. If the class is decorated with the [SettingsGroup("GroupName")]
attribute, the dialog will appear under the Settings > GroupName menu. It is also possible to extend the bench settings by decorating a class with the [SettingsGroup("Bench")]
attribute.
Single Instance of Multiple Different Settings
If you want to create a dialog consisting of multiple settings, you should inherit from the ComponentSettings class. See the TAP_PATH\Packages\SDK\Examples\PluginDevelopment\GUI\ExampleSettings.cs
file. The result looks like this:
List of Similar Settings
Suppose you are trying to list several objects that are slightly different but share a common base class. This is similar to what is used in the DUT or Instrument settings dialog. To do so, you should inherit from the ComponentSettingsList class. See the CustomBenchSettings.cs file. The results (with several instances created), are shown below:
Reading and Writing Component Settings
The SettingsRetrieval.cs file demonstrates different approaches for reading component settings, as shown in the code below:
[Display("Settings Retrieval", Groups: new[] { "Examples", "Feature Library", "Step Execution" }, Order: 10000, Description: "Shows how to retrieve settings.")]
public class SettingsRetrieval : TestStep
{
public override void Run()
{
// These settings always exist
Log.Info("Component Settings directory={0}", ComponentSettings.SettingsDirectoryRoot);
Log.Info("Session log Path={0}", EngineSettings.Current.SessionLogPath);
Log.Info("Result Listener Count={0}", ResultSettings.Current.Count);
if (DutSettings.Current.Count > 0)
{
string s = DutSettings.GetDefaultOf<Dut>().Name;
Log.Info("The first dut found has a name of {0}", s);
}
if (InstrumentSettings.Current.Count > 0)
{
string s = InstrumentSettings.GetDefaultOf<Instrument>().Name;
Log.Info("The first instrument found has a name of {0}", s);
}
// An example of user defined settings, which show up as individual tabs
// Default values will be used, if none exist.
Log.Info("DifferentSettings as string={0}", ExampleSettings.Current.ToString());
// An example of custom Bench settings.
// This is similar to the DUT or Instrument editors.
// Only use the values if something exists.
if (CustomBenchSettingsList.Current.Count > 0)
{
Log.Info("Custom Bench Settings List Count={0}", CustomBenchSettingsList.Current.Count);
Log.Info("First instance of Custom Bench setting as string={0}",
CustomBenchSettingsList.GetDefaultOf<CustomBenchSettings>());
foreach (var customBenchSetting in CustomBenchSettingsList.Current)
{
Log.Info("Type={0} Time={1} MyProperty={2}", customBenchSetting.GetType(),
customBenchSetting.MyTime, customBenchSetting.MyProperty);
}
}
}
}
Connection Management
An OpenTAP connection represents a physical connection between Instrument and/or DUT ports. A physical connection is modeled in software by creating a class that extends the OpenTap.Connection abstract base class.
A port is the endpoint of a connection. Ports are often defined on Instruments or DUTs to represent physical connectors. An instrument or DUT can have an arbitrary number of ports.
OpenTAP comes with a number of predefined connections. These include:
- RfConnection, which extends the OpenTAP.Connection class, consists of two ports (inherited from the OpenTAP.Connection), and adds the concept of CableLoss, which is a list of LossPoints. An RfConnection represents a physical RF cable with known loss characteristics by using the list of loss points to represent the cable loss at different frequencies.
- DirectionalRfConnection, which extends the RfConnection class to include direction.
For more information, see the Bench Settings - Connections topic in the GUI Editor help, or contact support.