init
This commit is contained in:
158
docs/ai/Common/DTS.Common/Classes/DSP.md
Normal file
158
docs/ai/Common/DTS.Common/Classes/DSP.md
Normal file
@@ -0,0 +1,158 @@
|
||||
---
|
||||
source_files:
|
||||
- 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
|
||||
generated_at: "2026-04-17T15:32:03.691764+00:00"
|
||||
model: "zai-org/GLM-5-FP8"
|
||||
schema_version: 1
|
||||
sha256: "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.
|
||||
|
||||
```csharp
|
||||
[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.
|
||||
|
||||
```csharp
|
||||
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.
|
||||
|
||||
```csharp
|
||||
public class DSPFilterRestriction
|
||||
|
||||
// Same constructors and properties as DASRestriction
|
||||
```
|
||||
|
||||
### IStreamingFilterProfile
|
||||
Interface defining the contract for streaming filter profiles.
|
||||
|
||||
```csharp
|
||||
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.
|
||||
|
||||
```csharp
|
||||
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.
|
||||
|
||||
```csharp
|
||||
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.
|
||||
|
||||
```csharp
|
||||
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,
|
||||
Reference in New Issue
Block a user