From f6a8f3e8990868a57f2640f0ace2fd12dfe1fbed Mon Sep 17 00:00:00 2001 From: hzhang Date: Sat, 13 Jul 2024 09:29:45 +0100 Subject: [PATCH] To net8.0 --- Boards/BaseBoard.cs | 7 ------- Boards/PrimaryModuleBoard.cs | 18 ++++++------------ Enigmos.csproj | 2 +- Manual/ModuleManual.cs | 1 - Manual/ModulePolymorphismTab.cs | 5 +---- Manual/PortTypeSelector.cs | 4 ++-- Manual/ProgrammableModuleSettingTab.cs | 1 - .../Binary/AdditionModule.cs | 1 - .../Binary/ComparisionModule.cs | 4 ++-- .../Binary/DivisionModule.cs | 1 - .../Binary/DotProductModule.cs | 1 - .../Binary/MultiplicationModule.cs | 1 - .../ComputationalModules/Binary/PowerModule.cs | 1 - .../Binary/ScalarDivisionModule.cs | 1 - .../Binary/ScalarMultiplicationModule.cs | 1 - .../Binary/SubtractionModule.cs | 1 - .../ComputationalModules/Binary/V2Module.cs | 5 ++--- .../ComputationalModules/Unary/SquareModule.cs | 1 - .../Unary/V2ComponentModule.cs | 1 - .../ActionModules/AttackActionModule.cs | 4 ++-- Modules/ControllingModules/RootModule.cs | 1 - .../SinglePoleDoubleThrowSwitchModule.cs | 7 ++----- .../InterlayerSignalInModule.cs | 8 ++++---- .../ProgrammableModules/ProgrammableModule.cs | 1 - Modules/TerminalModules/EngineModule.cs | 3 +-- .../TestingModules/R2ReaderModule.cs | 4 ++-- Ports/BasePort.cs | 13 ++++++++++--- Ports/DataPorts/DataOutPort.cs | 4 ++++ Ports/DataPorts/DataPort.cs | 6 ++++-- Ports/SignalPorts/SignalOutPort.cs | 11 ++++++----- Ports/SignalPorts/SignalPort.cs | 6 ++++-- 31 files changed, 53 insertions(+), 72 deletions(-) diff --git a/Boards/BaseBoard.cs b/Boards/BaseBoard.cs index 258d628..6a8b998 100644 --- a/Boards/BaseBoard.cs +++ b/Boards/BaseBoard.cs @@ -3,7 +3,6 @@ using Enigmos.Cables; using Enigmos.Modules; using Enigmos.Modules.ProgrammableModules; using Godot; -using Nocturnis.DataStructures; using Nocturnis.Enigmos.Boards; using Nocturnis.Enigmos.Cables; using Nocturnis.Enigmos.Modules; @@ -93,12 +92,6 @@ public abstract partial class BaseBoard : Panel, IBaseBoard CircuitBoardControlLayer.Board = this; } - public override void _Ready() - { - base._Ready(); - - } - protected virtual void AddModule(IBaseModule module, Vector2 pos) { module.Board = this; diff --git a/Boards/PrimaryModuleBoard.cs b/Boards/PrimaryModuleBoard.cs index b8aa613..8411353 100644 --- a/Boards/PrimaryModuleBoard.cs +++ b/Boards/PrimaryModuleBoard.cs @@ -1,17 +1,18 @@ using Enigmos.Modules.ControllingModules; using Enigmos.Modules.TerminalModules; using Nocturnis.Creatures; +using Nocturnis.Enigmos.Boards; using Nocturnis.Enigmos.Modules; using Nocturnis.GlobalManagement.Constants; using Nocturnis.GlobalManagement.Controls; namespace Enigmos.Boards; -public partial class PrimaryModuleBoard : BaseBoard +public partial class PrimaryModuleBoard : BaseBoard, IPrimaryBoard { - private IBaseCreature? ManagedBy { get; set; } - public IRootModule? Root { get; set; } - public EngineModule? Engine { get; set; } + private IBaseCreature ManagedBy { get; set; } + public IRootModule Root { get; set; } + public IEngineModule Engine { get; set; } public void Init(IBaseCreature manager) @@ -29,7 +30,7 @@ public partial class PrimaryModuleBoard : BaseBoard if (!Root!.ActionFinished) return; //Root.Timer = Stopwatch.StartNew(); - Engine!.Drain(); + Engine!.Consume(); if (EnigmosControl.Instance.Energy < EnigmosConstant.IdlePower) { Root!.ActionFinished = true; @@ -38,15 +39,8 @@ public partial class PrimaryModuleBoard : BaseBoard } Root.Start(); foreach (ITerminalModule tm in TerminalModules) - { tm.Consume(); - } - - //Root.RouteWithTimeoutHandle(Root); - //Root.Timer.Reset(); - //foreach (TerminalModule module in TerminalModules()) - // module.ConsumeWithTimeoutHandle(Root); } } \ No newline at end of file diff --git a/Enigmos.csproj b/Enigmos.csproj index f2c3070..55aeda0 100644 --- a/Enigmos.csproj +++ b/Enigmos.csproj @@ -1,7 +1,7 @@ - net6.0 + net8.0 enable disable false diff --git a/Manual/ModuleManual.cs b/Manual/ModuleManual.cs index d5bf4b8..8a9e6a2 100644 --- a/Manual/ModuleManual.cs +++ b/Manual/ModuleManual.cs @@ -1,4 +1,3 @@ -using Enigmos.Modules.ProgrammableModules; using Godot; using Nocturnis; using Nocturnis.Enigmos.ModuleManuals; diff --git a/Manual/ModulePolymorphismTab.cs b/Manual/ModulePolymorphismTab.cs index 188ab26..c0065c0 100644 --- a/Manual/ModulePolymorphismTab.cs +++ b/Manual/ModulePolymorphismTab.cs @@ -28,10 +28,7 @@ public partial class ModulePolymorphismTab : Panel, IModuleManualTab, ISceneConc PortGroups = GetNode("ScrolledItems/PortGroups"); foreach (IDataPortGroup group in Module.ConfigurablePortGroups) { - PortTypeSelector selector = GlobalProvider - .AssetMapper.Scene - .Instantiate(); - selector.Init(group); + PortTypeSelector selector = GlobalProvider.ProcessProvider.BuildPortTypeSelector(group) as PortTypeSelector; PortGroups.AddChild(selector); } Name = "Poly"; diff --git a/Manual/PortTypeSelector.cs b/Manual/PortTypeSelector.cs index 8eb1b7f..89c1084 100644 --- a/Manual/PortTypeSelector.cs +++ b/Manual/PortTypeSelector.cs @@ -1,12 +1,12 @@ using Godot; using Nocturnis; using Nocturnis.DataStructures.DataPortGroups; -using Nocturnis.DataStructures.DataTypes; +using Nocturnis.Enigmos.ModuleManuals; using Nocturnis.GlobalManagement.Providers; namespace Enigmos.Manual; -public partial class PortTypeSelector : Control, ISceneConcept +public partial class PortTypeSelector : Control, ISceneConcept, IPortTypeSelector { private bool InitFlag { get; set; } diff --git a/Manual/ProgrammableModuleSettingTab.cs b/Manual/ProgrammableModuleSettingTab.cs index fd86bcb..f1228be 100644 --- a/Manual/ProgrammableModuleSettingTab.cs +++ b/Manual/ProgrammableModuleSettingTab.cs @@ -1,4 +1,3 @@ -using Enigmos.Modules.ProgrammableModules; using Godot; using Nocturnis; using Nocturnis.Enigmos.ModuleManuals; diff --git a/Modules/ComputationalModules/Binary/AdditionModule.cs b/Modules/ComputationalModules/Binary/AdditionModule.cs index 219702c..d54c044 100644 --- a/Modules/ComputationalModules/Binary/AdditionModule.cs +++ b/Modules/ComputationalModules/Binary/AdditionModule.cs @@ -1,4 +1,3 @@ -using Godot; using Nocturnis.DataStructures.DataPortGroups; using Nocturnis.DataStructures.DataTypes; using Nocturnis.Enigmos.Modules; diff --git a/Modules/ComputationalModules/Binary/ComparisionModule.cs b/Modules/ComputationalModules/Binary/ComparisionModule.cs index 850ea09..92855d2 100644 --- a/Modules/ComputationalModules/Binary/ComparisionModule.cs +++ b/Modules/ComputationalModules/Binary/ComparisionModule.cs @@ -11,7 +11,7 @@ public abstract partial class ComparisionModule : BinaryComputationalModule, IDuplicateOutputModule, IOperationModule { - private IBoolParameter? Greater { get; set; } + private IBoolParameter Greater { get; set; } public HashSet ConfigurableParameters { get; set; } = new(); public override void Init() @@ -21,7 +21,7 @@ public abstract partial class ComparisionModule : BinaryComputationalModule, this.SetInputType(DataTypeConstant.BaseDataTypes.Real); this.SetOutputType(DataTypeConstant.BaseDataTypes.Real); Greater = GlobalProvider.DataStructureProvider!.NewBoolParameter("Method", "gt", "lt", true); - ConfigurableParameters = new HashSet() { Greater }; + ConfigurableParameters = new HashSet { Greater }; PostInit(); } diff --git a/Modules/ComputationalModules/Binary/DivisionModule.cs b/Modules/ComputationalModules/Binary/DivisionModule.cs index f821940..b076ed8 100644 --- a/Modules/ComputationalModules/Binary/DivisionModule.cs +++ b/Modules/ComputationalModules/Binary/DivisionModule.cs @@ -1,4 +1,3 @@ -using Godot; using Nocturnis.DataStructures.DataPortGroups; using Nocturnis.DataStructures.DataTypes; using Nocturnis.Enigmos.Modules; diff --git a/Modules/ComputationalModules/Binary/DotProductModule.cs b/Modules/ComputationalModules/Binary/DotProductModule.cs index 0f61c08..cd4a93e 100644 --- a/Modules/ComputationalModules/Binary/DotProductModule.cs +++ b/Modules/ComputationalModules/Binary/DotProductModule.cs @@ -1,4 +1,3 @@ -using Godot; using Nocturnis.DataStructures.DataPortGroups; using Nocturnis.DataStructures.DataTypes; using Nocturnis.Enigmos.Modules; diff --git a/Modules/ComputationalModules/Binary/MultiplicationModule.cs b/Modules/ComputationalModules/Binary/MultiplicationModule.cs index a7f7030..1233ab8 100644 --- a/Modules/ComputationalModules/Binary/MultiplicationModule.cs +++ b/Modules/ComputationalModules/Binary/MultiplicationModule.cs @@ -1,4 +1,3 @@ -using Godot; using Nocturnis.DataStructures.DataPortGroups; using Nocturnis.DataStructures.DataTypes; using Nocturnis.Enigmos.Modules; diff --git a/Modules/ComputationalModules/Binary/PowerModule.cs b/Modules/ComputationalModules/Binary/PowerModule.cs index b0e17af..a5ec670 100644 --- a/Modules/ComputationalModules/Binary/PowerModule.cs +++ b/Modules/ComputationalModules/Binary/PowerModule.cs @@ -1,4 +1,3 @@ -using Godot; using Nocturnis.DataStructures.DataPortGroups; using Nocturnis.DataStructures.DataTypes; using Nocturnis.Enigmos.Modules; diff --git a/Modules/ComputationalModules/Binary/ScalarDivisionModule.cs b/Modules/ComputationalModules/Binary/ScalarDivisionModule.cs index 20ebafb..04ebcb0 100644 --- a/Modules/ComputationalModules/Binary/ScalarDivisionModule.cs +++ b/Modules/ComputationalModules/Binary/ScalarDivisionModule.cs @@ -1,4 +1,3 @@ -using Godot; using Nocturnis.DataStructures.DataPortGroups; using Nocturnis.DataStructures.DataTypes; using Nocturnis.Enigmos.Modules; diff --git a/Modules/ComputationalModules/Binary/ScalarMultiplicationModule.cs b/Modules/ComputationalModules/Binary/ScalarMultiplicationModule.cs index c3c8340..2ad0360 100644 --- a/Modules/ComputationalModules/Binary/ScalarMultiplicationModule.cs +++ b/Modules/ComputationalModules/Binary/ScalarMultiplicationModule.cs @@ -1,4 +1,3 @@ -using Godot; using Nocturnis.DataStructures.DataPortGroups; using Nocturnis.DataStructures.DataTypes; using Nocturnis.Enigmos.Modules; diff --git a/Modules/ComputationalModules/Binary/SubtractionModule.cs b/Modules/ComputationalModules/Binary/SubtractionModule.cs index 84cc66f..16cfc73 100644 --- a/Modules/ComputationalModules/Binary/SubtractionModule.cs +++ b/Modules/ComputationalModules/Binary/SubtractionModule.cs @@ -1,4 +1,3 @@ -using Godot; using Nocturnis.DataStructures.DataPortGroups; using Nocturnis.DataStructures.DataTypes; using Nocturnis.Enigmos.Modules; diff --git a/Modules/ComputationalModules/Binary/V2Module.cs b/Modules/ComputationalModules/Binary/V2Module.cs index 522ef99..21a9a1c 100644 --- a/Modules/ComputationalModules/Binary/V2Module.cs +++ b/Modules/ComputationalModules/Binary/V2Module.cs @@ -1,4 +1,3 @@ -using Godot; using Nocturnis.DataStructures.Data; using Nocturnis.DataStructures.DataPortGroups; using Nocturnis.DataStructures.DataTypes; @@ -16,8 +15,8 @@ public abstract partial class V2Module : BinaryComputationalModule, IPolymorphismModule, IDuplicateOutputModule { - private IDataPortGroup? ScalarInputGroup { get; set; } - private IDataPortGroup? OutputGroup { get; set; } + private IDataPortGroup ScalarInputGroup { get; set; } + private IDataPortGroup OutputGroup { get; set; } public override double MaintenanceAlpha => 0.77852142d; public override double MaintenanceBeta => 0.9544432d; diff --git a/Modules/ComputationalModules/Unary/SquareModule.cs b/Modules/ComputationalModules/Unary/SquareModule.cs index defd2a8..9d7e818 100644 --- a/Modules/ComputationalModules/Unary/SquareModule.cs +++ b/Modules/ComputationalModules/Unary/SquareModule.cs @@ -1,4 +1,3 @@ -using Godot; using Nocturnis.DataStructures.DataPortGroups; using Nocturnis.DataStructures.DataTypes; using Nocturnis.Enigmos.Modules; diff --git a/Modules/ComputationalModules/Unary/V2ComponentModule.cs b/Modules/ComputationalModules/Unary/V2ComponentModule.cs index 1cff0d0..b3b51a5 100644 --- a/Modules/ComputationalModules/Unary/V2ComponentModule.cs +++ b/Modules/ComputationalModules/Unary/V2ComponentModule.cs @@ -1,4 +1,3 @@ -using Godot; using Nocturnis.DataStructures.Data; using Nocturnis.DataStructures.DataPortGroups; using Nocturnis.DataStructures.DataTypes; diff --git a/Modules/ControllingModules/ActionModules/AttackActionModule.cs b/Modules/ControllingModules/ActionModules/AttackActionModule.cs index 188164c..cef16bb 100644 --- a/Modules/ControllingModules/ActionModules/AttackActionModule.cs +++ b/Modules/ControllingModules/ActionModules/AttackActionModule.cs @@ -10,8 +10,7 @@ public abstract partial class AttackActionModule : ActionModule, ITerminalModule public IDataInPort[] DataInPorts { get; set; } = Array.Empty(); public void Drain() { - foreach (IDataInPort ip in DataInPorts) - _ = ip.GetData.Get; + } public bool Finished { get; set; } @@ -28,6 +27,7 @@ public abstract partial class AttackActionModule : ActionModule, ITerminalModule public override void Act() { CreatureControl.Instance.CurrentCharacter!.Action.Attack(DataInPorts[0].GetData.Get!.R2); + Finished = true; } } diff --git a/Modules/ControllingModules/RootModule.cs b/Modules/ControllingModules/RootModule.cs index c29b78c..3e9ce9e 100644 --- a/Modules/ControllingModules/RootModule.cs +++ b/Modules/ControllingModules/RootModule.cs @@ -1,4 +1,3 @@ -using System.Diagnostics; using Nocturnis.Creatures; using Nocturnis.Enigmos.Modules; using Nocturnis.Enigmos.Ports.SignalPorts.Directions; diff --git a/Modules/ControllingModules/SinglePoleDoubleThrowSwitchModule.cs b/Modules/ControllingModules/SinglePoleDoubleThrowSwitchModule.cs index 254725d..011ce24 100644 --- a/Modules/ControllingModules/SinglePoleDoubleThrowSwitchModule.cs +++ b/Modules/ControllingModules/SinglePoleDoubleThrowSwitchModule.cs @@ -3,7 +3,6 @@ using Nocturnis.Enigmos.Modules; using Nocturnis.Enigmos.Ports.DataPorts.Directions; using Nocturnis.Enigmos.Ports.SignalPorts.Directions; using Nocturnis.GlobalManagement.Constants; -using Nocturnis.GlobalManagement.Controls; using Nocturnis.GlobalManagement.Providers; namespace Enigmos.Modules.ControllingModules; @@ -40,10 +39,8 @@ public abstract partial class SinglePoleDoubleThrowSwitchModule : PiplineModule, ISignalOutPort selectedPort = (LeftPortForTrue!.ParameterValue && DataInPorts[0].GetData.Get!.Bit) ? SignalOutPorts[0] : SignalOutPorts[1]; - if (selectedPort.Connected) - selectedPort.Route(); - else - EnigmosControl.Instance.RootModule.ActionFinished = true; + + selectedPort.Route(); } } diff --git a/Modules/InterlayerModules/InterlayerSignalInModule.cs b/Modules/InterlayerModules/InterlayerSignalInModule.cs index 6e27329..4144e32 100644 --- a/Modules/InterlayerModules/InterlayerSignalInModule.cs +++ b/Modules/InterlayerModules/InterlayerSignalInModule.cs @@ -8,14 +8,14 @@ namespace Enigmos.Modules.InterlayerModules; public partial class InterlayerSignalInModule : SubModule, IInterlayerSignalInModule { - public new IProgrammableModule? ParentModule + public new IProgrammableModule ParentModule { get => base.ParentModule as IProgrammableModule; set => base.ParentModule = value; } public IBasePort UnderlyingPort => SignalIn!; - public IInterlayerSignalOutModule? DualModule { get; set; } - public ISignalInPort? SignalIn { get; set; } + public IInterlayerSignalOutModule DualModule { get; set; } + public ISignalInPort SignalIn { get; set; } public ISignalInPort[] SignalInPorts { get; set; } = Array.Empty(); public override void Init() @@ -28,4 +28,4 @@ public partial class InterlayerSignalInModule : SubModule, IInterlayerSignalInMo public void Execute() => DualModule!.SignalOut!.Route(); public bool Visited { get; set; } -} \ No newline at end of file +} diff --git a/Modules/ProgrammableModules/ProgrammableModule.cs b/Modules/ProgrammableModules/ProgrammableModule.cs index f3029f9..0e3157e 100644 --- a/Modules/ProgrammableModules/ProgrammableModule.cs +++ b/Modules/ProgrammableModules/ProgrammableModule.cs @@ -1,4 +1,3 @@ -using Enigmos.Boards; using Enigmos.Modules.InterlayerModules; using Nocturnis; using Nocturnis.Enigmos.Boards; diff --git a/Modules/TerminalModules/EngineModule.cs b/Modules/TerminalModules/EngineModule.cs index c644816..18c20fe 100644 --- a/Modules/TerminalModules/EngineModule.cs +++ b/Modules/TerminalModules/EngineModule.cs @@ -1,4 +1,3 @@ -using Enigmos.Ports.DataPorts; using Nocturnis.Enigmos.Modules; using Nocturnis.Enigmos.Ports; using Nocturnis.Enigmos.Ports.DataPorts.Directions; @@ -9,7 +8,7 @@ using Skeleton.Utils.Helpers; using VirtualChemistry.Chemistry.Mixtures.Implements; namespace Enigmos.Modules.TerminalModules; -public abstract partial class EngineModule : TerminalModule +public abstract partial class EngineModule : TerminalModule, IEngineModule { protected override bool Draggable => false; public IDataInPort Throttle { get; set; } diff --git a/Modules/TerminalModules/TestingModules/R2ReaderModule.cs b/Modules/TerminalModules/TestingModules/R2ReaderModule.cs index eef5c19..d25b619 100644 --- a/Modules/TerminalModules/TestingModules/R2ReaderModule.cs +++ b/Modules/TerminalModules/TestingModules/R2ReaderModule.cs @@ -6,8 +6,8 @@ namespace Enigmos.Modules.TerminalModules.TestingModules; public abstract partial class R2ReaderModule : TerminalModule { - private DataInPort? DataIn { get; set; } - private R2Reader? R2Reader { get; set; } + private DataInPort DataIn { get; set; } + private R2Reader R2Reader { get; set; } public override void Init() { diff --git a/Ports/BasePort.cs b/Ports/BasePort.cs index 61d18ef..97bd36d 100644 --- a/Ports/BasePort.cs +++ b/Ports/BasePort.cs @@ -1,5 +1,4 @@ using Godot; -using Nocturnis.Attributes; using Nocturnis.Enigmos.Cables; using Nocturnis.Enigmos.Modules; using Nocturnis.Enigmos.Ports; @@ -24,7 +23,12 @@ public abstract partial class BasePort : TextureButton, IBasePort public bool Connected => ConnectedPort != null; public abstract void SetStatusPending(); - public abstract void SetStatusConnected(); + + public virtual void SetStatusConnected() + { + PostConnect(); + } + public abstract void SetStatusNormal(); /// /// Determine whether this port can be connected with given port @@ -34,6 +38,9 @@ public abstract partial class BasePort : TextureButton, IBasePort public virtual void Init() { } - [Expose] public void Connect() => this.ExtConnect(); + + public virtual void PostConnect() + { + } } diff --git a/Ports/DataPorts/DataOutPort.cs b/Ports/DataPorts/DataOutPort.cs index b7fd9b1..c4e071c 100644 --- a/Ports/DataPorts/DataOutPort.cs +++ b/Ports/DataPorts/DataOutPort.cs @@ -38,4 +38,8 @@ public abstract partial class DataOutPort : DataPort, IDataOutPort } public DataCache OutData { get; set; } = new(x => (0, DataTypeConstant.BaseDataTypes.Null)); + public override void PostConnect() + { + Module.Define(); + } } diff --git a/Ports/DataPorts/DataPort.cs b/Ports/DataPorts/DataPort.cs index 8440f75..42e3b15 100644 --- a/Ports/DataPorts/DataPort.cs +++ b/Ports/DataPorts/DataPort.cs @@ -48,8 +48,10 @@ public abstract partial class DataPort : BasePort, IDataPort public override void SetStatusPending() => TextureNormal = GlobalProvider.EnigmosProvider!.DataPortStatusPending; - public override void SetStatusConnected() => + public override void SetStatusConnected() + { + base.SetStatusConnected(); TextureNormal = GlobalProvider.EnigmosProvider!.DataPortStatusConnected; - + } } diff --git a/Ports/SignalPorts/SignalOutPort.cs b/Ports/SignalPorts/SignalOutPort.cs index 7932881..bae86a7 100644 --- a/Ports/SignalPorts/SignalOutPort.cs +++ b/Ports/SignalPorts/SignalOutPort.cs @@ -2,6 +2,7 @@ using Enigmos.Cables; using Nocturnis.Enigmos.Modules; using Nocturnis.Enigmos.Ports; using Nocturnis.Enigmos.Ports.SignalPorts.Directions; +using Nocturnis.GlobalManagement.Controls; namespace Enigmos.Ports.SignalPorts; @@ -33,11 +34,11 @@ public partial class SignalOutPort : SignalPort, ISignalOutPort public void Route() { if (!Connected) + { + CreatureControl.Instance.CurrentCharacter!.MotherBoard.Root.ActionFinished = true; return; - ConnectedPort!.Module.Execute(); - } - public void Connect() - { - Console.WriteLine("XXXXXX"); + } + ConnectedPort!.Module.Visit(); } + } diff --git a/Ports/SignalPorts/SignalPort.cs b/Ports/SignalPorts/SignalPort.cs index bb1b2d4..fc907eb 100644 --- a/Ports/SignalPorts/SignalPort.cs +++ b/Ports/SignalPorts/SignalPort.cs @@ -20,9 +20,11 @@ public abstract partial class SignalPort : BasePort, ISignalPort private void MouseEnteredHandler() => SignalDirection!.Visible = true; private void MouseExitedHandler() => SignalDirection!.Visible = false; - public override void SetStatusConnected() => + public override void SetStatusConnected() + { + base.SetStatusConnected(); TextureNormal = GlobalProvider.EnigmosProvider!.SignalPortStatusConnected; - + } public override void SetStatusNormal() => TextureNormal = GlobalProvider.EnigmosProvider!.SignalPortStatusNormal;