16 KiB
source_files, generated_at, model, schema_version, sha256
| source_files | generated_at | model | schema_version | sha256 | |||
|---|---|---|---|---|---|---|---|
|
2026-04-17T15:33:52.687420+00:00 | zai-org/GLM-5-FP8 | 1 | 8cfeb92a23080dfc |
SLICE Service Module Documentation
1. Purpose
The Slice<T> class is a generic partial class that serves as the primary service abstraction for DTS data acquisition system (DAS) hardware communication. It implements multiple interfaces (IDASCommunication, IConfigurationActions, IDiagnosticsActions, ITriggerCheckActions, IRealTimeActions, IArmActions, IDownloadActions) to provide a unified API for configuring, arming, monitoring, and downloading data from various SLICE hardware variants. The class is designed with a generic type parameter T constrained to IConnection, enabling support for different transport mechanisms (USB, Ethernet) while sharing common functionality.
2. Public Interface
Trigger Check Actions (from ITriggerCheckActions)
| Method | Signature | Description |
|---|---|---|
PreStartTriggerCheck |
void ITriggerCheckActions.PreStartTriggerCheck(ServiceCallback callback, object userData) |
Asynchronously prepares hardware for trigger check by setting start record and trigger polarity attributes if supported. |
PostStartTriggerCheck |
void ITriggerCheckActions.PostStartTriggerCheck(ServiceCallback callback, object userData) |
Immediately reports success; no additional post-processing performed. |
StartTriggerCheck |
void ITriggerCheckActions.StartTriggerCheck(ServiceCallback callback, object userData) |
Asynchronously initializes hardware input lines and checks for shorted trigger/start inputs. Returns error "TriggerInputShorted" or "StartInputShorted" if detected. |
DoStartCheck |
void ITriggerCheckActions.DoStartCheck(ServiceCallback callback, object userData) |
Asynchronously checks start record input status and updates ArmStatus.IsArmed and ArmStatus.IsRecording. |
DoTriggerCheck |
void ITriggerCheckActions.DoTriggerCheck(ServiceCallback callback, object userData) |
Asynchronously executes trigger check; callback may be null. |
DoTriggerCheckSync |
void ITriggerCheckActions.DoTriggerCheckSync() |
Synchronously checks trigger/start input status and sets ArmStatus with IsTriggered, IsArmed, IsTriggerShorted, IsStartShorted. |
CancelTriggerCheck |
void ITriggerCheckActions.CancelTriggerCheck(ServiceCallback callback, object userData) |
Asynchronously cancels trigger check operation. |
Protected/Virtual Methods (Trigger Check)
| Method | Signature | Description |
|---|---|---|
AsyncPreStartTriggerCheck |
protected virtual void AsyncPreStartTriggerCheck(object asyncInfo) |
Worker method that sets StartRecordPolarity and TriggerPolarity system attributes based on InvertStart and InvertTrigger properties. |
AsyncStartTriggerCheck |
protected virtual void AsyncStartTriggerCheck(object asyncInfo) |
Worker method that executes InitializeHardwareLines command and validates input states. |
Core Service Methods (from main partial class)
| Method | Signature | Description |
|---|---|---|
LaunchAsyncWorker |
public void LaunchAsyncWorker(string Invoker, WaitCallback cb, object asyncInfo) |
Queues an async work item to the thread pool. Throws NotConnectedException if not connected, or Exception if queue fails. |
GetRequestedRange |
protected static double GetRequestedRange(AnalogInputDASChannel analog, double MvPerEU) |
Calculates requested range for analog channel, adjusting for nonlinear polynomial formulas. |
SetRemoveSeconds |
protected void SetRemoveSeconds() |
Sets leap second removal attribute if ProtocolLimitedCommands.RemoveLeapSeconds is supported. |
GetExtendedFaultFlags |
protected virtual QATSExtendedFault[] GetExtendedFaultFlags() |
Queries extended fault flags from arm attributes; returns array of active faults. |
SetADCSamplesPerPacket |
protected void SetADCSamplesPerPacket(int adcPerPacket) |
Configures ADC samples per packet via S6A_IrigStreamBufferConfig system attribute. |
SurfaceApplicationError |
protected static void SurfaceApplicationError(string msg) |
Surfaces error to application via PageErrorEvent.SurfaceApplicationError. |
Public Properties (from SLICE Service.Public.cs)
| Property | Type | Description |
|---|---|---|
ConfigData |
IConfigurationData |
Public configuration data accessor. |
ChannelDiagnostics |
IDiagnosticActions[] |
Array of channel diagnostic actions. |
ChannelDiagnosticsResults |
IDiagnosticResult[] |
Array of channel diagnostic results. |
ModuleDiagnosticsResults |
IModuleDiagnosticsResult[] |
Module-level diagnostic results. |
TriggerResult |
ITriggerCheckResult |
Public trigger check result. |
RealtimeDASChannels |
List<int> |
List of real-time DAS channels. |
TiltAxisData |
List<double> |
Tilt axis data for real-time display. |
DASFlashEraseStatus |
FlashEraseStatus |
Flash erase operation status. |
DASArmStatus |
IArmStatusData |
Current arm status data. |
AutoArmStatus |
DFConstantsAndEnums.CommandStatus |
Auto-arm operation status (default: StatusNoError). |
DASClockSyncStatus |
IDictionary<InputClockSource, bool> |
Clock sync status per input source. |
WhatToDownload |
virtual IDownloadRequest |
Download request specification. |
EventInfo |
IDownloadReport |
Event download report. |
EventDownloadedStatus |
bool[] |
Per-event download status array. |
EventGuids |
Guid[] |
Event GUID array. |
FaultFlags |
ushort[] |
Event fault flags. |
ArmAttempts |
byte[] |
Event arm attempt counts. |
InvertTrigger |
bool |
Trigger polarity inversion flag. |
InvertStart |
bool |
Start record polarity inversion flag. |
IgnoreShortedStart |
bool |
Flag to ignore shorted start input. |
IgnoreShortedTrigger |
bool |
Flag to ignore shorted trigger input. |
SerialNumber |
string |
Device serial number (inherited). |
MACAddress |
string |
Device MAC address. |
FirstUseDate |
DateTime? |
First use date; null if not used since calibration. |
IsFirstUseDateSupported |
bool |
Whether hardware supports first use date. |
IsStreamingSupported |
bool |
Whether streaming feature is supported. |
ExcitationStatus |
ExcitationStatus |
Current excitation status (default: Unknown). |
RecordId |
int |
Record ID (default: INVALID_IDASCOMMUNICATION_RECORD_ID). |
Hardware Identification Methods
| Method | Signature | Description |
|---|---|---|
GetHardwareType |
public virtual HardwareTypes GetHardwareType() |
Returns hardware type based on serial number prefix ("BA5"→Nano, "BA0"→Micro, "SG5"→SLICE1_G5Stack). |
SupportsTriggerInversion |
public virtual bool SupportsTriggerInversion() |
Returns true (overrideable). |
SupportsStartInversion |
public virtual bool SupportsStartInversion() |
Returns true (overrideable). |
IsEthernetDistributor |
public virtual bool IsEthernetDistributor() |
Returns false. |
IsSlice6Distributor |
public virtual bool IsSlice6Distributor() |
Returns false. |
IsBattery |
public virtual bool IsBattery() |
Returns false. |
IsTSRAIR |
public virtual bool IsTSRAIR() |
Returns false. |
IsSlice6Air |
public virtual bool IsSlice6Air() |
Returns false. |
IsSlice6AirTc |
public virtual bool IsSlice6AirTc() |
Returns false. |
Arm Status Methods
| Method | Signature | Description |
|---|---|---|
GetIsInArm |
public bool GetIsInArm() |
Returns DASArmStatus.IsArmed or false if null. |
GetIsInRealtime |
public bool GetIsInRealtime() |
Returns DASArmStatus.IsInRealtime or false if null. |
GetIsStreaming |
public virtual bool GetIsStreaming() |
Returns false; overrideable for streaming-capable hardware. |
SetInArm |
public void SetInArm(bool WriteToDb) |
Sets IsArmed = true in arm status. |
SetInRealtime |
public void SetInRealtime(bool WriteToDb, bool ExitRealtimeIfPossible) |
Sets realtime mode; queries arm status first and may exit realtime mode. |
SetDASArmStatus |
public void SetDASArmStatus(IArmStatusData status, bool bSetInDb) |
Sets arm status with optional DB persistence. |
SetDASArmStatus |
public void SetDASArmStatus() |
Persists current DASArmStatus to DB; queries MaxEventsPossible for TSR AIR devices. |
Nested Classes
| Class | Purpose |
|---|---|
SliceServiceAsyncInfo |
Base async info container with callback, userData, functionData, PreOrPost, MaxTimeout. Methods: Error(), Progress(), NewData(), Success(), Cancel(). |
SliceServiceQueryConfigAsyncInfo |
Extends SliceServiceAsyncInfo with CRC, ConfigString, ReadIds, DeviceScaleFactors, DifferentModuleCountsAreOK. |
SliceServiceQueryTestSetupAsyncInfo |
Extends SliceServiceAsyncInfo with TestSetupGuid. |
SliceServiceSetTestSetupAsyncInfo |
Extends SliceServiceAsyncInfo with TestSetupXML. |
AutoDetectServiceAsyncInfo |
Extends SliceServiceAsyncInfo with QueryConfiguration flag. |
GainCodesSLICE6IEPE |
Enum with 16 gain codes (G1-G16) with attributes for input ranges. |
Hardware Subclasses
| Class | Connection Type | Hardware Type |
|---|---|---|
WinUSBSlice |
WINUSB | SLICE_Base |
CDCUSBSlice |
WINUSB | SLICE2 |
WinUSBSlice1_5 |
WINUSB | SLICE1_5 |
WinUSBSlice6 |
WINUSB | SLICE6 |
WinUSBSlice6Air |
WINUSB | SLICE6_AIR |
WinUSBSlice6AirBridge |
WINUSB | SLICE6_AIR_BR |
WinUSBTsrAir |
WINUSB | DIR/DKR (based on hardware revision) |
WinUSBSlice6AirThermocoupler |
WINUSB | SLICE6_AIR_TC |
EthernetSlice |
Ethernet | SLICE_Base |
EthernetSlice2 |
Ethernet | SLICE2 |
EthernetSlice6 |
Ethernet | SLICE6_Base |
EthernetSlice6Air |
Ethernet | S6A_EthernetRecorder or SLICE6_AIR |
EthernetSlice6AirBridge |
Ethernet | SLICE6_AIR_BR |
EthernetSlice6DB |
Ethernet | SLICE6DB or SLICE6DB_InDummy |
EthernetPowerPro |
Ethernet | PowerPro |
EthernetTsrAir |
Ethernet | TSR_AIR or TSR_AIR_RevB |
EthernetSlice6DB3 |
Ethernet | SLICE6DB3 |
EthernetSlicePRODB |
Ethernet | SLICE_Pro_Distributor |
EthernetSlice1_5 |
Ethernet | SLICE1_5 |
EthernetSliceDB |
Ethernet | SliceDB |
EthernetSlice6AirThermocoupler |
Ethernet | SLICE6_AIR_TC |
3. Invariants
- Connection Requirement:
LaunchAsyncWorkerrequiresConnected == true; otherwise throwsNotConnectedException. - Type Constraint: Generic type
Tmust implementIConnectionand have a parameterless constructor (new()). - Async Info Type Safety: Methods like
AsyncPreStartTriggerCheck,AsyncStartTriggerCheck,AsyncDoTriggerCheck,AsyncDoStartCheck, andAsyncCancelTriggerCheckperform type checking withis SliceServiceAsyncInfoand return early if type mismatch. - Command Support Checks: Hardware-specific commands (e.g.,
InitHardwareInputLines,RemoveLeapSeconds,ADCSamplesPerPacket,ExtendedFaultIds) are only executed ifIsCommandSupportedreturnstrue. - Equality Based on SerialNumber: Two
Slice<T>instances are equal if and only if theirSerialNumberproperties are equal (case-sensitive). - Arm Status Null Safety: Methods like
GetIsInArm()andGetIsInRealtime()returnfalseifDASArmStatusis null rather than throwing. - MaxEventsPossible Query: For TSR AIR devices,
MaxEventsPossibleis set to 0 before querying to trigger calculation per firmware requirements.
4. Dependencies
Direct Dependencies (Imports)
| Namespace | Purpose |
|---|---|
DTS.DASLib.Command.SLICE |
SLICE command classes (InitializeHardwareLines, SetSystemAttribute, QueryArmAttribute, QueryEventAttribute, QuerySystemAttribute, SetSystemAttributeSLICE6AIR, QueryArmAndTriggerStatus, EndRealtimeMode) |
DTS.Common.ICommunication |
Communication interfaces (ServiceCallback, ServiceCallbackData) |
DTS.Common.Utilities.Logging |
Logging via APILogger |
DTS.Common.Interface.Connection |
Connection interfaces (IConnection, EthernetConnection, WINUSBConnection) |
DTS.Common.Classes.Connection |
Connection implementations |
DTS.Common.Enums.DASFactory |
Enums (DFConstantsAndEnums, ProtocolLimitedCommands, AttributeTypes, QATSExtendedFault) |
DTS.Common.Interface.DASFactory |
DAS factory interfaces (IDASCommunication, IConfigurationActions, IDiagnosticsActions, ITriggerCheckActions, IRealTimeActions, IArmActions, IDownloadActions) |
DTS.Common.Enums |
General enums (ExcitationStatus, InputClockSource, ClockSyncProfile) |
DTS.Common.Enums.Sensors |
Sensor enums (NonLinearStyles) |
DTS.Common.Enums.Hardware |
Hardware enums (HardwareTypes) |
DTS.Common.Events |
Event classes (PageErrorEvent) |
DTS.Common.DASResource |
DAS resource classes (AnalogInputDASChannel) |
DTS.Common.Interface.DASFactory.Diagnostics |
Diagnostic interfaces |
DTS.Common.Interface.DASFactory.ARM |
ARM interfaces (IArmStatusData, IArmCheckActions, IArmCheckResults, IOptimizationValues) |
DTS.Common.Interface.DASFactory.Download |
Download interfaces (IDownloadRequest, IDownloadReport) |
DTS.Common.Interface.DASFactory.Config |
Configuration interfaces (IConfigurationData) |
DTS.DASLib.Service.Classes.Diagnostics |
Diagnostic implementation classes |
DTS.DASLib.Command.SLICE.RealtimeCommands |
Real-time command classes |
Depended On By
Not determinable from source alone - The module exposes interfaces that other components would consume, but no direct consumers are shown in these files.
5. Gotchas
-
Silent Failures in AsyncPreStartTriggerCheck: The
AsyncPreStartTriggerCheckmethod catches all exceptions and only logs them viaAPILogger.Log, then callsinfo.Success(). This means polarity configuration failures are not surfaced to the caller. -
Null Callback Handling:
DoTriggerCheckaccepts a nullcallbackparameter and createsSliceServiceAsyncInfoas null in that case. TheAsyncDoTriggerCheckmethod uses null-conditional operators (info?.Success()) to handle this. -
Hardware Revision Query Side Effect:
WinUSBTsrAir.GetHardwareType()andEthernetTsrAir.GetHardwareType()callQueryHardwareRevision()if_hardwareRevisionequalsUNKNOWN_REVISION, which may cause I/O during what appears to be a simple property getter. -
KeepAliveReset Requirement: Several Ethernet subclasses (
EthernetSlice6,EthernetSlice6Air,EthernetSlice6AirBridge,EthernetTsrAir,EthernetSlice6AirThermocoupler) setRequiresKeepAliveReset = trueon the transport, indicating these devices require special connection handling. -
TSR AIR Protocol Removal:
WinUSBTsrAirconstructor removesPTPSyncStatusandPTPTimestampfromTSRAIR_MinimumProtocols, indicating USB-connected TSR AIR devices do not support network time sync. -
Multiple Sample Realtime Flag: Different subclasses set
_bSupportsMultipleSampleRealtimedifferently (WinUSBSlice/EthernetSlice = true, most others = false), affecting real-time data handling behavior. -
SetInRealtime Queries Hardware:
SetInRealtimeexecutesQueryArmAndTriggerStatussynchronously before setting status, which may have performance implications. -
MaxEventsPossible Calculation Requirement: For TSR AIR devices, the firmware requires setting
MaxEventsPossibleto 0 before querying to trigger internal calculation (per comment referencing case 26817).