chr
2026-04-05 fe750b791d5b517cc4e9bc8e99a9a75139a0cfba
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//Copyright 2012-2019 Keysight Technologies
//
//Licensed under the Apache License, Version 2.0 (the "License");
//you may not use this file except in compliance with the License.
//You may obtain a copy of the License at
//
//http://www.apache.org/licenses/LICENSE-2.0
//
//Unless required by applicable law or agreed to in writing, software
//distributed under the License is distributed on an "AS IS" BASIS,
//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//See the License for the specific language governing permissions and
//limitations under the License.
using OpenTap;
 
namespace OpenTap.Plugins.PluginDevelopment
{
    // Below shows how to access all TAP and custom Component Settings that are defined. 
    // On top of what is shown, the generic ComponentSettings<Type> can always be used.
    [Display("Accessing Component Settings", Groups: new[] { "Examples", "Plugin Development", "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);
 
            // DUT Setting can be used to find a specific DUT is the default is not desired.
            if (DutSettings.Current.Count > 0)
            {
                string s = DutSettings.GetDefaultOf<Dut>().Name;
                Log.Info("The first DUT found has a name of {0}", s);
            }
 
            // Similar to DutSettings, can be used to find Instruments other than the default.
            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.
            // Defined in ExampleSettings.cs
            Log.Info("DifferentSettings as string={0}", ExampleSettings.Current.ToString());
            Log.Info("DifferentSettings comment={0}", ExampleSettings.Current.MyComment);
 
            // 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);
                }
            }
        }
    }
}