diff --git a/src/ZB.MOM.WW.ScadaBridge.Communication/Protos/sitestream.proto b/src/ZB.MOM.WW.ScadaBridge.Communication/Protos/sitestream.proto
index 43af8af4..6beae55c 100644
--- a/src/ZB.MOM.WW.ScadaBridge.Communication/Protos/sitestream.proto
+++ b/src/ZB.MOM.WW.ScadaBridge.Communication/Protos/sitestream.proto
@@ -66,6 +66,23 @@ message AlarmStateUpdate {
google.protobuf.Timestamp timestamp = 5;
AlarmLevelEnum level = 6; // ALARM_LEVEL_NONE for binary trigger types; set by HiLo.
string message = 7; // Optional per-band operator message; empty when unset.
+
+ // Native alarm enrichment (additive — computed alarms leave these at defaults).
+ // kind: "Computed" | "NativeOpcUa" | "NativeMxAccess".
+ string kind = 8;
+ bool active = 9; // unified condition: active vs inactive
+ bool acknowledged = 10; // acked vs unacked
+ bool confirmed = 11; // confirmed (false when not confirmable)
+ string shelve_state = 12; // Unshelved | OneShotShelved | TimedShelved | PermanentShelved
+ bool suppressed = 13;
+ string source_reference = 14; // native per-condition key; empty for computed
+ string alarm_type_name = 15;
+ string category = 16;
+ string operator_user = 17;
+ string operator_comment = 18;
+ google.protobuf.Timestamp original_raise_time = 19; // null when unknown
+ string current_value = 20;
+ string limit_value = 21;
}
// Audit Log (#23) telemetry: single lifecycle event ferried from a site SQLite
diff --git a/src/ZB.MOM.WW.ScadaBridge.Communication/SiteStreamGrpc/Sitestream.cs b/src/ZB.MOM.WW.ScadaBridge.Communication/SiteStreamGrpc/Sitestream.cs
index 08687101..cebfccab 100644
--- a/src/ZB.MOM.WW.ScadaBridge.Communication/SiteStreamGrpc/Sitestream.cs
+++ b/src/ZB.MOM.WW.ScadaBridge.Communication/SiteStreamGrpc/Sitestream.cs
@@ -36,68 +36,75 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
"KAkSFgoOYXR0cmlidXRlX3BhdGgYAiABKAkSFgoOYXR0cmlidXRlX25hbWUY",
"AyABKAkSDQoFdmFsdWUYBCABKAkSJAoHcXVhbGl0eRgFIAEoDjITLnNpdGVz",
"dHJlYW0uUXVhbGl0eRItCgl0aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJv",
- "dG9idWYuVGltZXN0YW1wIuwBChBBbGFybVN0YXRlVXBkYXRlEhwKFGluc3Rh",
+ "dG9idWYuVGltZXN0YW1wIrgEChBBbGFybVN0YXRlVXBkYXRlEhwKFGluc3Rh",
"bmNlX3VuaXF1ZV9uYW1lGAEgASgJEhIKCmFsYXJtX25hbWUYAiABKAkSKQoF",
"c3RhdGUYAyABKA4yGi5zaXRlc3RyZWFtLkFsYXJtU3RhdGVFbnVtEhAKCHBy",
"aW9yaXR5GAQgASgFEi0KCXRpbWVzdGFtcBgFIAEoCzIaLmdvb2dsZS5wcm90",
"b2J1Zi5UaW1lc3RhbXASKQoFbGV2ZWwYBiABKA4yGi5zaXRlc3RyZWFtLkFs",
- "YXJtTGV2ZWxFbnVtEg8KB21lc3NhZ2UYByABKAkivQQKDUF1ZGl0RXZlbnRE",
- "dG8SEAoIZXZlbnRfaWQYASABKAkSMwoPb2NjdXJyZWRfYXRfdXRjGAIgASgL",
- "MhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdjaGFubmVsGAMgASgJ",
- "EgwKBGtpbmQYBCABKAkSFgoOY29ycmVsYXRpb25faWQYBSABKAkSFgoOc291",
- "cmNlX3NpdGVfaWQYBiABKAkSGgoSc291cmNlX2luc3RhbmNlX2lkGAcgASgJ",
- "EhUKDXNvdXJjZV9zY3JpcHQYCCABKAkSDQoFYWN0b3IYCSABKAkSDgoGdGFy",
- "Z2V0GAogASgJEg4KBnN0YXR1cxgLIAEoCRIwCgtodHRwX3N0YXR1cxgMIAEo",
- "CzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlEjAKC2R1cmF0aW9uX21z",
- "GA0gASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWUSFQoNZXJyb3Jf",
- "bWVzc2FnZRgOIAEoCRIUCgxlcnJvcl9kZXRhaWwYDyABKAkSFwoPcmVxdWVz",
- "dF9zdW1tYXJ5GBAgASgJEhgKEHJlc3BvbnNlX3N1bW1hcnkYESABKAkSGQoR",
- "cGF5bG9hZF90cnVuY2F0ZWQYEiABKAgSDQoFZXh0cmEYEyABKAkSFAoMZXhl",
- "Y3V0aW9uX2lkGBQgASgJEhsKE3BhcmVudF9leGVjdXRpb25faWQYFSABKAkS",
- "EwoLc291cmNlX25vZGUYFiABKAkiPAoPQXVkaXRFdmVudEJhdGNoEikKBmV2",
- "ZW50cxgBIAMoCzIZLnNpdGVzdHJlYW0uQXVkaXRFdmVudER0byInCglJbmdl",
- "c3RBY2sSGgoSYWNjZXB0ZWRfZXZlbnRfaWRzGAEgAygJIokDChZTaXRlQ2Fs",
- "bE9wZXJhdGlvbmFsRHRvEhwKFHRyYWNrZWRfb3BlcmF0aW9uX2lkGAEgASgJ",
- "Eg8KB2NoYW5uZWwYAiABKAkSDgoGdGFyZ2V0GAMgASgJEhMKC3NvdXJjZV9z",
- "aXRlGAQgASgJEg4KBnN0YXR1cxgFIAEoCRITCgtyZXRyeV9jb3VudBgGIAEo",
- "BRISCgpsYXN0X2Vycm9yGAcgASgJEjAKC2h0dHBfc3RhdHVzGAggASgLMhsu",
- "Z29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWUSMgoOY3JlYXRlZF9hdF91dGMY",
- "CSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjIKDnVwZGF0ZWRf",
- "YXRfdXRjGAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg90",
- "ZXJtaW5hbF9hdF91dGMYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0",
- "YW1wEhMKC3NvdXJjZV9ub2RlGAwgASgJIoABChVDYWNoZWRUZWxlbWV0cnlQ",
- "YWNrZXQSLgoLYXVkaXRfZXZlbnQYASABKAsyGS5zaXRlc3RyZWFtLkF1ZGl0",
- "RXZlbnREdG8SNwoLb3BlcmF0aW9uYWwYAiABKAsyIi5zaXRlc3RyZWFtLlNp",
- "dGVDYWxsT3BlcmF0aW9uYWxEdG8iSgoUQ2FjaGVkVGVsZW1ldHJ5QmF0Y2gS",
- "MgoHcGFja2V0cxgBIAMoCzIhLnNpdGVzdHJlYW0uQ2FjaGVkVGVsZW1ldHJ5",
- "UGFja2V0IlsKFlB1bGxBdWRpdEV2ZW50c1JlcXVlc3QSLQoJc2luY2VfdXRj",
- "GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgpiYXRjaF9z",
- "aXplGAIgASgFIlwKF1B1bGxBdWRpdEV2ZW50c1Jlc3BvbnNlEikKBmV2ZW50",
- "cxgBIAMoCzIZLnNpdGVzdHJlYW0uQXVkaXRFdmVudER0bxIWCg5tb3JlX2F2",
- "YWlsYWJsZRgCIAEoCCpcCgdRdWFsaXR5EhcKE1FVQUxJVFlfVU5TUEVDSUZJ",
- "RUQQABIQCgxRVUFMSVRZX0dPT0QQARIVChFRVUFMSVRZX1VOQ0VSVEFJThAC",
- "Eg8KC1FVQUxJVFlfQkFEEAMqXQoOQWxhcm1TdGF0ZUVudW0SGwoXQUxBUk1f",
- "U1RBVEVfVU5TUEVDSUZJRUQQABIWChJBTEFSTV9TVEFURV9OT1JNQUwQARIW",
- "ChJBTEFSTV9TVEFURV9BQ1RJVkUQAiqFAQoOQWxhcm1MZXZlbEVudW0SFAoQ",
- "QUxBUk1fTEVWRUxfTk9ORRAAEhMKD0FMQVJNX0xFVkVMX0xPVxABEhcKE0FM",
- "QVJNX0xFVkVMX0xPV19MT1cQAhIUChBBTEFSTV9MRVZFTF9ISUdIEAMSGQoV",
- "QUxBUk1fTEVWRUxfSElHSF9ISUdIEAQy4QIKEVNpdGVTdHJlYW1TZXJ2aWNl",
- "ElUKEVN1YnNjcmliZUluc3RhbmNlEiEuc2l0ZXN0cmVhbS5JbnN0YW5jZVN0",
- "cmVhbVJlcXVlc3QaGy5zaXRlc3RyZWFtLlNpdGVTdHJlYW1FdmVudDABEkcK",
- "EUluZ2VzdEF1ZGl0RXZlbnRzEhsuc2l0ZXN0cmVhbS5BdWRpdEV2ZW50QmF0",
- "Y2gaFS5zaXRlc3RyZWFtLkluZ2VzdEFjaxJQChVJbmdlc3RDYWNoZWRUZWxl",
- "bWV0cnkSIC5zaXRlc3RyZWFtLkNhY2hlZFRlbGVtZXRyeUJhdGNoGhUuc2l0",
- "ZXN0cmVhbS5Jbmdlc3RBY2sSWgoPUHVsbEF1ZGl0RXZlbnRzEiIuc2l0ZXN0",
- "cmVhbS5QdWxsQXVkaXRFdmVudHNSZXF1ZXN0GiMuc2l0ZXN0cmVhbS5QdWxs",
- "QXVkaXRFdmVudHNSZXNwb25zZUIfqgIcU2NhZGFMaW5rLkNvbW11bmljYXRp",
- "b24uR3JwY2IGcHJvdG8z"));
+ "YXJtTGV2ZWxFbnVtEg8KB21lc3NhZ2UYByABKAkSDAoEa2luZBgIIAEoCRIO",
+ "CgZhY3RpdmUYCSABKAgSFAoMYWNrbm93bGVkZ2VkGAogASgIEhEKCWNvbmZp",
+ "cm1lZBgLIAEoCBIUCgxzaGVsdmVfc3RhdGUYDCABKAkSEgoKc3VwcHJlc3Nl",
+ "ZBgNIAEoCBIYChBzb3VyY2VfcmVmZXJlbmNlGA4gASgJEhcKD2FsYXJtX3R5",
+ "cGVfbmFtZRgPIAEoCRIQCghjYXRlZ29yeRgQIAEoCRIVCg1vcGVyYXRvcl91",
+ "c2VyGBEgASgJEhgKEG9wZXJhdG9yX2NvbW1lbnQYEiABKAkSNwoTb3JpZ2lu",
+ "YWxfcmFpc2VfdGltZRgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3Rh",
+ "bXASFQoNY3VycmVudF92YWx1ZRgUIAEoCRITCgtsaW1pdF92YWx1ZRgVIAEo",
+ "CSK9BAoNQXVkaXRFdmVudER0bxIQCghldmVudF9pZBgBIAEoCRIzCg9vY2N1",
+ "cnJlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1w",
+ "Eg8KB2NoYW5uZWwYAyABKAkSDAoEa2luZBgEIAEoCRIWCg5jb3JyZWxhdGlv",
+ "bl9pZBgFIAEoCRIWCg5zb3VyY2Vfc2l0ZV9pZBgGIAEoCRIaChJzb3VyY2Vf",
+ "aW5zdGFuY2VfaWQYByABKAkSFQoNc291cmNlX3NjcmlwdBgIIAEoCRINCgVh",
+ "Y3RvchgJIAEoCRIOCgZ0YXJnZXQYCiABKAkSDgoGc3RhdHVzGAsgASgJEjAK",
+ "C2h0dHBfc3RhdHVzGAwgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFs",
+ "dWUSMAoLZHVyYXRpb25fbXMYDSABKAsyGy5nb29nbGUucHJvdG9idWYuSW50",
+ "MzJWYWx1ZRIVCg1lcnJvcl9tZXNzYWdlGA4gASgJEhQKDGVycm9yX2RldGFp",
+ "bBgPIAEoCRIXCg9yZXF1ZXN0X3N1bW1hcnkYECABKAkSGAoQcmVzcG9uc2Vf",
+ "c3VtbWFyeRgRIAEoCRIZChFwYXlsb2FkX3RydW5jYXRlZBgSIAEoCBINCgVl",
+ "eHRyYRgTIAEoCRIUCgxleGVjdXRpb25faWQYFCABKAkSGwoTcGFyZW50X2V4",
+ "ZWN1dGlvbl9pZBgVIAEoCRITCgtzb3VyY2Vfbm9kZRgWIAEoCSI8Cg9BdWRp",
+ "dEV2ZW50QmF0Y2gSKQoGZXZlbnRzGAEgAygLMhkuc2l0ZXN0cmVhbS5BdWRp",
+ "dEV2ZW50RHRvIicKCUluZ2VzdEFjaxIaChJhY2NlcHRlZF9ldmVudF9pZHMY",
+ "ASADKAkiiQMKFlNpdGVDYWxsT3BlcmF0aW9uYWxEdG8SHAoUdHJhY2tlZF9v",
+ "cGVyYXRpb25faWQYASABKAkSDwoHY2hhbm5lbBgCIAEoCRIOCgZ0YXJnZXQY",
+ "AyABKAkSEwoLc291cmNlX3NpdGUYBCABKAkSDgoGc3RhdHVzGAUgASgJEhMK",
+ "C3JldHJ5X2NvdW50GAYgASgFEhIKCmxhc3RfZXJyb3IYByABKAkSMAoLaHR0",
+ "cF9zdGF0dXMYCCABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZRIy",
+ "Cg5jcmVhdGVkX2F0X3V0YxgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1l",
+ "c3RhbXASMgoOdXBkYXRlZF9hdF91dGMYCiABKAsyGi5nb29nbGUucHJvdG9i",
+ "dWYuVGltZXN0YW1wEjMKD3Rlcm1pbmFsX2F0X3V0YxgLIAEoCzIaLmdvb2ds",
+ "ZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLc291cmNlX25vZGUYDCABKAkigAEK",
+ "FUNhY2hlZFRlbGVtZXRyeVBhY2tldBIuCgthdWRpdF9ldmVudBgBIAEoCzIZ",
+ "LnNpdGVzdHJlYW0uQXVkaXRFdmVudER0bxI3CgtvcGVyYXRpb25hbBgCIAEo",
+ "CzIiLnNpdGVzdHJlYW0uU2l0ZUNhbGxPcGVyYXRpb25hbER0byJKChRDYWNo",
+ "ZWRUZWxlbWV0cnlCYXRjaBIyCgdwYWNrZXRzGAEgAygLMiEuc2l0ZXN0cmVh",
+ "bS5DYWNoZWRUZWxlbWV0cnlQYWNrZXQiWwoWUHVsbEF1ZGl0RXZlbnRzUmVx",
+ "dWVzdBItCglzaW5jZV91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGlt",
+ "ZXN0YW1wEhIKCmJhdGNoX3NpemUYAiABKAUiXAoXUHVsbEF1ZGl0RXZlbnRz",
+ "UmVzcG9uc2USKQoGZXZlbnRzGAEgAygLMhkuc2l0ZXN0cmVhbS5BdWRpdEV2",
+ "ZW50RHRvEhYKDm1vcmVfYXZhaWxhYmxlGAIgASgIKlwKB1F1YWxpdHkSFwoT",
+ "UVVBTElUWV9VTlNQRUNJRklFRBAAEhAKDFFVQUxJVFlfR09PRBABEhUKEVFV",
+ "QUxJVFlfVU5DRVJUQUlOEAISDwoLUVVBTElUWV9CQUQQAypdCg5BbGFybVN0",
+ "YXRlRW51bRIbChdBTEFSTV9TVEFURV9VTlNQRUNJRklFRBAAEhYKEkFMQVJN",
+ "X1NUQVRFX05PUk1BTBABEhYKEkFMQVJNX1NUQVRFX0FDVElWRRACKoUBCg5B",
+ "bGFybUxldmVsRW51bRIUChBBTEFSTV9MRVZFTF9OT05FEAASEwoPQUxBUk1f",
+ "TEVWRUxfTE9XEAESFwoTQUxBUk1fTEVWRUxfTE9XX0xPVxACEhQKEEFMQVJN",
+ "X0xFVkVMX0hJR0gQAxIZChVBTEFSTV9MRVZFTF9ISUdIX0hJR0gQBDLhAgoR",
+ "U2l0ZVN0cmVhbVNlcnZpY2USVQoRU3Vic2NyaWJlSW5zdGFuY2USIS5zaXRl",
+ "c3RyZWFtLkluc3RhbmNlU3RyZWFtUmVxdWVzdBobLnNpdGVzdHJlYW0uU2l0",
+ "ZVN0cmVhbUV2ZW50MAESRwoRSW5nZXN0QXVkaXRFdmVudHMSGy5zaXRlc3Ry",
+ "ZWFtLkF1ZGl0RXZlbnRCYXRjaBoVLnNpdGVzdHJlYW0uSW5nZXN0QWNrElAK",
+ "FUluZ2VzdENhY2hlZFRlbGVtZXRyeRIgLnNpdGVzdHJlYW0uQ2FjaGVkVGVs",
+ "ZW1ldHJ5QmF0Y2gaFS5zaXRlc3RyZWFtLkluZ2VzdEFjaxJaCg9QdWxsQXVk",
+ "aXRFdmVudHMSIi5zaXRlc3RyZWFtLlB1bGxBdWRpdEV2ZW50c1JlcXVlc3Qa",
+ "Iy5zaXRlc3RyZWFtLlB1bGxBdWRpdEV2ZW50c1Jlc3BvbnNlQiuqAihaQi5N",
+ "T00uV1cuU2NhZGFCcmlkZ2UuQ29tbXVuaWNhdGlvbi5HcnBjYgZwcm90bzM="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.Quality), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateEnum), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmLevelEnum), }, null, new pbr::GeneratedClrTypeInfo[] {
new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.InstanceStreamRequest), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.InstanceStreamRequest.Parser, new[]{ "CorrelationId", "InstanceUniqueName" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SiteStreamEvent), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SiteStreamEvent.Parser, new[]{ "CorrelationId", "AttributeChanged", "AlarmChanged" }, new[]{ "Event" }, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AttributeValueUpdate), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AttributeValueUpdate.Parser, new[]{ "InstanceUniqueName", "AttributePath", "AttributeName", "Value", "Quality", "Timestamp" }, null, null, null, null),
- new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateUpdate), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateUpdate.Parser, new[]{ "InstanceUniqueName", "AlarmName", "State", "Priority", "Timestamp", "Level", "Message" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateUpdate), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateUpdate.Parser, new[]{ "InstanceUniqueName", "AlarmName", "State", "Priority", "Timestamp", "Level", "Message", "Kind", "Active", "Acknowledged", "Confirmed", "ShelveState", "Suppressed", "SourceReference", "AlarmTypeName", "Category", "OperatorUser", "OperatorComment", "OriginalRaiseTime", "CurrentValue", "LimitValue" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventDto), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventDto.Parser, new[]{ "EventId", "OccurredAtUtc", "Channel", "Kind", "CorrelationId", "SourceSiteId", "SourceInstanceId", "SourceScript", "Actor", "Target", "Status", "HttpStatus", "DurationMs", "ErrorMessage", "ErrorDetail", "RequestSummary", "ResponseSummary", "PayloadTruncated", "Extra", "ExecutionId", "ParentExecutionId", "SourceNode" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventBatch), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventBatch.Parser, new[]{ "Events" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.IngestAck), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.IngestAck.Parser, new[]{ "AcceptedEventIds" }, null, null, null, null),
@@ -1141,6 +1148,20 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
timestamp_ = other.timestamp_ != null ? other.timestamp_.Clone() : null;
level_ = other.level_;
message_ = other.message_;
+ kind_ = other.kind_;
+ active_ = other.active_;
+ acknowledged_ = other.acknowledged_;
+ confirmed_ = other.confirmed_;
+ shelveState_ = other.shelveState_;
+ suppressed_ = other.suppressed_;
+ sourceReference_ = other.sourceReference_;
+ alarmTypeName_ = other.alarmTypeName_;
+ category_ = other.category_;
+ operatorUser_ = other.operatorUser_;
+ operatorComment_ = other.operatorComment_;
+ originalRaiseTime_ = other.originalRaiseTime_ != null ? other.originalRaiseTime_.Clone() : null;
+ currentValue_ = other.currentValue_;
+ limitValue_ = other.limitValue_;
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
@@ -1240,6 +1261,196 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
}
}
+ /// Field number for the "kind" field.
+ public const int KindFieldNumber = 8;
+ private string kind_ = "";
+ ///
+ /// Native alarm enrichment (additive — computed alarms leave these at defaults).
+ /// kind: "Computed" | "NativeOpcUa" | "NativeMxAccess".
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string Kind {
+ get { return kind_; }
+ set {
+ kind_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "active" field.
+ public const int ActiveFieldNumber = 9;
+ private bool active_;
+ ///
+ /// unified condition: active vs inactive
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Active {
+ get { return active_; }
+ set {
+ active_ = value;
+ }
+ }
+
+ /// Field number for the "acknowledged" field.
+ public const int AcknowledgedFieldNumber = 10;
+ private bool acknowledged_;
+ ///
+ /// acked vs unacked
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Acknowledged {
+ get { return acknowledged_; }
+ set {
+ acknowledged_ = value;
+ }
+ }
+
+ /// Field number for the "confirmed" field.
+ public const int ConfirmedFieldNumber = 11;
+ private bool confirmed_;
+ ///
+ /// confirmed (false when not confirmable)
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Confirmed {
+ get { return confirmed_; }
+ set {
+ confirmed_ = value;
+ }
+ }
+
+ /// Field number for the "shelve_state" field.
+ public const int ShelveStateFieldNumber = 12;
+ private string shelveState_ = "";
+ ///
+ /// Unshelved | OneShotShelved | TimedShelved | PermanentShelved
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string ShelveState {
+ get { return shelveState_; }
+ set {
+ shelveState_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "suppressed" field.
+ public const int SuppressedFieldNumber = 13;
+ private bool suppressed_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Suppressed {
+ get { return suppressed_; }
+ set {
+ suppressed_ = value;
+ }
+ }
+
+ /// Field number for the "source_reference" field.
+ public const int SourceReferenceFieldNumber = 14;
+ private string sourceReference_ = "";
+ ///
+ /// native per-condition key; empty for computed
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string SourceReference {
+ get { return sourceReference_; }
+ set {
+ sourceReference_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "alarm_type_name" field.
+ public const int AlarmTypeNameFieldNumber = 15;
+ private string alarmTypeName_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string AlarmTypeName {
+ get { return alarmTypeName_; }
+ set {
+ alarmTypeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "category" field.
+ public const int CategoryFieldNumber = 16;
+ private string category_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string Category {
+ get { return category_; }
+ set {
+ category_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "operator_user" field.
+ public const int OperatorUserFieldNumber = 17;
+ private string operatorUser_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string OperatorUser {
+ get { return operatorUser_; }
+ set {
+ operatorUser_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "operator_comment" field.
+ public const int OperatorCommentFieldNumber = 18;
+ private string operatorComment_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string OperatorComment {
+ get { return operatorComment_; }
+ set {
+ operatorComment_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "original_raise_time" field.
+ public const int OriginalRaiseTimeFieldNumber = 19;
+ private global::Google.Protobuf.WellKnownTypes.Timestamp originalRaiseTime_;
+ ///
+ /// null when unknown
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public global::Google.Protobuf.WellKnownTypes.Timestamp OriginalRaiseTime {
+ get { return originalRaiseTime_; }
+ set {
+ originalRaiseTime_ = value;
+ }
+ }
+
+ /// Field number for the "current_value" field.
+ public const int CurrentValueFieldNumber = 20;
+ private string currentValue_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string CurrentValue {
+ get { return currentValue_; }
+ set {
+ currentValue_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "limit_value" field.
+ public const int LimitValueFieldNumber = 21;
+ private string limitValue_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string LimitValue {
+ get { return limitValue_; }
+ set {
+ limitValue_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public override bool Equals(object other) {
@@ -1262,6 +1473,20 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
if (!object.Equals(Timestamp, other.Timestamp)) return false;
if (Level != other.Level) return false;
if (Message != other.Message) return false;
+ if (Kind != other.Kind) return false;
+ if (Active != other.Active) return false;
+ if (Acknowledged != other.Acknowledged) return false;
+ if (Confirmed != other.Confirmed) return false;
+ if (ShelveState != other.ShelveState) return false;
+ if (Suppressed != other.Suppressed) return false;
+ if (SourceReference != other.SourceReference) return false;
+ if (AlarmTypeName != other.AlarmTypeName) return false;
+ if (Category != other.Category) return false;
+ if (OperatorUser != other.OperatorUser) return false;
+ if (OperatorComment != other.OperatorComment) return false;
+ if (!object.Equals(OriginalRaiseTime, other.OriginalRaiseTime)) return false;
+ if (CurrentValue != other.CurrentValue) return false;
+ if (LimitValue != other.LimitValue) return false;
return Equals(_unknownFields, other._unknownFields);
}
@@ -1276,6 +1501,20 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
if (timestamp_ != null) hash ^= Timestamp.GetHashCode();
if (Level != global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmLevelEnum.AlarmLevelNone) hash ^= Level.GetHashCode();
if (Message.Length != 0) hash ^= Message.GetHashCode();
+ if (Kind.Length != 0) hash ^= Kind.GetHashCode();
+ if (Active != false) hash ^= Active.GetHashCode();
+ if (Acknowledged != false) hash ^= Acknowledged.GetHashCode();
+ if (Confirmed != false) hash ^= Confirmed.GetHashCode();
+ if (ShelveState.Length != 0) hash ^= ShelveState.GetHashCode();
+ if (Suppressed != false) hash ^= Suppressed.GetHashCode();
+ if (SourceReference.Length != 0) hash ^= SourceReference.GetHashCode();
+ if (AlarmTypeName.Length != 0) hash ^= AlarmTypeName.GetHashCode();
+ if (Category.Length != 0) hash ^= Category.GetHashCode();
+ if (OperatorUser.Length != 0) hash ^= OperatorUser.GetHashCode();
+ if (OperatorComment.Length != 0) hash ^= OperatorComment.GetHashCode();
+ if (originalRaiseTime_ != null) hash ^= OriginalRaiseTime.GetHashCode();
+ if (CurrentValue.Length != 0) hash ^= CurrentValue.GetHashCode();
+ if (LimitValue.Length != 0) hash ^= LimitValue.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
@@ -1322,6 +1561,62 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
output.WriteRawTag(58);
output.WriteString(Message);
}
+ if (Kind.Length != 0) {
+ output.WriteRawTag(66);
+ output.WriteString(Kind);
+ }
+ if (Active != false) {
+ output.WriteRawTag(72);
+ output.WriteBool(Active);
+ }
+ if (Acknowledged != false) {
+ output.WriteRawTag(80);
+ output.WriteBool(Acknowledged);
+ }
+ if (Confirmed != false) {
+ output.WriteRawTag(88);
+ output.WriteBool(Confirmed);
+ }
+ if (ShelveState.Length != 0) {
+ output.WriteRawTag(98);
+ output.WriteString(ShelveState);
+ }
+ if (Suppressed != false) {
+ output.WriteRawTag(104);
+ output.WriteBool(Suppressed);
+ }
+ if (SourceReference.Length != 0) {
+ output.WriteRawTag(114);
+ output.WriteString(SourceReference);
+ }
+ if (AlarmTypeName.Length != 0) {
+ output.WriteRawTag(122);
+ output.WriteString(AlarmTypeName);
+ }
+ if (Category.Length != 0) {
+ output.WriteRawTag(130, 1);
+ output.WriteString(Category);
+ }
+ if (OperatorUser.Length != 0) {
+ output.WriteRawTag(138, 1);
+ output.WriteString(OperatorUser);
+ }
+ if (OperatorComment.Length != 0) {
+ output.WriteRawTag(146, 1);
+ output.WriteString(OperatorComment);
+ }
+ if (originalRaiseTime_ != null) {
+ output.WriteRawTag(154, 1);
+ output.WriteMessage(OriginalRaiseTime);
+ }
+ if (CurrentValue.Length != 0) {
+ output.WriteRawTag(162, 1);
+ output.WriteString(CurrentValue);
+ }
+ if (LimitValue.Length != 0) {
+ output.WriteRawTag(170, 1);
+ output.WriteString(LimitValue);
+ }
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@@ -1360,6 +1655,62 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
output.WriteRawTag(58);
output.WriteString(Message);
}
+ if (Kind.Length != 0) {
+ output.WriteRawTag(66);
+ output.WriteString(Kind);
+ }
+ if (Active != false) {
+ output.WriteRawTag(72);
+ output.WriteBool(Active);
+ }
+ if (Acknowledged != false) {
+ output.WriteRawTag(80);
+ output.WriteBool(Acknowledged);
+ }
+ if (Confirmed != false) {
+ output.WriteRawTag(88);
+ output.WriteBool(Confirmed);
+ }
+ if (ShelveState.Length != 0) {
+ output.WriteRawTag(98);
+ output.WriteString(ShelveState);
+ }
+ if (Suppressed != false) {
+ output.WriteRawTag(104);
+ output.WriteBool(Suppressed);
+ }
+ if (SourceReference.Length != 0) {
+ output.WriteRawTag(114);
+ output.WriteString(SourceReference);
+ }
+ if (AlarmTypeName.Length != 0) {
+ output.WriteRawTag(122);
+ output.WriteString(AlarmTypeName);
+ }
+ if (Category.Length != 0) {
+ output.WriteRawTag(130, 1);
+ output.WriteString(Category);
+ }
+ if (OperatorUser.Length != 0) {
+ output.WriteRawTag(138, 1);
+ output.WriteString(OperatorUser);
+ }
+ if (OperatorComment.Length != 0) {
+ output.WriteRawTag(146, 1);
+ output.WriteString(OperatorComment);
+ }
+ if (originalRaiseTime_ != null) {
+ output.WriteRawTag(154, 1);
+ output.WriteMessage(OriginalRaiseTime);
+ }
+ if (CurrentValue.Length != 0) {
+ output.WriteRawTag(162, 1);
+ output.WriteString(CurrentValue);
+ }
+ if (LimitValue.Length != 0) {
+ output.WriteRawTag(170, 1);
+ output.WriteString(LimitValue);
+ }
if (_unknownFields != null) {
_unknownFields.WriteTo(ref output);
}
@@ -1391,6 +1742,48 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
if (Message.Length != 0) {
size += 1 + pb::CodedOutputStream.ComputeStringSize(Message);
}
+ if (Kind.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Kind);
+ }
+ if (Active != false) {
+ size += 1 + 1;
+ }
+ if (Acknowledged != false) {
+ size += 1 + 1;
+ }
+ if (Confirmed != false) {
+ size += 1 + 1;
+ }
+ if (ShelveState.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(ShelveState);
+ }
+ if (Suppressed != false) {
+ size += 1 + 1;
+ }
+ if (SourceReference.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(SourceReference);
+ }
+ if (AlarmTypeName.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(AlarmTypeName);
+ }
+ if (Category.Length != 0) {
+ size += 2 + pb::CodedOutputStream.ComputeStringSize(Category);
+ }
+ if (OperatorUser.Length != 0) {
+ size += 2 + pb::CodedOutputStream.ComputeStringSize(OperatorUser);
+ }
+ if (OperatorComment.Length != 0) {
+ size += 2 + pb::CodedOutputStream.ComputeStringSize(OperatorComment);
+ }
+ if (originalRaiseTime_ != null) {
+ size += 2 + pb::CodedOutputStream.ComputeMessageSize(OriginalRaiseTime);
+ }
+ if (CurrentValue.Length != 0) {
+ size += 2 + pb::CodedOutputStream.ComputeStringSize(CurrentValue);
+ }
+ if (LimitValue.Length != 0) {
+ size += 2 + pb::CodedOutputStream.ComputeStringSize(LimitValue);
+ }
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
@@ -1427,6 +1820,51 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
if (other.Message.Length != 0) {
Message = other.Message;
}
+ if (other.Kind.Length != 0) {
+ Kind = other.Kind;
+ }
+ if (other.Active != false) {
+ Active = other.Active;
+ }
+ if (other.Acknowledged != false) {
+ Acknowledged = other.Acknowledged;
+ }
+ if (other.Confirmed != false) {
+ Confirmed = other.Confirmed;
+ }
+ if (other.ShelveState.Length != 0) {
+ ShelveState = other.ShelveState;
+ }
+ if (other.Suppressed != false) {
+ Suppressed = other.Suppressed;
+ }
+ if (other.SourceReference.Length != 0) {
+ SourceReference = other.SourceReference;
+ }
+ if (other.AlarmTypeName.Length != 0) {
+ AlarmTypeName = other.AlarmTypeName;
+ }
+ if (other.Category.Length != 0) {
+ Category = other.Category;
+ }
+ if (other.OperatorUser.Length != 0) {
+ OperatorUser = other.OperatorUser;
+ }
+ if (other.OperatorComment.Length != 0) {
+ OperatorComment = other.OperatorComment;
+ }
+ if (other.originalRaiseTime_ != null) {
+ if (originalRaiseTime_ == null) {
+ OriginalRaiseTime = new global::Google.Protobuf.WellKnownTypes.Timestamp();
+ }
+ OriginalRaiseTime.MergeFrom(other.OriginalRaiseTime);
+ }
+ if (other.CurrentValue.Length != 0) {
+ CurrentValue = other.CurrentValue;
+ }
+ if (other.LimitValue.Length != 0) {
+ LimitValue = other.LimitValue;
+ }
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}
@@ -1477,6 +1915,65 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
Message = input.ReadString();
break;
}
+ case 66: {
+ Kind = input.ReadString();
+ break;
+ }
+ case 72: {
+ Active = input.ReadBool();
+ break;
+ }
+ case 80: {
+ Acknowledged = input.ReadBool();
+ break;
+ }
+ case 88: {
+ Confirmed = input.ReadBool();
+ break;
+ }
+ case 98: {
+ ShelveState = input.ReadString();
+ break;
+ }
+ case 104: {
+ Suppressed = input.ReadBool();
+ break;
+ }
+ case 114: {
+ SourceReference = input.ReadString();
+ break;
+ }
+ case 122: {
+ AlarmTypeName = input.ReadString();
+ break;
+ }
+ case 130: {
+ Category = input.ReadString();
+ break;
+ }
+ case 138: {
+ OperatorUser = input.ReadString();
+ break;
+ }
+ case 146: {
+ OperatorComment = input.ReadString();
+ break;
+ }
+ case 154: {
+ if (originalRaiseTime_ == null) {
+ OriginalRaiseTime = new global::Google.Protobuf.WellKnownTypes.Timestamp();
+ }
+ input.ReadMessage(OriginalRaiseTime);
+ break;
+ }
+ case 162: {
+ CurrentValue = input.ReadString();
+ break;
+ }
+ case 170: {
+ LimitValue = input.ReadString();
+ break;
+ }
}
}
#endif
@@ -1527,6 +2024,65 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
Message = input.ReadString();
break;
}
+ case 66: {
+ Kind = input.ReadString();
+ break;
+ }
+ case 72: {
+ Active = input.ReadBool();
+ break;
+ }
+ case 80: {
+ Acknowledged = input.ReadBool();
+ break;
+ }
+ case 88: {
+ Confirmed = input.ReadBool();
+ break;
+ }
+ case 98: {
+ ShelveState = input.ReadString();
+ break;
+ }
+ case 104: {
+ Suppressed = input.ReadBool();
+ break;
+ }
+ case 114: {
+ SourceReference = input.ReadString();
+ break;
+ }
+ case 122: {
+ AlarmTypeName = input.ReadString();
+ break;
+ }
+ case 130: {
+ Category = input.ReadString();
+ break;
+ }
+ case 138: {
+ OperatorUser = input.ReadString();
+ break;
+ }
+ case 146: {
+ OperatorComment = input.ReadString();
+ break;
+ }
+ case 154: {
+ if (originalRaiseTime_ == null) {
+ OriginalRaiseTime = new global::Google.Protobuf.WellKnownTypes.Timestamp();
+ }
+ input.ReadMessage(OriginalRaiseTime);
+ break;
+ }
+ case 162: {
+ CurrentValue = input.ReadString();
+ break;
+ }
+ case 170: {
+ LimitValue = input.ReadString();
+ break;
+ }
}
}
}