9.2 KiB
source_files, generated_at, model, schema_version, sha256
| source_files | generated_at | model | schema_version | sha256 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
2026-04-17T15:47:31.625355+00:00 | zai-org/GLM-5-FP8 | 1 | a48b0e1e9bcfddff |
Documentation: User Settings Module
1. Purpose
This module provides a user settings and property management system for the DataPRO application. It enables persistent storage of user-specific configuration in a database, with support for localized display in property grids via custom attributes. The module includes type converters for specialized UI editing (e.g., sample rate selection), an optimization settings system for hardware-specific transfer speed configurations, and comprehensive enumeration of all property categories, orders, and IDs used throughout the application for serialization and localization.
2. Public Interface
OptimizationSettings (Users.UserSettings namespace)
A class for managing hardware optimization settings, deserialized from XML.
| Member | Signature | Description |
|---|---|---|
Settings |
List<Setting> |
Collection of hardware-specific settings. |
OptimizationSettings() |
Constructor | Default constructor. |
OptimizationSettings(string xmlOptimizationSettings) |
Constructor | Deserializes settings from XML string using XmlToObject<OptimizationSettings>. |
Nested Class: Setting
HardwareType(HardwareTypes): The hardware type for this setting.TransferSpeedSampleRateSettings(List<TransferSpeedSampleRate>): Collection of sample rate configurations.
Nested Class: TransferSpeedSampleRate
MaxTransferSpeed(float): Maximum transfer speed threshold.MinTransferSpeed(float): Minimum transfer speed threshold.SampleRate(double): The sample rate value.
CategoryAttributeEx (DTS.Slice.Users.UserSettings namespace)
Extends CategoryAttribute to provide localized category names via StringResources.
| Member | Signature | Description |
|---|---|---|
CategoryAttributeEx(PropertyEnums.PropertyCategories category) |
Constructor | Creates attribute from category enum. |
GetCategory() |
PropertyEnums.PropertyCategories |
Returns the stored category enum value. |
GetLocalizedString(string value) |
override string |
Looks up localized string via StringResources.ResourceManager.GetString(value); returns "##ResourceNotFound##" + value if not found. |
DisplayAttributeEx (DTS.Slice.Users.UserSettings namespace)
Extends DisplayNameAttribute to provide localized display names.
| Member | Signature | Description |
|---|---|---|
DisplayAttributeEx(PropertyEnums.PropertyIds propertyId) |
Constructor | Creates attribute from property ID enum. |
DisplayAttributeEx(string propertyId) |
Constructor | Creates attribute from string property ID. |
DisplayName |
override string |
Returns localized string via StringResources.ResourceManager.GetString({propertyId}_DisplayName); returns "##DisplayNameNotFound##" + {propertyId} if not found. |
DescriptionAttributeEx (DTS.Slice.Users.UserSettings namespace)
Extends DescriptionAttribute to provide localized descriptions.
| Member | Signature | Description |
|---|---|---|
DescriptionAttributeEx(PropertyEnums.PropertyIds propertyId) |
Constructor | Creates attribute from property ID enum. |
DescriptionAttributeEx(string propertyId) |
Constructor | Creates attribute from string property ID. |
Description |
override string |
Returns localized string via StringResources.ResourceManager.GetString({propertyId}_Description); returns "##DescriptionNotFound##" + {propertyId} if not found. |
PropertyIdAttribute (DTS.Slice.Users.UserSettings namespace)
Custom attribute for associating properties with unique IDs for database serialization.
| Member | Signature | Description |
|---|---|---|
PropertyIdAttribute(PropertyEnums.PropertyIds propertyId) |
Constructor | Creates attribute with specified property ID. |
GetPropertyId(PropertyInfo o) |
static int |
Returns the integer property ID from a PropertyInfo; throws NullReferenceException if o is null or lacks the attribute. |
GetPropertyIdEnum(PropertyInfo o) |
static PropertyEnums.PropertyIds |
Returns the property ID as enum from a PropertyInfo; throws NullReferenceException if o is null or lacks the attribute. |
SampleRateConverter (DTS.Slice.Users.UserSettings namespace)
Type converter for sample rate selection in property grids, providing a dropdown of valid rates from database configuration.
| Member | Signature | Description |
|---|---|---|
AvailableSampleRatesDefault |
static int[] |
Default sample rates array (24 values from 5 to 1,000,000). |
GetStandardValuesSupported(ITypeDescriptorContext context) |
override bool |
Returns true. |
GetStandardValuesExclusive(ITypeDescriptorContext context) |
override bool |
Returns true (only listed values allowed). |
GetStandardValues(ITypeDescriptorContext context) |
override StandardValuesCollection |
Builds list from SettingsDB.GetGlobalValueInt using keys SPSINDEX_{i} for count from SPSINDICE_COUNT. |
UserHistory (DTS.Slice.Users.UserSettings namespace)
User-specific properties persisted to database with property grid display support.
| Member | Signature | Description |
|---|---|---|
UsersCurrentTestSetup |
string |
Current test setup name. Default: "". ReadOnly. |
LastRunTestSetup |
string |
Last executed test setup. Default: "". ReadOnly. |
LastUsedSampleRate |
double |
Last used sample rate. Default: 20000D. ReadOnly. |
ApplySensorDataToBlankChannels |
bool |
Whether to apply sensor data to blank channels. Default: true. ReadOnly. |
ApplyHardwareAssignmentInHardwareDisco |
bool |
Hardware assignment behavior. Default: true. ReadOnly, Not Browsable. |
ShowOptionsWhenApplyingSensorToBlankChannel |
bool |
Show options dialog behavior. Default: true. ReadOnly. |
CreateAnyMissingUserHistory() |
static void |
Creates missing property entries in DefaultProperties table and calls TestSetupDefaults.CreateMissingUserSettingProperties. |
PropertyEnums (DTS.Slice.Users.UserSettings namespace)
Abstract class containing enums for property metadata.
| Enum | Description |
|---|---|
PropertyCategories |
14 categories: TestInfo, TestDetails, DiagnosticOptions, RealtimeOptions, ArmChecklist, ExportOptions, UploadOptions, UserHistory, ClockSyncOptions, UARTOptions, EmbeddedSensorSampleRateOptions, WakeMethodOptions, EmbeddedSensorTriggerOptions, TestHistoryOptions. |
PropertyOrders |
Defines ordering within categories; values named descriptively (e.g., AutoExpandInfoSections, DefaultSampleRate). |
PropertyIds |
Unique integer IDs for properties (range 102–502). Examples: DefaultUploadEnabled = 102, DefaultTestSampleRate = 103, UsersCurrentTestSetup = 401, DefaultCANFileType = 502. |
3. Invariants
- Property ID Uniqueness: Each value in
PropertyEnums.PropertyIdsmust be unique; these serve as database keys. - Attribute Requirement: All properties in
UserHistorymust be decorated withPropertyIdAttributeforCreateAnyMissingUserHistory()to function correctly. - Localization Key Format: Display names follow
{PropertyId}_DisplayNamepattern; descriptions follow{PropertyId}_Descriptionpattern. - Database Storage Format: Per XML doc comment, "data should always be stored in invariant form in the db."
- Sample Rate Validity:
SampleRateConverteronly includes values wherevalue > 0and excludes duplicates. - Fallback Chain: Settings fall back: user-specific value → database default → code-specified default (per XML doc comment).
4. Dependencies
This Module Depends On:
- DTS.Common.Enums.Hardware -
HardwareTypesenum used inOptimizationSettings.Setting - DTS.Common.Utilities.Xml -
XmlToObject<T>for XML deserialization - DTS.Common.Settings -
SettingsDB.GetGlobalValueInt()for sample rate configuration - DTS.Common.Storage -
DbOperationsfor database access (connection, commands, parameters) - System.ComponentModel - Base attributes (
CategoryAttribute,DisplayNameAttribute,DescriptionAttribute),DoubleConverter, type descriptor infrastructure - System.Data -
SqlDbType,DataSet,DataRowfor database operations - System.Reflection -
PropertyInfofor attribute retrieval
External Dependencies (Referenced but Not Defined in Source):
StringResources.ResourceManager- Used for localization lookupsTestSetupDefaults-GetDefaultValueAsString(),CreateMissingUserSettingProperties()
5. Gotchas
- Namespace Inconsistency: Files declare different namespaces (
Users.UserSettingsvsDTS.Slice.Users.UserSettings). Several