internal ControllerImpl(LoadedBSP.LoadedDebugMethod method,
                                    IBSPConfiguratorHost host,
                                    RedLinkDebugController debugController,
                                    object control)
            {
                _Method      = method;
                _Host        = host;
                TypeProvider = debugController;

                Control = control;

                ResetMode = new DerivedSetting(this, "--reset=", RedLinkServerCommandLine.SettingMode.Prefix, "SYSRESETREQ/system", "VECTRESET/core", "Software/soft");;;
                Interface = new DerivedSetting(this, "--wire", RedLinkServerCommandLine.SettingMode.Separated, "SWD/swd", "JTAG/jtag");
                Core      = new DerivedSetting(this, RedLinkServerCommandLine.CoreIndex, RedLinkServerCommandLine.SettingMode.Prefix)
                {
                    LoadChoices = GetAvailableCores
                };

                SetConfiguration(null, default);
            }
        internal RedLinkSettingsControl(LoadedBSP.LoadedDebugMethod method, IBSPConfiguratorHost host, RedLinkDebugController debugController)
        {
            host.InstallStyles(this);

            Controller = new ControllerImpl(method, host, debugController, this);
            InitializeComponent();

            host.MakeSearchableComboBox(DeviceComboBox, (i, f) => Controller.FilterItem(i, f), Resources["deviceScriptSelectionControl"]);

            _ServerCheckTimer = new DispatcherTimer(TimeSpan.FromMilliseconds(500), DispatcherPriority.Normal, (s, e) => Controller.UpdateServerStatus(), Dispatcher)
            {
                IsEnabled = false
            };
            Loaded           += (s, e) => _ServerCheckTimer.IsEnabled = true;
            Unloaded         += (s, e) => _ServerCheckTimer.IsEnabled = false;
            IsVisibleChanged += (s, e) => _ServerCheckTimer.IsEnabled = IsVisible;
        }