This commit is contained in:
2026-04-17 14:55:32 -04:00
commit bc3ac1d4c9
18017 changed files with 4371742 additions and 0 deletions

View File

@@ -0,0 +1,480 @@
using System;
using System.Threading;
using DTS.Common.DASResource;
using DTS.Common.ICommunication;
using DTS.DASLib.Command.SLICE;
using DTS.Common.Utilities.Logging;
using DTS.Common.Interface.Connection;
using DTS.Common.Classes.Connection;
using DTS.Common.Interface.DASFactory;
using DTS.Common.Enums.DASFactory;
using static DTS.Common.Enums.DASFactory.DFConstantsAndEnums;
using DTS.Common.Events;
using DTS.Common.Enums;
using System.Collections.Generic;
using DTS.Common.Enums.Sensors;
namespace DTS.DASLib.Service
{
public partial class Slice<T> : Communication<T>,
IDASCommunication,
IConfigurationActions,
IDiagnosticsActions,
ITriggerCheckActions,
IRealTimeActions,
IArmActions,
IDownloadActions where T : IConnection, new()
{
/// <summary>
/// returns the requested range for an analog channel, making adjustment for nonlinear if needed
/// </summary>
protected static double GetRequestedRange(AnalogInputDASChannel analog, double MvPerEU)
{
if (null != analog.LinearizationFormula && analog.LinearizationFormula.IsValid())
{
switch (analog.LinearizationFormula.NonLinearStyle)
{
case NonLinearStyles.Polynomial:
//polynomial can scale and should bypass this?
break;
default:
if (MvPerEU.Equals(1))
{
APILogger.DebugLog($"GetRequestRange HC={analog?.HardwareChannelName ?? "NULL"}, mVPerEu={MvPerEU} - {InputRangeMV}");
return InputRangeMV;
}
break;
}
}
APILogger.DebugLog($"GetRequestRange HC={analog?.HardwareChannelName ?? "NULL"}, mVPerEu={MvPerEU} DesiredRange={analog.DesiredRangeWithHeadroomEU}");
return analog.DesiredRangeWithHeadroomEU * MvPerEU;
}
public virtual bool SupportsRemoveLeapSeconds { get => false; }
protected void SetRemoveSeconds()
{
//http://manuscript.dts.local/f/cases/31747/Add-support-for-GPS-Time-leap-seconds
if (IsCommandSupported(ProtocolLimitedCommands.RemoveLeapSeconds))
{
try
{
var set = new SetSystemAttributeSLICE6AIR(this);
set.SetValue(AttributeTypes.SystemAttributesSLICE6AIR.RemoveLeapSeconds, RunTestVariables.RemoveLeapSeconds ? (byte)1 : (byte)0, true);
set.SyncExecute();
}
catch (Exception ex)
{
APILogger.Log(ex);
}
}
}
protected virtual QATSExtendedFault[] GetExtendedFaultFlags()
{
var list = new List<QATSExtendedFault>();
try
{
if (!IsCommandSupported(ProtocolLimitedCommands.ExtendedFaultIds)) { return list.ToArray(); }
var qee = new QueryArmAttribute(this) { Key = AttributeTypes.ArmAndEventAttributes.ExtFaultFlags, DeviceID = 0 };
qee.SyncExecute();
if (qee.Value is uint[] uints)
{
var first = uints[0];
for (var i = 0; i < 32; i++)
{
if (0 != (first & (1 << i)))
{
list.Add((QATSExtendedFault)(1 << i));
}
}
}
}
catch (Exception ex)
{
APILogger.Log(ex);
}
return list.ToArray();
}
public virtual bool SupportsADCSamplesPerPacket { get => false; }
protected void SetADCSamplesPerPacket(int adcPerPacket)
{
//http://manuscript.dts.local/f/cases/31754/
if (IsCommandSupported(ProtocolLimitedCommands.ADCSamplesPerPacket))
{
try
{
var get = new QuerySystemAttribute(this) { Key = AttributeTypes.SystemAttributes.S6A_IrigStreamBufferConfig };
get.SyncExecute();
var getParams = (ushort[])get.Value;
getParams[1] = (ushort)adcPerPacket;
var set = new SetSystemAttribute(this);
set.SetValue(AttributeTypes.SystemAttributes.S6A_IrigStreamBufferConfig, getParams, true);
set.SyncExecute();
}
catch (Exception ex)
{
APILogger.Log(ex);
}
}
else
{
APILogger.Log($"ADC samples per second not supported by firmware on {SerialNumber}");
}
}
protected virtual uint[] GetExtendedFaultFlags(int eventIndex)
{
try
{
var qee = new QueryEventAttribute(this) { Key = AttributeTypes.ArmAndEventAttributes.ExtFaultFlags, DeviceID = 0, EventNumber = Convert.ToUInt16(eventIndex) };
qee.SyncExecute();
return (uint[])qee.Value;
}
catch (Exception ex)
{
APILogger.Log(ex);
}
return new uint[] { 0, 0, 0, 0 };
}
/// <summary>
/// surfaces an error to the application, if applicable
/// http://manuscript.dts.local/f/cases/28312/Surface-Read-does-not-match-write-to-user
/// </summary>
/// <param name="msg"></param>
protected static void SurfaceApplicationError(string msg)
{
PageErrorEvent.SurfaceApplicationError(msg);
}
public ExcitationStatus ExcitationStatus { get; set; } = ExcitationStatus.Unknown;
public virtual void SetIsStreamingSupported(bool supported = false)
{
IsStreamingSupported = false;
}
public virtual void ReadFirstUseDate()
{
IsFirstUseDateSupported = false;
FirstUseDate = null;
}
/// <summary>
/// indicates date of first use
/// null indicates the hardware has not been used since calibration
/// only valid when IsFirstUseDateSupported is true
/// 15524 DAS "First Use Date"
/// </summary>
public DateTime? FirstUseDate { get; set; } = null;
/// <summary>
/// returns whether the hardware supports first use or not
/// for hardware to support first use the hardware must support
/// storage for user attributes in firmware and also have been
/// calibrated by software support hardware first use
/// 15524 DAS "First Use Date"
/// </summary>
public bool IsFirstUseDateSupported { get; set; } = false;
/// <summary>
/// indicates whether or not streaming is supported
/// 30429 TSR AIRs can enable/disable streaming via the DISABLE_STREAMING_FEATURE system attribute
/// </summary>
public bool IsStreamingSupported { get; set; } = false;
public int RecordId { get; set; } = Common.Enums.Hardware.HardwareConstants.INVALID_IDASCOMMUNICATION_RECORD_ID;
/// <summary>
/// returns the total number of channels in the event
/// </summary>
/// <param name="eventNum"></param>
/// <returns></returns>
protected virtual uint GetEventTotalChannels(int eventNum)
{
var eventTC = new QueryEventAttribute(this);
eventTC.EventNumber = (ushort)eventNum;
eventTC.Key = AttributeTypes.ArmAndEventAttributes.TotalChannels;
eventTC.SyncExecute();
return (byte)eventTC.Value;
}
public string MACAddress { get; set; }
public string[] DownstreamMACAddresses { get; set; }
public virtual bool IsEthernetDistributor() { return false; }
public virtual bool IsSlice6Distributor() { return false; }
public virtual bool IsBattery() { return false; }
public virtual bool IsTSRAIR() { return false; }
public virtual bool IsSlice6Air() { return false; }
public virtual bool IsSlice6AirTc() { return false; }
public virtual bool IsScheduleEventCountSupported() { return false; }
public class SliceServiceQueryConfigAsyncInfo : SliceServiceAsyncInfo
{
public uint CRC { get; set; } = 0;
public string ConfigString { get; set; } = string.Empty;
public bool ReadIds { get; set; } = true;
public bool DeviceScaleFactors { get; set; } = true;
public SliceServiceQueryConfigAsyncInfo(ServiceCallback _callback, object _userData, uint crc,
string strConfig, bool bReadIds, bool bDeviceScaleFactors, bool differentModuleCountsAreOK) : base(_callback, _userData)
{
CRC = crc;
ConfigString = strConfig;
ReadIds = bReadIds;
DeviceScaleFactors = bDeviceScaleFactors;
DifferentModuleCountsAreOK = differentModuleCountsAreOK;
}
public bool DifferentModuleCountsAreOK { get; set; } = false;
}
public class SliceServiceQueryTestSetupAsyncInfo : SliceServiceAsyncInfo
{
public string TestSetupGuid { get; set; }
public SliceServiceQueryTestSetupAsyncInfo(ServiceCallback _callback, object _userData, string testSetupGuid) : base(_callback, _userData)
{
TestSetupGuid = testSetupGuid;
}
}
public class SliceServiceSetTestSetupAsyncInfo : SliceServiceAsyncInfo
{
public string TestSetupXML { get; set; }
public SliceServiceSetTestSetupAsyncInfo(ServiceCallback _callback, object _userData, string testSetupXML) : base(_callback, _userData)
{
TestSetupXML = testSetupXML;
}
}
public class AutoDetectServiceAsyncInfo : SliceServiceAsyncInfo
{
public bool QueryConfiguration { get; set; } = true;
public AutoDetectServiceAsyncInfo(bool queryConfiguration, ServiceCallback callback, object userData)
: base(callback, userData)
{
QueryConfiguration = queryConfiguration;
}
}
public class SliceServiceAsyncInfo
{
public ServiceCallback callback { get; set; }
public object userData { get; set; }
public object functionData { get; set; }
public PrePostResults PreOrPost { get; set; }
public int? MaxTimeout { get; set; }
public SliceServiceAsyncInfo(ServiceCallback _callback, object _userData)
{
callback = _callback;
userData = _userData;
}
public void Error(string msg, Exception ex)
{
try
{
var cbData = new ServiceCallbackData();
cbData.Status = ServiceCallbackData.CallbackStatus.Failure;
cbData.ErrorMessage = msg;
cbData.ErrorException = ex;
cbData.UserData = userData;
callback(cbData);
}
catch (Exception eex)
{
APILogger.Log("MessageBox", Strings.SLICEAsyncInfoError, eex);
}
}
public void Error(string msg)
{
Error(msg, null);
}
public void Progress(int value)
{
try
{
var progressData = new ServiceCallbackData();
progressData.Status = ServiceCallbackData.CallbackStatus.ProgressReport;
progressData.ProgressValue = value;
progressData.UserData = userData;
callback(progressData);
}
catch (Exception ex)
{
APILogger.Log("MessageBox", Strings.SLICEAsyncInfoProgressError, ex);
}
}
//public void NewData(IList<short[][]> datas, IList<UInt64> SampleNumbers)
public void NewData(object obj)
{
if (obj is ServiceCallbackData.DiagnosticNewData)
{
var progressData = new ServiceCallbackData();
progressData.Status = ServiceCallbackData.CallbackStatus.NewData;
progressData.ProgressValue = 0;
progressData.UserData = userData;
progressData.SetNewDiagnosticData((obj as ServiceCallbackData.DiagnosticNewData));
callback(progressData);
}
else if (obj is ServiceCallbackData.TiltNewData)
{
var progressData = new ServiceCallbackData();
progressData.Status = ServiceCallbackData.CallbackStatus.NewData;
progressData.ProgressValue = 0;
progressData.UserData = userData;
progressData.SetNewTiltData((obj as ServiceCallbackData.TiltNewData));
callback(progressData);
}
else if (obj is ServiceCallbackData.UARTNewData)
{
var progressData = new ServiceCallbackData();
progressData.Status = ServiceCallbackData.CallbackStatus.NewData;
progressData.ProgressValue = 0;
progressData.UserData = userData;
progressData.SetNewUARTData(obj as ServiceCallbackData.UARTNewData);
callback(progressData);
}
else if (obj is byte[])
{
var progressData = new ServiceCallbackData();
progressData.Status = ServiceCallbackData.CallbackStatus.NewData;
progressData.ProgressValue = 0;
progressData.SetNewByteData((byte[])obj);
progressData.UserData = userData;
callback(progressData);
}
else if (obj is DFConstantsAndEnums.T0CorrectionStatus status)
{
var progressData = new ServiceCallbackData();
progressData.Status = ServiceCallbackData.CallbackStatus.NewData;
progressData.ProgressValue = 0;
var i = (int)status;
progressData.SetNewByteData(BitConverter.GetBytes(i));
progressData.UserData = userData;
callback(progressData);
}
else
{
var newdatadata = obj as NewDataData;
var datas = newdatadata.datas;
var samplenumbers = newdatadata.SampleNumbers;
var timeStamps = newdatadata.TimeStamps;
var sequenceNumbers = newdatadata.SequenceNumbers;
try
{
var progressData = new ServiceCallbackData();
progressData.Status = ServiceCallbackData.CallbackStatus.NewData;
progressData.ProgressValue = 0;
progressData.UserData = userData;
var sequenceNumber = 0UL;
for (int i = 0; i < datas.Length && i < samplenumbers.Length; i++)
{
//polling apparently doesn't always populate sequence number
//to prevent an indexing error just use the last one
//18009 DataPRO becomes unusable when trying to put realtime in meter mode
if (i < sequenceNumbers.Length) { sequenceNumber = sequenceNumbers[i]; }
progressData.AddSampleData(datas[i], samplenumbers[i], timeStamps[i], sequenceNumber);
}
callback(progressData);
}
catch (Exception ex)
{
APILogger.Log("MessageBox", Strings.SLICEAsyncInfoNewDataError, ex);
}
}
}
public void NewData(short[][] data, UInt64 samplenumber, ulong timeStamp, ulong sequenceNumber)
{
try
{
var progressData = new ServiceCallbackData();
progressData.Status = ServiceCallbackData.CallbackStatus.NewData;
progressData.ProgressValue = 0;
progressData.UserData = userData;
progressData.AddSampleData(data, samplenumber, timeStamp, sequenceNumber);
callback(progressData);
}
catch (Exception ex)
{
APILogger.Log("MessageBox", Strings.SLICEAsyncInfoNewDataError, ex);
}
}
public void Success()
{
try
{
var success = new ServiceCallbackData();
success.Status = ServiceCallbackData.CallbackStatus.Success;
success.UserData = userData;
callback(success);
}
catch (Exception ex)
{
APILogger.Log("MessageBox", Strings.SLICEAsyncInfoSuccessError, ex);
}
}
public void Cancel()
{
try
{
var cancelReport = new ServiceCallbackData();
cancelReport.Status = ServiceCallbackData.CallbackStatus.Canceled;
cancelReport.ProgressValue = 0;
cancelReport.UserData = userData;
callback(cancelReport);
}
catch (Exception ex)
{
APILogger.Log("MessageBox", Strings.SLICEAsyncInfoCancelError, ex);
}
}
}
public void LaunchAsyncWorker(string Invoker, WaitCallback cb, object asyncInfo)
{
if (!Connected)
{
// "{0}: Not currently connected"
throw new NotConnectedException(string.Format(Strings.Slice_LaunchAsyncWorker_Err1, Invoker));
}
if (!ThreadPool.QueueUserWorkItem(cb, asyncInfo))
{
// "{0}: Unable to enqueue function"
throw new Exception(string.Format(Strings.Slice_LaunchAsyncWorker_Err2, Invoker));
}
}
/// <summary>
/// compare to an object to determine equality
/// </summary>
/// <param name="right"></param>
/// <returns></returns>
public override bool Equals(object right)
{
if (right == null)
return false;
if (ReferenceEquals(this, right))
return true;
var rightSlice = right as Slice<T>;
if (rightSlice == null)
return false;
if (string.IsNullOrEmpty(SerialNumber))
{
return string.IsNullOrEmpty(rightSlice.SerialNumber);
}
if (string.IsNullOrEmpty(rightSlice.SerialNumber))
return false;
return SerialNumber == rightSlice.SerialNumber;
}
/// <summary>
/// returns identical index for any two 'equal' slice
/// </summary>
/// <returns></returns>
public override int GetHashCode()
{
if (string.IsNullOrEmpty(SerialNumber))
return 0;
return SerialNumber.GetHashCode();
}
}
}

View File

@@ -0,0 +1,876 @@
<?xml version="1.0" encoding="utf-8"?>
<ClassDiagram MajorVersion="1" MinorVersion="1">
<Class Name="DTS.DASLib.Service.ArmCheckActions" Collapsed="true">
<Position X="28" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>BAAAAAAAAAAAAQAAAEAAAAAAAAAAAgAgAAAAACAAAAA=</HashCode>
<FileName>Classes\Arm\ArmCheckActions.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.ArmCheckResults" Collapsed="true">
<Position X="29.75" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAKAAABAAAAAAAAAAAAAAIAAgBAACAAAQAACAAAAA=</HashCode>
<FileName>Classes\Arm\ArmCheckResults.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.ArmStatus" Collapsed="true">
<Position X="31.5" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>BQAAgAgCAIBQBBAgCAAAAAAAEFIABAEBEABAAABAEAA=</HashCode>
<FileName>Classes\Arm\ArmStatus.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.BaseInputValues" Collapsed="true">
<Position X="14.5" Y="13.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAABABAAAAAABIAAAAgAAICABAAAAAGAEIkAACAEAAA=</HashCode>
<FileName>Classes\BaseInput\BaseInputValues.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.SLICEBaseInputReader" Collapsed="true">
<Position X="31.5" Y="4.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AEAAEAAAAAAABAAAAAAAACAAAAAAAAAABAgAAAgEAAA=</HashCode>
<FileName>Classes\BaseInput\SLICE.Base.Input.Reader.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.SLICEBaseInputValues" Collapsed="true">
<Position X="14.5" Y="14.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\BaseInput\SLICEBaseInputValues.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.AnalogInputDASChannel" Collapsed="true">
<Position X="0.75" Y="14.25" Width="1.5" />
<TypeIdentifier>
<HashCode>UJqBsBBIaBC4iQsOaAUW1AKGB6EAhgUAgC0QoEAAwQo=</HashCode>
<FileName>Classes\Channels\AnalogInputDASChannel.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Class Name="DTS.DASLib.Service.AnalogInputDASChannelComparer" Collapsed="true" BaseTypeListCollapsed="true">
<Position X="26.25" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAgAAAAAAAAAAAAIAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\Channels\AnalogInputDASChannelComparer.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" Collapsed="true" />
</Class>
<Class Name="DTS.DASLib.Service.AnalogOutputDASChannel" Collapsed="true">
<Position X="3" Y="14.25" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\Channels\AnalogOutputDASChannel.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.DASChannel" Collapsed="true">
<Position X="3" Y="11.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AA7AQBBAA0AihAAUCECBJAACQABAAAAAcAEAgqAAAAA=</HashCode>
<FileName>Classes\Channels\DASChannel.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Class Name="DTS.DASLib.Service.DigitalOutputDASChannel" Collapsed="true">
<Position X="5.25" Y="14.25" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\Channels\DigitalOutputDASChannel.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.InputDASChannel" Collapsed="true">
<Position X="0.75" Y="12.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\Channels\InputDASChannel.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.OutputDASChannel" Collapsed="true">
<Position X="4" Y="12.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\Channels\OutputDASChannel.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.OutputSquibChannel" Collapsed="true">
<Position X="3" Y="15.75" Width="1.5" />
<TypeIdentifier>
<HashCode>KBhGABQAKAAAAEIEIgAABAQOAhAEEAEJAAURgCQBAAI=</HashCode>
<FileName>Classes\Channels\OutputSquibChannel.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Class Name="DTS.DASLib.Service.OutputTOMDigitalChannel" Collapsed="true">
<Position X="5.25" Y="15.75" Width="1.5" />
<TypeIdentifier>
<HashCode>IAAEABQAAAACAAAAEAAABAACAAAAAAABAAEBgAQAAAA=</HashCode>
<FileName>Classes\Channels\OutputTOMDigitalChannel.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.ConfigurationConstants" Collapsed="true">
<Position X="35" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\ConfigurationConstants.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.ConfigurationData" Collapsed="true" BaseTypeListCollapsed="true">
<Position X="36.75" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAYAgAAAAghAAAAAAEKAASAKBwAAAAQGAAgAAAAAA=</HashCode>
<FileName>Classes\ConfigurationData.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" Collapsed="true" />
</Class>
<Class Name="DTS.DASLib.Service.DASModule" Collapsed="true">
<Position X="8.5" Y="11.5" Width="1.5" />
<TypeIdentifier>
<HashCode>RIUUIRUdghggwYJAEIoCCQgDAUNEwAjRzgRQgAAEUBE=</HashCode>
<FileName>Classes\DASModule.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Class Name="DTS.DASLib.Service.DiagnosticsActions" Collapsed="true">
<Position X="26.25" Y="1.5" Width="1.5" />
<TypeIdentifier>
<HashCode>EAAAgAAACgAAAACAAEAAAKAAAACAAAAAgAAQAAUAAAA=</HashCode>
<FileName>Classes\Diagnostics\DiagnosticActions.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.DiagnosticsResult" Collapsed="true">
<Position X="28" Y="1.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AJANAAAYAAAIYFAEQICAGDAAgIAQAgQAIADjCIAQAYA=</HashCode>
<FileName>Classes\Diagnostics\DiagnosticsResult.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.DownloadReport" Collapsed="true">
<Position X="29.75" Y="1.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\Download\DownloadReport.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.DownloadRequest" Collapsed="true">
<Position X="8.5" Y="14.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAIEgAAAAQAAAAAAAKACQQAAAAgAAABAAAAAAAA=</HashCode>
<FileName>Classes\Download\DownloadRequest.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.EID" Collapsed="true" BaseTypeListCollapsed="true">
<Position X="31.5" Y="1.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AEAAAAAAABAAgAQAAAgAAAAAAAAAAAAAAAAAIAAAAAA=</HashCode>
<FileName>Classes\EID.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" Collapsed="true" />
</Class>
<Class Name="DTS.DASLib.Service.EIDReader" Collapsed="true">
<Position X="33.25" Y="1.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\EID.Reader.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.BusyException" Collapsed="true">
<Position X="33.25" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\Exceptions.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.TriggerShortedException" Collapsed="true">
<Position X="36.75" Y="5.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\Exceptions.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.StartShortedException" Collapsed="true">
<Position X="35" Y="4.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\Exceptions.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.NoDiagnosticsAvailable" Collapsed="true">
<Position X="29.75" Y="3.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\Exceptions.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.TooManyDiagnosticsAvailable" Collapsed="true">
<Position X="33.25" Y="5.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\Exceptions.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.FlashEraseStatus" Collapsed="true">
<Position X="36.75" Y="1.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAA=</HashCode>
<FileName>Classes\FlashEraseStatus.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.ServiceBase" Collapsed="true">
<Position X="10.75" Y="1.5" Width="1.5" />
<TypeIdentifier>
<HashCode>gAAACAAgYigABQAAAAAIIAKAAAACCAAAAAAAgAAABgE=</HashCode>
<FileName>Classes\GenericServices.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Class Name="DTS.DASLib.Service.ConfigurationService" Collapsed="true">
<Position X="17.5" Y="2.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAACAAAAQACAAAAAAIIIAAAAAAAgBADAAAABAA=</HashCode>
<FileName>Classes\GenericServices.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.DiagnosticsService" Collapsed="true">
<Position X="4" Y="2.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAMAAAAAAAAQAAQACCEAAABAAAAACAABAAAAAATEA=</HashCode>
<FileName>Classes\GenericServices.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.TriggerCheckService" Collapsed="true">
<Position X="6.25" Y="2.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAACAAAQAAAAAAAAAAAAgAAAgAIAAAAAAABAA=</HashCode>
<FileName>Classes\GenericServices.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.RealtimeService" Collapsed="true">
<Position X="8.5" Y="2.75" Width="1.5" />
<TypeIdentifier>
<HashCode>gAAAAAAAACAAAQAAAAAAAAAAAAACAAAAIAAABAAABAg=</HashCode>
<FileName>Classes\GenericServices.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.TimingService" Collapsed="true">
<Position X="10.75" Y="2.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAIAAAAAAABAA=</HashCode>
<FileName>Classes\GenericServices.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.ArmingService" Collapsed="true">
<Position X="13" Y="2.75" Width="1.5" />
<TypeIdentifier>
<HashCode>SAAAAGAAAAAAQRAAEAAAIAgAAEEAABBBABhAIAAABAA=</HashCode>
<FileName>Classes\GenericServices.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.DownloadService" Collapsed="true">
<Position X="15.25" Y="2.75" Width="1.5" />
<InheritanceLine Type="DTS.DASLib.Service.ServiceBase" FixedFromPoint="true">
<Path>
<Point X="12.25" Y="1.5" />
<Point X="12.25" Y="1.3" />
<Point X="14.95" Y="1.3" />
<Point X="14.95" Y="3.096" />
<Point X="15.25" Y="3.096" />
</Path>
</InheritanceLine>
<TypeIdentifier>
<HashCode>AQAQAgCEBIAACRAAEAAIAAQAAAAAQIgAQQEAAECmBAY=</HashCode>
<FileName>Classes\GenericServices.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.InfoResult" Collapsed="true">
<Position X="33.25" Y="2.5" Width="1.5" />
<TypeIdentifier>
<HashCode>ACAAAAAAAAAJAAAAAAAAQQARBGIAAQCAAAMQAAAAAAA=</HashCode>
<FileName>Classes\InfoResult.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.FirmwareInputRangeAttribute" Collapsed="true">
<Position X="35" Y="1.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\InputRangeAttributes\FirmwareInputRangeAttribute.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.GainAvailableUnmodifiedAttribute" Collapsed="true">
<Position X="26.25" Y="2.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAABAAAACAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\InputRangeAttributes\GainAvailableUnmodifiedAttribute.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.GainDisabledAttribute" Collapsed="true">
<Position X="28" Y="2.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgAAAAAAAAAAA=</HashCode>
<FileName>Classes\InputRangeAttributes\GainDisabledAttribute.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.MaxInputRangeAttribute" Collapsed="true">
<Position X="35" Y="2.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAACAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\InputRangeAttributes\MaxInputRangeAttribute.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.MinInputRangeAttribute" Collapsed="true">
<Position X="36.75" Y="2.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAA=</HashCode>
<FileName>Classes\InputRangeAttributes\MinInputRangeAttribute.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.ModuleDiagnosticsResult" Collapsed="true">
<Position X="26.25" Y="3.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAIAUAAAgAAAAAAAAAAAAAAAAAAABAiAAQAAAAAAA=</HashCode>
<FileName>Classes\ModuleDiagnosticResult.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.NewDataData" Collapsed="true">
<Position X="28" Y="3.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAACAAAAAAAAA=</HashCode>
<FileName>Classes\NewData.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.Ribeye&lt;T&gt;" Collapsed="true">
<Position X="14.5" Y="10.5" Width="1.5" />
<TypeIdentifier>
<HashCode>nQVQR6+dzGf5mvycaEzPnLVyoqjYjLLhZXmSirqKHx0=</HashCode>
<FileName>Classes\Ribeye Service.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Class Name="DTS.DASLib.Service.EthernetRibeye" Collapsed="true">
<Position X="14.5" Y="12" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\Ribeye Service.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.SampleData" Collapsed="true">
<Position X="26.25" Y="4.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAABAAAAAAAAAAAAAABAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\SampleData.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.ServiceCallbackData" Collapsed="true">
<Position X="28" Y="4.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AQAAAAgEAAAEABAAoAAABAAAEAAgAAAAgAAEQAEIAAA=</HashCode>
<FileName>Classes\ServiceCallbackData.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.SLICE1_5&lt;T&gt;" Collapsed="true">
<Position X="13.75" Y="7.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAgBAAAAAIAECQAAAAAAAACSBAgIIAEAEIAIAIAAA=</HashCode>
<FileName>Classes\SLICE\SLICE1_5.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Class Name="DTS.DASLib.Service.QueryEventData_SLICE1_5" Collapsed="true">
<Position X="31.5" Y="3.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAABQAAABAAAABAACAAAAAAACAAAAAEAgAAA=</HashCode>
<FileName>Classes\SLICE\SLICE1_5.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.WhatToDownloadSlice2" Collapsed="true">
<Position X="8.5" Y="15.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAoAAAAAAAAAAAAAAAQAQAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\SLICE\SLICE2.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.SLICE2_Base&lt;T&gt;">
<Position X="8" Y="6" Width="1.5" />
<NestedTypes>
<Enum Name="DTS.DASLib.Service.SLICE2_Base&lt;T&gt;.GainCodesGen3" Collapsed="true">
<TypeIdentifier>
<NewMemberFileName>Classes\SLICE\SLICE2.cs</NewMemberFileName>
</TypeIdentifier>
</Enum>
<Class Name="DTS.DASLib.Service.SLICE2_Base&lt;T&gt;.GainSorter" Collapsed="true">
<TypeIdentifier>
<NewMemberFileName>Classes\SLICE\SLICE2.cs</NewMemberFileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Enum Name="DTS.DASLib.Service.SLICE2_Base&lt;T&gt;.TOMDigitalOutputModes" Collapsed="true">
<TypeIdentifier>
<NewMemberFileName>Classes\SLICE\SLICE2.cs</NewMemberFileName>
</TypeIdentifier>
</Enum>
<Class Name="DTS.DASLib.Service.SLICE2_Base&lt;T&gt;.SLICE2ConfigAttributes" Collapsed="true">
<TypeIdentifier>
<NewMemberFileName>Classes\SLICE\SLICE2.cs</NewMemberFileName>
</TypeIdentifier>
</Class>
<Enum Name="DTS.DASLib.Service.SLICE2_Base&lt;T&gt;.SquibMeasurementTypes" Collapsed="true">
<TypeIdentifier>
<NewMemberFileName>Classes\SLICE\SLICE2.cs</NewMemberFileName>
</TypeIdentifier>
</Enum>
<Class Name="DTS.DASLib.Service.SLICE2_Base&lt;T&gt;.TimeSynchronizationAsyncInfo" Collapsed="true">
<TypeIdentifier>
<NewMemberFileName>Classes\SLICE\SLICE2.cs</NewMemberFileName>
</TypeIdentifier>
</Class>
<Enum Name="DTS.DASLib.Service.SLICE2_Base&lt;T&gt;.GainCodesGen2" Collapsed="true">
<TypeIdentifier>
<NewMemberFileName>Classes\SLICE\SLICE2.cs</NewMemberFileName>
</TypeIdentifier>
</Enum>
<Class Name="DTS.DASLib.Service.SLICE2_Base&lt;T&gt;.GetRealtimeSamplesSLICE2" Collapsed="true">
<TypeIdentifier>
<NewMemberFileName>Classes\SLICE\SLICE2.cs</NewMemberFileName>
</TypeIdentifier>
</Class>
<Enum Name="DTS.DASLib.Service.SLICE2_Base&lt;T&gt;.SquibFireModes" Collapsed="true">
<TypeIdentifier>
<NewMemberFileName>Classes\SLICE\SLICE2.cs</NewMemberFileName>
</TypeIdentifier>
</Enum>
</NestedTypes>
<TypeIdentifier>
<HashCode>ugzCkJcCCGOYCGkRCAAdCAAUCOBA4MMCtBEIGLmoCRg=</HashCode>
<FileName>Classes\SLICE\SLICE2.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Class Name="DTS.DASLib.Service.SLICE2&lt;T&gt;" Collapsed="true">
<Position X="2.5" Y="7.5" Width="1.5" />
<NestedTypes>
<Enum Name="DTS.DASLib.Service.SLICE2&lt;T&gt;.SLICEPRO_Generation" Collapsed="true">
<TypeIdentifier>
<NewMemberFileName>Classes\SLICE\SLICE2.cs</NewMemberFileName>
</TypeIdentifier>
</Enum>
<Enum Name="DTS.DASLib.Service.SLICE2&lt;T&gt;.SLICEPro_BaseTypes" Collapsed="true">
<TypeIdentifier>
<NewMemberFileName>Classes\SLICE\SLICE2.cs</NewMemberFileName>
</TypeIdentifier>
</Enum>
<Enum Name="DTS.DASLib.Service.SLICE2&lt;T&gt;.SLICEPro_GenIIIRevisions" Collapsed="true">
<TypeIdentifier>
<NewMemberFileName>Classes\SLICE\SLICE2.cs</NewMemberFileName>
</TypeIdentifier>
</Enum>
</NestedTypes>
<TypeIdentifier>
<HashCode>AAAAEgAAgAIAAhEAAIAAAAAAAAAACAAAgACAAAAAAAA=</HashCode>
<FileName>Classes\SLICE\SLICE2.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Class Name="DTS.DASLib.Service.QueryEventData_SLICE2" Collapsed="true">
<Position X="33.25" Y="3.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAABQAAABAAAABgACAAAAAAACAAAAAEAgAAA=</HashCode>
<FileName>Classes\SLICE\SLICE2.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.SLICE6&lt;T&gt;" Collapsed="true">
<Position X="7" Y="8.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\SLICE\SLICE6.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.SLICE6_Base&lt;T&gt;" Collapsed="true">
<Position X="7" Y="7.5" Width="1.5" />
<TypeIdentifier>
<HashCode>EAAAgBQAAECIADAQCAAFAAAACCAAgAAAMAEIAIIIAAg=</HashCode>
<FileName>Classes\SLICE\SLICE6.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.QueryEventData_SLICE6" Collapsed="true">
<Position X="35" Y="3.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAABAAABQAAABAAAABAACAAAAAAACAAAAAEAgAAA=</HashCode>
<FileName>Classes\SLICE\SLICE6.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.SLICE6DB&lt;T&gt;" Collapsed="true">
<Position X="10.25" Y="7.5" Width="1.5" />
<TypeIdentifier>
<HashCode>WQgQtvzEQIHJCOASSABZuAgQxOkAAJpAZJlGAJCIAVw=</HashCode>
<FileName>Classes\SLICE\SLICE6DB.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Class Name="DTS.DASLib.Service.SliceDB&lt;T&gt;" Collapsed="true">
<Position X="11.5" Y="13.5" Width="1.5" />
<TypeIdentifier>
<HashCode>nS1ARq+bxCXpiuwYaAiNnJh44qCUDDLhZVkSmLqIG1Y=</HashCode>
<FileName>Classes\SLICE\SliceDB.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Class Name="DTS.DASLib.Service.Slice&lt;T&gt;" Collapsed="true">
<Position X="10.25" Y="4.5" Width="1.5" />
<TypeIdentifier>
<HashCode>vZ1Gxr8/7WX7XO0d6E6NnLNx/qzIjrvldZESGL+eOR8=</HashCode>
<FileName>Classes\SLICEService\SLICE Service.Arming.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Class Name="DTS.DASLib.Service.Slice&lt;T&gt;" Collapsed="true" BaseTypeListCollapsed="true">
<Position X="29.75" Y="4.5" Width="1.5" />
<TypeIdentifier>
<HashCode>CCQYsKmDCiKIACSkCgAECKQcACAWCBABAHkIgKWMAQI=</HashCode>
<FileName>Classes\SLICEService\SLICE Service.Calibration.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" Collapsed="true" />
</Class>
<Class Name="DTS.DASLib.Service.WinUSBSlice" Collapsed="true">
<Position X="19.25" Y="6" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\SLICEService\SLICE Service.Public.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.CDCUSBSlice" Collapsed="true">
<Position X="1.25" Y="8.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\SLICEService\SLICE Service.Public.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.WinUSBSlice1_5" Collapsed="true">
<Position X="12.5" Y="8.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\SLICEService\SLICE Service.Public.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.WinUSBSlice6" Collapsed="true">
<Position X="5.75" Y="10.25" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\SLICEService\SLICE Service.Public.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.EthernetSlice" Collapsed="true">
<Position X="17" Y="6" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\SLICEService\SLICE Service.Public.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.EthernetSlice2" Collapsed="true">
<Position X="3.5" Y="8.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\SLICEService\SLICE Service.Public.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.EthernetSlice6" Collapsed="true">
<Position X="8" Y="10.25" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\SLICEService\SLICE Service.Public.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.EthernetSlice6DB" Collapsed="true">
<Position X="10.25" Y="8.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\SLICEService\SLICE Service.Public.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.EthernetSlice1_5" Collapsed="true">
<Position X="14.75" Y="8.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\SLICEService\SLICE Service.Public.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.EthernetSliceDB" Collapsed="true">
<Position X="11.5" Y="15" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAEAACAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\SLICEService\SLICE Service.Public.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.StaticInformation" Collapsed="true">
<Position X="36.75" Y="4.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\StaticInformation.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.TDASConfig" Collapsed="true" BaseTypeListCollapsed="true">
<Position X="28" Y="5.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAgAAIAASAAAAAAAASAABAAAAAAAAAgABAAAA=</HashCode>
<FileName>Classes\TDAS\TDASConfig.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" Collapsed="true" />
</Class>
<Class Name="DTS.DASLib.Service.TDASModuleConfig" Collapsed="true" BaseTypeListCollapsed="true">
<Position X="29.75" Y="5.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AEgAAECwAAgAACRACAAEAUBCAAFAAQSBAgIAgABAABE=</HashCode>
<FileName>Classes\TDAS\TDASModuleConfig.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" Collapsed="true" />
</Class>
<Class Name="DTS.DASLib.Service.TDASServiceSetupInfo" Collapsed="true">
<Position X="31.5" Y="5.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAQAAAAIAAAAAAAIAABABAAAAAAAAA=</HashCode>
<FileName>Classes\TDAS\TDASServiceSetupInfo.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.TDAS&lt;T&gt;" Collapsed="true">
<Position X="11.5" Y="10.5" Width="1.5" />
<TypeIdentifier>
<HashCode>vx1Gx6c5bWf7mPy87A4tvJl08qycHLrnddEaOP6IXR0=</HashCode>
<FileName>Classes\TDAS Service\Arming.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Class Name="DTS.DASLib.Service.TDAS&lt;T&gt;" Collapsed="true" BaseTypeListCollapsed="true">
<Position X="26.25" Y="5.5" Width="1.5" />
<TypeIdentifier>
<HashCode>CAIQAAmRgCCAACcEGAggDASQgAARAAABAHAAgAAIAAQ=</HashCode>
<FileName>Classes\TDAS Service\Callibration.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" Collapsed="true" />
</Class>
<Class Name="DTS.DASLib.Service.EthernetTDAS" Collapsed="true">
<Position X="11.5" Y="12" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\TDAS Service\Public.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.TOMModule" Collapsed="true">
<Position X="8.5" Y="12.75" Width="1.5" />
<TypeIdentifier>
<HashCode>gAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\TOMModule.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.TriggerCheckResult" Collapsed="true">
<Position X="35" Y="5.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAQAAAAAAAAgAAAAAAAAQAAAAAAAAAABAAAI=</HashCode>
<FileName>Classes\TriggerCheckResult.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.XMLHelper" Collapsed="true">
<Position X="26.25" Y="6.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAiAAAIgASAAAAAAAAAEBAAAAAAAAAEAAAQGQAKAAAA=</HashCode>
<FileName>Classes\XMLHelper.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.IDASCommunicationEqComparer" Collapsed="true" BaseTypeListCollapsed="true">
<Position X="31.5" Y="2.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAgAAAAAAAAAAAAIAAAAAAAAAAAAA=</HashCode>
<FileName>Interfaces\IDASCommunicationEqComparer.cs</FileName>
</TypeIdentifier>
<Lollipop Position="1.3" Collapsed="true" />
</Class>
<Class Name="DTS.DASLib.Service.Resources" Collapsed="true">
<Position X="36.75" Y="3.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAEAAAAAAAAAACAAABEAAIAQACAAAAgEAAAAAAAIA=</HashCode>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.FirmwareUtility.SLICERecorder" Collapsed="true">
<Position X="33.25" Y="4.5" Width="1.5" />
<TypeIdentifier>
<HashCode>BQIARIgAAQAoACEBAAIkABAACCEAMIGEIBFUASgCABY=</HashCode>
<FileName>Classes\SLICE\SLICERecorder.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.DASLib.Service.Interfaces.IDASCommunicationComparer" Collapsed="true" BaseTypeListCollapsed="true">
<Position X="29.75" Y="2.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA=</HashCode>
<FileName>Interfaces\IDASCommunicationComparer.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" Collapsed="true" />
</Class>
<Interface Name="DTS.DASLib.Service.IArmActions" Collapsed="true">
<Position X="26.25" Y="7.75" Width="1.5" />
<TypeIdentifier>
<HashCode>SAAAAGAAAIABQBAAAAAAIAgAAEEAABJBIAhAIACAAAA=</HashCode>
<FileName>Interfaces\IArmActions.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="DTS.DASLib.Service.IArmStatus" Collapsed="true">
<Position X="0.5" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Interfaces\IArmStatus.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="DTS.DASLib.Service.IAutoArmed" Collapsed="true">
<Position X="23.75" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Interfaces\IAutoArmed.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="DTS.DASLib.Service.IAutoArmStatus" Collapsed="true">
<Position X="3.5" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Interfaces\IAutoArmStatus.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="DTS.DASLib.Service.IConfiguration" Collapsed="true">
<Position X="8" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>EAAAgAAAAAAAACAAAAABAAAAAAAAAAIAAAAAAAAAAAA=</HashCode>
<FileName>Interfaces\IConfiguration.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="DTS.DASLib.Service.IConfigurationActions" Collapsed="true">
<Position X="28" Y="7.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAIAAAAACAABAgAAIAAAAAAAAAJACAAAAAAA=</HashCode>
<FileName>Interfaces\IConfigurationActions.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="DTS.DASLib.Service.IDASCommunication" Collapsed="true">
<Position X="0.5" Y="1.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAABhQJAAEAAGAQYAgEiBAgAoEACKDhRAECCBKAEBA=</HashCode>
<FileName>Interfaces\IDASCommunication.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="DTS.DASLib.Service.IDASReconfigure" Collapsed="true">
<Position X="29.75" Y="7.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAIAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAA=</HashCode>
<FileName>Interfaces\IDASReconfigure.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="DTS.DASLib.Service.IDiagnos" Collapsed="true">
<Position X="12.5" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAQRAAAAAAAAAAAAAAAAAAAABAAAAAQAAAACAA=</HashCode>
<FileName>Interfaces\IDiagnos.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="DTS.DASLib.Service.IDiagnosticsActions" Collapsed="true">
<Position X="31.5" Y="7.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAIgBAAAAIACAAQACAEAAARAAAAAAAABAAAAAACEA=</HashCode>
<FileName>Interfaces\IDiagnosticsActions.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="DTS.DASLib.Service.IDownload" Collapsed="true">
<Position X="19.25" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>CAAAACAAAAAACAQIAAAAAAAAAAAAAAAAIAAAAAAAAAA=</HashCode>
<FileName>Interfaces\IDownload.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="DTS.DASLib.Service.IDownloadActions" Collapsed="true">
<Position X="33.25" Y="7.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AQAAAgCEQAgAAAAAEAAAAAAAAAAAAAgAAAEAAAAAAAA=</HashCode>
<FileName>Interfaces\IDownloadActions.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="DTS.DASLib.Service.IInformation" Collapsed="true">
<Position X="21.5" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAA=</HashCode>
<FileName>Interfaces\IInformation.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="DTS.DASLib.Service.IRangeBandwidthLimited" Collapsed="true">
<Position X="5.75" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Interfaces\IRangeBandwidthLimited.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="DTS.DASLib.Service.IRealTime" Collapsed="true">
<Position X="10.25" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAA=</HashCode>
<FileName>Interfaces\IRealtime.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="DTS.DASLib.Service.IRealTimeActions" Collapsed="true">
<Position X="35" Y="7.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAgCAgAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Interfaces\IRealTimeActions.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="DTS.DASLib.Service.ITimeActions" Collapsed="true">
<Position X="36.75" Y="7.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAIAAAAAAAAAA=</HashCode>
<FileName>Interfaces\ITimeActions.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="DTS.DASLib.Service.ITimeSynchronization" Collapsed="true">
<Position X="14.75" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAACACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Interfaces\ITimeSynchronization.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="DTS.DASLib.Service.ITriggerCheck" Collapsed="true">
<Position X="17" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Interfaces\ITriggerCheck.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="DTS.DASLib.Service.ITriggerCheckActions" Collapsed="true">
<Position X="26.25" Y="8.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAACAAAAAAAAAACAAAAAAAAAgAAAgAAAAAAAAAAAA=</HashCode>
<FileName>Interfaces\ITriggerCheckActions.cs</FileName>
</TypeIdentifier>
</Interface>
<Enum Name="DTS.DASLib.Service.DiagnosticsStatusIndicatorState" Collapsed="true">
<Position X="26.25" Y="9.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAIAAAAAAAAAAAAAAAAAAAgAAAACAAAAAIAAAAAA=</HashCode>
<FileName>Classes\GenericServices.cs</FileName>
</TypeIdentifier>
</Enum>
<Enum Name="DTS.DASLib.Service.PrePostResults" Collapsed="true">
<Position X="28" Y="9.5" Width="1.5" />
<TypeIdentifier>
<HashCode>FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Classes\GenericServices.cs</FileName>
</TypeIdentifier>
</Enum>
<Delegate Name="DTS.DASLib.Service.ServiceCallback" Collapsed="true">
<Position X="28" Y="10.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAA=</HashCode>
<FileName>Interfaces\IService.cs</FileName>
</TypeIdentifier>
</Delegate>
<Delegate Name="DTS.DASLib.Service.ErrorCallback" Collapsed="true">
<Position X="26.25" Y="10.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAABAAAAAAAAAAAAAEAAAAAAAAAAAAAAA=</HashCode>
<FileName>Interfaces\IService.cs</FileName>
</TypeIdentifier>
</Delegate>
<Font Name="Segoe UI" Size="9" />
</ClassDiagram>