init
This commit is contained in:
@@ -0,0 +1,342 @@
|
||||
---
|
||||
source_files:
|
||||
- Common/DTS.CommonCore/Interface/Channels/IChannelSettingRecord.cs
|
||||
- Common/DTS.CommonCore/Interface/Channels/IGroupChannelSettingRecord.cs
|
||||
- Common/DTS.CommonCore/Interface/Channels/IChannelCode.cs
|
||||
- Common/DTS.CommonCore/Interface/Channels/IChannelSetting.cs
|
||||
- Common/DTS.CommonCore/Interface/Channels/IChannelDbRecord.cs
|
||||
- Common/DTS.CommonCore/Interface/Channels/IGroupChannel.cs
|
||||
generated_at: "2026-04-16T02:30:03.492567+00:00"
|
||||
model: "Qwen/Qwen3-Coder-Next-FP8"
|
||||
schema_version: 1
|
||||
sha256: "cbc4fb29d29bc466"
|
||||
---
|
||||
|
||||
# Channels
|
||||
|
||||
### **Purpose**
|
||||
This module defines a set of interfaces that model channel-related data and behavior within the DTS (Data Acquisition and Test System) platform. It establishes contracts for representing physical and logical channels—both as database records (`IChannelDbRecord`) and as runtime objects (`IGroupChannel`)—alongside associated settings (`IChannelSetting`, `IChannelSettingRecord`, `IGroupChannelSettingRecord`) and channel identification codes (`IChannelCode`). These interfaces collectively support configuration, data acquisition, UI binding, and persistence of measurement channels, including support for analog, digital, squib, clock, UART, and stream modules, as well as sensor/hardware assignment, calibration, and filtering.
|
||||
|
||||
---
|
||||
|
||||
### **Public Interface**
|
||||
|
||||
#### **`IChannelSettingRecord`**
|
||||
- **`int Id { get; set; }`**
|
||||
Unique identifier for the setting definition.
|
||||
- **`string SettingName { get; set; }`**
|
||||
Human-readable name of the setting (e.g., `"Range"`, `"Polarity"`).
|
||||
- **`string DefaultValue { get; set; }`**
|
||||
Default value (as a string) for this setting type.
|
||||
|
||||
#### **`IGroupChannelSettingRecord`**
|
||||
- **`long ChannelId { get; set; }`**
|
||||
Foreign key referencing the channel (`IChannelDbRecord.Id`).
|
||||
- **`int SettingId { get; set; }`**
|
||||
Reference to the setting definition (`IChannelSettingRecord.Id`).
|
||||
- **`string SettingValue { get; set; }`**
|
||||
Actual value assigned to this setting on the channel.
|
||||
|
||||
#### **`IChannelCode`**
|
||||
- **`int Id { get; }`**
|
||||
Unique identifier for the channel code.
|
||||
- **`string Code { get; }`**
|
||||
Machine-readable code (e.g., ISO code fragment).
|
||||
- **`string Name { get; }`**
|
||||
Human-readable description of the code.
|
||||
- **`ChannelEnumsAndConstants.ChannelCodeType CodeType { get; }`**
|
||||
Enumerated type of the code (e.g., `Range`, `Filter`, `Polarity`).
|
||||
|
||||
#### **`IChannelSetting`**
|
||||
- **`long ChannelId { get; set; }`**
|
||||
ID of the channel this setting belongs to.
|
||||
- **`int SettingTypeId { get; }`**
|
||||
ID of the setting type (corresponds to `IChannelSettingRecord.Id`).
|
||||
- **`string SettingName { get; }`**
|
||||
Name of the setting (e.g., `"Range"`).
|
||||
- **`string DefaultValue { get; }`**
|
||||
Default value for this setting type.
|
||||
- **`string Value { get; set; }`**
|
||||
Current value stored as a string.
|
||||
- **`int IntValue { get; set; }`**
|
||||
Typed value (int) for numeric settings.
|
||||
- **`double DoubleValue { get; set; }`**
|
||||
Typed value (double) for floating-point settings.
|
||||
- **`bool BoolValue { get; set; }`**
|
||||
Typed value (bool) for boolean settings.
|
||||
- **`IChannelSetting Clone()`**
|
||||
Creates a deep copy of the setting.
|
||||
|
||||
#### **`IChannelDbRecord`**
|
||||
- **`long Id { get; set; }`**
|
||||
Primary key in the database.
|
||||
- **`int GroupId { get; set; }`**
|
||||
Foreign key to the group (`IGroup.Id`).
|
||||
- **`string IsoCode { get; set; }`**
|
||||
ISO-standard code for the channel (e.g., `"A1.1"`).
|
||||
- **`string IsoChannelName { get; set; }`**
|
||||
ISO-standard name of the channel.
|
||||
- **`string UserCode { get; set; }`**
|
||||
User-defined code.
|
||||
- **`string UserChannelName { get; set; }`**
|
||||
User-defined name of the channel.
|
||||
- **`int DASId { get; set; }`**
|
||||
ID of the data acquisition system (DAS) device.
|
||||
- **`int DASChannelIndex { get; set; }`**
|
||||
Physical channel index on the DAS device.
|
||||
- **`int GroupChannelOrder { get; set; }`**
|
||||
Order of the channel within its group.
|
||||
- **`int TestSetupOrder { get; set; }`**
|
||||
Order of the channel in the test setup.
|
||||
- **`int SensorId { get; set; }`**
|
||||
ID of the assigned sensor.
|
||||
- **`bool Disabled { get; set; }`**
|
||||
Whether the channel is disabled.
|
||||
- **`DateTime LastModified { get; set; }`**
|
||||
Timestamp of last modification.
|
||||
- **`string LastModifiedBy { get; set; }`**
|
||||
User who last modified the record.
|
||||
|
||||
#### **`IGroupChannel`** *(Extends `IChannelDbRecord`)*
|
||||
All members of `IChannelDbRecord` are inherited. Additional members:
|
||||
|
||||
- **`SensorConstants.AvailableRangesLowG RangeLowG { get; set; }`**
|
||||
Low-G sensor range setting.
|
||||
- **`bool VoltageInsertionSensor { get; }`**
|
||||
Indicates presence of a calibration-less voltage measurement channel.
|
||||
- **`bool RangeModifiableSensorLowG { get; }`**
|
||||
Indicates embedded low-G sensor with modifiable range.
|
||||
- **`bool RangeModifiableSensorARS { get; }`**
|
||||
Indicates embedded ARS sensor with modifiable range.
|
||||
- **`InitialOffset[] AvailableInitialOffsets { get; set; }`**
|
||||
Available initial offset options (depends on assigned sensor calibration).
|
||||
- **`string IEPESupport { get; }`**
|
||||
IEPE support status (e.g., `"Supported"`, `"N/A"`).
|
||||
- **`IGroup Group { get; set; }`**
|
||||
Parent group object.
|
||||
- **`string GroupName { get; set; }`**
|
||||
Display name of the parent group.
|
||||
- **`bool GroupNameValid { get; set; }`**
|
||||
Whether `GroupName` is set (not validated for correctness).
|
||||
- **`bool IsoCodeValid { get; set; }`**
|
||||
Whether `IsoCode` is set (not validated for correctness).
|
||||
- **`bool IsoChannelNameValid { get; set; }`**
|
||||
Whether `IsoChannelName` is set.
|
||||
- **`bool UserCodeValid { get; set; }`**
|
||||
Whether `UserCode` is set.
|
||||
- **`bool UserChannelNameValid { get; set; }`**
|
||||
Whether `UserChannelName` is set.
|
||||
- **`bool HardwareValid { get; }`**
|
||||
Whether hardware has been assigned.
|
||||
- **`string HardwareId { get; set; }`**
|
||||
Legacy hardware identifier (format: `"[das serial]:[channel index]"`).
|
||||
- **`double TestSampleRate { get; set; }`**
|
||||
Sample rate of the associated DAS.
|
||||
- **`bool SensorValid { get; }`**
|
||||
Whether a sensor has been assigned.
|
||||
- **`bool IsDisabled { get; set; }`**
|
||||
Whether the channel is disabled for data collection.
|
||||
- **`void SetHardwareChannel(IHardwareChannel hardwareChannel)`**
|
||||
Assigns a hardware channel object.
|
||||
- **`void SetSensor(IDragAndDropItem sensor, IChannelSetting[] channelDefaults, bool applySensorDataToBlankChannels)`**
|
||||
Assigns a sensor and optionally applies its default settings.
|
||||
- **`bool CompareValue(string property)`**
|
||||
Compares current value of a property to its original (e.g., for change tracking).
|
||||
- **`bool SetDifferent(string property)`**
|
||||
Marks a property as having been changed from its original value.
|
||||
- **`void SetNotDifferent()`**
|
||||
Clears all "different" flags.
|
||||
- **`void SetRange(CACOption option)`**
|
||||
Sets range based on a CAC option.
|
||||
- **`bool CanMoveUp { get; set; }`**
|
||||
Whether the channel can be moved up in the list.
|
||||
- **`bool CanMoveDown { get; set; }`**
|
||||
Whether the channel can be moved down in the list.
|
||||
- **`bool DeleteShouldBeEnabled { get; set; }`**
|
||||
Whether delete action should be enabled in UI.
|
||||
- **`System.Windows.Visibility RemoveSensorVisibility { get; set; }`**
|
||||
UI visibility for sensor removal control.
|
||||
- **`bool IsBlank()`**
|
||||
Returns `true` if the channel is new and unedited.
|
||||
- **`void Clear()`**
|
||||
Clears hardware and sensor assignments.
|
||||
- **`bool Filter(string term)`**
|
||||
Returns `true` if the channel matches the given search term.
|
||||
- **`ICommand PasteCommand { get; set; }`**
|
||||
Command executed on paste operation.
|
||||
- **`IChannelSetting[] ChannelSettings { get; set; }`**
|
||||
Array of channel-specific settings.
|
||||
- **`string GetChannelName(IsoViewMode isoViewMode)`**
|
||||
Returns channel name based on ISO view mode.
|
||||
- **`string GetChannelCode(IsoViewMode isoViewMode)`**
|
||||
Returns channel code based on ISO view mode.
|
||||
- **`void Copy(IGroupChannel groupChannel)`**
|
||||
Copies state from another channel.
|
||||
- **`string Hardware { get; set; }`**
|
||||
UI display string for hardware.
|
||||
- **`string Sensor { get; }`**
|
||||
UI display string for sensor.
|
||||
- **`ISensorData SensorData { get; }`**
|
||||
Sensor metadata and configuration.
|
||||
- **`IHardwareChannel HardwareChannel { get; }`**
|
||||
Hardware channel object.
|
||||
- **`IDragAndDropItem DragAndDropItem { get; }`**
|
||||
Drag-and-drop representation of the channel.
|
||||
- **`ISensorCalibration SensorCalibration { get; }`**
|
||||
Sensor calibration data.
|
||||
- **`void SetSensorCalibration(ISensorCalibration calibration)`**
|
||||
Assigns sensor calibration.
|
||||
- **`void SetSensorData(ISensorData sensorData, IDragAndDropItem dragAndDropItem, bool decideSettings = false)`**
|
||||
Assigns sensor data and optionally updates settings.
|
||||
- **`bool HasEID { get; }`**
|
||||
Whether the channel has an EID (Embedded ID).
|
||||
- **`bool IsAnalog { get; }`**
|
||||
Whether channel has an analog sensor assigned (or is non-blank).
|
||||
- **`bool IsSquib { get; }`**
|
||||
Whether channel has a squib sensor assigned (or is non-blank).
|
||||
- **`bool IsDigitalIn { get; }`**
|
||||
Whether channel has a digital input sensor assigned (or is non-blank).
|
||||
- **`bool IsDigitalOut { get; }`**
|
||||
Whether channel has a digital output sensor assigned (or is non-blank).
|
||||
- **`bool IsClock { get; }`**
|
||||
Whether channel is from an RTC module.
|
||||
- **`bool IsUart { get; }`**
|
||||
Whether channel is from a UART module.
|
||||
- **`bool IsStreamIn { get; }`**
|
||||
Whether channel is from a stream-in module.
|
||||
- **`bool IsStreamOut { get; }`**
|
||||
Whether channel is from a stream-out module.
|
||||
- **`double Range { get; set; }`**
|
||||
Current range setting.
|
||||
- **`double Capacity { get; }`**
|
||||
Sensor capacity.
|
||||
- **`IFilterClass FilterClass { get; set; }`**
|
||||
Filter class setting.
|
||||
- **`string Polarity { get; set; }`**
|
||||
Polarity setting.
|
||||
- **`string Units { get; }`**
|
||||
Units of measurement.
|
||||
- **`ZeroMethodType ZeroMethod { get; set; }`**
|
||||
Zeroing method.
|
||||
- **`double ZeroMethodStart { get; set; }`**
|
||||
Start time for zeroing.
|
||||
- **`double ZeroMethodEnd { get; set; }`**
|
||||
End time for zeroing.
|
||||
- **`string Sensitivity { get; }`**
|
||||
Sensor sensitivity.
|
||||
- **`InitialOffset InitialOffset { get; set; }`**
|
||||
Initial offset value.
|
||||
- **`bool SquibLimitDuration { get; set; }`**
|
||||
Whether squib duration is limited.
|
||||
- **`double SquibDuration { get; set; }`**
|
||||
Squib duration.
|
||||
- **`double? SquibDelay { get; set; }`**
|
||||
Nullable squib delay (nullable for UI purposes).
|
||||
- **`double SquibCurrent { get; set; }`**
|
||||
Squib current.
|
||||
- **`bool DigitalOutLimitDuration { get; set; }`**
|
||||
Whether digital output duration is limited.
|
||||
- **`double DigitalOutDuration { get; set; }`**
|
||||
Digital output duration.
|
||||
- **`double DigitalOutDurationMax { get; set; }`**
|
||||
Maximum allowed digital output duration (FB 28107).
|
||||
- **`double DigitalOutDelay { get; set; }`**
|
||||
Digital output delay.
|
||||
- **`DigitalOutputModes DigitalOutputMode { get; set; }`**
|
||||
Digital output mode.
|
||||
- **`SquibFireMode SquibFireMode { get; set; }`**
|
||||
Squib fire mode.
|
||||
- **`DigitalInputModes DigitalInputMode { get; set; }`**
|
||||
Digital input mode.
|
||||
- **`string ActiveValue { get; set; }`**
|
||||
Active value for digital inputs/outputs.
|
||||
- **`string DefaultValue { get; set; }`**
|
||||
Default value for digital inputs/outputs.
|
||||
- **`uint UartBaudRate { get; set; }`**
|
||||
UART baud rate.
|
||||
- **`uint UartDataBits { get; set; }`**
|
||||
UART data bits.
|
||||
- **`StopBits UartStopBits { get; set; }`**
|
||||
UART stop bits.
|
||||
- **`Parity UartParity { get; set; }`**
|
||||
UART parity.
|
||||
- **`Handshake UartFlowControl { get; }`**
|
||||
UART flow control (always `NONE`; FB 30486).
|
||||
- **`UartDataFormat UartDataFormat { get; set; }`**
|
||||
UART data format.
|
||||
- **`string StreamInUDPAddress { get; set; }`**
|
||||
UDP address for stream-in.
|
||||
- **`UDPStreamProfile StreamOutUDPProfile { get; set; }`**
|
||||
UDP profile for stream-out.
|
||||
- **`string StreamOutUDPAddress { get; set; }`**
|
||||
UDP address for stream-out.
|
||||
- **`ushort StreamOutUDPTimeChannelId { get; set; }`**
|
||||
Time channel ID for stream-out UDP.
|
||||
- **`ushort StreamOutUDPDataChannelId { get; set; }`**
|
||||
Data channel ID for stream-out UDP.
|
||||
- **`string StreamOutUDPTmNSConfig { get; set; }`**
|
||||
TMATS configuration for stream-out.
|
||||
- **`ushort StreamOutIRIGTimeDataPacketIntervalMs { get; set; }`**
|
||||
IRIG packet interval (ms).
|
||||
- **`ushort StreamOutTMATSIntervalMs { get; set; }`**
|
||||
TMATS interval (ms; per FB 29987).
|
||||
- **`IFilterClass GetFilterClassFromISOCode(ISoftwareFilter[] filters, string isoCode)`**
|
||||
Retrieves filter class based on ISO code.
|
||||
- **`CoerceISOCodeDelegate CoerceISOCodeFunc { get; }`**
|
||||
Function to coerce/normalize ISO codes.
|
||||
- **`UIItemStatus ChannelStatus { get; }`**
|
||||
Combined status of channel (e.g., incomplete, error).
|
||||
- **`void SetSettingsFromSensor(ISensorData sd)`**
|
||||
Applies sensor settings to channel.
|
||||
- **`string GetChangeList(ISensorData sensor)`**
|
||||
Returns list of differences between sensor and channel settings.
|
||||
- **`bool IsRangeDifferent { get; set; }`**
|
||||
Whether range differs from original.
|
||||
- **`bool IsFilterClassDifferent { get; set; }`**
|
||||
Whether filter class differs from original.
|
||||
- **`bool IsPolarityDifferent { get; set; }`**
|
||||
Whether polarity differs from original.
|
||||
- **`bool IsZeroMethodDifferent { get; set; }`**
|
||||
Whether zero method differs from original.
|
||||
- **`bool IsZeroMethodStartDifferent { get; set; }`**
|
||||
Whether zero start time differs.
|
||||
- **`bool IsZeroMethodEndDifferent { get; set; }`**
|
||||
Whether zero end time differs.
|
||||
- **`bool IsInitialOffsetDifferent { get; set; }`**
|
||||
Whether initial offset differs.
|
||||
- **`bool IsSquibFireModeDifferent { get; set; }`**
|
||||
Whether squib fire mode differs.
|
||||
- **`bool IsSquibDelayDifferent { get; set; }`**
|
||||
Whether squib delay differs.
|
||||
- **`bool IsSquibLimitDurationDifferent { get; set; }`**
|
||||
Whether squib duration limit differs.
|
||||
- **`bool IsSquibDurationDifferent { get; set; }`**
|
||||
Whether squib duration differs.
|
||||
- **`bool IsSquibCurrentDifferent { get; set; }`**
|
||||
Whether squib current differs.
|
||||
- **`bool IsDigitalOutputModeDifferent { get; set; }`**
|
||||
Whether digital output mode differs.
|
||||
- **`bool IsDigitalOutDelayDifferent { get; set; }`**
|
||||
Whether digital output delay differs.
|
||||
- **`bool IsDigitalOutLimitDurationDifferent { get; set; }`**
|
||||
Whether digital output duration limit differs.
|
||||
- **`bool IsDigitalOutDurationDifferent { get; set; }`**
|
||||
Whether digital output duration differs.
|
||||
- **`bool IsDigitalInputModeDifferent { get; set; }`**
|
||||
Whether digital input mode differs.
|
||||
- **`bool IsDefaultValueDifferent { get; set; }`**
|
||||
Whether default value differs.
|
||||
- **`bool IsActiveValueDifferent { get; set; }`**
|
||||
Whether active value differs.
|
||||
- **`bool BorderShouldShowOutOfDate { get; set; }`**
|
||||
Whether UI border should indicate stale data.
|
||||
|
||||
---
|
||||
|
||||
### **Invariants**
|
||||
- `IChannelDbRecord.Id` must be unique per record and non-negative.
|
||||
- `IChannelDbRecord.GroupId` must reference a valid group.
|
||||
- `IChannelDbRecord.DASChannelIndex` must be ≥ 0 and consistent with the DAS device’s channel count.
|
||||
- `IChannelDbRecord.SensorId` must be ≥ 0 if a sensor is assigned; otherwise, may be 0 or -1 depending on implementation.
|
||||
- `IGroupChannel.IsBlank()` returns `true` only if the channel has never been edited (i.e., no hardware/sensor assigned and all fields at defaults).
|
||||
- `IGroupChannel.SensorValid` and
|
||||
Reference in New Issue
Block a user