using DTS.Common.Enums.DASFactory;
using System;
using System.Xml;
using System.Xml.Schema;
using DTS.Common.Enums;
namespace DTS.Common.Interface.DASFactory.Config
{
public interface IDASModule
{
///
/// An array of objects representing the channels attatched to this
/// module, indexable by ModuleChannelNumber of the Channel.
///
IDASChannel[] Channels { get; set; }
///
/// EID's for the module corresponding to the sensors on each of the channels.
///
IEID[] IDs { get; set; }
///
/// Index of this Module in any array of Modules. The first module in a DAS unit will have a
/// ModuleArrayIndex of 0.
///
int ModuleArrayIndex { get; set; }
///
/// For use only with Circular-Buffer mode.
/// See .
/// The number of requested seconds for this Module to sample data before a 'Trigger' event; the number of
/// seconds to sample BEFORE time-zero.
///
double RequestedPreTriggerSeconds { get; set; }
///
/// For use with all recording modes.
/// See .
/// The number of requested seconds to sample data from sensors after time-zero, that is after
/// a trigger or start event.
///
double RequestedPostTriggerSeconds { get; set; }
///
/// For use only with Circular-Buffer mode.
/// See .
/// The number of seconds for this Module to sample data before a 'Trigger' event; the number of
/// seconds to sampel BEFORE time-zero.
///
double PreTriggerSeconds { get; set; }
///
/// For use with all recording modes.
/// See .
/// The number of seconds to sample data from sensors after time-zero, that is after
/// a trigger or start event.
///
double PostTriggerSeconds { get; set; }
///
/// The number of events to collect before disarming.
///
int NumberOfEvents { get; set; }
///
/// The number of seconds of inactivity before going to sleep.
///
int WakeUpMotionTimeout { get; set; }
///
/// The version of the firmware on a module.
///
string FirmwareVersion { get; set; }
///
/// A string that describes the module, for example, to know if it was created for the
/// purposes of adding it to the .dts file during download of Slice6 Distributor attributes.
///
string Description { get; set; }
///
/// The maximum storage space for a module.
///
ulong? MaxEventStorageSpaceInBytes { get; set; }
///
/// This is set after a recording session and is the total number of samples this Module
/// captured during the last data acquisition run.
///
ulong NumberOfSamples { get; set; }
///
/// An array of sample numbers where a trigger was activated.
///
ulong[] TriggerSampleNumbers { get; set; }
int GetLevelTriggerT0AdjustmentSamplesAutoApplied();
///
/// The sample number where recording started.
///
ulong StartRecordSampleNumber { get; set; }
///
///
///
uint StartRecordTimestampSec { get; set; }
///
///
///
uint TriggerTimestampSec { get; set; }
///
///
///
uint StartRecordTimestampNanoSec { get; set; }
///
///
///
uint TriggerTimestampNanoSec { get; set; }
///
///
///
bool PTPMasterSync { get; set; }
///
///
///
double TiltSensorAxisXDegreesPre { get; set; }
///
///
///
double TiltSensorAxisYDegreesPre { get; set; }
///
///
///
double TiltSensorAxisZDegreesPre { get; set; }
///
///
///
double TiltSensorAxisXDegreesPost { get; set; }
///
///
///
double TiltSensorAxisYDegreesPost { get; set; }
///
///
///
double TiltSensorAxisZDegreesPost { get; set; }
float TemperatureLocation1Pre { get; set; }
float TemperatureLocation2Pre { get; set; }
float TemperatureLocation3Pre { get; set; }
float TemperatureLocation4Pre { get; set; }
float TemperatureLocation1Post { get; set; }
float TemperatureLocation2Post { get; set; }
float TemperatureLocation3Post { get; set; }
float TemperatureLocation4Post { get; set; }
///
/// The sample rate in Hz at which the Module will sample sensor data.
///
uint SampleRateHz { get; set; }
///
/// FB 25558 Actual sample rate currently is used in realtime for TSR AIR type only in future it might be used for other hardware types
///
uint ActualSampleRateHz { get; set; }
///
/// Hardware anti-alias filter rate.
///
float AAFilterRateHz { get; set; }
///
/// What type of recording mode is this Module in?
/// See .
///
DFConstantsAndEnums.RecordingMode RecordingMode { get; set; }
DateTime ScheduledStartTime { get; set; }
int RecordingInterval { get; set; }
UDPStreamProfile StreamProfile { get; set; }
#region Slice 6 Tilt Feature
///
/// Defines which 2 axis will be used for the bubble level feature for Slice 6.
///
DFConstantsAndEnums.TiltAxes TiltAxes { get; set; }
double TargetAxisOne { get; set; }
double TargetAxisTwo { get; set; }
///
/// The target angle threshold in degrees for Axis 1
///
float TargetAngleAxisX { get; set; }
///
/// The target angle threshold in degrees for Axis 2
///
float TargetAngleAxisY { get; set; }
///
/// The target angle threshold in degrees for Axis 3
///
float TargetAngleAxisZ { get; set; }
double MountOffsetAxisOne { get; set; }
double MountOffsetAxisTwo { get; set; }
string SystemLocation { get; set; }
string SystemID { get; set; }
int AxisIgnored { get; set; }
double LevelTolerance { get; set; }
bool UseForTiltCalculation { get; set; }
double InputVoltage { get; set; }
double BatteryVoltage { get; set; }
///
/// The external tilt enumeration given by the attached DAS
///
byte TiltID { get; set; }
///
/// The serial number of the external tilt
///
string TiltSerialNumber { get; set; }
#endregion
//public IDASCommunication OwningDAS { get; set; }
///
/// Count how many channels are configured in this Module.
/// See .
///
/// Number of configured channels
int NumberOfConfiguredChannels();
///
/// Count how many TOM channels are configured in this module
///
/// Number of configured TOM channels
int NumberOfConfiguredTOMChannels();
bool IsDummyArmed();
///
/// Count how many channels this module has (regardless if they are configured
/// or not).
///
/// Total number of channels
int NumberOfChannels();
///
/// Retrieve the serial number from DASInfo
///
/// The serial number of this module
string SerialNumber();
///
/// Retrieve the module type from DASInfo
///
/// The type of this module
DFConstantsAndEnums.ModuleType ModuleType();
///
/// Retrieve the module type from DASInfo and return whether or not it's a stream in type
///
/// Whether the type of this module is a stream in
bool IsStreamIn();
///
/// Retrieve the module type from DASInfo and return whether or not it's a stream out type
///
/// Whether the type of this module is a stream out
bool IsStreamOut();
///
/// Retrieve the module type from DASInfo and return whether or not it's a uart type
///
/// Whether the type of this module is a uart
bool IsUart();
///
/// Retrieve the module type from DASInfo and return whether or not it's a clock type
///
/// Whether the type of this module is a clock
bool IsClock();
///
/// Retrieve the module type from DASInfo and return whether or not it's an embedded type
///
/// Whether the type of this module is embedded
bool IsEmbedded();
void WriteXmlCRC32(XmlWriter writer);
void WriteXml(XmlWriter writer);
void ReadXml(XmlReader reader);
XmlSchema GetSchema();
ushort GetCRC32();
}
}