Files
2026-04-17 14:55:32 -04:00

15 KiB

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
Common/DTS.Common/Classes/DTS.Viewer/TestMetadata/TestMetadata.cs
Common/DTS.Common/Classes/DTS.Viewer/TestMetadata/TestGraphs.cs
Common/DTS.Common/Classes/DTS.Viewer/TestMetadata/TestSetupMetadata.cs
Common/DTS.Common/Classes/DTS.Viewer/TestMetadata/TestRunMetadata.cs
Common/DTS.Common/Classes/DTS.Viewer/TestMetadata/TestSummary.cs
Common/DTS.Common/Classes/DTS.Viewer/TestMetadata/TestModule.cs
Common/DTS.Common/Classes/DTS.Viewer/TestMetadata/TestChannel.cs
Common/DTS.Common/Classes/DTS.Viewer/TestMetadata/TestMetadataList.cs
2026-04-16T03:19:21.354792+00:00 Qwen/Qwen3-Coder-Next-FP8 1 2276bf4d72ccc406

TestMetadata Module Documentation

1. Purpose

This module provides data structures and parsing logic for loading, representing, and managing test metadata from XML-based .dts files in the DTS Viewer system. It defines core domain models (TestMetadata, TestRunMetadata, TestSetupMetadata, TestModule, TestChannel, TestGraphs, TestSummary) that encapsulate test configuration, hardware setup, channel definitions, and summary information. The TestMetadataList class is responsible for deserializing .dts XML files into these strongly-typed objects and constructing TestSummary instances for UI binding. This module serves as the foundational data layer for test data browsing, selection, and visualization components.

2. Public Interface

TestMetadataList

  • Task<ObservableCollection<ITestSummary>> GetTestSummaryListAsync(IBaseViewModel parent, string path, string file, string pattern = "")
    Async wrapper for GetTestSummaryList. Returns a list of ITestSummary objects built from .dts files in the specified directory.

  • ObservableCollection<ITestSummary> GetTestSummaryList(IBaseViewModel parent, string path, string file = "", string pattern = "")
    Loads .dts files (matching pattern, default .dts) from path, parses them into ITestMetadata, and returns a collection of ITestSummary objects. parent is used for command wiring in TestSummary.

  • ObservableCollection<ITestSummary> GetTestSummaryList(string path, string file = "", string pattern = "")
    Overload of GetTestSummaryList without a parent parameter (used when Parent property in TestSummary is not required).

  • List<ITestMetadata> GetTestMetadataList(XDocument xDoc, string path, string file)
    Parses an XDocument (representing a .dts XML file) into a list of ITestMetadata instances. Includes error handling, filtering for TSRAIR_GO_TEST when RunTestVariables.IsTSRAIRGo is true, and channel array pre-allocation.

TestMetadata (implements ITestMetadata)

  • ITestRunMetadata TestRun { get; set; }
    Contains test run-level metadata (e.g., test ID, description, modules, channels).

  • ITestSetupMetadata TestSetup { get; set; }
    Contains test setup-level metadata (e.g., setup name, timestamp, graphs, calibration behavior).

TestRunMetadata (implements ITestRunMetadata, INotifyPropertyChanged)

  • string Name { get; set; }
    Logical test name (from XML Id attribute).

  • string Id { get; set; }
    File name without extension (from XML FilePath attribute).

  • string Description { get; set; }
    Test description.

  • bool InlineSerializedData { get; set; }
    Indicates if raw data is embedded in the XML.

  • string TestGuid { get; set; }
    Unique test identifier.

  • int FaultFlags { get; set; }
    Bitmask of test fault conditions.

  • string Software { get; set; }, string SoftwareVersion { get; set; }
    Software name and version used for acquisition.

  • string DataType { get; set; }
    Type of data (e.g., "Acceleration", "Force").

  • DateTime FileDate { get; set; }
    File system modification date.

  • string FilePath { get; set; }
    Full path to the test data file.

  • List<ITestModule> Modules { get; set; }
    List of acquisition modules used.

  • List<ITestChannel> Channels { get; set; }
    List of physical channels.

  • List<ITestChannel> CalculatedChannels { get; set; }
    List of derived channels.

  • bool IsSelected { get; set; }
    UI selection state (raises PropertyChanged).

  • event PropertyChangedEventHandler PropertyChanged
    Implements INotifyPropertyChanged.

TestSetupMetadata (implements ITestSetupMetadata)

  • string SetupName { get; set; }
    Name of the test setup configuration.

  • DateTime TimeStamp { get; set; }
    Setup timestamp (fallback if module timestamps are invalid/zero).

  • List<ITestGraphs> TestGraphs { get; set; }
    List of graph definitions.

  • CalibrationBehaviors CalibrationBehavior { get; set; }
    Calibration strategy (e.g., NonLinearIfAvailable).

TestGraphs (implements ITestGraphs)

  • string Name { get; set; }
    Graph display name.

  • string HardwareChannelName { get; set; }
    Hardware channel name associated with the graph.

  • List<string> ChannelIds { get; set; }
    List of channel IDs included in the graph.

  • List<ITestChannel> Channels { get; set; }
    Note: Not populated during XML parsing; likely for runtime use.

TestModule (implements ITestModule, INotifyPropertyChanged)

  • string SerialNumber { get; set; }, string BaseSerialNumber { get; set; }
    Module serial and base serial numbers.

  • int Number { get; set; }, int NumberOfChannels { get; set; }
    Module number and channel count.

  • int SampleRateHz { get; set; }, int UnsubsampledSampleRateHz { get; set; }
    Sample rates (post- and pre-subsampling).

  • double RequestedPreTriggerSeconds { get; set; }, double PreTriggerSeconds { get; set; }, double RequestedPostTriggerSeconds { get; set; }, double PostTriggerSeconds { get; set; }
    Trigger timing parameters.

  • int StartRecordTimestampSec { get; set; }, int StartRecordTimestampNanoSec { get; set; }, int TriggerTimestampSec { get; set; }, int TriggerTimestampNanoSec { get; set; }
    High-precision timestamps (PTP1588).

  • List<ulong> TriggerSampleNumbers { get; set; }
    Note: Always initialized as empty list; parsing logic returns empty list.

  • bool PTPMasterSync { get; set; }
    Indicates PTP synchronization status.

  • Tilt Sensor Angles (Pre/Post):
    TiltSensorAxis{X,Y,Z}Degrees{Pre,Post} — tilt sensor readings before/after test.

  • Temperature Readings (Pre/Post):
    TemperatureLocation{1-4}{Pre,Post} — temperature sensor readings.

  • List<ITestChannel> Channels { get; set; }, List<ITestChannel> CalculatedChannels { get; set; }
    Channels associated with this module.

  • bool IsSelected { get; set; }
    Selection state (raises PropertyChanged).

  • event PropertyChangedEventHandler PropertyChanged
    Implements INotifyPropertyChanged.

TestChannel (implements ITestChannel, IBasePropertyChanged, ISerializable)

  • string Group { get; set; }, string SubGroup { get; set; }
    Logical grouping.

  • bool IsGraphChannel { get; set; }, string GraphName { get; set; }
    Indicates if channel is used in a graph.

  • string TestId { get; set; }, string TestSetupName { get; set; }, string ModuleSerialNumber { get; set; }
    Contextual identifiers.

  • string SerialNumber { get; set; }, string ChannelId { get; set; }
    Channel serial and ID.

  • string ChannelDisplayName { get; set; }, string ChannelDescriptionString { get; set; }
    Display name and description string.

  • string ChannelName2 { get; set; }, string HardwareChannelName { get; set; }
    Alternative channel names.

  • string ChannelType { get; set; }
    Channel type (e.g., "AnalogInput").

  • bool IsCalculatedChannel { get; set; }
    Indicates if channel is derived.

  • int Number { get; set; }, int ChannelNumber { get; set; }
    Channel numbers.

  • double Sensitivity { get; set; }, string SensitivityUnits { get; set; }, double DesiredRange { get; set; }, double ActualMaxRangeEu { get; set; }, double ActualMinRangeEu { get; set; }, double ActualMaxRangeMv { get; set; }, double ActualMinRangeMv { get; set; }
    Calibration and range parameters.

  • string Bridge { get; set; }, double BridgeResistanceOhms { get; set; }, double ZeroPoint { get; set; }
    Bridge configuration.

  • DateTime Start { get; set; }
    Channel start time.

  • string SoftwareFilter { get; set; }, bool ProportionalToExcitation { get; set; }, bool IsInverted { get; set; }, string LinearizationFormula { get; set; }, bool IsSubsampled { get; set; }
    Processing flags.

  • int AbsoluteDisplayOrder { get; set; }
    Display order index.

  • DateTime LastCalibrationDate { get; set; }
    Calibration date.

  • string SensorId { get; set; }
    Sensor identifier.

  • int OffsetToleranceLowMv { get; set; }, int OffsetToleranceHighMv { get; set; }, int DataFlag { get; set; }
    Tolerance and data quality flags.

  • string ExcitationVoltage { get; set; }, string Eu { get; set; }, bool CalSignalEnabled { get; set; }, bool ShuntEnabled { get; set; }, bool VoltageInsertionCheckEnabled { get; set; }, bool RemoveOffset { get; set; }, string ZeroMethod { get; set; }, double ZeroAverageWindowBegin { get; set; }, double ZeroAverageWindowEnd { get; set; }
    Excitation, units, and zeroing configuration.

  • int InitialEu { get; set; }, string InitialOffset { get; set; }
    Initial calibration values.

  • double MeasuredShuntDeflectionMv { get; set; }, double TargetShuntDeflectionMv { get; set; }, double MeasuredExcitationVoltage { get; set; }, double FactoryExcitationVoltage { get; set; }
    Shunt calibration parameters.

  • double TimeOfFirstSample { get; set; }, double Multiplier { get; set; }, double UserOffsetEu { get; set; }, int UnitConversion { get; set; }
    Timing, scaling, and unit conversion.

  • bool AtCapacity { get; set; }, int CapacityOutputIsBasedOn { get; set; }
    Capacity-related flags.

  • string SourceChannelNumber { get; set; }, string SourceModuleNumber { get; set; }, string SourceModuleSerialNumber { get; set; }, string Calculation { get; set; }
    For calculated channels: source and formula.

  • string BinaryFileName { get; set; }, string BinaryFilePath { get; set; }
    Binary data file info.

  • double Xmax { get; set; }, double Xmin { get; set; }
    X-axis range.

  • int SequentialNumbers { get; set; }
    Sequential index.

  • ITestSetupMetadata ParentTestSetup { get; set; }, ITestModule ParentModule { get; set; }, IBaseViewModel Parent { get; set; }
    Parent references.

  • Color ChannelColor { get; set; }, string ErrorMessage { get; set; }, bool IsError { get; set; }, Color? ErrorColor { get; set; }
    UI state properties.

  • bool IsLocked { get; set; }, bool CanLock { get; set; }, bool CanSelectChannel { get; set; }, bool IsExpanded { get; set; }, bool IsSelected { get; set; }
    Selection/locking state with side effects (e.g., updating graph view models).

  • double MinADC { get; set; }, double MaxADC { get; set; }, double AveADC { get; set; }, double StdDevADC { get; set; }, double T0ADC { get; set; }
    ADC statistics.

  • double MinMV { get; set; }, double MaxMV { get; set; }, double AveMV { get; set; }, double StdDevMV { get; set; }, double T0MV { get; set; }
    mV statistics.

  • double MinEU { get; set; }, double MaxEU { get; set; }, double AveEU { get; set; }, double StdDevEU { get; set; }, double T0EU { get; set; }
    Engineering Unit statistics.

  • double MinY { get; set; }, double MaxY { get; set; }, double AveY { get; set; }, double StdDevY { get; set; }, double T0Value { get; set; }
    Current unit statistics.

  • string SetupEID { get; set; }, string DataCollectionEID { get; set; }
    EID (likely Event ID) at setup and collection time.

  • void SetChannelDescriptionAndDisplayName(string channelDescription)
    Sets ChannelDescriptionString and ChannelDisplayName.

  • ITestChannel Copy()
    Shallow copy via MemberwiseClone().

  • override string ToString()
    Returns ChannelName2 if embedded test-specific; otherwise ChannelDescriptionString.

TestSummary (implements ITestSummary, INotifyPropertyChanged)

  • const string ROI_SUFFIX = @"_ROI Period"
    Suffix indicating ROI period data.

  • string Id { get; set; }
    Unique ID: TestRun.Id + ParseEventNumber(TestRun.FilePath).

  • string SetupName { get; set; }, string Description { get; set; }, int ChannelCount { get; set; }, DateTime FileDate { get; set; }, DateTime TimeStamp { get; set; }, string DataType { get; set; }
    Summary metadata.

  • bool IsSelected { get; set; }
    Selection state with side effects via SelectionChanged().

  • List<ITestGraphs> Graphs { get; set; }, List<ITestChannel> Channels { get; set; }, List<ITestChannel> CalculatedChannels { get; set; }
    References to metadata.

  • IBaseViewModel Parent { get; set; }
    Parent view model (for command binding).

  • CalibrationBehaviors CalibrationBehavior { get; set; } = CalibrationBehaviors.NonLinearIfAvailable
    Default calibration behavior.

  • ITestMetadata TestMetadata { get; set; }
    Full metadata object.

  • DelegateCommand IsSelectedCommand { get; }
    Command bound to IsSelected property.

  • void SelectionChanged()
    Updates Parent.SelectedTestSummaryList and publishes via IEventAggregator.

  • event PropertyChangedEventHandler PropertyChanged
    Implements INotifyPropertyChanged.

3. Invariants

  • TestMetadata must always have non-null TestRun and TestSetup properties after construction (defaults are created on parse failure).
  • TestSummary.Id is constructed as TestRun.Id + ParseEventNumber(TestRun.FilePath). ParseEventNumber extracts the segment starting with DTS.Common.Constants.EventNumber from the file path.
  • TestSummary.TimeStamp is determined by TestMetadataList.GetTimestamp():
    • Uses minimum PTP1588 timestamp from modules (trigger or start record).
    • Falls back to TestSetup.TimeStamp if module timestamps are invalid (e.g., zero, before 1990).
  • TestChannel.ChannelId defaults to GetHashCode().ToString() if the XML attribute is missing or -1.
  • TestChannel.HardwareChannelName is set to Strings.Strings.Table_NA for calculated channels (per comment `//