using Infineon.Yoda; using System; using System.Collections.Generic; using System.Linq; using TIBCO.Rendezvous; namespace Adaptation.Si { public class LDS2559Reply { public enum FieldName { ETC, ETX, IFX_ECD, IFX_ETX, PARAMETER, ACCEPTED, EXCLUDE, HIT, CALCULATED, CHANNEL, CKC, OOB, VIOLATION, MEAN, OFFLINE, PARAMETERNAME, SAMPID_64, REPLY, UNACCEPTED, VIOLATIONS } public class HIT { public object CALCULATED { get; set; } //bool public object CHANNEL { get; set; } //Int32 public object CKC { get; set; } //Int32 public object OOB { get; set; } //bool public object VIOLATION { get; set; } //Int32 public HIT(Message value) { MessageField messageField; for (uint i = 0; i < value.FieldCount; i++) { messageField = value.GetFieldByIndex(i); if (messageField.Name == FieldName.CALCULATED.ToString()) CALCULATED = messageField.Value; else if (messageField.Name == FieldName.CHANNEL.ToString()) CHANNEL = messageField.Value; else if (messageField.Name == FieldName.CKC.ToString()) CKC = messageField.Value; else if (messageField.Name == FieldName.OOB.ToString()) OOB = messageField.Value; else if (messageField.Name == FieldName.VIOLATION.ToString()) VIOLATION = messageField.Value; else throw new Exception(); } } public override string ToString() { return string.Concat(CALCULATED, '\t', CHANNEL, '\t', CKC, '\t', OOB, '\t', VIOLATION); } } public class PARAMETER { public object ACCEPTED { get; set; } //bool public object EXCLUDE { get; set; } //Int32 public List HIT { get; set; } public object MEAN { get; set; } //double public object OFFLINE { get; set; } //bool public object PARAMETERNAME { get; set; } //string public object SAMPID_64 { get; set; } //Int64 public PARAMETER(Message value) { HIT hit; Message message; HIT = new List(); object objectFieldValue; MessageField messageField; for (uint i = 0; i < value.FieldCount; i++) { messageField = value.GetFieldByIndex(i); if (messageField.Name == FieldName.ACCEPTED.ToString()) ACCEPTED = messageField.Value; else if (messageField.Name == FieldName.EXCLUDE.ToString()) EXCLUDE = messageField.Value; else if (messageField.Name == FieldName.HIT.ToString()) { if (!(messageField.Value is null) && messageField.Value is Message) { message = (Message)messageField.Value; { for (uint j = 0; j < message.FieldCount; j++) { objectFieldValue = message.GetFieldByIndex(j).Value; if (!(objectFieldValue is null) && objectFieldValue is Message) { hit = new HIT((Message)objectFieldValue); HIT.Add(hit); } } } } } else if (messageField.Name == FieldName.MEAN.ToString()) MEAN = messageField.Value; else if (messageField.Name == FieldName.OFFLINE.ToString()) OFFLINE = messageField.Value; else if (messageField.Name == FieldName.PARAMETERNAME.ToString()) PARAMETERNAME = messageField.Value; else if (messageField.Name == FieldName.SAMPID_64.ToString()) SAMPID_64 = messageField.Value; else throw new Exception(); } } public override string ToString() { string result; if (!HIT.Any()) result = string.Concat(ACCEPTED, '\t', EXCLUDE, '\t', "HIT = 0", '\t', MEAN, '\t', OFFLINE, '\t', PARAMETERNAME, '\t', SAMPID_64); else result = string.Concat(ACCEPTED, '\t', EXCLUDE, '\t', "[Count ", HIT.Count, " - 0 {", HIT[0], "}]", '\t', MEAN, '\t', OFFLINE, '\t', PARAMETERNAME, '\t', SAMPID_64); return result; } } public class DATA { public object ETC { get; set; } //Int32 public object ETX { get; set; } public object IFX_ECD { get; set; } //Int32 public object IFX_ETX { get; set; } //string public List PARAMETER { get; set; } public object REPLY { get; set; } //Int32 public object UNACCEPTED { get; set; } //Int32 public object VIOLATIONS { get; set; } //Int32 public DATA(IfxDoc ifxDoc = null) { PARAMETER = new List(); if (!(ifxDoc is null)) { Message message; PARAMETER parameter; object objectFieldValue; MessageField messageField; for (uint i = 0; i < ifxDoc.msg.FieldCount; i++) { messageField = ifxDoc.msg.GetFieldByIndex(i); if (messageField.Name == FieldName.ETC.ToString()) ETC = messageField.Value; else if (messageField.Name == FieldName.ETX.ToString()) ETX = messageField.Value; else if (messageField.Name == FieldName.IFX_ECD.ToString()) IFX_ECD = messageField.Value; else if (messageField.Name == FieldName.IFX_ETX.ToString()) IFX_ETX = messageField.Value; else if (messageField.Name == FieldName.PARAMETER.ToString()) { if (!(messageField.Value is null) && messageField.Value is Message) { message = (Message)messageField.Value; { for (uint j = 0; j < message.FieldCount; j++) { objectFieldValue = message.GetFieldByIndex(j).Value; if (!(objectFieldValue is null) && objectFieldValue is Message) { parameter = new PARAMETER((Message)objectFieldValue); PARAMETER.Add(parameter); } } } } } else if (messageField.Name == FieldName.REPLY.ToString()) REPLY = messageField.Value; else if (messageField.Name == FieldName.UNACCEPTED.ToString()) UNACCEPTED = messageField.Value; else if (messageField.Name == FieldName.VIOLATIONS.ToString()) VIOLATIONS = messageField.Value; else throw new Exception(); } } } public override string ToString() { string result; if (!PARAMETER.Any()) result = string.Concat(IFX_ECD, '\t', IFX_ETX, '\t', "PARAMETER = 0", '\t', REPLY, '\t', UNACCEPTED, '\t', VIOLATIONS); else result = string.Concat(IFX_ECD, '\t', IFX_ETX, '\t', "[Count ", PARAMETER.Count, " - 0 {", PARAMETER[0], "}]", '\t', REPLY, '\t', UNACCEPTED, '\t', VIOLATIONS); return result; } } } }