--- source_files: - DataPRO/IService/Interfaces/IAutoArmStatus.cs - DataPRO/IService/Interfaces/ITimeActions.cs - DataPRO/IService/Interfaces/IService.cs - DataPRO/IService/Interfaces/IRealtime.cs - DataPRO/IService/Interfaces/IDiagnos.cs - DataPRO/IService/Interfaces/IDASCommunicationComparer.cs - DataPRO/IService/Interfaces/IDASCommunicationEqComparer.cs - DataPRO/IService/Interfaces/IUARTDownloadActions.cs - DataPRO/IService/Interfaces/ITriggerCheckActions.cs - DataPRO/IService/Interfaces/IRealTimeActions.cs - DataPRO/IService/Interfaces/IDownloadActions.cs - DataPRO/IService/Interfaces/IClockSyncActions.cs - DataPRO/IService/Interfaces/IDiagnosticsActions.cs - DataPRO/IService/Interfaces/IConfigurationActions.cs - DataPRO/IService/Interfaces/IArmActions.cs - DataPRO/IService/Interfaces/IDASCommunication.cs generated_at: "2026-04-17T15:29:43.501644+00:00" model: "zai-org/GLM-5-FP8" schema_version: 1 sha256: "ddda8c0520405fd5" --- # DTS.DASLib.Service Interfaces Documentation ## 1. Purpose This module defines the core service interfaces for communicating with Data Acquisition System (DAS) hardware units. It provides abstractions for configuration, diagnostics, arming/disarming, real-time data streaming, download operations, trigger checking, clock synchronization, and time actions. The primary interface `IDASCommunication` serves as the central contract representing a physical DAS unit, aggregating multiple capability interfaces. These interfaces enable a service-oriented architecture where operations are performed asynchronously via callbacks. --- ## 2. Public Interface ### Delegates #### `ServiceCallback` **Signature:** `delegate void ServiceCallback(ServiceCallbackData data)` - **Description:** The delegate type used for asynchronous service callbacks. All service methods accept this callback to return results. --- ### Interfaces #### `IDASCommunication` **Namespace:** `DTS.DASLib.Service` The primary interface representing a DAS hardware unit. Inherits from: `IConfiguration`, `IDiagnos`, `ITriggerCheck`, `IRealTime`, `IArmStatus`, `IDownload`, `IInformation`, `IComparable`, `IDisposable`, `IAutoArmStatus`, `IAutoArmed`, `IRangeBandwidthLimited`, `ITimeSynchronization`. **Properties:** | Property | Type | Description | |----------|------|-------------| | `RecordId` | `int` | Record identifier. | | `SerialNumber` | `string` | Serial number of the base unit. | | `FirmwareVersion` | `string` | Currently installed firmware version. | | `InputLowVoltage`, `InputMediumVoltage`, `InputHighVoltage` | `float` | Input voltage thresholds. | | `BatteryLowVoltage`, `BatteryMediumVoltage`, `BatteryHighVoltage` | `float` | Battery voltage thresholds. | | `MinimumValidInputVoltage`, `MaximumValidInputVoltage` | `double` | Valid input voltage range. | | `MinimumValidBatteryVoltage`, `MaximumValidBatteryVoltage` | `double` | Valid battery voltage range. | | `DiagnosticsHasBeenRun` | `bool` | Indicates if diagnostics have been run; also signals if arm attributes should be defaulted. | | `ConfigureHasBeenRun` | `bool` | Indicates if configuration has been applied. | | `MaxModules` | `int` | Maximum number of modules supported. | | `InvertTrigger` | `bool` | Sets trigger inversion (write-only). | | `InvertStart` | `bool` | Gets/sets start line inversion. | | `IgnoreShortedStart`, `IgnoreShortedTrigger` | `bool` | Flags for ignoring shorted lines. | | `MACAddress` | `string` | Device MAC address. | | `DownstreamMACAddresses` | `string[]` | MAC addresses of downstream devices. | | `SupportsIndividualChannelRealtimeStreaming` | `bool` | Indicates support for selectable channel realtime streaming. | | `AutoArmUDPSetting` | `string` | UDP settings for auto arm status broadcast. | **Methods:** | Method | Return Type | Description | |--------|-------------|-------------| | `GetNominalRanges(SensorConstants.BridgeType bridge)` | `double[]` | Returns nominal ranges for given bridge type. | | `NumberOfConfiguredChannels()` | `int` | Count of configured channels. | | `NumberOfChannels()` | `int` | Total channel count. | | `MaxMemory()` | `long` | Maximum memory capacity. | | `MinSampleRate()` | `uint` | Minimum sample rate. | | `MaxSampleRate()` | `uint` | Maximum sample rate. | | `SupportsAutoArm()` | `bool` | Auto-arm capability check. | | `SupportsLevelTrigger()` | `bool` | Level trigger capability check. | | `SupportsRealtime()` | `bool` | Realtime streaming capability check. | | `SupportsMultipleEvents()` | `bool` | Multiple event support check. | | `SupportsTriggerInversion()` | `bool` | Trigger inversion capability check. | | `SupportsStartInversion()` | `bool` | Start inversion capability check. | | `SupportsHardwareInputCheck()` | `bool` | Hardware input status check capability. | | `SupportsMultipleSampleRealtime()` | `bool` | Multiple sample realtime capability check. | | `ControlsDAQ()` | `bool` | Returns true if base unit controls DAQ for modules. | | `CheckAAF(float rate)` | `bool` | Validates new AAF rate against configured rate. | | `RequireDiagnosticRateMatchSampleRate()` | `bool` | Checks if diagnostic rate must match sample rate. | | `GetPhaseShiftSamples(uint ModuleIndex, double ActualSampleRate, uint HardwareAAF, ulong originalT0)` | `ulong` | Returns phase delay in samples. | | `IsEthernetDistributor()` | `bool` | Returns true for ethernet distributor devices (SLICEDb, SLICE ECM, SLICE6DB). | | `IsSlice6Distributor()` | `bool` | Returns true for SLICE6DB devices. | --- #### `IConfigurationActions` **Namespace:** `DTS.DASLib.Service` **Methods:** | Method | Description | |--------|-------------| | `AutoDetect(bool bQueryConfiguration, ServiceCallback callback, object userData)` | Sets channels to auto-detect configuration and queries sensor types. | | `VerifyConfig(bool DoStrictCheck)` / `VerifyConfig(bool DoStrictCheck, ErrorCallback FailedChallengeFunc)` | Validates ConfigData property. | | `SetFirstUseDate(DateTime firstUseDate, ServiceCallback callback, object userData)` | Sets user attribute for first use date. | | `StoreTestSetupXML(ServiceCallback callback, object userData, string testSetupXML)` | Stores test setup XML. | | `ResetHardwareLines(ServiceCallback callback, object userData)` | Resets trigger/start lines. | | `CheckAAFilterRate(ServiceCallback callback, object userData)` | Validates AA filter rate. | | `QueryTestSetup(ServiceCallback callback, object userData)` | Queries test setup. | | `Configure(ServiceCallback callback, object userData, bool bEventConfig, bool DummyConfig, double[] MaxAAF, bool configureDigitalOutputs, uint crc, bool turnOffAAFRealtime, IStreamingFilterProfile dspFilterType, bool discardDiagnostics, ...)` | Applies ConfigData to DAS hardware. | | `ApplyLevelTriggers(ServiceCallback callback, object userData)` | Applies level triggers only. | | `QueryConfiguration(ServiceCallback callback, object userData, uint crc, string strConfig, bool bReadIds, bool bDeviceScaleFactors, bool sourceDASStorageList)` | Retrieves configuration from DAS. | | `UpdateConfigurationFromFile(ServiceCallback callback, object userData, string filePath)` | Updates configuration from file. | | `UpdateIDs(ServiceCallback callback, object userData)` | Retrieves and stores EIDs. | | `UpdateId(ServiceCallback callback, object userData, DASModule module, DASChannel channel)` | Updates single ID. | | `CheckSafetyState(bool bArmed, ServiceCallback callback, object userData)` | Checks safety state. | | `Reboot(ServiceCallback callback, object userData)` | Reboots the device. | --- #### `IDiagnosticsActions` **Namespace:** `DTS.DASLib.Service` **Methods:** | Method | Description | |--------|-------------| | `ClearTriggerOut(ServiceCallback callback, object userData)` | Clears trigger out line via SetSwitchImmediate. | | `ClearLatches(ServiceCallback callback, object userData)` | Clears latched FPGA via QATS call. | | `PerformVoltageCheck(ServiceCallback callback, object userData)` | Performs voltage check. | | `PerformVoltageCheckTAOnly(ServiceCallback callback, object userData)` | Voltage check for TA only. | | `PerformArmChecks(ServiceCallback callback, object userData)` | Performs arm checks. | | `SaveTiltSensorDataPre(ServiceCallback callback, object userData)` | Saves tilt sensor data. | | `SaveTemperaturesPre(ServiceCallback callback, object userData)` | Saves temperatures. | | `PrepareForBridgeResistanceMeasurement(UInt32 DiagnosticsSampleRateHz, float DiagnosticsAAFilterFrequencyHz, ServiceCallback callback, object userData)` | Prepares for bridge resistance measurement; required if units were in low power mode. | | `PrepareForDiagnostics(UInt32 DiagnosticsSampleRateHz, float DiagnosticsAAFilterFrequencyHz, PrePostResults WhichResult, ServiceCallback callback, object userData)` | Prepares for diagnostics. | | `SetStatusIndicator(DiagnosticsStatusIndicatorState state, ServiceCallback callback, object userData)` | Sets status indicator. | | `DiagnosAndGetResults(int EventNumber, PrePostResults WhichResult, ServiceCallback callback, object userData)` | Performs diagnostics and stores results. | | `GetEventDiagnosticsResults(int EventNumber, PrePostResults WhichResult, ServiceCallback callback, object userData)` | Retrieves pre/post event diagnostic results. | | `ClearDASTriggerLine(ServiceCallback callback, object userData)` | Clears trigger lines for any DAS. | | `SquibFireCheckArm(double delay, double duration, ServiceCallback callback, object userData)` | Squib fire check arm. | | `TriggerCheckTrigger(ServiceCallback callback, object userData)` | Trigger check trigger. | | `TriggerCheckDownload(double delay, double duration, float diagnosticsAAFilterFrequencyHz, uint diagnosticsSampleRateHz, ServiceCallback callback, object userData)` | Trigger check download. | | `GetBridgeMeasurement(ServiceCallback callback, object userData)` | Gets bridge measurement. | | `MeasureTransferSpeed(ServiceCallback callback, object userData)` | Measures transfer speed. | --- #### `IDownloadActions` (internal) **Namespace:** `DTS.DASLib.Service` **Methods:** | Method | Description | |--------|-------------| | `Download(ServiceCallback callback, object userData)` | Downloads data specified in WhatToDownload property. | | `Cancel()` | Cancels current operation. | | `ForceCancel()` | Cancels with smaller clear cancel time. | | `ClearCancel()` | Clears cancel flag. | | `QueryDownload(ServiceCallback callback, object userData, int eventIndex, TDASServiceSetupInfo setupInfo)` | Retrieves info about available events. | | `QueryDownloadedStatus(ServiceCallback callback, object userData)` | Checks if events have been downloaded. | | `SetTriggerSampleNumbers(ServiceCallback callback, object userData)` | Updates recorded trigger sample numbers in HW. | | `SetDownloaded(ServiceCallback callback, object userData)` | Sets event status to downloaded (when no data to download). | | `SetEventInfo(int eventIndex, string id, Guid guid, ulong totalSamples, ulong[] triggerSamples, ulong startRecordSample, UInt32 eventHasDownloaded, ServiceCallback callback, object userData)` | Updates event with new information. | | `CorrectT0s(ServiceCallback callback, object userData)` | Corrects T0 and total samples recorded; searches ADC for rails and peaks/troughs. | --- #### `IArmActions` (internal) **Namespace:** `DTS.DASLib.Service` **Methods:** | Method | Description | |--------|-------------| | `TurnOffT0Lights(ServiceCallback callback, object userData)` | Turns off T0 lights. | | `BeginBackgroundFlashErase(ServiceCallback callback, object userData)` | Initiates background flash erase (returns immediately). | | `BeginFlashErase(ServiceCallback callback, object userData, bool DummyArm)` | Starts asynchronous flash erase. | | `QueryFlashEraseStatus(ServiceCallback callback, object userData)` | Queries flash erase progress and errors. | | `ReadyForArming(ServiceCallback callback, object userData, Guid eventGuid, int armNowTimeout, bool testingMode, int maxNumberEvents, bool DummyArm, bool SysMode)` | Prepares for arming. | | `ArmNow(ServiceCallback callback, object userData, Guid eventGuid, int armNowTimeout, bool testingMode, int maxNumberEvents, bool SysMode)` | Arms a single DAS immediately. | | `PrepareForArmNow(...)` | Prepares for immediate arm. | | `PreparedArmNow(...)` | Executes prepared arm. | | `ReArm(ServiceCallback callback, object userData, bool autoArm, bool arm, bool repeatEnable)` | Re-arms all units with optional flags. | | `AutoArmNow(ServiceCallback callback, object userData, Guid eventGuid, int armNowTimeout, bool testingMode, UInt32 diagnosticsDelayMs, int MaxEventCount, bool repeatEnable, bool preserveDiagnostics)` | Auto-arms a single DAS. | | `EnableFaultChecking(ServiceCallback callback, object userData)` | Enables fault checking for chained DAS. | | `CheckAlreadyLevelTriggered(ServiceCallback callback, object userData)` | Checks if channels are level triggered. | | `Disarm(ServiceCallback callback, object userData)` | Disarms the DAS. | | `DisAutoArm(ServiceCallback callback, object userData)` | Disables auto-arm. | | `GetArmStatus(ServiceCallback callback, object userData, uint inputVoltageCutoff, int maxTimeout)` | Retrieves current arm status. | | `GetAutoArmStatus(ServiceCallback callback, object userData)` | Retrieves current auto-arm status. | | `EnterLowPowerMode(ServiceCallback callback, object userData)` | Sets DAS to low power mode. | | `StartRecord(ServiceCallback callback, object userData)` | Tells DAS to start recording. | | `Trigger(ServiceCallback callback, object userData)` | Sends trigger signal to hardware. | | `GetExtendedFaultIds(ServiceCallback callback, object userData)` | Queries extended fault IDs from hardware. | **Properties:** | Property | Type | Description | |----------|------|-------------| | `SupportsBackgroundFlashErase` | `bool` | Whether unit supports flash erase. | | `BackgroundFlashEraseStarted` | `bool` | Whether flash erase has started. | | `BackgroundFlashEraseStartTime` | `DateTime?` | Start time of background flash erase. | --- #### `IRealTimeActions` (internal) **Namespace:** `DTS.DASLib.Service` **Methods:** | Method | Description | |--------|-------------| | `RealTime(int samplesPerSec, int msBetweenSamples, ServiceCallback callback, object userData, bool allowMultipleSampleRealtime, int moduleIndex, ManualResetEvent stopEvent, byte[] channels, double aaf, int minCallbackUpdateTimeMs, bool UseUDPStreaming, string HostIPAddress)` | Starts realtime data streaming at specified rate. | | `RealTimePolling(ServiceCallback callback, object userData, ManualResetEvent stopEvent, byte[] channels)` | Realtime via active polling for sample averages. | | `ExitRealTimeMode(ServiceCallback callback, object userData)` | Stops realtime data streaming. | | `RealTimeTiltPolling(ServiceCallback callback, object userData, ManualResetEvent stopEvent)` | Realtime tilt data polling. | | `SetUDPStreamProfile(ServiceCallback callback, object userData, UDPStreamProfile streamProfile, string udpAddress, ushort timeChannelId, ushort dataChannelId, uint[] tmnsConfig, ushort irigTimeDataPacketIntervalMs)` | Configures UDP streaming profile. | | `GetUDPStreamProfile(ServiceCallback callback, object userData)` | Retrieves UDP stream profile. | --- #### `ITriggerCheckActions` (internal) **Namespace:** `DTS.DASLib.Service` **Methods:** | Method | Description | |--------|-------------| | `PreStartTriggerCheck(ServiceCallback callback, object userData)` | Preparation before StartTriggerCheck; called explicitly by StartTriggerCheck service. | | `PostStartTriggerCheck(ServiceCallback callback, object userData)` | Actions after StartTriggerCheck; called explicitly by StartTriggerCheck service. | | `StartTriggerCheck(ServiceCallback callback, object userData)` | Changes DAS mode to latch signal lines. | | `DoTriggerCheck(ServiceCallback callback, object userData)` | Performs trigger check (async); stores result in TriggerResult property. | | `DoTriggerCheckSync()` | Synchronous version of DoTriggerCheck. | | `DoStartCheck(ServiceCallback callback, object userData)` | Performs start check; stores result in StartResult property. | | `CancelTriggerCheck(ServiceCallback callback, object userData)` | Sets latching mechanism back to normal. | --- #### `IClockSyncActions` **Namespace:** `DTS.DASLib.Service.Interfaces` **Methods:** | Method | Description | |--------|-------------| | `GetClockSyncStatus(ServiceCallback callback, object userData)` | Retrieves clock source and sync status. Response includes input/output sync sources, sync status bits, arm state, and PTP timestamps. | | `SetClockSyncConfig(ServiceCallback callback, object userData, ClockSyncProfile profile)` | Sets input/output clock configuration. Supports PTP, IRIG-B122, GPS, and 1PPS inputs. | | `GetPTP