16 KiB
source_files, generated_at, model, schema_version, sha256
| source_files | generated_at | model | schema_version | sha256 | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
2026-04-17T15:30:50.633601+00:00 | zai-org/GLM-5-FP8 | 1 | 434d25165d2bfceb |
SLICE Device Service Classes Documentation
1. Purpose
This module provides specialized implementations for various SLICE hardware devices (Data Acquisition Systems) within the DTS.DASLib.Service namespace. It contains device-specific classes that handle configuration, communication protocols, diagnostics, and real-time streaming for different SLICE variants including SLICE6DB3 (limited PTP support), SLICEPRODB (battery/distributor), SLICE6AIRBR (bridge recorder), and SLICE6AIRTC (thermocouple). The module also includes supporting classes for device discovery (S6DBConnectedDevice) and configuration event handling (DASConfigurationArg).
2. Public Interface
DASConfigurationArg
Namespace: DTS.DASLib.Service
Implements: IDASConfigurationArg
| Member | Signature | Description |
|---|---|---|
DAS |
IDASCommunication DAS { get; private set; } |
Gets the DAS communication interface associated with this configuration event. |
BlankConfigurationRead |
bool BlankConfigurationRead { get; private set; } |
Indicates whether a blank configuration was read (used during emergency downloads with blank filestore). |
ConfigurationFailedValidation |
bool ConfigurationFailedValidation { get; private set; } |
Indicates whether the configuration failed validation. |
| Constructor | DASConfigurationArg(IDASCommunication das, bool blankRead, bool failedValidation) |
Constructs a new configuration argument with the specified DAS, blank read status, and validation status. |
SLICE6DB3<T>
Namespace: DTS.DASLib.Service
Base Class: SLICE6DB<T>
Constraint: where T : IConnection, new()
A limited version of SLICE6DB without IEEE1588/PTP support.
| Member | Signature | Description |
|---|---|---|
SetClockSyncConfig |
override void SetClockSyncConfig(ServiceCallback callback, object userData, ClockSyncProfile profile) |
No-op implementation that immediately reports success. |
GetClockSyncStatus |
override void GetClockSyncStatus(ServiceCallback callback, object userData) |
No-op implementation that immediately reports success. |
SetPTPDomainID |
override void SetPTPDomainID(ServiceCallback callback, object userData, byte domainID) |
No-op implementation that stores domainID in functionData and reports success. |
GetPTPDomainID |
override void GetPTPDomainID(ServiceCallback callback, object userData) |
No-op implementation that immediately reports success. |
S6DBConnectedDevice
Namespace: DTS.DASLib.Service.Classes.SLICE
Implements: IDASConnectedDevice
Describes a device connected to a S6DB as determined by QAUTIL_QUERY_MAC_IP_TABLE.
| Member | Signature | Description |
|---|---|---|
DeviceType |
HardwareTypes DeviceType { get; } |
The device type, defaults to HardwareTypes.SLICE6_Base. Changes to HardwareTypes.SLICE6_AIR if SerialNumber starts with "S6A". |
Port |
int Port { get; private set; } |
The port the device is on (0-based, positive values valid, default -1). |
SpotOnPort |
int SpotOnPort { get; private set; } |
Position on the chain/port (0-based, positive values valid, default -1). |
PhysicalAddress |
PhysicalAddress PhysicalAddress { get; private set; } |
MAC address of the device. |
IPAddress |
string IPAddress { get; private set; } |
IP address reported by device (default empty string). |
SerialNumber |
string SerialNumber { get; private set; } |
Serial number of device (default empty string). |
Location |
string Location { get; private set; } |
Location of device (default empty string). |
Version |
string Version { get; private set; } |
Version of device (default empty string). |
| Constructor | S6DBConnectedDevice(int port, int spotOnPort, PhysicalAddress physicalAddress, string ipAddress, string serialNumber, string location, string version) |
Constructs a new connected device record with all parameters. |
SLICEPRODB<T>
Namespace: DTS.DASLib.Service
Base Class: SLICE6DB<T>
Implements: IDownloadActions
Constraint: where T : IConnection, new()
| Member | Signature | Description |
|---|---|---|
QueryConnectedDevices |
override void QueryConnectedDevices() |
No functionality for SLICEPRO DB; sets connected devices to empty array. |
IsSlice6Distributor |
override bool IsSlice6Distributor() |
Returns false. |
IsBattery |
override bool IsBattery() |
Returns true. |
SupportsTemperatureCheck |
protected override bool SupportsTemperatureCheck { get; } |
Returns true. |
SupportsTiltCheck |
protected override bool SupportsTiltCheck { get; } |
Returns true. |
SupportsClockSyncCheck |
protected override bool SupportsClockSyncCheck { get; } |
Returns true. |
SupportsTimeSynchronization |
public override bool SupportsTimeSynchronization { get; } |
Returns false. |
InitMinProto |
public override void InitMinProto() |
Initializes protocol limitations dictionary with minimum protocol version 1 for supported commands and byte.MaxValue for unsupported commands (PTP, temperature log, tilt queries, Ethernet MAC table). |
AsyncQueryConfiguration |
protected override void AsyncQueryConfiguration(object configAsyncInfo) |
Initializes minimum protocol, creates default config from info, and reports success. |
SLICE6AIRBR<T>
Namespace: DTS.DASLib.Service
Base Class: SLICE6_Base<T>
Implements: IAlignUDPToPPSAware
Constraint: where T : IConnection, new()
Bridge recorder variant of SLICE6 AIR.
| Member | Signature | Description |
|---|---|---|
AlignUDPToPPS |
bool AlignUDPToPPS { get; set; } |
Gets or sets UDP to PPS alignment flag. |
SupportsRemoveLeapSeconds |
public override bool SupportsRemoveLeapSeconds { get; } |
Returns true. |
SupportsADCSamplesPerPacket |
public override bool SupportsADCSamplesPerPacket { get; } |
Returns true. |
RequiresNon0QualificationSamples |
protected override bool RequiresNon0QualificationSamples { get; } |
Returns true. |
DASIndex |
int DASIndex { get; set; } |
The order of this DAS among multiple DAS (default -1). |
SetIsStreamingSupported |
public override void SetIsStreamingSupported(bool supported) |
Always sets IsStreamingSupported = true. |
InitMinProto |
public override void InitMinProto() |
Initializes extensive protocol limitations dictionary for SLICE6 AIR BR. |
MaxSampleRateHz |
protected override uint MaxSampleRateHz { get; } |
Lazy-loaded max sample rate, queries device via QuerySystemAttributeSLICE6. Falls back to 50000 on error. |
MakeConfigModuleFromInfoModule |
protected override DASModule MakeConfigModuleFromInfoModule(InfoResult.Module infoModule) |
Creates DASModule with channels supporting FullBridge and HalfBridge types (no IEPE). |
AsyncConfigure |
protected override void AsyncConfigure(object configAsyncInfo) |
Complex configuration method handling UDP alignment, leap seconds, ADC samples per packet, channel configuration, bridge modes, coupling, and level triggers. |
GetIsStreaming |
public override bool GetIsStreaming() |
Returns true if DASArmStatus.ReceivedInvalidModeDuringSetup or DASArmStatus.IsInRealtime. |
SLICE6AIRTC<T>
Namespace: DTS.DASLib.Service
Base Class: SLICE6_Base<T>
Implements: IAlignUDPToPPSAware, IDASReconfigure, ITCDiagnosticResults, IUARTDownloadActions, IUARTDownload
Constraint: where T : IConnection, new()
Thermocouple variant of SLICE6 AIR with UART download support.
| Member | Signature | Description |
|---|---|---|
WhatUARTToDownload |
IUARTDownloadRequest WhatUARTToDownload { get; set; } |
Gets or sets the UART download request. |
SetWhatUARTToDownload |
void SetWhatUARTToDownload(IUARTDownloadRequest request, bool bSetInDb = true) |
Sets what to download via UARTDownloadRequest.SetWhatToDownload. |
BaudRate |
uint BaudRate { get; private set; } |
UART baud rate setting. |
DataBits |
uint DataBits { get; private set; } |
UART data bits setting. |
StopBits |
StopBits StopBits { get; private set; } |
UART stop bits setting. |
Parity |
Parity Parity { get; private set; } |
UART parity setting. |
FlowControl |
Handshake FlowControl { get; private set; } |
UART flow control setting. |
DataFormat |
UartDataFormat DataFormat { get; private set; } |
UART data format setting. |
TCDiagnosticResults |
ITCDiagnosticResult[] TCDiagnosticResults { get; private set; } |
Array of 24 thermocouple diagnostic results. |
ClearTCDiagnosticResults |
void ClearTCDiagnosticResults() |
Clears diagnostic results to empty array. |
SetTCDiagnosticResults |
void SetTCDiagnosticResults(ITCDiagnosticResult[] results) |
Sets diagnostic results array. |
IsSlice6AirTc |
public override bool IsSlice6AirTc() |
Returns true. |
GetMaxFileLengthTMATS |
public override int GetMaxFileLengthTMATS() |
Returns 32000. |
UARTDownload |
public void UARTDownload(ServiceCallback callback, object userData) |
Returns error "Not supported". |
QueryUARTDownload (explicit) |
void IUARTDownloadActions.QueryUARTDownload(ServiceCallback callback, object userData, int eventIndex, TDASServiceSetupInfo setupInfo) |
Queries UART download availability. |
GetUARTSettings (explicit) |
void IUARTDownloadActions.GetUARTSettings(ServiceCallback callback, object userData) |
Retrieves UART settings via QuerySystemAttributeSLICE6AIR. |
SetUARTSettings (explicit) |
void IUARTDownloadActions.SetUARTSettings(ServiceCallback callback, object userData, uint baudRate, uint dataBits, uint stopBits, uint parity, uint flowControl) |
Sets UART settings via SetSystemAttributeSLICE6AIR. |
SetMaxModuleCount (explicit) |
void IDASReconfigure.SetMaxModuleCount(int count) |
Sets the maximum module count. |
GetMaxModuleCount (explicit) |
int IDASReconfigure.GetMaxModuleCount() |
Gets the cached maximum module count. |
GetStackChannelConfigTypes |
public override int[] GetStackChannelConfigTypes() |
Queries arm attribute for stack channel config types. |
InitMinProto |
public override void InitMinProto() |
Initializes protocol limitations for SLICE6 AIR TC including UART settings commands. |
GetRTChannelIndices |
protected override byte[] GetRTChannelIndices(RealTimeAsyncPacket packet) |
Returns channel indices based on _maxModuleCount: 8 channels (0 modules), 16 channels (1 module), or 24 channels (2+ modules). |
GetRealtimeSamplesClass |
protected override IGetRealtimeSamples GetRealtimeSamplesClass(ICommunication iCommunication, bool bPolling = false) |
Returns RealtimeStreamingNextSamples with SignedData = true if streaming supported, otherwise falls back to base implementation. |
3. Invariants
- S6DBConnectedDevice.Port and SpotOnPort: Only positive values are valid; default is -1 (invalid state).
- S6DBConnectedDevice.DeviceType: Defaults to
HardwareTypes.SLICE6_Basebut changes toHardwareTypes.SLICE6_AIRif SerialNumber starts with "S6A". - SLICEPRODB: Always returns
falseforIsSlice6Distributor()andtrueforIsBattery(). - SLICEPRODB:
QueryConnectedDevices()always sets an empty connected devices array. - SLICE6AIRBR/SLICE6AIRTC:
SetIsStreamingSupported()always setsIsStreamingSupported = trueregardless of parameter. - SLICE6AIRTC.TCDiagnosticResults: Initialized with 24 elements (indexed 0-23).
- SLICE6AIRTC.GetRTChannelIndices: Returns 8, 16, or 24 channel indices based on
_maxModuleCountvalue. - SLICE6DB3: All clock sync and PTP methods are no-ops that immediately report success without performing actual operations.
- Protocol limitations: Commands with
byte.MaxValueprotocol version are unsupported; commands withMIN_PROTOCOL_VER(1) are supported.
4. Dependencies
External Dependencies (Imports):
DTS.Common.Interface.Connection- Connection interfaces (IConnection)DTS.Common.Interface.DASFactory- DAS factory interfaces (IDASCommunication,IDASConfigurationArg,ICommunication,IDASConnectedDevice,IDASReconfigure,ITCDiagnosticResult,IUARTDownload,IUARTDownloadActions,IUARTDownloadRequest)DTS.Common.Interface.DASFactory.Config- Configuration types (DASModule,DASChannel,AnalogInputDASChannel,StreamOutputDASChannel,UARTInputDASChannel)DTS.Common.Interface.Communication- Communication interfacesDTS.Common.Enums.DASFactory- Enums and constants (DFConstantsAndEnums,ProtocolLimitedCommands,ModuleType)DTS.Common.Enums.Hardware- Hardware type enums (HardwareTypes)DTS.Common.Enums.Sensors- Sensor enums (SensorConstants.BridgeType)DTS.Common.Constant.DASSpecific- DAS-specific constants (SLICE6AIRBR,SLICE6AIRTC)DTS.Common.ICommunication- Communication types (InfoResult,RealTimeAsyncPacket)DTS.Common.Utilities.Logging- Logging (APILogger)DTS.Common.Utils- Utility functions (Utils.IsZero,Utils.AlmostEqual)DTS.Common.Classes.DASFactory- DAS factory classesDTS.Common.Enums- General enumsDTS.DASLib.Command.SLICE- SLICE command classes (QuerySystemAttributeSLICE6,SetSystemAttributeSLICE6AIR,QueryChannelShuntResults,RetrieveSampleAverage,QueryArmAttribute)DTS.DASLib.Command.SLICE.RealtimeCommands- Realtime command classes (RealtimeStreamingNextSamples)DTS.DASLib.Command- Base command classes (AbstractCommandBase)DTS.DASLib.Service.Interfaces- Service interfaces (IDownloadActions)System.Net.NetworkInformation-PhysicalAddressclassSystem.IO.Ports- Serial port enums (StopBits,Parity,Handshake)System.Collections.Generic
Inferred Dependents:
- Classes inherit from
SLICE6DB<T>andSLICE6_Base<T>(not provided in source), suggesting a class hierarchy for SLICE device implementations. SliceServiceAsyncInfo,SliceConfigServiceAsyncInfo,QueryDownloadAsyncInfo,SetUARTSettingsAsyncInfo,SliceUARTDownloadStateare used but not defined in provided source.
5. Gotchas
-
SLICE6DB3 PTP No-ops: The
SetClockSyncConfig,GetClockSyncStatus,SetPTPDomainID, andGetPTPDomainIDmethods inSLICE6DB3are no-ops that immediately callSuccess()without performing any actual device communication. Code expecting real PTP functionality will silently succeed without effect. -
SLICEPRODB IsBattery Ambiguity: The
IsBattery()method returnstruewith the comment "um maybe?", indicating uncertainty about the correctness of this implementation. -
SLICE6AIRBR SetIsStreamingSupported Ignores Parameter: The
SetIsStreamingSupported(bool supported)method ignores its parameter and always setsIsStreamingSupported = true. -
SLICE6AIRTC UARTDownload Not Supported: The
UARTDownloadmethod immediately returns an error "Not supported" despite the class implementingIUARTDownload. -
SLICE6AIRTC GetIsStreaming Dual Condition: The streaming status check uses
DASArmStatus.ReceivedInvalidModeDuringSetup || DASArmStatus.IsInRealtime- the comment references bug 18852 indicating this is a workaround for unreliable status detection. -
SLICE6AIRTC Failure Threshold: UART settings methods track
straightFailuresand only report errors after exceedingPERMITTED_FAILURES(constant not defined in provided source), otherwise silently succeeding on failure. -
SLICE6AIRBR MaxSampleRateHz Fallback: On error querying max sample rate, returns hardcoded 50000 Hz with a log message, potentially masking device communication issues.
-
S6DBConnectedDevice Default Values: Port and SpotOnPort default to -1 (invalid), and string properties default to empty strings. Consumers must check validity before use.
-
SLICE6AIRTC S6ATCConfigAttributes No-ops: The nested
S6ATCConfigAttributesclass overridesConfigureCoupling,ConfigureBridge, andConfigureBridgeResistanceas no-ops, which could cause confusion if bridge configuration is expected.