using System.Runtime.Serialization; namespace EPInterface.Datas { [DataContract] public enum AlgorithmType { [EnumMember] ALG_NONE, //非endpoint //level trigger, invaild time [EnumMember] ALG_FALL_VALUE, //"FallValue" ValidationTime,Threshold < [EnumMember] ALG_RISE_VALUE, //"RiseValue" ValidationTime,Threshold > [EnumMember] ALG_FALL_PERCENT, //"FallPecent" ValidationTime,Threshold, TimeWindow < [EnumMember] ALG_RISE_PERCENT, //"RisePecent" ValidationTime,Threshold, TimeWindow > [EnumMember] ALG_MIN_FALL_PERCENT, //"MinFallPecent" ValidationTime,Threshold, TimeWindow, BandTime [EnumMember] ALG_MAX_FALL_PERCENT, //"MaxFallPecent" ValidationTime,Threshold, TimeWindow, BandTime [EnumMember] ALG_MIN_RISE_PERCENT, //"MinRisePecent" ValidationTime,Threshold, TimeWindow, BandTime [EnumMember] ALG_MAX_RISE_PERCENT, //"MaxRisePecent" ValidationTime,Threshold, TimeWindow, BandTime //Edge Trigger [EnumMember] ALG_GRADIENT, //"Gradient" Threshold, TimeWindow [EnumMember] ALG_RANGE_IN, //"RangeIn" Threshold, TimeWindow [EnumMember] ALG_PEAK, //Peak Threshold, TimeWindow, ValidationTime [EnumMember] ALG_VALLEY, //Vallery Threshold, TimeWindow, ValidationTime [EnumMember] ALG_RISE_FALL, //"RiseFall" Threshold, ValidationTime,ValidationValue, [EnumMember] ALG_FALL_RISE, //"FallRise" Threshold, ValidationTime,ValidationValue, } [DataContract] public class EPDColumn { [DataMember] public bool bNormalization { get; set; } [DataMember] public bool bControl { get; set; } [DataMember] public bool bPostponePercent { get; set; } [DataMember] public bool bEvtTrigger { get; set; } [DataMember] public bool bCriteriaPercent { get; set; } [DataMember] public int nCCDExposureTime { get; set; } [DataMember] public int nPreFilterTime { get; set; } [DataMember] public int nPostFilterTime { get; set; } [DataMember] public AlgorithmType algorithmType { get; set; } [DataMember] public double nCriteria { get; set; } [DataMember] public int nDelayTime { get; set; } [DataMember] public int nValidationTime { get; set; } [DataMember] public int nTimeWindow { get; set; } [DataMember] public int nMinimalTime { get; set; } // Version 2 [DataMember] public int nPostponeTime { get; set; } // Version 2 [DataMember] public int nValidationValue { get; set; } // Used for rise / fall algorithm [DataMember] public int nRefractionIndex { get; set; }// Only for IEP, always zero [DataMember] public float fEtchAmount { get; set; } // Only for IEP, always zero [DataMember] public ushort[] nWaveLength { get; set; } [DataMember] public ushort[] nBinning { get; set; } [DataMember] public string cPSMode { get; set; } // Version 7 [DataMember] public string cFunc { get; set; } public EPDColumn() { nWaveLength = new ushort[8]; nBinning = new ushort[8]; } } [DataContract] public class EPDConfig { [DataMember] public int nParameterCount { get; set; } [DataMember] public EPDColumn[] Columns; public bool FaultIfNoEPDTrigger { get; set; } [DataMember] public string cLogic { get; set; } // logic for multiple endpoints, resevered for future to support logic 'OR' Version 3 public EPDConfig() { Columns = new EPDColumn[3]; for (int i = 0; i < Columns.Length; i++) Columns[i] = new EPDColumn(); } } }