diff --git a/src/ZB.MOM.WW.ScadaBridge.Commons/Messages/Management/InstanceCommands.cs b/src/ZB.MOM.WW.ScadaBridge.Commons/Messages/Management/InstanceCommands.cs index e7fcb0e9..84b2a2cd 100644 --- a/src/ZB.MOM.WW.ScadaBridge.Commons/Messages/Management/InstanceCommands.cs +++ b/src/ZB.MOM.WW.ScadaBridge.Commons/Messages/Management/InstanceCommands.cs @@ -45,3 +45,18 @@ public record DeleteInstanceAlarmOverrideCommand( string AlarmCanonicalName); public record ListInstanceAlarmOverridesCommand(int InstanceId); + +// Native alarm source overrides (per-instance retarget of an inherited source binding; +// null fields keep the inherited value). +public record SetInstanceNativeAlarmSourceOverrideCommand( + int InstanceId, + string SourceCanonicalName, + string? ConnectionNameOverride, + string? SourceReferenceOverride, + string? ConditionFilterOverride); + +public record DeleteInstanceNativeAlarmSourceOverrideCommand( + int InstanceId, + string SourceCanonicalName); + +public record ListInstanceNativeAlarmSourceOverridesCommand(int InstanceId); diff --git a/src/ZB.MOM.WW.ScadaBridge.Commons/Messages/Management/TemplateCommands.cs b/src/ZB.MOM.WW.ScadaBridge.Commons/Messages/Management/TemplateCommands.cs index ccae5a71..d34dd51a 100644 --- a/src/ZB.MOM.WW.ScadaBridge.Commons/Messages/Management/TemplateCommands.cs +++ b/src/ZB.MOM.WW.ScadaBridge.Commons/Messages/Management/TemplateCommands.cs @@ -14,6 +14,11 @@ public record DeleteTemplateAttributeCommand(int AttributeId); public record AddTemplateAlarmCommand(int TemplateId, string Name, string TriggerType, int PriorityLevel, string? Description, string? TriggerConfiguration, bool IsLocked); public record UpdateTemplateAlarmCommand(int AlarmId, string Name, string TriggerType, int PriorityLevel, string? Description, string? TriggerConfiguration, bool IsLocked); public record DeleteTemplateAlarmCommand(int AlarmId); +// Native alarm source bindings (read-only mirror of an OPC UA A&C / MxGateway source's alarms) +public record AddTemplateNativeAlarmSourceCommand(int TemplateId, string Name, string ConnectionName, string SourceReference, string? ConditionFilter, string? Description, bool IsLocked); +public record UpdateTemplateNativeAlarmSourceCommand(int NativeAlarmSourceId, string Name, string ConnectionName, string SourceReference, string? ConditionFilter, string? Description, bool IsLocked); +public record DeleteTemplateNativeAlarmSourceCommand(int NativeAlarmSourceId); +public record ListTemplateNativeAlarmSourcesCommand(int TemplateId); public record AddTemplateScriptCommand(int TemplateId, string Name, string Code, string? TriggerType, string? TriggerConfiguration, bool IsLocked, string? ParameterDefinitions = null, string? ReturnDefinition = null); public record UpdateTemplateScriptCommand(int ScriptId, string Name, string Code, string? TriggerType, string? TriggerConfiguration, bool IsLocked, string? ParameterDefinitions = null, string? ReturnDefinition = null); public record DeleteTemplateScriptCommand(int ScriptId); diff --git a/tests/ZB.MOM.WW.ScadaBridge.Commons.Tests/Messages/ManagementCommandRegistryTests.cs b/tests/ZB.MOM.WW.ScadaBridge.Commons.Tests/Messages/ManagementCommandRegistryTests.cs index 954f4830..ddd28949 100644 --- a/tests/ZB.MOM.WW.ScadaBridge.Commons.Tests/Messages/ManagementCommandRegistryTests.cs +++ b/tests/ZB.MOM.WW.ScadaBridge.Commons.Tests/Messages/ManagementCommandRegistryTests.cs @@ -73,6 +73,25 @@ public class ManagementCommandRegistryTests Assert.Equal("CreateSite", ManagementCommandRegistry.GetCommandName(typeof(CreateSiteCommand))); } + [Fact] + public void Resolve_NativeAlarmSourceCommands_AllRegistered() + { + Assert.Equal(typeof(AddTemplateNativeAlarmSourceCommand), + ManagementCommandRegistry.Resolve("AddTemplateNativeAlarmSource")); + Assert.Equal(typeof(UpdateTemplateNativeAlarmSourceCommand), + ManagementCommandRegistry.Resolve("UpdateTemplateNativeAlarmSource")); + Assert.Equal(typeof(DeleteTemplateNativeAlarmSourceCommand), + ManagementCommandRegistry.Resolve("DeleteTemplateNativeAlarmSource")); + Assert.Equal(typeof(ListTemplateNativeAlarmSourcesCommand), + ManagementCommandRegistry.Resolve("ListTemplateNativeAlarmSources")); + Assert.Equal(typeof(SetInstanceNativeAlarmSourceOverrideCommand), + ManagementCommandRegistry.Resolve("SetInstanceNativeAlarmSourceOverride")); + Assert.Equal(typeof(DeleteInstanceNativeAlarmSourceOverrideCommand), + ManagementCommandRegistry.Resolve("DeleteInstanceNativeAlarmSourceOverride")); + Assert.Equal(typeof(ListInstanceNativeAlarmSourceOverridesCommand), + ManagementCommandRegistry.Resolve("ListInstanceNativeAlarmSourceOverrides")); + } + /// A *Command record outside the Management namespace, for the negative test. private record UnregisteredFakeCommand(int Id); }