using DTS.Common.Interface.DataRecorders; using DTS.Common.Interface.Sensors.SensorsList; using System; using System.Windows.Input; using DTS.Common.Interface.Groups.GroupList; using DTS.Common.Enums; using DTS.Common.Interface.Sensors; using DTS.Common.Enums.Sensors; using DTS.Common.Enums.Sensors.SensorsList; using DTS.Common.Classes.ChannelCodes; using DTS.Common.Classes.Sensors; using DTS.Common.Interface.Sensors.SoftwareFilters; using System.IO.Ports; namespace DTS.Common.Interface.Channels { public interface IGroupChannel : IComparable, IChannelDbRecord { SensorConstants.AvailableRangesLowG RangeLowG { get; set; } /// /// whether the channel has a calibration less voltage measurement channel /// bool VoltageInsertionSensor { get; } /// /// Whether the channel has an embedded range modifiable low g sensor /// bool RangeModifiableSensorLowG { get; } /// /// whether the channel has an embedded range modifiable ars sensor /// bool RangeModifiableSensorARS { get; } /// /// available initial offsets for this channel /// dependent on a sensor w/ a sensor calibration being assigned /// InitialOffset[] AvailableInitialOffsets { get; set; } /// /// current support for IEPE by channel /// if there is a sensor assigned, value is depedent on sensor bridge /// if there is no sensor but hardware is assigned, is dependent on hardwarechannel support /// if neither is assigned, IEPE Is available to be assigned to the channel /// string IEPESupport { get; } /// /// the group the channel belongs to /// IGroup Group { get; set; } /// /// the name of the group (DisplayName) the channel belongs to /// string GroupName { get; set; } /// /// whether the group name is valid or not /// bool GroupNameValid { get; set; } /// /// whether the isocode is set or not [does not examine iso code validity] /// bool IsoCodeValid { get; set; } /// /// whether the iso channel name is set or not /// bool IsoChannelNameValid { get; set; } /// /// whether the user code is set or not /// bool UserCodeValid { get; set; } /// /// whether the user channel name is set or not /// bool UserChannelNameValid { get; set; } /// /// whether the hardware has been set or not /// bool HardwareValid { get; } /// /// this is the old identifier for the hardware channel assigned /// it's something in the form of [das serial]:[channel index] /// I'm not sure why we have two hardware ids around and why this one is still around... /// string HardwareId { get; set; } /// /// stores the sample rate of the DAS associated with this channel /// double TestSampleRate { get; set; } /// /// whether the sensor has been set or not /// bool SensorValid { get; } /// /// whether the channel should be used for collecting data or not /// bool IsDisabled { get; set; } long ChannelId { get; set; } void SetHardwareChannel(IHardwareChannel hardwareChannel); void SetSensor(IDragAndDropItem sensor, IChannelSetting[] channelDefaults, bool applySensorDataToBlankChannels); bool CompareValue(string property); bool SetDifferent(string property); void SetNotDifferent(); void SetRange(CACOption option); bool CanMoveUp { get; set; } bool CanMoveDown { get; set; } bool DeleteShouldBeEnabled { get; set; } System.Windows.Visibility RemoveSensorVisibility { get; set; } /// /// indicates whether the channel is a new non edited channel /// /// bool IsBlank(); /// /// clears hardware and sensor assignments for channel /// void Clear(); /// /// return true if channel contains the given term /// /// /// bool Filter(string term); /// /// what to do when something is pasted to the channel /// ICommand PasteCommand { get; set; } /// /// settings (range/polarity/ etc) for channel /// IChannelSetting[] ChannelSettings { get; set; } /// /// returns a channel name for channel based on view mode /// /// /// string GetChannelName(IsoViewMode isoViewMode); /// /// returns a code for channel based on view mode /// /// /// string GetChannelCode(IsoViewMode isoViewMode); /// /// creates a memory copy of channel /// /// void Copy(IGroupChannel groupChannel); /// /// string to display in UI for hardware /// string Hardware { get; set; } /// /// string to display in UI for sensor /// string Sensor { get; } ISensorData SensorData { get; } IHardwareChannel HardwareChannel { get; } IDragAndDropItem DragAndDropItem { get; } ISensorCalibration SensorCalibration { get; } void SetSensorCalibration(ISensorCalibration calibration); void SetSensorData(ISensorData sensorData, IDragAndDropItem dragAndDropItem, bool decideSettings = false); bool HasEID { get; } /// /// whether channel has an analog sensor assigned /// if no sensor is assigned but the channel is not blank, returns true /// returns false if channel is blank /// bool IsAnalog { get; } /// /// whether the channel has a squib sensor assigned /// if no sensor is assigned but the channel is not blank, returns true /// returns false if channel is blank /// bool IsSquib { get; } /// /// whether the channel has a digital input sensor assigned /// if no sensor is assigned but the channel is not blank, returns true /// returns false if channel is blank /// bool IsDigitalIn { get; } /// /// whether the channel has a digital output sensor assigned /// if no sensor is assigned but the channel is not blank, returns true /// returns false if channel is blank /// bool IsDigitalOut { get; } /// /// whether the channel is from a RTC module /// returns false if channel is a normal phyiscal measurement channel /// bool IsClock { get; } /// /// whether the channel is from a UART module /// returns false if channel is a normal phyiscal measurement channel /// bool IsUart { get; } /// /// whether the channel is from a stream in module /// returns false if channel is a normal phyiscal measurement channel /// bool IsStreamIn { get; } /// /// whether the channel is from a stream out module /// returns false if channel is a normal phyiscal measurement channel /// bool IsStreamOut { get; } /// /// range setting value for the channel /// double Range { get; set; } /// /// the capacity of the sensor on the channel /// double Capacity { get; } /// /// FB 13120 filter class setting value for the channel /// IFilterClass FilterClass { get; set; } /// /// polarity setting value for the channel /// string Polarity { get; set; } string Units { get; } ZeroMethodType ZeroMethod { get; set; } double ZeroMethodStart { get; set; } double ZeroMethodEnd { get; set; } string Sensitivity { get; } InitialOffset InitialOffset { get; set; } bool SquibLimitDuration { get; set; } double SquibDuration { get; set; } //14623 SquibDelay is nullable for UI perpose double? SquibDelay { get; set; } double SquibCurrent { get; set; } bool DigitalOutLimitDuration { get; set; } double DigitalOutDuration { get; set; } //FB 28107 Define max value allowed for digital out duration double DigitalOutDurationMax { get; set; } double DigitalOutDelay { get; set; } /// /// output mode setting value for the channel /// DigitalOutputModes DigitalOutputMode { get; set; } /// /// fire mode setting value for the channel /// SquibFireMode SquibFireMode { get; set; } /// /// digital input mode setting value for the channel /// DigitalInputModes DigitalInputMode { get; set; } /// /// active value setting value for the channel /// string ActiveValue { get; set; } /// /// default value setting value for the channel /// string DefaultValue { get; set; } /// /// baud rate setting value for the channel /// uint UartBaudRate { get; set; } /// /// data bits setting value for the channel /// uint UartDataBits { get; set; } /// /// stop bits setting value for the channel /// StopBits UartStopBits { get; set; } /// /// parity setting value for the channel /// Parity UartParity { get; set; } /// /// flow control setting value for the channel FB 30486 removed set, it's always NONE /// Handshake UartFlowControl { get; } /// /// data format setting value for the channel /// UartDataFormat UartDataFormat { get; set; } /// /// udp address setting value for the channel /// string StreamInUDPAddress { get; set; } /// /// udp profile setting value for the channel /// UDPStreamProfile StreamOutUDPProfile { get; set; } /// /// udp address setting value for the channel /// string StreamOutUDPAddress { get; set; } /// /// time channel id setting value for the channel /// ushort StreamOutUDPTimeChannelId { get; set; } /// /// data channel id setting value for the channel /// ushort StreamOutUDPDataChannelId { get; set; } /// /// tmns config setting value for the channel /// string StreamOutUDPTmNSConfig { get; set; } /// /// irig data packet interval setting value for the channel /// ushort StreamOutIRIGTimeDataPacketIntervalMs { get; set; } /// /// time in ms between sending out TMATS information while streaming /// http://manuscript.dts.local/f/cases/29987/Add-CG-DP-TMATS-interval-UI-support /// ushort StreamOutTMATSIntervalMs { get; set; } /// /// FB 15574 FB 13120 /// get the current FilterClass from the current isocode /// /// /// /// IFilterClass GetFilterClassFromISOCode(ISoftwareFilter[] filters, string isoCode); /// /// gets a function that will perform coercion on isocodes if needed /// CoerceISOCodeDelegate CoerceISOCodeFunc { get; } /// /// returns the status of the channel considering IsComplete and sensor cal status /// UIItemStatus ChannelStatus { get; } /// /// sets the channel settings based on a sensor's settings /// /// void SetSettingsFromSensor(ISensorData sd); /// /// returns a list of sensor parameter differences from sensor vs channel /// returns empty string if there aren't any /// /// /// string GetChangeList(ISensorData sensor); bool IsRangeDifferent { get; set; } bool IsFilterClassDifferent { get; set; } bool IsPolarityDifferent { get; set; } bool IsZeroMethodDifferent { get; set; } bool IsZeroMethodStartDifferent { get; set; } bool IsZeroMethodEndDifferent { get; set; } bool IsInitialOffsetDifferent { get; set; } bool IsSquibFireModeDifferent { get; set; } bool IsSquibDelayDifferent { get; set; } bool IsSquibLimitDurationDifferent { get; set; } bool IsSquibDurationDifferent { get; set; } bool IsSquibCurrentDifferent { get; set; } bool IsDigitalOutputModeDifferent { get; set; } bool IsDigitalOutDelayDifferent { get; set; } bool IsDigitalOutLimitDurationDifferent { get; set; } bool IsDigitalOutDurationDifferent { get; set; } bool IsDigitalInputModeDifferent { get; set; } bool IsDefaultValueDifferent { get; set; } bool IsActiveValueDifferent { get; set; } bool BorderShouldShowOutOfDate { get; set; } } }