903 lines
42 KiB
C#
903 lines
42 KiB
C#
|
|
/*
|
|||
|
|
* DTS.Slice.Control.Event.Module.cs
|
|||
|
|
*
|
|||
|
|
* Copyright © 2009
|
|||
|
|
* Diversified Technical Systems, Inc.
|
|||
|
|
* All Rights Reserved
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
using DTS.Common.DAS.Concepts;
|
|||
|
|
using DTS.Serialization.StringResources;
|
|||
|
|
using DTS.Common.Utilities;
|
|||
|
|
using DTS.Common.Utilities.DotNetProgrammingConstructs;
|
|||
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Diagnostics;
|
|||
|
|
using System.Linq;
|
|||
|
|
using DTS.Common.Utilities.Logging;
|
|||
|
|
|
|||
|
|
namespace DTS.Slice.Control
|
|||
|
|
{
|
|||
|
|
// *** see DTS.Slice.Control.Event.cs ***
|
|||
|
|
public partial class Event
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// Representation of a Slice Control event module.
|
|||
|
|
/// </summary>
|
|||
|
|
public partial class Module
|
|||
|
|
: Exceptional,
|
|||
|
|
Serialization.Test.Module.IConvertable
|
|||
|
|
{
|
|||
|
|
public Module()
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
//this.InitializeReviewableAttributes(this.ReviewableAttributes);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
catch (System.Exception ex)
|
|||
|
|
{
|
|||
|
|
throw new Exception("encountered problem zero-parameter constructing " + GetType().FullName, ex);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Initialize an instance of the DTS.Slice.Control.Event.Module class.
|
|||
|
|
/// </summary>
|
|||
|
|
///
|
|||
|
|
/// <param name="parentEvent">
|
|||
|
|
/// The parent <see cref="DTS.Slice.Control.Event"/> of this module.
|
|||
|
|
/// </param>
|
|||
|
|
///
|
|||
|
|
//TODO: this() is not base class
|
|||
|
|
public Module(Event parentEvent)
|
|||
|
|
: this()
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
ParentEvent = parentEvent;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
catch (System.Exception ex)
|
|||
|
|
{
|
|||
|
|
throw new Exception("encounterd problem 1-parameter constructing " + GetType().FullName, ex);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Initialize an instance of the DTS.Slice.Control.Event.Module class.
|
|||
|
|
/// </summary>
|
|||
|
|
///
|
|||
|
|
/// <param name="that">
|
|||
|
|
/// A <see cref="DTS.Serialization.Test.Module"/> with which to initialize this object.
|
|||
|
|
/// </param>
|
|||
|
|
///
|
|||
|
|
/// <param name="parentEvent">
|
|||
|
|
/// The parent <see cref="DTS.Slice.Control.Event"/> of this module.
|
|||
|
|
/// </param>
|
|||
|
|
///
|
|||
|
|
public Module(Serialization.Test.Module that, Event parent, Serialization.Test.ReportErrors reportErrors)
|
|||
|
|
: this(parent)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
FromDtsSerializationTestModule(that, reportErrors);
|
|||
|
|
}
|
|||
|
|
catch (System.IO.InvalidDataException ex) { throw ex; }
|
|||
|
|
catch (System.Exception ex)
|
|||
|
|
{
|
|||
|
|
throw new Exception("encountered problem 2-parameter constructing " + GetType().FullName, ex);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// The <see cref="Event"/> that contains this module.
|
|||
|
|
/// </summary>
|
|||
|
|
public Event ParentEvent
|
|||
|
|
{
|
|||
|
|
get => _ParentEvent.Value;
|
|||
|
|
private set => _ParentEvent.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<Event> _ParentEvent
|
|||
|
|
= new Property<Event>(
|
|||
|
|
typeof(Module).Namespace + ".Event.Module.ParentEvent",
|
|||
|
|
null,
|
|||
|
|
false
|
|||
|
|
);
|
|||
|
|
public void SetParentEvent(Event e) { _ParentEvent.Value = e; }
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the list of channels on this event module.
|
|||
|
|
/// </summary>
|
|||
|
|
public List<Channel> Channels
|
|||
|
|
{
|
|||
|
|
get => _Channels.Value;
|
|||
|
|
set => _Channels.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<List<Channel>> _Channels = new Property<List<Channel>>("Event.Module.Channels", new List<Channel>(), true);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the <see cref="int"/> module number of this event module.
|
|||
|
|
/// </summary>
|
|||
|
|
public int Number
|
|||
|
|
{
|
|||
|
|
get => _Number.Value;
|
|||
|
|
set => _Number.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<int> _Number = new Property<int>("Event.Module.Number", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the serial number <see cref="string"/> for this DAS.
|
|||
|
|
/// </summary>
|
|||
|
|
public string DasSerialNumber
|
|||
|
|
{
|
|||
|
|
get => _dasSerialNumber.Value;
|
|||
|
|
set => _dasSerialNumber.Value = value;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private readonly Property<string> _dasSerialNumber = new Property<string>(typeof(Module).Namespace + ".Event.Module.DasSerialNumber", "", true);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the serial number <see cref="string"/> for this DAS.
|
|||
|
|
/// </summary>
|
|||
|
|
public string Description
|
|||
|
|
{
|
|||
|
|
get => _Description.Value;
|
|||
|
|
set => _Description.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<string> _Description
|
|||
|
|
= new Property<string>(
|
|||
|
|
typeof(Module).Namespace + ".Event.Module.Description",
|
|||
|
|
"",
|
|||
|
|
true
|
|||
|
|
);
|
|||
|
|
public bool IsSlice6DBModule()
|
|||
|
|
{
|
|||
|
|
return (Description == "slice6db module");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the base serial number <see cref="string"/> for this DAS.
|
|||
|
|
/// </summary>
|
|||
|
|
public string BaseSerialNumber
|
|||
|
|
{
|
|||
|
|
get => _BaseSerialNumber.Value;
|
|||
|
|
set => _BaseSerialNumber.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<string> _BaseSerialNumber
|
|||
|
|
= new Property<string>(
|
|||
|
|
typeof(Module).Namespace + ".Event.Module.BaseSerialNumber",
|
|||
|
|
"",
|
|||
|
|
true
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the <see cref="double"/> number of requested seconds pre-trigger for this event module.
|
|||
|
|
/// </summary>
|
|||
|
|
public double RequestedPreTriggerSeconds
|
|||
|
|
{
|
|||
|
|
get => _RequestedPreTriggerSeconds.Value;
|
|||
|
|
set => _RequestedPreTriggerSeconds.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<double> _RequestedPreTriggerSeconds = new Property<double>("Event.Module.RequestedPreTriggerSeconds", 0.0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the <see cref="double"/> number of requested seconds post-trigger for this event module.
|
|||
|
|
/// </summary>
|
|||
|
|
public double RequestedPostTriggerSeconds
|
|||
|
|
{
|
|||
|
|
get => _RequestedPostTriggerSeconds.Value;
|
|||
|
|
set => _RequestedPostTriggerSeconds.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<double> _RequestedPostTriggerSeconds = new Property<double>("Event.Module.RequestedPostTriggerSeconds", 0.0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the <see cref="double"/> number of seconds pre-trigger for this event module.
|
|||
|
|
/// </summary>
|
|||
|
|
public double PreTriggerSeconds
|
|||
|
|
{
|
|||
|
|
get => _PreTriggerSeconds.Value;
|
|||
|
|
set => _PreTriggerSeconds.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<double> _PreTriggerSeconds = new Property<double>("Event.Module.PreTriggerSeconds", 0.0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the <see cref="double"/> number of seconds post-trigger for this event module.
|
|||
|
|
/// </summary>
|
|||
|
|
public double PostTriggerSeconds
|
|||
|
|
{
|
|||
|
|
get => _PostTriggerSeconds.Value;
|
|||
|
|
set => _PostTriggerSeconds.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<double> _PostTriggerSeconds = new Property<double>("Event.Module.PostTriggerSeconds", 0.0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the number of <see cref="UInt64"/> samples in this event modules.
|
|||
|
|
/// </summary>
|
|||
|
|
public UInt64 NumberOfSamples
|
|||
|
|
{
|
|||
|
|
get => _NumberOfSamples.Value;
|
|||
|
|
set => _NumberOfSamples.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<UInt64> _NumberOfSamples = new Property<UInt64>("Event.Module.NumberOfSamples", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the number of unsubsampled <see cref="UInt64"/> samples in this event modules.
|
|||
|
|
/// </summary>
|
|||
|
|
public UInt64 UnsubsampledNumberOfSamples
|
|||
|
|
{
|
|||
|
|
get => _UnsubsampledNumberOfSamples.Value;
|
|||
|
|
set => _UnsubsampledNumberOfSamples.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<UInt64> _UnsubsampledNumberOfSamples = new Property<UInt64>("Event.Module.UnsubsampledNumberOfSamples", 0, true);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the <see cref="UInt64"/> trigger sample numbers for this event module.
|
|||
|
|
/// </summary>
|
|||
|
|
public List<UInt64> TriggerSampleNumbers
|
|||
|
|
{
|
|||
|
|
get => _TriggerSampleNumbers.Value;
|
|||
|
|
set => _TriggerSampleNumbers.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<List<UInt64>> _TriggerSampleNumbers = new Property<List<UInt64>>("Event.Module.TriggerSampleNumbers", null, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the <see cref="UInt64"/> unsubsampled trigger sample numbers for this event module.
|
|||
|
|
/// </summary>
|
|||
|
|
public List<UInt64> UnsubsampledTriggerSampleNumbers
|
|||
|
|
{
|
|||
|
|
get => _UnsubsampledTriggerSampleNumbers.Value;
|
|||
|
|
set => _UnsubsampledTriggerSampleNumbers.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<List<UInt64>> _UnsubsampledTriggerSampleNumbers = new Property<List<UInt64>>("Event.Module.UnsubsampledTriggerSampleNumbers", new List<UInt64>(), true);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the <see cref="UInt64"/> start record sample number for this event module.
|
|||
|
|
/// </summary>
|
|||
|
|
public UInt64 StartRecordSampleNumber
|
|||
|
|
{
|
|||
|
|
get => _StartRecordSampleNumber.Value;
|
|||
|
|
set => _StartRecordSampleNumber.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<UInt64> _StartRecordSampleNumber = new Property<UInt64>("Event.Module.StartRecordSampleNumber", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the <see cref="float"/> sample rate for this event module.
|
|||
|
|
/// </summary>
|
|||
|
|
public float SampleRateHz
|
|||
|
|
{
|
|||
|
|
get => _SampleRateHz.Value;
|
|||
|
|
set => _SampleRateHz.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<float> _SampleRateHz = new Property<float>("Event.Module.SampleRateHz", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the <see cref="double"/> start record timestamp in seconds for this event module.
|
|||
|
|
/// </summary>
|
|||
|
|
public double StartRecordTimestampSec
|
|||
|
|
{
|
|||
|
|
get => _StartRecordTimestampSec.Value;
|
|||
|
|
set => _StartRecordTimestampSec.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<double> _StartRecordTimestampSec = new Property<double>("Event.Module.StartRecordTimestampSec", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the <see cref="double"/> start record timestamp in nanoseconds for this event module.
|
|||
|
|
/// </summary>
|
|||
|
|
public double StartRecordTimestampNanoSec
|
|||
|
|
{
|
|||
|
|
get => _StartRecordTimestampNanoSec.Value;
|
|||
|
|
set => _StartRecordTimestampNanoSec.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<double> _StartRecordTimestampNanoSec = new Property<double>("Event.Module.StartRecordTimestampNanoSec", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the <see cref="double"/> trigger timestamp in seconds for this event module.
|
|||
|
|
/// </summary>
|
|||
|
|
public double TriggerTimestampSec
|
|||
|
|
{
|
|||
|
|
get => _TriggerTimestampSec.Value;
|
|||
|
|
set => _TriggerTimestampSec.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<double> _TriggerTimestampSec = new Property<double>("Event.Module.TriggerTimestampSec", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the <see cref="double"/> trigger timestamp in nanoseconds for this event module.
|
|||
|
|
/// </summary>
|
|||
|
|
public double TriggerTimestampNanoSec
|
|||
|
|
{
|
|||
|
|
get => _TriggerTimestampNanoSec.Value;
|
|||
|
|
set => _TriggerTimestampNanoSec.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<double> _TriggerTimestampNanoSec = new Property<double>("Event.Module.TriggerTimestampNanoSec", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the <see cref="bool"/> whether or not PTP master sync is used for this event module.
|
|||
|
|
/// </summary>
|
|||
|
|
public bool PTPMasterSync
|
|||
|
|
{
|
|||
|
|
get => _PTPMasterSync.Value;
|
|||
|
|
set => _PTPMasterSync.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<bool> _PTPMasterSync = new Property<bool>("Event.Module.PTPMasterSync", false, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the tilt sensor X axis value.
|
|||
|
|
/// </summary>
|
|||
|
|
public double TiltSensorAxisXDegreesPre
|
|||
|
|
{
|
|||
|
|
get => _TiltSensorAxisXDegreesPre.Value;
|
|||
|
|
set => _TiltSensorAxisXDegreesPre.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<double> _TiltSensorAxisXDegreesPre = new Property<double>("Event.Module.TiltSensorAxisXDegreesPre", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the tilt sensor Y axis value.
|
|||
|
|
/// </summary>
|
|||
|
|
public double TiltSensorAxisYDegreesPre
|
|||
|
|
{
|
|||
|
|
get => _TiltSensorAxisYDegreesPre.Value;
|
|||
|
|
set => _TiltSensorAxisYDegreesPre.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<double> _TiltSensorAxisYDegreesPre = new Property<double>("Event.Module.TiltSensorAxis2DegreesPre", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the tilt sensor Z axis value.
|
|||
|
|
/// </summary>
|
|||
|
|
public double TiltSensorAxisZDegreesPre
|
|||
|
|
{
|
|||
|
|
get => _TiltSensorAxisZDegreesPre.Value;
|
|||
|
|
set => _TiltSensorAxisZDegreesPre.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<double> _TiltSensorAxisZDegreesPre = new Property<double>("Event.Module.TiltSensorAxisZDegreesPre", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the tilt sensor X axis value.
|
|||
|
|
/// </summary>
|
|||
|
|
public double TiltSensorAxisXDegreesPost
|
|||
|
|
{
|
|||
|
|
get => _TiltSensorAxisXDegreesPost.Value;
|
|||
|
|
set => _TiltSensorAxisXDegreesPost.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<double> _TiltSensorAxisXDegreesPost = new Property<double>("Event.Module.TiltSensorAxisXDegreesPost", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the tilt sensor Y axis value.
|
|||
|
|
/// </summary>
|
|||
|
|
public double TiltSensorAxisYDegreesPost
|
|||
|
|
{
|
|||
|
|
get => _TiltSensorAxisYDegreesPost.Value;
|
|||
|
|
set => _TiltSensorAxisYDegreesPost.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<double> _TiltSensorAxisYDegreesPost = new Property<double>("Event.Module.TiltSensorAxisYDegreesPost", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the tilt sensor Z axis value.
|
|||
|
|
/// </summary>
|
|||
|
|
public double TiltSensorAxisZDegreesPost
|
|||
|
|
{
|
|||
|
|
get => _TiltSensorAxisZDegreesPost.Value;
|
|||
|
|
set => _TiltSensorAxisZDegreesPost.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<double> _TiltSensorAxisZDegreesPost = new Property<double>("Event.Module.TiltSensorAxisZDegreesPost", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the temperature sensor location 1 value.
|
|||
|
|
/// </summary>
|
|||
|
|
public float TemperatureLocation1Pre
|
|||
|
|
{
|
|||
|
|
get => _TemperatureLocation1Pre.Value;
|
|||
|
|
set => _TemperatureLocation1Pre.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<float> _TemperatureLocation1Pre = new Property<float>("Event.Module.TemperatureLocation1Pre", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the temperature sensor location 2 value.
|
|||
|
|
/// </summary>
|
|||
|
|
public float TemperatureLocation2Pre
|
|||
|
|
{
|
|||
|
|
get => _TemperatureLocation2Pre.Value;
|
|||
|
|
set => _TemperatureLocation2Pre.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<float> _TemperatureLocation2Pre = new Property<float>("Event.Module.TemperatureLocation2Pre", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the temperature sensor location 3 value.
|
|||
|
|
/// </summary>
|
|||
|
|
public float TemperatureLocation3Pre
|
|||
|
|
{
|
|||
|
|
get => _TemperatureLocation3Pre.Value;
|
|||
|
|
set => _TemperatureLocation3Pre.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<float> _TemperatureLocation3Pre = new Property<float>("Event.Module.TemperatureLocation3Pre", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the temperature sensor location 4 value.
|
|||
|
|
/// </summary>
|
|||
|
|
public float TemperatureLocation4Pre
|
|||
|
|
{
|
|||
|
|
get => _TemperatureLocation4Pre.Value;
|
|||
|
|
set => _TemperatureLocation4Pre.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<float> _TemperatureLocation4Pre = new Property<float>("Event.Module.TemperatureLocation4Pre", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the temperature sensor location 1 post value.
|
|||
|
|
/// </summary>
|
|||
|
|
public float TemperatureLocation1Post
|
|||
|
|
{
|
|||
|
|
get => _TemperatureLocation1Post.Value;
|
|||
|
|
set => _TemperatureLocation1Post.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<float> _TemperatureLocation1Post = new Property<float>("Event.Module.TemperatureLocation1Post", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the temperature sensor location 2 value.
|
|||
|
|
/// </summary>
|
|||
|
|
public float TemperatureLocation2Post
|
|||
|
|
{
|
|||
|
|
get => _TemperatureLocation2Post.Value;
|
|||
|
|
set => _TemperatureLocation2Post.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<float> _TemperatureLocation2Post = new Property<float>("Event.Module.TemperatureLocation2Post", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the temperature sensor location 3 post value.
|
|||
|
|
/// </summary>
|
|||
|
|
public float TemperatureLocation3Post
|
|||
|
|
{
|
|||
|
|
get => _TemperatureLocation3Post.Value;
|
|||
|
|
set => _TemperatureLocation3Post.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<float> _TemperatureLocation3Post = new Property<float>("Event.Module.TemperatureLocation3Post", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the temperature sensor location 4 post value.
|
|||
|
|
/// </summary>
|
|||
|
|
public float TemperatureLocation4Post
|
|||
|
|
{
|
|||
|
|
get => _TemperatureLocation4Post.Value;
|
|||
|
|
set => _TemperatureLocation4Post.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<float> _TemperatureLocation4Post = new Property<float>("Event.Module.TemperatureLocation4Post", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the <see cref="float"/> AA filter rate for this event module.
|
|||
|
|
/// </summary>
|
|||
|
|
public float AaFilterRateHz
|
|||
|
|
{
|
|||
|
|
get => _AaFilterRateHz.Value;
|
|||
|
|
set => _AaFilterRateHz.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<float> _AaFilterRateHz = new Property<float>("Event.Module.AaFilterRateHz", 0, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the <see cref="Test.Module.Channel.Sensor.ExcitationVoltageOption"/> nominal
|
|||
|
|
/// excitation voltage of this module.
|
|||
|
|
/// </summary>
|
|||
|
|
public Test.Module.Channel.Sensor.ExcitationVoltageOption NominalExcitationVoltage
|
|||
|
|
{
|
|||
|
|
get => _NominalExcitationVoltage.Value;
|
|||
|
|
set => _NominalExcitationVoltage.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<Test.Module.Channel.Sensor.ExcitationVoltageOption> _NominalExcitationVoltage
|
|||
|
|
= new Property<Test.Module.Channel.Sensor.ExcitationVoltageOption>(
|
|||
|
|
typeof(Module).Namespace + ".Event.Module.NominalExcitationVoltage",
|
|||
|
|
Test.Module.Channel.Sensor.ExcitationVoltageOption.Volt5,
|
|||
|
|
true
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Get/set the <see cref="Test.Module.RecordingMode"/> of this module.
|
|||
|
|
/// </summary>
|
|||
|
|
public Test.Module.RecordingMode RecordingMode
|
|||
|
|
{
|
|||
|
|
get => _RecordingMode.Value;
|
|||
|
|
set => _RecordingMode.Value = value;
|
|||
|
|
}
|
|||
|
|
private readonly Property<Test.Module.RecordingMode> _RecordingMode = new Property<Test.Module.RecordingMode>("Event.Module.RecordingMode", Test.Module.RecordingMode.CircularBuffer, false);
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Set the applicable properties of this object from the specified target object.
|
|||
|
|
/// </summary>
|
|||
|
|
///
|
|||
|
|
/// <param name="that">
|
|||
|
|
/// The <see cref="DTS.DASLib.Service.DASModule"/> that is to have the information it
|
|||
|
|
/// shares with this object copied.
|
|||
|
|
/// </param>
|
|||
|
|
///
|
|||
|
|
public void SetPropertyValuesFrom(DASLib.Service.DASModule that)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
TriggerSampleNumbers = new List<ulong>(null != that.TriggerSampleNumbers ? that.TriggerSampleNumbers : new ulong[] { });
|
|||
|
|
NumberOfSamples = that.NumberOfSamples;
|
|||
|
|
ParentEvent.Guid = that.OwningDAS.EventGuids[0];
|
|||
|
|
ushort faultFlag = 0;
|
|||
|
|
try { faultFlag = ParentEvent.FaultFlags; }
|
|||
|
|
//TODO: handle exception!!!
|
|||
|
|
catch (System.Exception) { }
|
|||
|
|
ParentEvent.FaultFlags = Convert.ToUInt16(faultFlag | that.OwningDAS.FaultFlags[0]);
|
|||
|
|
// that.Description
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
catch (System.Exception ex)
|
|||
|
|
{
|
|||
|
|
throw new Exception("encountered problem setting property from target object " + (null != that ? "\"" + that.ToString() + "\"" : "<NULL>"), ex);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Test the specified object for equality with this object.
|
|||
|
|
/// </summary>
|
|||
|
|
///
|
|||
|
|
/// <param name="obj">
|
|||
|
|
/// The <see cref="object"/> to be tested for equality.
|
|||
|
|
/// </param>
|
|||
|
|
///
|
|||
|
|
/// <returns>
|
|||
|
|
/// <see cref="bool"/> true if the specified object has memeberwise equality with
|
|||
|
|
/// this object; false otherwise.
|
|||
|
|
/// </returns>
|
|||
|
|
///
|
|||
|
|
public override bool Equals(object obj)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
var that = obj as Module;
|
|||
|
|
return null != that
|
|||
|
|
&& Description.Equals(that.Description)
|
|||
|
|
&& AaFilterRateHz.Equals(that.AaFilterRateHz)
|
|||
|
|
&& Number.Equals(that.Number)
|
|||
|
|
&& DasSerialNumber.Equals(that.DasSerialNumber)
|
|||
|
|
&& NumberOfSamples.Equals(that.NumberOfSamples)
|
|||
|
|
&& UnsubsampledNumberOfSamples.Equals(that.UnsubsampledNumberOfSamples)
|
|||
|
|
&& RequestedPostTriggerSeconds.Equals(that.RequestedPostTriggerSeconds)
|
|||
|
|
&& RequestedPreTriggerSeconds.Equals(that.RequestedPreTriggerSeconds)
|
|||
|
|
&& PostTriggerSeconds.Equals(that.PostTriggerSeconds)
|
|||
|
|
&& PreTriggerSeconds.Equals(that.PreTriggerSeconds)
|
|||
|
|
&& RecordingMode.Equals(that.RecordingMode)
|
|||
|
|
&& SampleRateHz.Equals(that.SampleRateHz)
|
|||
|
|
&& StartRecordSampleNumber.Equals(that.StartRecordSampleNumber)
|
|||
|
|
&& TriggerSampleNumbersEquals(that.TriggerSampleNumbers)
|
|||
|
|
&& UnsubsampledTriggerSampleNumbersEquals(that.UnsubsampledTriggerSampleNumbers)
|
|||
|
|
&& ChannelsEquals(that.Channels);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
catch (System.Exception ex)
|
|||
|
|
{
|
|||
|
|
throw new Exception(
|
|||
|
|
string.Format(
|
|||
|
|
Strings.DTS_Slice_Control_Equals_ComparisonFailedString, null != obj ? "\"" + obj.ToString() + "\"" : Strings.DTS_Slice_Control_NullIndicatorString),
|
|||
|
|
ex);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Test the specified object's trigger sample number list for equality with this
|
|||
|
|
/// object's module list.
|
|||
|
|
/// </summary>
|
|||
|
|
///
|
|||
|
|
/// <param name="thoseTriggerSampleNumbers">
|
|||
|
|
/// The <see cref="List"/> of <see cref="UInt64"/> object to be
|
|||
|
|
/// compared for equality with this event's equivalent.
|
|||
|
|
/// </param>
|
|||
|
|
///
|
|||
|
|
/// <returns>
|
|||
|
|
/// <see cref="bool"/> true if the two lists contain equivalent-valued members;
|
|||
|
|
/// false otherwise.
|
|||
|
|
/// </returns>
|
|||
|
|
///
|
|||
|
|
private bool TriggerSampleNumbersEquals(List<UInt64> thoseTriggerSampleNumbers)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (null == thoseTriggerSampleNumbers || TriggerSampleNumbers.Count != thoseTriggerSampleNumbers.Count)
|
|||
|
|
return false;
|
|||
|
|
return !thoseTriggerSampleNumbers.Where((t, i) => !TriggerSampleNumbers[i].Equals(t)).Any();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
catch (System.Exception ex)
|
|||
|
|
{
|
|||
|
|
throw new Exception(Strings.DTS_Slice_Control_Event_Module_TriggerSampleNumbersEquals_ComparisonFailedString, ex);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Test the specified object's unsubsampled trigger sample number list for equality with this
|
|||
|
|
/// object's module list.
|
|||
|
|
/// </summary>
|
|||
|
|
///
|
|||
|
|
/// <param name="thoseUnsubsampledTriggerSampleNumbers">
|
|||
|
|
/// The <see cref="List"/> of <see cref="UInt64"/> object to be
|
|||
|
|
/// compared for equality with this event's equivalent.
|
|||
|
|
/// </param>
|
|||
|
|
///
|
|||
|
|
/// <returns>
|
|||
|
|
/// <see cref="bool"/> true if the two lists contain equivalent-valued members;
|
|||
|
|
/// false otherwise.
|
|||
|
|
/// </returns>
|
|||
|
|
///
|
|||
|
|
private bool UnsubsampledTriggerSampleNumbersEquals(List<UInt64> thoseUnsubsampledTriggerSampleNumbers)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (null == thoseUnsubsampledTriggerSampleNumbers || UnsubsampledTriggerSampleNumbers.Count != thoseUnsubsampledTriggerSampleNumbers.Count)
|
|||
|
|
return false;
|
|||
|
|
return !thoseUnsubsampledTriggerSampleNumbers.Where((t, i) => !UnsubsampledTriggerSampleNumbers[i].Equals(t)).Any();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
catch (System.Exception ex)
|
|||
|
|
{
|
|||
|
|
throw new Exception("unsubsampled trigger sample number arrays do not match", ex);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Test the specified object's module list for equality with this object's
|
|||
|
|
/// module list.
|
|||
|
|
/// </summary>
|
|||
|
|
///
|
|||
|
|
/// <param name="thoseChannels">
|
|||
|
|
/// The <see cref="List"/> of <see cref="DTS.Slice.Control.Event.Module.Channel"/> objects to be
|
|||
|
|
/// compared for equality with this module's equivalent.
|
|||
|
|
/// </param>
|
|||
|
|
///
|
|||
|
|
/// <returns>
|
|||
|
|
/// <see cref="bool"/> true if the two lists contain equivalent-valued members;
|
|||
|
|
/// false otherwise.
|
|||
|
|
/// </returns>
|
|||
|
|
///
|
|||
|
|
private bool ChannelsEquals(List<Channel> thoseChannels)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (null == thoseChannels || Channels.Count != thoseChannels.Count)
|
|||
|
|
return false;
|
|||
|
|
return !thoseChannels.Where((t, i) => !Channels[i].Equals(t)).Any();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
catch (System.Exception ex)
|
|||
|
|
{
|
|||
|
|
throw new Exception(Strings.DTS_Slice_Control_Event_Module_ChannelsEquals_ComparisonFailedString, ex);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Return the hash code for this object.
|
|||
|
|
/// </summary>
|
|||
|
|
///
|
|||
|
|
/// <returns>
|
|||
|
|
/// The <see cref="int"/> hash code for this object.
|
|||
|
|
/// </returns>
|
|||
|
|
///
|
|||
|
|
public override int GetHashCode()
|
|||
|
|
{
|
|||
|
|
return base.GetHashCode();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Convert this object into a DTS.Serialization.Test.Module.
|
|||
|
|
/// </summary>
|
|||
|
|
///
|
|||
|
|
/// <returns>
|
|||
|
|
/// A <see cref="DTS.Serialization.Test.Module"/> equivalent to this object.
|
|||
|
|
/// </returns>
|
|||
|
|
///
|
|||
|
|
public Serialization.Test.Module ToDtsSerializationTestModule(Serialization.Test parentTest)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
var that = new Serialization.Test.Module(parentTest)
|
|||
|
|
{
|
|||
|
|
Description = Description,
|
|||
|
|
AaFilterRateHz = AaFilterRateHz,
|
|||
|
|
Number = Number,
|
|||
|
|
SerialNumber = DasSerialNumber,
|
|||
|
|
NumberOfSamples = NumberOfSamples,
|
|||
|
|
UnsubsampledNumberOfSamples = UnsubsampledNumberOfSamples,
|
|||
|
|
RequestedPostTriggerSeconds = RequestedPostTriggerSeconds,
|
|||
|
|
RequestedPreTriggerSeconds = RequestedPreTriggerSeconds,
|
|||
|
|
PostTriggerSeconds = PostTriggerSeconds,
|
|||
|
|
PreTriggerSeconds = PreTriggerSeconds,
|
|||
|
|
RecordingMode = RecordingMode,
|
|||
|
|
SampleRateHz = SampleRateHz,
|
|||
|
|
StartRecordSampleNumber = StartRecordSampleNumber,
|
|||
|
|
TriggerSampleNumbers = TriggerSampleNumbers,
|
|||
|
|
UnsubsampledTriggerSampleNumbers = UnsubsampledTriggerSampleNumbers,
|
|||
|
|
BaseSerialNumber = BaseSerialNumber,
|
|||
|
|
StartRecordTimestampSec = StartRecordTimestampSec,
|
|||
|
|
StartRecordTimestampNanoSec = StartRecordTimestampNanoSec,
|
|||
|
|
TriggerTimestampSec = TriggerTimestampSec,
|
|||
|
|
TriggerTimestampNanoSec = TriggerTimestampNanoSec,
|
|||
|
|
PTPMasterSync = PTPMasterSync,
|
|||
|
|
TiltSensorAxisXDegreesPre = TiltSensorAxisXDegreesPre,
|
|||
|
|
TiltSensorAxisYDegreesPre = TiltSensorAxisYDegreesPre,
|
|||
|
|
TiltSensorAxisZDegreesPre = TiltSensorAxisZDegreesPre,
|
|||
|
|
TiltSensorAxisXDegreesPost = TiltSensorAxisXDegreesPost,
|
|||
|
|
TiltSensorAxisYDegreesPost = TiltSensorAxisYDegreesPost,
|
|||
|
|
TiltSensorAxisZDegreesPost = TiltSensorAxisZDegreesPost,
|
|||
|
|
TemperatureLocation1Pre = TemperatureLocation1Pre,
|
|||
|
|
TemperatureLocation2Pre = TemperatureLocation2Pre,
|
|||
|
|
TemperatureLocation3Pre = TemperatureLocation3Pre,
|
|||
|
|
TemperatureLocation4Pre = TemperatureLocation4Pre,
|
|||
|
|
TemperatureLocation1Post = TemperatureLocation1Post,
|
|||
|
|
TemperatureLocation2Post = TemperatureLocation2Post,
|
|||
|
|
TemperatureLocation3Post = TemperatureLocation3Post,
|
|||
|
|
TemperatureLocation4Post = TemperatureLocation4Post,
|
|||
|
|
Channels = new List<Serialization.Test.Module.Channel>()
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
// Create a test module channel to embody each channel conversion, and then
|
|||
|
|
// copy over all relevant channel data members.
|
|||
|
|
foreach (var thisChannel in Channels)
|
|||
|
|
{
|
|||
|
|
//10988 Do not download/write/purge unneeded files; Only write required channels
|
|||
|
|
if (thisChannel.IsConfigured)
|
|||
|
|
{
|
|||
|
|
//
|
|||
|
|
// Create a test module channel to embody each channel conversion, and then
|
|||
|
|
// copy over all relevant channel data members.
|
|||
|
|
//
|
|||
|
|
that.Channels.Add(thisChannel.ToDtsSerializationTestModuleChannel(that));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return that;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
catch (System.Exception ex)
|
|||
|
|
{
|
|||
|
|
throw new Exception("encountered problem converting " + GetType().FullName + " to " + typeof(Serialization.Test.Module).FullName, ex);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Initialize this object from a DTS.Serialization.Test.Module.
|
|||
|
|
/// </summary>
|
|||
|
|
///
|
|||
|
|
/// <param name="that">
|
|||
|
|
/// A <see cref="DTS.Serialization.Test.Module"/> from which to initialize this object.
|
|||
|
|
/// </param>
|
|||
|
|
/// <param name="reportErrors"></param>
|
|||
|
|
//TODO: use more descriptive variable names
|
|||
|
|
public void FromDtsSerializationTestModule(Serialization.Test.Module that, Serialization.Test.ReportErrors reportErrors)
|
|||
|
|
{
|
|||
|
|
var errors = new List<string>();
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (null == that) { throw new ArgumentNullException( $"cannot set this object's properties from null serialization test module reference"); }
|
|||
|
|
|
|||
|
|
Description = that.Description;
|
|||
|
|
AaFilterRateHz = that.AaFilterRateHz;
|
|||
|
|
Number = that.Number;
|
|||
|
|
DasSerialNumber = that.SerialNumber;
|
|||
|
|
NumberOfSamples = that.NumberOfSamples;
|
|||
|
|
UnsubsampledNumberOfSamples = that.UnsubsampledNumberOfSamples;
|
|||
|
|
RequestedPostTriggerSeconds = that.RequestedPostTriggerSeconds;
|
|||
|
|
RequestedPreTriggerSeconds = that.RequestedPreTriggerSeconds;
|
|||
|
|
PostTriggerSeconds = that.PostTriggerSeconds;
|
|||
|
|
PreTriggerSeconds = that.PreTriggerSeconds;
|
|||
|
|
RecordingMode = that.RecordingMode;
|
|||
|
|
SampleRateHz = that.SampleRateHz;
|
|||
|
|
StartRecordSampleNumber = that.StartRecordSampleNumber;
|
|||
|
|
TriggerSampleNumbers = that.TriggerSampleNumbers;
|
|||
|
|
UnsubsampledTriggerSampleNumbers = that.UnsubsampledTriggerSampleNumbers;
|
|||
|
|
BaseSerialNumber = that.BaseSerialNumber;
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
StartRecordTimestampSec = that.StartRecordTimestampSec;
|
|||
|
|
}
|
|||
|
|
catch (System.Exception ex)
|
|||
|
|
{
|
|||
|
|
APILogger.Log("failed to get StartRecordTimestampSec", ex);
|
|||
|
|
}
|
|||
|
|
//TODO: inappropriate using try/catch!!!
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
StartRecordTimestampNanoSec = that.StartRecordTimestampNanoSec;
|
|||
|
|
}
|
|||
|
|
catch (System.Exception ex)
|
|||
|
|
{
|
|||
|
|
APILogger.Log("failed to get StartRecordTimestampSec", ex);
|
|||
|
|
}
|
|||
|
|
//TODO: inappropriate using try/catch!!!
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
TriggerTimestampSec = that.TriggerTimestampSec;
|
|||
|
|
}
|
|||
|
|
catch (System.Exception ex)
|
|||
|
|
{
|
|||
|
|
APILogger.Log("failed to get TriggerTimestampSec", ex);
|
|||
|
|
}
|
|||
|
|
//TODO: inappropriate using try/catch!!!
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
TriggerTimestampNanoSec = that.StartRecordTimestampNanoSec;
|
|||
|
|
}
|
|||
|
|
catch (System.Exception ex)
|
|||
|
|
{
|
|||
|
|
APILogger.Log("failed to get TriggerTimestampNanoSec", ex);
|
|||
|
|
}
|
|||
|
|
//TODO: inappropriate using try/catch!!!
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
PTPMasterSync = that.PTPMasterSync;
|
|||
|
|
}
|
|||
|
|
catch (System.Exception ex)
|
|||
|
|
{
|
|||
|
|
APILogger.Log("failed to get PTPMasterSync", ex);
|
|||
|
|
}
|
|||
|
|
//TODO: inappropriate using try/catch!!!
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
TiltSensorAxisXDegreesPre = that.TiltSensorAxisXDegreesPre;
|
|||
|
|
TiltSensorAxisYDegreesPre = that.TiltSensorAxisYDegreesPre;
|
|||
|
|
TiltSensorAxisZDegreesPre = that.TiltSensorAxisZDegreesPre;
|
|||
|
|
TiltSensorAxisXDegreesPost = that.TiltSensorAxisXDegreesPost;
|
|||
|
|
TiltSensorAxisYDegreesPost = that.TiltSensorAxisYDegreesPost;
|
|||
|
|
TiltSensorAxisZDegreesPost = that.TiltSensorAxisZDegreesPost;
|
|||
|
|
}
|
|||
|
|
catch (System.Exception ex)
|
|||
|
|
{
|
|||
|
|
APILogger.Log("failed to get tilt information", ex);
|
|||
|
|
}
|
|||
|
|
//TODO: inappropriate using try/catch!!!
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
TemperatureLocation1Pre = that.TemperatureLocation1Pre;
|
|||
|
|
TemperatureLocation2Pre = that.TemperatureLocation2Pre;
|
|||
|
|
TemperatureLocation3Pre = that.TemperatureLocation3Pre;
|
|||
|
|
TemperatureLocation4Pre = that.TemperatureLocation4Pre;
|
|||
|
|
TemperatureLocation1Post = that.TemperatureLocation1Post;
|
|||
|
|
TemperatureLocation2Post = that.TemperatureLocation2Post;
|
|||
|
|
TemperatureLocation3Post = that.TemperatureLocation3Post;
|
|||
|
|
TemperatureLocation4Post = that.TemperatureLocation4Post;
|
|||
|
|
}
|
|||
|
|
catch (System.Exception ex)
|
|||
|
|
{
|
|||
|
|
APILogger.Log("failed to get temperature information", ex);
|
|||
|
|
}
|
|||
|
|
//APILogger.DoPerformanceLog("DTS.Slice.Control.Event.Module:FromDTSSerializationTestModule:6");
|
|||
|
|
var absoluteChannelNumber = ParentEvent.LastAbsoluteChannelNumberInEvent + 1;
|
|||
|
|
|
|||
|
|
Channels.Clear();
|
|||
|
|
foreach (var thatChannel in that.Channels)
|
|||
|
|
{ //
|
|||
|
|
// Create a Slice Control channel corresponding to the specified serialization
|
|||
|
|
// channel and populate its relevant properties.
|
|||
|
|
//
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (thatChannel.AbsoluteDisplayOrder != -2)
|
|||
|
|
{
|
|||
|
|
//Have to count the channels this way as the module isn't a part of the event yet.
|
|||
|
|
var emc = Channel.CreateChannel(thatChannel, this, absoluteChannelNumber++);
|
|||
|
|
Channels.Add(emc);
|
|||
|
|
thatChannel.emc = emc;
|
|||
|
|
Trace.WriteLine("Created EMC: " + absoluteChannelNumber.ToString());
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch (System.IO.InvalidDataException ex) { errors.Add(ex.Message); }
|
|||
|
|
}
|
|||
|
|
foreach (var thatCalculatedChannel in that.CalculatedChannels)
|
|||
|
|
{
|
|||
|
|
//Have to count the channels this way as the module isn't a part of the event yet.
|
|||
|
|
var emc = Channel.CreateChannel(thatCalculatedChannel, this, absoluteChannelNumber++);
|
|||
|
|
Trace.WriteLine("Created EMC: " + absoluteChannelNumber.ToString());
|
|||
|
|
Channels.Add(emc);
|
|||
|
|
thatCalculatedChannel.emc = emc;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
catch (System.Exception ex)
|
|||
|
|
{
|
|||
|
|
throw new Exception("encountered problem initializing " + GetType().FullName + " using " + typeof(Serialization.Test.Module).FullName, ex);
|
|||
|
|
}
|
|||
|
|
if (errors.Count > 0 && null != reportErrors) { reportErrors(errors); }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|