This module defines a set of C# interfaces that collectively represent the contract for interacting with Data Acquisition Systems (DAS) in the DASFactory subsystem. These interfaces abstract hardware-specific behaviors—such as configuration, diagnostics, real-time data streaming, arming, time synchronization, and communication transport—into a unified API layer. They enable decoupling of core business logic from hardware implementation details, supporting multiple DAS device types (e.g., SLICE, TDAS, g5, S6) and facilitating operations like device discovery, configuration, diagnostics, and data acquisition. The interfaces are designed to be consumed by higher-level services (e.g., ConfigurationService, DiagnosticsService, DownloadService) and are central to the factory pattern used for device management.
2. Public Interface
Interfaces (No implementation classes provided; only interface definitions)
IAutoArmed
Property: bool AutoArmed { get; set; }
Indicates whether the DAS unit is currently in an auto-armed state.
ITiltSensorCalAware
Property: double[] TiltSensorCals { get; }
Provides calibration coefficients for tilt sensors (e.g., for converting raw ADC values to degrees).
IRangeBandwidthLimited
Property: bool RangeBandwidthLimited { get; }
Indicates whether the DAS unit’s analog input range is constrained by bandwidth limitations.
IAutoArmStatus
Property: DFConstantsAndEnums.CommandStatus AutoArmStatus { get; set; }
Represents the current status of the auto-arm command (e.g., pending, success, failure).
ITimeSynchronization
Property: bool SupportsTimeSynchronization { get; }
Indicates whether the device supports time synchronization.
Property: DateTime SystemBaseTime { get; }
Returns the base system time used for time-synchronized acquisition.
IConnectedEthernetDevice
Property: string MACAddress { get; }
MAC address of the connected Ethernet device.
Property: int Port { get; }
Port number on the parent device (e.g., SLICE6DB) to which this device is connected.
Property: string SerialNumber { get; set; }
Serial number of the connected Ethernet device.
IDASConfigurationArg
Property: IDASCommunication DAS { get; }
Reference to the DAS unit being configured.
Property: bool BlankConfigurationRead { get; }
Indicates whether the configuration was read from a blank (uninitialized) configuration storage.
Property: bool ConfigurationFailedValidation { get; }
Indicates whether the configuration failed validation during a configuration event.
IRealTime
Property: List<int> RealtimeDASChannels { get; set; }
List of channel indices from which real-time data is streamed.
Property: List<double> TiltAxisData { get; set; }
Tilt sensor axis data (X, Y, Z) in degrees for Slice6.
IDASCommunication must implement all inherited interfaces (IConfiguration, IDiagnos, ITriggerCheck, IRealTime, IArmStatus, IDownload, IInformation, IAutoArmStatus, IAutoArmed, IRangeBandwidthLimited, ITimeSynchronization).
ICommunication must support ConnectString-based connection establishment and Execute/SyncExecute for command dispatch.
ICommunication.CancelEvent is a ManualResetEvent that signals cancellation state; Cancel() and ForceCancel() must set this event.
IDiscoveredDevice must accurately reflect physical topology (e.g., Port, PositionOnChain, PositionOnDistributor) for hierarchical devices like SLICE6DB.
IAnalogInputDASChannel must ensure IsConfigured() returns true only if SerialNumber is non-null/non-empty.
IDASCommunication must expose FirmwareVersion as read-only, while SerialNumber is read-write.
ITimeSynchronization.SystemBaseTime must be valid only if SupportsTimeSynchronization is true.
IUDPQATSEntry.Timestamp must represent the time the UDP packet was received or generated (implementation-dependent but must be non-null).
IDASFactory.Refresh(...) must update GetDASList() to reflect current hardware state before invoking the action callback.