--- source_files: - Common/DTS.Common/Interface/DASFactory/Config/IAlignUDPToPPSAware.cs - Common/DTS.Common/Interface/DASFactory/Config/IEID.cs - Common/DTS.Common/Interface/DASFactory/Config/IVoltageInsertionEnabled.cs - Common/DTS.Common/Interface/DASFactory/Config/IInformation.cs - Common/DTS.Common/Interface/DASFactory/Config/IConfigurationData.cs - Common/DTS.Common/Interface/DASFactory/Config/IConfiguration.cs - Common/DTS.Common/Interface/DASFactory/Config/IInfoResultModule.cs - Common/DTS.Common/Interface/DASFactory/Config/IDASChannel.cs - Common/DTS.Common/Interface/DASFactory/Config/IInfoResult.cs - Common/DTS.Common/Interface/DASFactory/Config/IDASModule.cs generated_at: "2026-04-17T15:31:50.629398+00:00" model: "zai-org/GLM-5-FP8" schema_version: 1 sha256: "621789ad0fb1ddef" --- # DTS.Common.Interface.DASFactory.Config Documentation ## 1. Purpose This module defines the core configuration interfaces for a Data Acquisition System (DAS). It provides abstractions for managing hardware modules, channels, test configurations, and device metadata. The interfaces support XML serialization for persistence, channel-to-module mapping, trigger configuration, and hardware identification (EIDs). This serves as the contract layer between DAS hardware communication components and higher-level configuration services. --- ## 2. Public Interface ### IAlignUDPToPPSAware **Signature:** ```csharp public interface IAlignUDPToPPSAware { bool AlignUDPToPPS { get; set; } } ``` **Behavior:** Marker interface exposing a boolean flag indicating whether UDP data should be aligned to PPS (Pulse Per Second) timing signals. --- ### IEID **Signature:** ```csharp public interface IEID { string ID { get; set; } byte[] Blob { get; set; } bool IsValid(); } ``` **Behavior:** Represents an Electronic ID with a string identifier, binary blob data, and a validation method. --- ### IVoltageInsertionEnabled **Signature:** ```csharp public interface IVoltageInsertionEnabled { bool VoltageInsertionEnabled { get; } } ``` **Behavior:** Read-only indicator that voltage insertion was detected as enabled on the hardware. --- ### IInformation **Signature:** ```csharp public interface IInformation { IInfoResult DASInfo { get; set; } void SetDASInfo(IInfoResult dasInfo, bool bSetInDb = true); void SetDASInfo(); } ``` **Behavior:** Provides access to DAS hardware information. `SetDASInfo` accepts an `IInfoResult` with an optional flag to persist to database (defaults to `true`). The parameterless overload implies a refresh or default initialization. --- ### IConfigurationData **Signature:** ```csharp public interface IConfigurationData { IDASModule[] Modules { get; set; } IEID[] IDs { get; set; } string TestID { get; set; } string TestSetupUniqueId { get; set; } string InstanceID { get; set; } string Description { get; set; } bool ClearSetup { get; set; } int[] DisplayOrder { get; set; } int DasDisplayOrder { get; set; } string UDPReceiveAddress { get; set; } int NumberOfConfiguredChannels(); int NumberOfChannels(); int NumberOfDownloadChannels(); int GetDisplayOrder(uint channelIdx); void WriteXml(XmlWriter writer); void ReadXml(XmlReader reader); XmlSchema GetSchema(); } ``` **Behavior:** Central configuration container for a DAS setup. Manages module array, EIDs, test identification, and channel counts. Supports XML serialization via `WriteXml`/`ReadXml`. `NumberOfDownloadChannels` excludes UART and StreamOut channels. --- ### IConfiguration **Signature:** ```csharp public interface IConfiguration { string TestDirectory { get; set; } bool SupportsAutoDetect { get; } IConfigurationData ConfigData { get; set; } ClockSyncProfile DASClockSyncProfile { get; set; } void QueryConnectedDevices(); int GetDASDisplayOrder(); int[] GetChannelDisplayOrder(); void SetDASDisplayOrder(int order); void SetChannelDisplayOrder(int[] order); } ``` **Behavior:** High-level configuration interface. `QueryConnectedDevices` performs hardware discovery. Display order methods control UI ordering of DAS units and channels. `SupportsAutoDetect` indicates bridge/IEPE channel type auto-detection capability. --- ### IInfoResultModule **Signature:** ```csharp public interface IInfoResultModule { string SerialNumber { get; set; } string FirmwareVersion { get; set; } int ModuleArrayIndex { get; set; } uint NumberOfChannels { get; set; } uint[] SupportedSampleRates { get; set; } Dictionary SampleRate2AAFrequency { get; set; } ulong? MaxEventStorageSpaceInBytes { get; set; } uint? NumberOfBytesPerSampleClock { get; set; } double MaxRecordingSamples { get; set; } DateTime? CalibrationDate { get; set; } bool RackIsUnreadable { get; set; } DFConstantsAndEnums.ModuleType TypeOfModule { get; set; } DFConstantsAndEnums.RecordingMode[] SupportedModes { get; set; } bool IsProgrammable { get; set; } } ``` **Behavior:** Hardware metadata for a single module. Includes sample rate to anti-aliasing filter frequency mapping. `RackIsUnreadable` indicates armed TDAS rack state. Storage properties may be null if specified at DAS level instead. --- ### IDASChannel **Signature:** ```csharp public interface IDASChannel { DFConstantsAndEnums.ConfigMode ConfigurationMode { get; set; } bool DiagnosticsMode { get; set; } int ModuleChannelNumber { get; set; } int AbsoluteDisplayOrder { get; set; } double UnitConverision { get; set; } // Note: typo in source bool AtCapacity { get; set; } double CapacityOutputIsBasedOn { get; set; } SensorConstants.SensUnits SensitivityUnits { get; set; } byte Number { get; } IEID[] IDs { get; set; } DateTime EventStartTime { get; set; } bool LevelTriggerSeen { get; set; } int? LevelTriggerT0AdjustmentSamples { get; set; } int QualificationSamples { get; set; } string IsoChannelName { get; set; } string ChannelGroupName { get; set; } string UserCode { get; set; } string UserChannelName { get; set; } string LinearSensorCalibration { get; set; } string UserValue1 { get; set; } string UserValue2 { get; set; } string UserValue3 { get; set; } int IdType { get; set; } bool IsConfigured(); void WriteElementStart(XmlWriter writer); void WriteElementEnd(XmlWriter writer); void WriteXmlCRC32(XmlWriter writer); void WriteXml(XmlWriter writer); void ReadXml(XmlReader reader); XmlSchema GetSchema(); } ``` **Behavior:** Represents a single data acquisition channel. `Number` is the stack channel number (0-based, read-only). `LevelTriggerT0AdjustmentSamples` is null if channel did not directly receive a level trigger. Supports CRC32-included XML serialization via `WriteXmlCRC32`. --- ### IInfoResult **Signature:** ```csharp public interface IInfoResult { string MACAddress { get; set; } IInfoResultModule[] Modules { get; set; } List ActiveExternalTilts { get; set; } uint MaxNumberOfModules { get; set; } ulong? MaxEventStorageSpaceInBytes { get; set; } uint? NumberOfBytesPerSampleClock { get; set; } bool? DeviceStreamingOnly { get; set; } int NumberOfBridgeChannels { get; set; } IEID BatteryID { get; set; } bool HasBattery { get; } DateTime? CalibrationDate { get; set; } byte MapDASChannelNumber2RealtimeChannelNumber(int channelNumber); byte MapDASChannelNumber2ModuleArrayIndex(int channelNumber); byte MapDASChannelNumber2ModuleDeviceID(int channelNumber); byte MapDASChannelNumber2ModuleChannelNumber(int channelNumber); byte MapModuleArrayIndexAndChannelNum2DASChannel(int moduleArrayIdx, int channelNumber); } ``` **Behavior:** Aggregated hardware info for an entire DAS unit. Provides channel number mapping functions between DAS-global and module-local addressing. `CalibrationDate` returns `1970-01-01` if invalid/NA. `DeviceStreamingOnly` is null if hardware doesn't support streaming-only configuration. --- ### IDASModule **Signature:** ```csharp public interface IDASModule { IDASChannel[] Channels { get; set; } IEID[] IDs { get; set; } int ModuleArrayIndex { get; set; } double RequestedPreTriggerSeconds { get; set; } double RequestedPostTriggerSeconds { get; set; } double PreTriggerSeconds { get; set; } double PostTriggerSeconds { get; set; } int NumberOfEvents { get; set; } int WakeUpMotionTimeout { get; set; } string FirmwareVersion { get; set; } string Description { get; set; } ulong? MaxEventStorageSpaceInBytes { get; set; } ulong NumberOfSamples { get; set; } ulong[] TriggerSampleNumbers { get; set; } ulong Start