9.9 KiB
source_files, generated_at, model, schema_version, sha256
| source_files | generated_at | model | schema_version | sha256 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
2026-04-16T13:24:05.408874+00:00 | zai-org/GLM-5-FP8 | 1 | f40aa120b967ad3e |
Documentation: DTS.DAS.Concepts.DAS Module
1. Purpose
This module provides the core domain abstractions for a Data Acquisition System (DAS). It defines the foundational types for modeling DAS channels, their identifiers, data containers, and optional capabilities (such as decimation, level triggering, calibration awareness, and metadata properties). The module uses interfaces and abstract generic classes to establish a flexible, composable type system that can be extended by concrete implementations.
2. Public Interface
Classes
Channel<DataType>
- Namespace:
DTS.DAS.Concepts.DAS - Signature:
public abstract class Channel<DataType> : Exceptional - Description: Abstract base class representing a DAS channel. Generic over
DataType, which defines the type of data contained by channels of this DAS. Inherits fromExceptional(fromDTS.Utilities).
Data<DatumType>
- Namespace:
DTS.DAS.Concepts.DAS.Channel - Signature:
public abstract class Data<DatumType> : ExceptionalList<DatumType> - Description: Abstract base class representing a list of channel data. Inherits from
ExceptionalList<DatumType>. Provides three protected constructors:protected Data()— Default constructor.protected Data(int capacity)— Initializes with specified capacity.protected Data(IEnumerable<DatumType> collection)— Initializes from an existing collection.
Id
- Namespace:
DTS.Common.DAS.Concepts.DAS - Signature:
public sealed class Id : Exceptional, IComparable<Id>, IEquatable<Id> - Description: Represents a DAS identifier, encapsulating a string value. Supports implicit bidirectional conversion to/from
string. Comparison and equality operations are case-insensitive (StringComparison.OrdinalIgnoreCase). - Key Members:
public Id(string value)— Constructor.public static implicit operator string(Id id)— ConvertsIdtostring.public static implicit operator Id(string id)— ConvertsstringtoId.public bool Equals(Id that)— Case-insensitive equality check.public int CompareTo(Id that)— Case-insensitive comparison.public override string ToString()— Returns the underlying string value.public override int GetHashCode()— Returns hash of the underlying string (or 0 if null).- Static comparison operators:
==,!=,<,>,<=,>=.
Interfaces
IIsoCodeAware
- Namespace:
DTS.DAS.Concepts.DAS.Channel - Members:
string IsoCode { get; set; } - Description: Defines ISO code awareness for an object.
ISerialNumberAware
- Namespace:
DTS.DAS.Concepts.DAS.Channel - Members:
string SerialNumber { get; set; } - Description: Defines serial number awareness for an object.
IEngineeringUnitAware
- Namespace:
DTS.DAS.Concepts.DAS.Channel - Members:
string EngineeringUnits { get; set; } - Description: Defines engineering unit description awareness for an object.
IInversionAware
- Namespace:
DTS.DAS.Concepts.DAS.Channel - Members:
bool IsInverted { get; set; } - Description: Defines inversion state awareness for an object.
ILinearized
- Namespace:
DTS.DAS.Concepts.DAS.Channel - Members:
LinearizationFormula LinearizationFormula { get; set; } - Description: Defines linearization formula awareness. (Note:
LinearizationFormulatype is referenced but not defined in the provided sources.)
IVoltageInsertionAware
- Namespace:
DTS.DAS.Concepts.DAS.Channel - Members:
double ExpectedGain { get; set; }— Measured shunt deflection value.double MeasuredGain { get; set; }— Target shunt deflection value.
- Description: Defines voltage insertion (shunt-check) awareness.
ILevelTriggerable
- Namespace:
DTS.DAS.Concepts.DAS.Channel - Members:
double? TriggerBelowThresholdEu { get; set; }— "Trigger below" threshold; set tonullto deactivate.double? TriggerAboveThresholdEu { get; set; }— "Trigger above" threshold; set tonullto deactivate.LevelTriggerTypes LevelTriggerType { get; set; }— The level trigger type.
- Description: Defines level triggerability for a channel.
IShuntAware
- Namespace:
DTS.DAS.Concepts.DAS.Channel - Members:
double MeasuredShuntDeflectionMv { get; set; }— Measured shunt deflection in millivolts.double TargetShuntDeflectionMv { get; set; }— Target shunt deflection in millivolts.
- Description: Defines shunt-check awareness.
ICalSignalAware
- Namespace:
DTS.DAS.Concepts.DAS.Channel - Members:
double MeasuredCalSignalMv { get; set; }— Measured calibration signal in millivolts.double TargetCalSignalMv { get; set; }— Target calibration signal in millivolts.
- Description: Defines calibration signal awareness.
IDecimatable<out T>
- Namespace:
DTS.DAS.Concepts.DAS.Channel - Members:
uint PointsPerPoint { get; set; }— Number of points to squeeze into a single index point.DecimationMethod DecimationType { get; set; }— Decimation method to apply.T[] ToDecimatedArray()— Generates a decimated array using the currentDecimationMethod.T this[long i] { get; }— Indexer returning values from the decimated set.
- Description: Defines decimation capability for a DAS channel. Covariant in
T(out T).
Enums
DecimationMethod
- Namespace:
DTS.Common.DAS.Concepts.DAS(also defined inDTS.DAS.Concepts.DAS.Channel) - Values:
Point— Use the value of thePointsPerPoint-th point as the representative value.Average— Use the average of thePointsPerPointvalues.PeakMagnitude— Use the peak magnitude value of thePointsPerPointvalues.
- Description: Specifies how to determine the representative value for decimated data sets.
LevelTriggerTypes
- Namespace:
DTS.DAS.Concepts.DAS.Channel - Signature:
[Flags] public enum LevelTriggerTypes - Values:
NONE = 0x00OutsideWindow = 0x01InsideWindow = 0x02LessThan = 0x04GreaterThan = 0x08
- Description: Bitwise flags for specifying level trigger behavior.
3. Invariants
Channel<DataType>is abstract and cannot be instantiated directly; it must be subclassed.Data<DatumType>is abstract and cannot be instantiated directly; it must be subclassed.Idis sealed and cannot be inherited.Id.valueisreadonly— once constructed, the underlying string cannot be changed.Idequality and comparison operations are always case-insensitive (StringComparison.OrdinalIgnoreCase).IDecimatable<out T>is covariant inT, allowing assignment compatibility for derived types.LevelTriggerTypesis a flags enum; values can be combined with bitwise operations.- Nullable thresholds (
TriggerBelowThresholdEu,TriggerAboveThresholdEu) usenullto indicate deactivation.
4. Dependencies
This module depends on:
DTS.Utilities— ProvidesExceptional(base class forChannel<DataType>) andExceptionalList<DatumType>(base class forData<DatumType>).DTS.Common.Utilities— ProvidesExceptional(base class forId).System— ForIComparable<T>,IEquatable<T>,FlagsAttribute,StringComparison.System.Collections.Generic— ForIEnumerable<T>.
What depends on this module:
- Not determinable from the provided sources alone. Consumers would typically be concrete DAS channel implementations, data processing pipelines, or configuration systems that implement these interfaces and extend these base classes.
5. Gotchas
-
Duplicate
DecimationMethodenum definition: This enum is defined in two different namespaces:DTS.Common.DAS.Concepts.DAS(inDecimationMethod.cs)DTS.DAS.Concepts.DAS.Channel(inDAS.Channel.IDecimatable.cs)
This could cause ambiguity or require explicit namespace qualification when both namespaces are imported.
-
Developer uncertainty about
Idclass: The source contains a comment questioning the class's existence:"DTM - why does this class exist? it's only encapsulating a string"and"why does this class even exist?"in the XML documentation. This suggests possible tech debt or historical artifact. -
Misleading XML summary in
IVoltageInsertionAware: The file header comment references "shunt-check awareness," but the interface is namedIVoltageInsertionAwareand deals with gain values, not shunt deflection directly. -
Undocumented
LinearizationFormulatype: TheILinearizedinterface references aLinearizationFormulatype that is not defined in any of the provided source files. Its structure and behavior are unknown from the source alone. -
Namespace inconsistency: Files use different namespace roots:
DTS.DAS.Concepts.DAS(most files)DTS.Common.DAS.Concepts.DAS(DecimationMethod.cs,DAS.Id.cs)
This may cause confusion or require multiple
usingdirectives.