Files
2026-04-17 14:55:32 -04:00

61 lines
2.6 KiB
C#

/*
* IDownloadEnabled.cs
*
* Copyright © 2010
* Diversified Technical Systems, Inc.
* All Rights Reserved.
*/
using System;
/// <DevelopmentNote Developer="Paul Hrissikopoulos">
/// It may make sense to refactor this namespace to be DTS.Common.DAS.ConceptsTsr and rename the TSR-specific
/// event to "Event" so that the fully qualified name of the class is "DTS.Common.DAS.ConceptsTsr.Event", but
/// then maybe keep the IDownloadEnabled and other generic interfaces outside of the "Tsr"-specific
/// namespace...? No, should probably stay with Event, since it has an "Event" type referenced in the
/// interface.
/// </DevelopmentNote>
namespace DTS.Common.DAS.Concepts
{
///
/// <summary>
/// Representation of the ability to download from this object.
/// </summary>
///
public interface IDownloadEnabled
{ //
// TODO: Determine whether or not these things should be in here. Maybe the implementing
// object should just ask for them in the constructor and keep them private? I don't think
// these are universally applicable to something "download enabled"... are they?
//
//public uint MaximumStoredEventSizeSeconds { get; }
//public ushort DownloadIncrementSamples { get; }
//public string[] ChannelDescription { get; }
//public int TimeOffsetMilliseconds { get; }
/// <summary>
/// A list of download <see cref="DTS.Common.DAS.ConceptsTsrEvent"/>s available for download.
/// </summary>
TsrEvent[] EventList { get; }
///
/// <summary>
/// Get the event data for the specified sample.
/// </summary>
/// <param name="Event">The <see cref="DTS.Common.DAS.ConceptsTsrEvent"/> to have it's data extracted.</param>
/// <param name="FirstSample">The <see cref="UInt64"/> index of the first sample to be downloaded.</param>
/// <param name="LastSample">The <see cref="UInt64"/> index of the last sample to be downloaded.</param>
/// <returns>An array of <see cref="double"/> data arrays for each channel.</returns>
///
double[][] GetEventData(TsrEvent Event, ulong FirstSample, ulong LastSample); // Any reason to do data as an out parameter rather than a return value?
// Have a subclassed channel class that has a data array, just so that 2-d array isn't so ambiguous?
/// <summary>
/// Determine whether or not the data on this download-enabled entity has been downloaded.
/// </summary>
bool DataHasBeenDownloaded { get; }
}
}