294 lines
16 KiB
Markdown
294 lines
16 KiB
Markdown
---
|
||
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-16T03:10:42.932137+00:00"
|
||
model: "Qwen/Qwen3-Coder-Next-FP8"
|
||
schema_version: 1
|
||
sha256: "f73b754208bf94f9"
|
||
---
|
||
|
||
# Documentation: `DTS.Common.Interface.DASFactory.Config` Interfaces
|
||
|
||
## 1. Purpose
|
||
|
||
This module defines a set of interfaces that collectively represent the configuration, metadata, and operational state of a Data Acquisition System (DAS) unit. These interfaces serve as the contract layer between the DAS hardware abstraction and higher-level services (e.g., `ConfigurationService`), enabling structured configuration management, serialization, channel/module metadata retrieval, and system-wide state introspection. They are used primarily during setup, pre-test configuration, and post-test data analysis to expose hardware capabilities, channel configurations, calibration data, and synchronization settings in a type-safe and testable manner.
|
||
|
||
## 2. Public Interface
|
||
|
||
### `IAlignUDPToPPSAware`
|
||
- **`bool AlignUDPToPPS { get; set; }`**
|
||
Gets or sets a flag indicating whether UDP packet timestamps should be aligned to the PPS (Pulse Per Second) signal.
|
||
|
||
### `IEID`
|
||
- **`string ID { get; set; }`**
|
||
Gets or sets the EID (Event Identifier) string (e.g., sensor serial or identifier).
|
||
- **`byte[] Blob { get; set; }`**
|
||
Gets or sets a binary blob associated with the EID (e.g., sensor calibration data).
|
||
- **`bool IsValid()`**
|
||
Returns `true` if the EID data is considered valid (e.g., non-null/non-empty ID and Blob).
|
||
|
||
### `IVoltageInsertionEnabled`
|
||
- **`bool VoltageInsertionEnabled { get; }`**
|
||
Gets a read-only flag indicating whether voltage insertion (a hardware feature) is currently enabled on the DAS unit.
|
||
|
||
### `IInformation`
|
||
- **`IInfoResult DASInfo { get; set; }`**
|
||
Gets or sets the `IInfoResult` object containing hardware metadata (e.g., module list, calibration, channel mapping).
|
||
- **`void SetDASInfo(IInfoResult dasInfo, bool bSetInDb = true)`**
|
||
Sets the `DASInfo` property and optionally persists it to a database.
|
||
- **`void SetDASInfo()`**
|
||
Overload of `SetDASInfo` that calls the above with `bSetInDb = true`.
|
||
|
||
### `IConfigurationData`
|
||
- **`IDASModule[] Modules { get; set; }`**
|
||
Gets or sets the array of modules in the DAS.
|
||
- **`IEID[] IDs { get; set; }`**
|
||
Gets or sets the array of EIDs for the entire DAS.
|
||
- **`string TestID { get; set; }`**
|
||
Gets or sets the ID of the current test/event.
|
||
- **`string TestSetupUniqueId { get; set; }`**
|
||
Gets or sets a unique identifier for the test setup instance.
|
||
- **`string InstanceID { get; set; }`**
|
||
Gets or sets the ID of a test run instance (used to locate downloaded data).
|
||
- **`string Description { get; set; }`**
|
||
Gets or sets a human-readable description of the current test/event.
|
||
- **`bool ClearSetup { get; set; }`**
|
||
Gets or sets a flag indicating whether to clear the current setup before applying new configuration.
|
||
- **`int NumberOfConfiguredChannels()`**
|
||
Returns the count of channels where `IsConfigured()` returns `true`.
|
||
- **`int NumberOfChannels()`**
|
||
Returns the total number of channels (configured or not).
|
||
- **`int NumberOfDownloadChannels()`**
|
||
Returns the number of channels that are downloadable (i.e., not UART or StreamOut).
|
||
- **`int[] DisplayOrder { get; set; }`**
|
||
Gets or sets the per-channel display order array.
|
||
- **`int DasDisplayOrder { get; set; }`**
|
||
Gets or sets the DAS-wide display order.
|
||
- **`int GetDisplayOrder(uint channelIdx)`**
|
||
Returns the display order for the channel at index `channelIdx`.
|
||
- **`string UDPReceiveAddress { get; set; }`**
|
||
Gets or sets the UDP receive address used to control the OBR-DDR.
|
||
- **Serialization methods**
|
||
- `void WriteXml(XmlWriter writer)`
|
||
- `void ReadXml(XmlReader reader)`
|
||
- `XmlSchema GetSchema()`
|
||
Standard XML serialization interface methods.
|
||
|
||
### `IConfiguration`
|
||
- **`string TestDirectory { get; set; }`**
|
||
Gets or sets the local path where the DAS stores test information.
|
||
- **`bool SupportsAutoDetect { get; }`**
|
||
Gets a read-only flag indicating whether the unit supports auto-detection of channel types (e.g., bridge/IEPE).
|
||
- **`void QueryConnectedDevices()`**
|
||
Directly queries the hardware to detect connected devices (if supported).
|
||
- **`IConfigurationData ConfigData { get; set; }`**
|
||
Gets or sets the `IConfigurationData` object containing the pre-test configuration.
|
||
- **`ClockSyncProfile DASClockSyncProfile { get; set; }`**
|
||
Gets or sets the clock synchronization profile (applied only to units that support it).
|
||
- **`int GetDASDisplayOrder()`**
|
||
Returns the DAS display order (default `-1`).
|
||
- **`int[] GetChannelDisplayOrder()`**
|
||
Returns the per-channel display order array.
|
||
- **`void SetDASDisplayOrder(int order)`**
|
||
Sets the DAS display order (intended for use by FWTU only).
|
||
- **`void SetChannelDisplayOrder(int[] order)`**
|
||
Sets the per-channel display order array (intended for use by FWTU only).
|
||
|
||
### `IInfoResultModule`
|
||
- **`string SerialNumber { get; set; }`**
|
||
Serial number of the module.
|
||
- **`string FirmwareVersion { get; set; }`**
|
||
Firmware version string.
|
||
- **`int ModuleArrayIndex { get; set; }`**
|
||
Index of this module in the module array (0-based).
|
||
- **`uint NumberOfChannels { get; set; }`**
|
||
Number of channels attached to this module.
|
||
- **`uint[] SupportedSampleRates { get; set; }`**
|
||
Array of supported sample rates (in Hz).
|
||
- **`Dictionary<uint, float> SampleRate2AAFrequency { get; set; }`**
|
||
Mapping from sample rate to corresponding anti-aliasing filter frequency.
|
||
- **`ulong? MaxEventStorageSpaceInBytes { get; set; }`**
|
||
Maximum event storage space (bytes) for this module (`null` if DAS-level).
|
||
- **`uint? NumberOfBytesPerSampleClock { get; set; }`**
|
||
Bytes stored per sample clock for all channels (`null` if DAS-level).
|
||
- **`double MaxRecordingSamples { get; set; }`**
|
||
Maximum number of samples this module can record.
|
||
- **`DateTime? CalibrationDate { get; set; }`**
|
||
Last calibration date/time (`null` if unknown/invalid).
|
||
- **`bool RackIsUnreadable { get; set; }`**
|
||
`true` if a TDAS rack is armed and unresponsive to queries.
|
||
- **`DFConstantsAndEnums.ModuleType TypeOfModule { get; set; }`**
|
||
Module type (e.g., analog input, clock, etc.).
|
||
- **`DFConstantsAndEnums.RecordingMode[] SupportedModes { get; set; }`**
|
||
Supported recording modes.
|
||
- **`bool IsProgrammable { get; set; }`**
|
||
Indicates whether the module is programmable.
|
||
|
||
### `IDASChannel`
|
||
- **`DFConstantsAndEnums.ConfigMode ConfigurationMode { get; set; }`**
|
||
Configuration mode of the channel.
|
||
- **`bool DiagnosticsMode { get; set; }`**
|
||
Whether the channel is in diagnostics mode.
|
||
- **`int ModuleChannelNumber { get; set; }`**
|
||
Channel number relative to its owning module.
|
||
- **`int AbsoluteDisplayOrder { get; set; }`**
|
||
Absolute display order index across all channels.
|
||
- **`double UnitConverision { get; set; }`**
|
||
Conversion factor for unit scaling (note: typo in source; likely intended `UnitConversion`).
|
||
- **`bool AtCapacity { get; set; }`**
|
||
Whether the channel is at full-scale capacity.
|
||
- **`double CapacityOutputIsBasedOn { get; set; }`**
|
||
Reference value for capacity calculation.
|
||
- **`SensorConstants.SensUnits SensitivityUnits { get; set; }`**
|
||
Units of the sensor sensitivity (e.g., mV/V, pC).
|
||
- **`byte Number { get; }`**
|
||
Absolute channel number within the DAS (0-based).
|
||
- **`IEID[] IDs { get; set; }`**
|
||
Array of EIDs associated with this channel.
|
||
- **`DateTime EventStartTime { get; set; }`**
|
||
Timestamp of the event start for this channel.
|
||
- **`bool LevelTriggerSeen { get; set; }`**
|
||
Whether a level trigger was detected on this channel.
|
||
- **`string IsoChannelName { get; set; }`**
|
||
ISO-standard channel name.
|
||
- **`string ChannelGroupName { get; set; }`**
|
||
Name of the group this channel belongs to.
|
||
- **`string UserCode { get; set; }`**
|
||
User-defined code.
|
||
- **`string UserChannelName { get; set; }`**
|
||
User-defined channel name.
|
||
- **`string LinearSensorCalibration { get; set; }`**
|
||
Linear calibration coefficients (e.g., slope/offset).
|
||
- **`int QualificationSamples { get; set; }`**
|
||
Number of samples used for trigger qualification.
|
||
- **`int? LevelTriggerT0AdjustmentSamples { get; set; }`**
|
||
Sample shift applied to align T0 with this channel’s trigger (if not directly triggered, `null`).
|
||
- **`bool IsConfigured()`**
|
||
Returns `true` if the channel is considered configured (sensor connected, config present).
|
||
- **Serialization methods**
|
||
- `void WriteElementStart(XmlWriter writer)`
|
||
- `void WriteElementEnd(XmlWriter writer)`
|
||
- `void WriteXmlCRC32(XmlWriter writer)`
|
||
- `void WriteXml(XmlWriter writer)`
|
||
- `void ReadXml(XmlReader reader)`
|
||
- `XmlSchema GetSchema()`
|
||
- **`int IdType { get; set; }`**
|
||
Type identifier for the EID (e.g., sensor type).
|
||
- **`string UserValue1 { get; set; }`**, **`UserValue2`**, **`UserValue3`**
|
||
User-defined string fields.
|
||
|
||
### `IInfoResult`
|
||
- **`string MACAddress { get; set; }`**
|
||
MAC address of the DAS unit.
|
||
- **`IInfoResultModule[] Modules { get; set; }`**
|
||
Array of modules in the DAS.
|
||
- **`List<Common.Classes.Hardware.ExternalTilt> ActiveExternalTilts { get; set; }`**
|
||
List of active external tilt sensors.
|
||
- **`uint MaxNumberOfModules { get; set; }`**
|
||
Maximum number of modules supported by the DAS.
|
||
- **`ulong? MaxEventStorageSpaceInBytes { get; set; }`**
|
||
Total event storage space (bytes) for the DAS (`null` if per-module).
|
||
- **`uint? NumberOfBytesPerSampleClock { get; set; }`**
|
||
Total bytes per sample clock for all channels (`null` if per-module).
|
||
- **`bool? DeviceStreamingOnly { get; set; }`**
|
||
`true` if the device is hardware-configured for streaming-only (`null` if unsupported).
|
||
- **`int NumberOfBridgeChannels { get; set; }`**
|
||
Hardcoded count of bridge channels (temporary constant).
|
||
- **`IEID BatteryID { get; set; }`**
|
||
EID for the battery module.
|
||
- **`bool HasBattery { get; }`**
|
||
`true` if a battery is physically present.
|
||
- **Channel mapping methods**
|
||
- `byte MapDASChannelNumber2RealtimeChannelNumber(int channelNumber)`
|
||
- `byte MapDASChannelNumber2ModuleArrayIndex(int channelNumber)`
|
||
- `byte MapDASChannelNumber2ModuleDeviceID(int channelNumber)`
|
||
- `byte MapDASChannelNumber2ModuleChannelNumber(int channelNumber)`
|
||
- `byte MapModuleArrayIndexAndChannelNum2DASChannel(int moduleArrayIdx, int channelNumber)`
|
||
Bidirectional mappings between DAS-wide channel numbers, module indices, and device IDs.
|
||
- **`DateTime? CalibrationDate { get; set; }`**
|
||
DAS calibration date (`1970-01-01` if invalid/NA).
|
||
|
||
### `IDASModule`
|
||
- **`IDASChannel[] Channels { get; set; }`**
|
||
Array of channels attached to this module (indexed by `ModuleChannelNumber`).
|
||
- **`IEID[] IDs { get; set; }`**
|
||
EIDs for sensors on each channel.
|
||
- **`int ModuleArrayIndex { get; set; }`**
|
||
Index of this module in the module array.
|
||
- **`double RequestedPreTriggerSeconds { get; set; }`**, **`double RequestedPostTriggerSeconds { get; set; }`**
|
||
Requested pre/post trigger durations (seconds).
|
||
- **`double PreTriggerSeconds { get; set; }`**, **`double PostTriggerSeconds { get; set; }`**
|
||
Actual pre/post trigger durations (seconds) after configuration.
|
||
- **`int NumberOfEvents { get; set; }`**
|
||
Number of events to collect before disarming.
|
||
- **`int WakeUpMotionTimeout { get; set; }`**
|
||
Seconds of inactivity before entering sleep mode.
|
||
- **`string FirmwareVersion { get; set; }`**
|
||
Firmware version string.
|
||
- **`string Description { get; set; }`**
|
||
Module description (e.g., for Slice6 Distributor).
|
||
- **`ulong? MaxEventStorageSpaceInBytes { get; set; }`**
|
||
Storage space for this module.
|
||
- **`ulong NumberOfSamples { get; set; }`**
|
||
Total samples captured in last recording session.
|
||
- **`ulong[] TriggerSampleNumbers { get; set; }`**
|
||
Array of sample numbers where triggers occurred.
|
||
- **`int GetLevelTriggerT0AdjustmentSamplesAutoApplied()`**
|
||
Returns the auto-applied T0 adjustment (in samples).
|
||
- **`ulong StartRecordSampleNumber { get; set; }`**
|
||
Sample number where recording started.
|
||
- **`uint StartRecordTimestampSec`, `uint TriggerTimestampSec`, `uint StartRecordTimestampNanoSec`, `uint TriggerTimestampNanoSec`**
|
||
Timestamps (seconds + nanoseconds) for start and trigger events.
|
||
- **`bool PTPMasterSync { get; set; }`**
|
||
Whether PTP master synchronization is enabled.
|
||
- **Tilt sensor properties (pre/post)**
|
||
- `double TiltSensorAxisX/Y/ZDegreesPre/Post { get; set; }`
|
||
- `float TemperatureLocation1/2/3/4Pre/Post { get; set; }`
|
||
- **`uint SampleRateHz { get; set; }`**, **`uint ActualSampleRateHz { get; set; }`**
|
||
Requested and actual sample rates (Hz).
|
||
- **`float AAFilterRateHz { get; set; }`**
|
||
Hardware anti-aliasing filter rate.
|
||
- **`DFConstantsAndEnums.RecordingMode RecordingMode { get; set; }`**
|
||
Current recording mode.
|
||
- **`DateTime ScheduledStartTime { get; set; }`**, **`int RecordingInterval { get; set; }`**
|
||
Scheduled start time and recording interval.
|
||
- **`UDPStreamProfile StreamProfile { get; set; }`**
|
||
UDP streaming profile.
|
||
- **Slice 6 Tilt feature properties**
|
||
- `TiltAxes`, `TargetAxisOne/Two`, `TargetAngleAxisX/Y/Z`, `MountOffsetAxisOne/Two`, `SystemLocation`, `SystemID`, `AxisIgnored`, `LevelTolerance`, `UseForTiltCalculation`, `InputVoltage`, `BatteryVoltage`, `TiltID`, `TiltSerialNumber`.
|
||
- **`int NumberOfConfiguredChannels()`**, **`int NumberOfConfiguredTOMChannels()`**
|
||
Returns count of configured channels or TOM channels.
|
||
- **`bool IsDummyArmed()`**
|
||
Returns `true` if the module is in dummy-armed state.
|
||
- **`int NumberOfChannels()`**
|
||
Total number of channels on this module.
|
||
- **`string SerialNumber()`**, **`DFConstantsAndEnums.ModuleType ModuleType()`**
|
||
Retrieves module serial number and type.
|
||
- **`bool IsStreamIn()`**, **`IsStreamOut()`**, **`IsUart()`**, **`IsClock()`**, **`IsEmbedded()`**, **`IsThermocoupler()`**
|
||
Type-check helpers based on `ModuleType()`.
|
||
- **Serialization methods**
|
||
- `void WriteXmlCRC32(XmlWriter writer)`
|
||
- `void WriteXml(XmlWriter writer)`
|
||
- `void ReadXml(XmlReader reader)`
|
||
- `XmlSchema GetSchema()`
|
||
- `ushort GetCRC32()`
|
||
|
||
## 3. Invariants
|
||
|
||
- **Channel numbering**: `IDASChannel.Number` is a 0-based absolute channel index within the DAS (0..29 implied by `MapDASChannelNumber2*` methods).
|
||
- **Module indexing**: `IDASModule.ModuleArrayIndex` is 0-based and corresponds to position in `IConfigurationData.Modules` and `IInfoResult.Modules`.
|
||
- **Channel mapping consistency**: The mapping functions in `IInfoResult` must be consistent and invertible (e.g., `MapModuleArrayIndexAndChannelNum2DASChannel` is the inverse of `MapDASChannelNumber2ModuleArrayIndex` and `MapDASChannelNumber2ModuleChannelNumber`).
|
||
- **`IsConfigured()` semantics**: A channel is considered "configured" only if a sensor is connected and/or configuration data exists (set via `ConfigurationService.Configure(...)`).
|
||
- **`DASInfo` initialization**: `IInformation.DASInfo` must be set before calling `SetDASInfo(...)`; otherwise, behavior is undefined.
|
||
- **`NumberOfDownloadChannels()` excludes UART/StreamOut**: Only channels capable of data download (e.g., analog inputs) are counted.
|
||
- **`CalibrationDate` invalidity**: A value of `1970-01-01` indicates invalid/NA calibration date (per `IInfoResult.CalibrationDate` documentation).
|
||
- **`DisplayOrder` arrays**: `DisplayOrder` (per-channel) and `DasDisplayOrder |