diff --git a/src/ScadaLink.Commons/Types/DataConnections/OpcUaDeadbandConfig.cs b/src/ScadaLink.Commons/Types/DataConnections/OpcUaDeadbandConfig.cs new file mode 100644 index 0000000..798e8c5 --- /dev/null +++ b/src/ScadaLink.Commons/Types/DataConnections/OpcUaDeadbandConfig.cs @@ -0,0 +1,7 @@ +namespace ScadaLink.Commons.Types.DataConnections; + +public sealed class OpcUaDeadbandConfig +{ + public OpcUaDeadbandType Type { get; set; } = OpcUaDeadbandType.Absolute; + public double Value { get; set; } = 0.0; +} diff --git a/src/ScadaLink.Commons/Types/DataConnections/OpcUaDeadbandType.cs b/src/ScadaLink.Commons/Types/DataConnections/OpcUaDeadbandType.cs new file mode 100644 index 0000000..072ce8e --- /dev/null +++ b/src/ScadaLink.Commons/Types/DataConnections/OpcUaDeadbandType.cs @@ -0,0 +1,7 @@ +namespace ScadaLink.Commons.Types.DataConnections; + +public enum OpcUaDeadbandType +{ + Absolute, + Percent +} diff --git a/src/ScadaLink.Commons/Types/DataConnections/OpcUaEndpointConfig.cs b/src/ScadaLink.Commons/Types/DataConnections/OpcUaEndpointConfig.cs index 06f6f63..3d87217 100644 --- a/src/ScadaLink.Commons/Types/DataConnections/OpcUaEndpointConfig.cs +++ b/src/ScadaLink.Commons/Types/DataConnections/OpcUaEndpointConfig.cs @@ -18,6 +18,16 @@ public sealed class OpcUaEndpointConfig public int KeepAliveCount { get; set; } = 10; public int LifetimeCount { get; set; } = 30; public int MaxNotificationsPerPublish { get; set; } = 100; + public bool DiscardOldest { get; set; } = true; + public byte SubscriptionPriority { get; set; } = 0; + public string SubscriptionDisplayName { get; set; } = "ScadaLink"; + + // Read / filter + public OpcUaTimestampsToReturn TimestampsToReturn { get; set; } = OpcUaTimestampsToReturn.Source; + public OpcUaDeadbandConfig? Deadband { get; set; } + + // Authentication (optional; null = anonymous) + public OpcUaUserIdentityConfig? UserIdentity { get; set; } // Heartbeat (optional) public OpcUaHeartbeatConfig? Heartbeat { get; set; } diff --git a/src/ScadaLink.Commons/Types/DataConnections/OpcUaTimestampsToReturn.cs b/src/ScadaLink.Commons/Types/DataConnections/OpcUaTimestampsToReturn.cs new file mode 100644 index 0000000..8faa56f --- /dev/null +++ b/src/ScadaLink.Commons/Types/DataConnections/OpcUaTimestampsToReturn.cs @@ -0,0 +1,8 @@ +namespace ScadaLink.Commons.Types.DataConnections; + +public enum OpcUaTimestampsToReturn +{ + Source, + Server, + Both +} diff --git a/src/ScadaLink.Commons/Types/DataConnections/OpcUaUserIdentityConfig.cs b/src/ScadaLink.Commons/Types/DataConnections/OpcUaUserIdentityConfig.cs new file mode 100644 index 0000000..a1bd3a8 --- /dev/null +++ b/src/ScadaLink.Commons/Types/DataConnections/OpcUaUserIdentityConfig.cs @@ -0,0 +1,10 @@ +namespace ScadaLink.Commons.Types.DataConnections; + +public sealed class OpcUaUserIdentityConfig +{ + public OpcUaUserTokenType TokenType { get; set; } = OpcUaUserTokenType.Anonymous; + public string Username { get; set; } = ""; + public string Password { get; set; } = ""; + public string CertificatePath { get; set; } = ""; + public string CertificatePassword { get; set; } = ""; +} diff --git a/src/ScadaLink.Commons/Types/DataConnections/OpcUaUserTokenType.cs b/src/ScadaLink.Commons/Types/DataConnections/OpcUaUserTokenType.cs new file mode 100644 index 0000000..74f18c8 --- /dev/null +++ b/src/ScadaLink.Commons/Types/DataConnections/OpcUaUserTokenType.cs @@ -0,0 +1,8 @@ +namespace ScadaLink.Commons.Types.DataConnections; + +public enum OpcUaUserTokenType +{ + Anonymous, + UsernamePassword, + X509Certificate +}