Files

216 lines
11 KiB
Markdown
Raw Permalink Normal View History

2026-04-17 14:55:32 -04:00
---
source_files:
- Common/DTS.Common/Interface/BuildTestSetup/IBuildTestSetup.cs
generated_at: "2026-04-16T03:02:19.876663+00:00"
model: "Qwen/Qwen3-Coder-Next-FP8"
schema_version: 1
sha256: "f641e5d3258e537a"
---
# BuildTestSetup
## Documentation Page: `IBuildTestSetup`
---
### 1. Purpose
`IBuildTestSetup` defines the contract for a configuration object used to capture and manage user-defined settings for a build/test setup in the DTS (Data Transfer System) framework. It serves as the central data model for test configuration—encompassing hardware setup parameters (e.g., serial number, diagnostics checks), acquisition settings (e.g., sampling rate, trigger timing), export/download preferences (e.g., file formats, folders), and operational behavior (e.g., automatic mode, arm checklist enforcement). As an `INotifyPropertyChanged` interface, it supports data binding and reactive updates in UI or orchestration layers. This interface decouples configuration storage (e.g., XML, database) from the logic that consumes it, enabling modular and testable test setup workflows.
---
### 2. Public Interface
All members are read-write properties of type `string`, except `Groups`, which is a `List<GroupXMLClass>`.
#### Core Identification & Metadata
- `string DASSerialNumber { get; set; }`
Serial number of the DAS (Data Acquisition System) unit under test.
- `string SetupName { get; set; }`
Human-readable name for the test setup configuration.
- `string SetupDescription { get; set; }`
Free-text description of the setup.
- `string LastModified { get; set; }`
Timestamp (as string) of last modification.
- `string LastModifiedBy { get; set; }`
Identifier (e.g., username) of last modifier.
#### Operational Mode & Behavior
- `string AutomaticMode { get; set; }`
Enables/disables automatic test execution mode (likely `"True"`/`"False"`).
- `string AutomaticModeDelay { get; set; }`
Delay (in seconds or ms, as string) before automatic mode proceeds.
- `string QuitTestWithoutWarning { get; set; }`
If `"True"`, skip confirmation prompts when quitting test.
- `string AutoArm { get; set; }`
Enables/disables automatic arming of the test.
- `string Streaming { get; set; }`
Enables/disables real-time streaming mode.
#### Diagnostics & Safety Checks
- `string StrictDiagnostics { get; set; }`
Enforces strict diagnostic requirements (e.g., fail on minor deviations).
- `string RequireConfirmationOnErrors { get; set; }`
Requires user confirmation before proceeding after an error.
- `string RequireAllUnitsPassArmCheckList { get; set; }`
If `"True"`, all units must pass the arm checklist before proceeding.
- `string SuppressMissingSensorsWarning { get; set; }`
Suppresses warnings for missing sensors.
- `string AllowMissingSensors { get; set; }`
Permits proceeding with missing sensors (likely `"True"`/`"False"`).
- `string AllowSensorIdToBlankChannel { get; set; }`
Allows mapping a sensor ID to an empty/blank channel.
#### Pre-Arm Checklist Items (each `"True"`/`"False"` or similar)
- `string PerformArmChecklist { get; set; }`
Enables the arm checklist.
- `string CheckInputVoltage { get; set; }`
- `string CheckBatteryVoltage { get; set; }`
- `string CheckSquibResistance { get; set; }`
- `string CheckSensorIds { get; set; }`
- `string CheckStartEventLines { get; set; }`
- `string CheckTiltSensor { get; set; }`
- `string CheckTemperature { get; set; }`
- `string MeasureSquibResistances { get; set; }`
#### Trigger & Acquisition Settings
- `string TriggerCheckStep { get; set; }`
Enables/disables a dedicated trigger verification step.
- `string ViewRealtime { get; set; }`
Enables/disables real-time view of data during test.
- `string RecordingMode { get; set; }`
Recording mode (e.g., `"Continuous"`, `"EventTriggered"`).
- `string SamplesPerSecond { get; set; }`
Sampling rate (as string, likely numeric).
- `string PreTriggerSeconds { get; set; }`
Duration (in seconds) of pre-trigger buffer.
- `string PostTriggerSeconds { get; set; }`
Duration (in seconds) of post-trigger recording.
- `string NumberOfEvents { get; set; }`
Max number of events to record (as string).
- `string WakeUpMotionTimeout { get; set; }`
Timeout (as string) for wake-up motion detection.
#### ROI (Region of Interest) & Download
- `string ROIDownload { get; set; }`
Enables ROI-based download.
- `string ViewROIDownload { get; set; }`
Enables viewing ROI download progress.
- `string ROIStart { get; set; }`
Start time/index of ROI (as string).
- `string ROIEnd { get; set; }`
End time/index of ROI (as string).
- `string DownloadAll { get; set; }`
Enables downloading all data.
- `string ViewDownloadAll { get; set; }`
Enables viewing full download progress.
- `string DownloadFolder { get; set; }`
Target folder for downloads.
#### Export Configuration
- `string Export { get; set; }`
Enables/disables export.
- `string ExportFolder { get; set; }`
Output directory for exported files.
- `string ExportCh10FilteredEUDesired { get; set; }`
Flag indicating desire to export filtered EU data in CH10 format.
- `string ExportChryslerDDASDesired { get; set; }`
Flag for Chrysler DDAS export.
- `string ExportCSVADCDesired { get; set; }`
- `string ExportCSVFilteredDesired { get; set; }`
- `string ExportCSVMVDesired { get; set; }`
- `string ExportCSVUnfilteredDesired { get; set; }`
- `string ExportDiademADCDesired { get; set; }`
- `string ExportHDFADCDesired { get; set; }`
- `string ExportHDFMVDesired { get; set; }`
- `string ExportHDFUnfilteredDesired { get; set; }`
- `string ExportISOFilteredDesired { get; set; }`
- `string ExportISOUnfilteredDesired { get; set; }`
- `string ExportRDFADCDesired { get; set; }`
- `string ExportTDASADCDesired { get; set; }`
- `string ExportTDMSADCDesired { get; set; }`
- `string ExportToyotaUnfilteredDesired { get; set; }`
- `string ExportTSVFilteredDesired { get; set; }`
- `string ExportTSVUnfilteredDesired { get; set; }`
- `string ExportXLSXFilteredDesired { get; set; }`
- `string ExportXLSXUnfilteredDesired { get; set; }`
- `string ExportASCDesired { get; set; }`
Flag for ASCII export.
> **Note**: Several export-related properties are commented out in the source (e.g., `ExportFormat`, `ExportCh10UnfilteredEUDesired`, `ExportHDFFilteredDesired`, etc.). These are *not* part of the interface and must not be assumed to exist.
#### Reporting & Metadata
- `string UseLabDetails { get; set; }`
Enables inclusion of lab-specific metadata in reports.
- `string UseCustomerDetails { get; set; }`
Enables inclusion of customer-specific metadata.
- `string UseTestEngineerDetails { get; set; }`
Enables inclusion of test engineer details.
- `string UserTags { get; set; }`
Free-form tags for categorization/search.
- `string CalibrationBehavior { get; set; }`
Controls calibration handling (e.g., `"Apply"`, `"Ignore"`, `"Prompt"`).
- `string PostTestDiagnostics { get; set; }`
Enables post-test diagnostic reporting.
#### UI/Display State
- `string CommonStatusLine { get; set; }`
Status text displayed in a common UI status bar.
- `string RealtimeCharts { get; set; }`
Enables/disables real-time chart rendering.
- `string UploadData { get; set; }`
Enables data upload after test.
- `string UploadDataFolder { get; set; }`
Target folder for uploaded data.
- `string NotAllChannelsRealTime { get; set; }`
Indicates not all channels are available in real-time view.
- `string NotAllChannelsViewer { get; set; }`
Indicates not all channels are available in post-test viewer.
#### Groups
- `List<GroupXMLClass> Groups { get; set; }`
Collection of channel/group definitions (type `GroupXMLClass`, defined in `DTS.Common.XMLUtils`).
---
### 3. Invariants
- **All properties are strings**: Even logically boolean or numeric values (e.g., `AutomaticMode`, `SamplesPerSecond`) are stored as `string`. Consumers must parse or interpret these values.
- **`INotifyPropertyChanged` compliance**: Implementations must raise `PropertyChanged` events for all property changes to support binding.
- **`Groups` may be null or empty**: No invariant enforces non-nullity or non-emptiness of `Groups`.
- **No validation on property values**: The interface itself does not enforce format, range, or allowed values for any property (e.g., `SamplesPerSecond` could be `"abc"`). Validation is deferred to consumers.
- **Export flags are independent**: Each `*Desired` export flag is independent; no mutual exclusivity or dependency is declared.
---
### 4. Dependencies
- **Direct Dependencies**:
- `System.ComponentModel` (for `INotifyPropertyChanged`)
- `System.Collections.Generic` (for `List<T>`)
- `DTS.Common.XMLUtils.GroupXMLClass` (type used in `Groups` property)
- **Inferred Consumers**:
- UI layers (e.g., WPF, WinForms) binding to this interface.
- Serialization/deserialization modules (e.g., XML/JSON converters) that read/write `IBuildTestSetup` instances.
- Test orchestration logic that consumes configuration to drive test execution.
- Export/download modules that inspect `*Desired` flags and `ExportFolder`/`DownloadFolder`.
- **Inferred Dependents**:
- Any class implementing `IBuildTestSetup` (e.g., `BuildTestSetupImpl`, `ConfigManager`).
- XML persistence modules (e.g., classes in `DTS.Common.XMLUtils` that serialize/deserialize `GroupXMLClass`).
---
### 5. Gotchas
- **All properties are strings**: Consumers must handle parsing and validation (e.g., `int.Parse(SamplesPerSecond)`), risking `FormatException` or `OverflowException` if values are malformed.
- **Missing export properties**: Several export-related properties are commented out (e.g., `ExportFormat`, `ExportCh10UnfilteredEUDesired`). Do *not* assume they exist or are accessible.
- **Ambiguous boolean representation**: Boolean flags (e.g., `AutomaticMode`) are strings—likely `"True"`/`"False"`, but could be `"1"`/`"0"` or `"Yes"`/`"No"`. Implementation-specific interpretation is required.
- **No grouping semantics defined**: While `Groups` is exposed, the interface provides no guidance on how `GroupXMLClass` objects map to channels, sensors, or logical groupings. Interpretation depends on `GroupXMLClass`s definition (not provided).
- **No mutability guarantees**: As an interface, it does not specify whether implementations are mutable or thread-safe. Consumers should assume mutable unless documented otherwise.
- **`CommonStatusLine` is UI-specific**: This property suggests tight coupling to UI state; its use in non-UI contexts may be inappropriate or require special handling.
- **Historical artifacts**: The presence of commented-out properties (`ExportFormat`, `ExportSomat*`, etc.) suggests evolving requirements or legacy cleanup in progress—review implementation history for context.
> **None identified from source alone.**
> *(Note: The above "Gotchas" are derived from observed patterns and omissions in the interface definition.)*