Files
DP44/docs/ai/Common/DTS.Common/Classes/DSP.md
2026-04-17 14:55:32 -04:00

6.0 KiB

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
Common/DTS.Common/Classes/DSP/ScalerAttribute.cs
Common/DTS.Common/Classes/DSP/DASRestriction.cs
Common/DTS.Common/Classes/DSP/DSPFilterRestriction.cs
Common/DTS.Common/Classes/DSP/IStreamingFilterProfile.cs
Common/DTS.Common/Classes/DSP/StreamingFilterConverter.cs
Common/DTS.Common/Classes/DSP/DSPFilterConverter.cs
Common/DTS.Common/Classes/DSP/StreamingFilterProfile.cs
Common/DTS.Common/Classes/DSP/DSPFilterCollection.cs
Common/DTS.Common/Classes/DSP/StreamingFilterProfileCollection.cs
Common/DTS.Common/Classes/DSP/DSPFilterType.cs
2026-04-17T15:32:03.691764+00:00 zai-org/GLM-5-FP8 1 dfa8a5b3110baf53

DSP Module Documentation

1. Purpose

This module provides Digital Signal Processing (DSP) filter configuration, management, and type conversion for the DTS system. It defines streaming filter profiles and DSP filter types with hardware-specific restrictions, handles calculation of filter cutoff frequencies based on sample rates, and provides property grid integration through custom type converters. The module persists filter configurations to XML files and supports legacy filter behavior for specific hardware types (SLICE6_AIR, SLICE6_AIR_BR, SLICE6_AIR_TC).


2. Public Interface

ScalerAttribute

A custom attribute for storing double values (scalers/ratios) on enum, class, struct, or field members.

[AttributeUsage(AttributeTargets.Enum | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Field, AllowMultiple = false)]
public class ScalerAttribute : Attribute

// Constructor
public ScalerAttribute(double d)

// Property
public double Scaler { get; set; }

DASRestriction

Restricts filter usage based on DAS (Data Acquisition System) hardware type and protocol version.

public class DASRestriction

// Constructors
public DASRestriction()                           // Defaults: DASType = "", ProtocolVersion = -1
public DASRestriction(string dasType, int protocolVersion)

// Properties
public string DASType { get; set; }               // Hardware type string (e.g., "SLICE6_AIR"); empty = all DAS
public int ProtocolVersion { get; set; }          // Protocol version; <=0 means all versions

DSPFilterRestriction

Identical structure to DASRestriction. Used for restricting which DAS can use a specific filter.

public class DSPFilterRestriction

// Same constructors and properties as DASRestriction

IStreamingFilterProfile

Interface defining the contract for streaming filter profiles.

public interface IStreamingFilterProfile

// Properties
int EnumValue { get; set; }                       // Byte/enum value for firmware
string DisplayString { get; set; }                // Display name
string DescriptionString { get; set; }            // Description text
DASRestriction[] Restrictions { get; set; }       // DAS usage restrictions
double Ratio { get; set; }                        // Ratio of SPS to fC (if applicable)

// Method
double GetDSPFilterRate(double sps, string hwType)  // Returns fC; NaN if not supported

StreamingFilterProfile

Implementation of IStreamingFilterProfile for streaming filter configurations.

public class StreamingFilterProfile : IStreamingFilterProfile

// Constructors
public StreamingFilterProfile()
public StreamingFilterProfile(StreamingFilterProfileCollection.DefaultProfiles profile, DASRestriction[] restrictions)
public StreamingFilterProfile(string display, string description, int enumValue, double ratio, DASRestriction[] restrictions)

// Properties (implements IStreamingFilterProfile)
public double Ratio { get; set; }
public string DisplayString { get; set; }
public string DescriptionString { get; set; }
public int EnumValue { get; set; }
public DASRestriction[] Restrictions { get; set; }

// Methods
public override string ToString()                 // Returns DisplayString
public static void GetProfileValues(StreamingFilterProfileCollection.DefaultProfiles profile, out string displayName, out string description, out int enumValue, out double ratio)
public double GetDSPFilterRate(double sps, string hwType)

DSPFilterType

Implementation of IStreamingFilterProfile representing a specific DSP filter type.

public class DSPFilterType : IStreamingFilterProfile

// Constructors
public DSPFilterType()
public DSPFilterType(DSPFilterCollection.DSPFilterDefaults filter, DASRestriction[] restrictions)
public DSPFilterType(int enumValue, string displayString, string descriptionString, double ratio, DASRestriction[] restrictions)

// Constants
public const int S6A_CAP = 20480;                 // SPS threshold for SLICE6_AIR fallback to AAF

// Static Methods
public static Tuple<int, int>[] Get6PButterWorthLegacyTable()   // Returns breakpoints/fC table for S6A/BR
public static double GetLegacytDSPFilterRate(double sps, string hwType)
public static void GetProfileValues(DSPFilterCollection.DSPFilterDefaults filter, out string displayName, out string description, out int enumValue, out double ratio)

// Instance Methods
public double GetDSPFilterRate(double sps, string hwType)
public override string ToString()

DSPFilterCollection

Thread-safe singleton collection of DSPFilterType objects with XML persistence.

public class DSPFilterCollection : Collection<DSPFilterType>

// Static Method
public static DSPFilterCollection GetDSPFilterCollection()   // Thread-safe singleton access

// Constants
public const int BUTTERWORTH = 13;
public const int FIR45TAP = 14;
public const int NONE = 0;

// Enum
public enum DSPFilterDefaults
{
    [Display(Name ="None", Description = "Default and legacy setting for streaming")]
    None = 0,
    [Display(Name = "6th IIR Butterworth", Description = "6 - pole IIR Butterworth Low Pass")]
    Butterworth = 13,
    [Display(Name = "45-Tap FIR", Description = "finite impulse response filter with 45 taps")]
    FIR = 14
}

// Instance Method
public DSPFilterType GetFilter(string s)          // Returns matching filter,