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;
}
///