diff --git a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbCip.Contracts/AbCipDriverOptions.cs b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbCip.Contracts/AbCipDriverOptions.cs index 0be1d21a..2ff250db 100644 --- a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbCip.Contracts/AbCipDriverOptions.cs +++ b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbCip.Contracts/AbCipDriverOptions.cs @@ -1,3 +1,5 @@ +using System.ComponentModel.DataAnnotations; + namespace ZB.MOM.WW.OtOpcUa.Driver.AbCip; /// @@ -74,6 +76,14 @@ public sealed class AbCipDriverOptions /// reads into one. The richer CIP Template Object path remains the long-term fix. /// public bool EnableDeclarationOnlyUdtGrouping { get; init; } + + /// + /// Timeout for the AdminUI Test Connect probe, in seconds. The AdminUI clamps to a + /// 60s server-side maximum; this default is what the form pre-fills for new instances. + /// + [Display(Name = "Probe timeout (seconds)", Description = "Connection test timeout. Default 5s.", GroupName = "Diagnostics")] + [Range(1, 60)] + public int ProbeTimeoutSeconds { get; init; } = 5; } /// diff --git a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.Contracts/AbLegacyDriverOptions.cs b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.Contracts/AbLegacyDriverOptions.cs index 81513274..d93a7fa6 100644 --- a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.Contracts/AbLegacyDriverOptions.cs +++ b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.Contracts/AbLegacyDriverOptions.cs @@ -1,3 +1,4 @@ +using System.ComponentModel.DataAnnotations; using ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.PlcFamilies; namespace ZB.MOM.WW.OtOpcUa.Driver.AbLegacy; @@ -21,6 +22,14 @@ public sealed class AbLegacyDriverOptions /// Gets or sets the default timeout for read/write operations. public TimeSpan Timeout { get; init; } = TimeSpan.FromSeconds(2); + + /// + /// Timeout for the AdminUI Test Connect probe, in seconds. The AdminUI clamps to a + /// 60s server-side maximum; this default is what the form pre-fills for new instances. + /// + [Display(Name = "Probe timeout (seconds)", Description = "Connection test timeout. Default 5s.", GroupName = "Diagnostics")] + [Range(1, 60)] + public int ProbeTimeoutSeconds { get; init; } = 5; } public sealed record AbLegacyDeviceOptions( diff --git a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.FOCAS.Contracts/FocasDriverOptions.cs b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.FOCAS.Contracts/FocasDriverOptions.cs index 35a26941..b6537530 100644 --- a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.FOCAS.Contracts/FocasDriverOptions.cs +++ b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.FOCAS.Contracts/FocasDriverOptions.cs @@ -1,3 +1,5 @@ +using System.ComponentModel.DataAnnotations; + namespace ZB.MOM.WW.OtOpcUa.Driver.FOCAS; /// @@ -21,6 +23,14 @@ public sealed class FocasDriverOptions public FocasHandleRecycleOptions HandleRecycle { get; init; } = new(); /// Gets the fixed tree options. public FocasFixedTreeOptions FixedTree { get; init; } = new(); + + /// + /// Timeout for the AdminUI Test Connect probe, in seconds. The AdminUI clamps to a + /// 60s server-side maximum; this default is what the form pre-fills for new instances. + /// + [Display(Name = "Probe timeout (seconds)", Description = "Connection test timeout. Default 10s.", GroupName = "Diagnostics")] + [Range(1, 60)] + public int ProbeTimeoutSeconds { get; init; } = 10; } /// diff --git a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Contracts/GalaxyDriverOptions.cs b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Contracts/GalaxyDriverOptions.cs index a5d66025..818cbfee 100644 --- a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Contracts/GalaxyDriverOptions.cs +++ b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Contracts/GalaxyDriverOptions.cs @@ -1,3 +1,5 @@ +using System.ComponentModel.DataAnnotations; + namespace ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Config; /// @@ -15,7 +17,16 @@ public sealed record GalaxyDriverOptions( GalaxyGatewayOptions Gateway, GalaxyMxAccessOptions MxAccess, GalaxyRepositoryOptions Repository, - GalaxyReconnectOptions Reconnect); + GalaxyReconnectOptions Reconnect) +{ + /// + /// Timeout for the AdminUI Test Connect probe, in seconds. The AdminUI clamps to a + /// 60s server-side maximum; this default is what the form pre-fills for new instances. + /// + [Display(Name = "Probe timeout (seconds)", Description = "Connection test timeout. Default 30s.", GroupName = "Diagnostics")] + [Range(1, 60)] + public int ProbeTimeoutSeconds { get; init; } = 30; +} /// /// Connection details for the MxAccess gateway. is diff --git a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Historian.Wonderware.Client.Contracts/WonderwareHistorianClientOptions.cs b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Historian.Wonderware.Client.Contracts/WonderwareHistorianClientOptions.cs index 17dc3533..77488ed9 100644 --- a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Historian.Wonderware.Client.Contracts/WonderwareHistorianClientOptions.cs +++ b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Historian.Wonderware.Client.Contracts/WonderwareHistorianClientOptions.cs @@ -1,3 +1,5 @@ +using System.ComponentModel.DataAnnotations; + namespace ZB.MOM.WW.OtOpcUa.Driver.Historian.Wonderware.Client; /// @@ -30,4 +32,12 @@ public sealed record WonderwareHistorianClientOptions( /// Gets the effective call timeout, using the default if not explicitly set. public TimeSpan EffectiveCallTimeout => CallTimeout ?? TimeSpan.FromSeconds(30); + + /// + /// Timeout for the AdminUI Test Connect probe, in seconds. The AdminUI clamps to a + /// 60s server-side maximum; this default is what the form pre-fills for new instances. + /// + [Display(Name = "Probe timeout (seconds)", Description = "Connection test timeout. Default 15s.", GroupName = "Diagnostics")] + [Range(1, 60)] + public int ProbeTimeoutSeconds { get; init; } = 15; } diff --git a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Modbus.Contracts/ModbusDriverOptions.cs b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Modbus.Contracts/ModbusDriverOptions.cs index 0daca164..638aa930 100644 --- a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Modbus.Contracts/ModbusDriverOptions.cs +++ b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Modbus.Contracts/ModbusDriverOptions.cs @@ -1,3 +1,5 @@ +using System.ComponentModel.DataAnnotations; + namespace ZB.MOM.WW.OtOpcUa.Driver.Modbus; /// @@ -174,6 +176,14 @@ public sealed class ModbusDriverOptions /// attempt; caps the geometric growth. /// public ModbusReconnectOptions Reconnect { get; init; } = new(); + + /// + /// Timeout for the AdminUI Test Connect probe, in seconds. The AdminUI clamps to a + /// 60s server-side maximum; this default is what the form pre-fills for new instances. + /// + [Display(Name = "Probe timeout (seconds)", Description = "Connection test timeout. Default 5s.", GroupName = "Diagnostics")] + [Range(1, 60)] + public int ProbeTimeoutSeconds { get; init; } = 5; } /// OS-level TCP keep-alive knobs. Set =false to skip entirely. diff --git a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.Contracts/OpcUaClientDriverOptions.cs b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.Contracts/OpcUaClientDriverOptions.cs index 6449777e..d979cd6d 100644 --- a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.Contracts/OpcUaClientDriverOptions.cs +++ b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.Contracts/OpcUaClientDriverOptions.cs @@ -1,3 +1,5 @@ +using System.ComponentModel.DataAnnotations; + namespace ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient; /// @@ -164,6 +166,14 @@ public sealed class OpcUaClientDriverOptions /// public IReadOnlyDictionary UnsMappingTable { get; init; } = new Dictionary(); + + /// + /// Timeout for the AdminUI Test Connect probe, in seconds. The AdminUI clamps to a + /// 60s server-side maximum; this default is what the form pre-fills for new instances. + /// + [Display(Name = "Probe timeout (seconds)", Description = "Connection test timeout. Default 15s.", GroupName = "Diagnostics")] + [Range(1, 60)] + public int ProbeTimeoutSeconds { get; init; } = 15; } /// diff --git a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.S7.Contracts/S7DriverOptions.cs b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.S7.Contracts/S7DriverOptions.cs index 18a2e0c9..9dd8fccb 100644 --- a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.S7.Contracts/S7DriverOptions.cs +++ b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.S7.Contracts/S7DriverOptions.cs @@ -1,3 +1,5 @@ +using System.ComponentModel.DataAnnotations; + namespace ZB.MOM.WW.OtOpcUa.Driver.S7; /// @@ -61,6 +63,14 @@ public sealed class S7DriverOptions /// Running ↔ Stopped transitions. /// public S7ProbeOptions Probe { get; init; } = new(); + + /// + /// Timeout for the AdminUI Test Connect probe, in seconds. The AdminUI clamps to a + /// 60s server-side maximum; this default is what the form pre-fills for new instances. + /// + [Display(Name = "Probe timeout (seconds)", Description = "Connection test timeout. Default 5s.", GroupName = "Diagnostics")] + [Range(1, 60)] + public int ProbeTimeoutSeconds { get; init; } = 5; } public sealed class S7ProbeOptions diff --git a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.TwinCAT.Contracts/TwinCATDriverOptions.cs b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.TwinCAT.Contracts/TwinCATDriverOptions.cs index 24aad19a..8fddaad4 100644 --- a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.TwinCAT.Contracts/TwinCATDriverOptions.cs +++ b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.TwinCAT.Contracts/TwinCATDriverOptions.cs @@ -1,3 +1,5 @@ +using System.ComponentModel.DataAnnotations; + namespace ZB.MOM.WW.OtOpcUa.Driver.TwinCAT; /// @@ -46,6 +48,14 @@ public sealed class TwinCATDriverOptions /// section 6 — was previously hard-coded to 0 (Driver.TwinCAT-014). /// public int NotificationMaxDelayMs { get; init; } + + /// + /// Timeout for the AdminUI Test Connect probe, in seconds. The AdminUI clamps to a + /// 60s server-side maximum; this default is what the form pre-fills for new instances. + /// + [Display(Name = "Probe timeout (seconds)", Description = "Connection test timeout. Default 10s.", GroupName = "Diagnostics")] + [Range(1, 60)] + public int ProbeTimeoutSeconds { get; init; } = 10; } ///