--- source_files: - Common/DTS.CommonCore/Interface/BuildTestSetup/IBuildTestSetup.cs generated_at: "2026-04-16T02:22:58.506403+00:00" model: "Qwen/Qwen3-Coder-Next-FP8" schema_version: 1 sha256: "5d29553a439a7fc1" --- # BuildTestSetup ### **Purpose** This module defines the `IBuildTestSetup` interface, which serves as the contract for build/test configuration data in the DTS (Data Acquisition and Test System) framework. It encapsulates a comprehensive set of user-configurable parameters governing test execution behavior—such as device identification, acquisition settings, diagnostic checks, export formats, and upload/download behavior—enabling serialization, UI binding, and runtime configuration of test setups. As it extends `INotifyPropertyChanged`, it is designed for data-binding scenarios (e.g., UI forms) where real-time updates to configuration changes are required. --- ### **Public Interface** All members are properties; no methods are declared in this interface. #### **Core Metadata Properties** - `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 instance. - `string SetupDescription { get; set; }` Optional descriptive text for the setup. - `string LastModified { get; set; }` Timestamp (as string) of the last modification to the setup. - `string LastModifiedBy { get; set; }` Identifier (e.g., username) of the last modifier. #### **Test Execution Control Properties** - `string AutomaticMode { get; set; }` Enables/disables automatic test mode. - `string AutomaticModeDelay { get; set; }` Delay (as string) before automatic mode starts. - `string AutoArm { get; set; }` Enables/disables automatic arming of the test. - `string QuitTestWithoutWarning { get; set; }` If true, permits exiting the test without user confirmation. - `string Streaming { get; set; }` Enables/disables streaming mode (continuous data acquisition). - `string UploadData { get; set; }` Enables/disables post-test data upload. - `string UploadDataFolder { get; set; }` Target folder path for uploaded data. - `string DownloadFolder { get; set; }` Folder path for downloading test data. #### **Diagnostic & Safety Checks** - `string WarnOnBatteryFail { get; set; }` Triggers warning if battery check fails. - `string StrictDiagnostics { get; set; }` Enforces strict diagnostic compliance (e.g., abort on minor failures). - `string RequireConfirmationOnErrors { get; set; }` Requires user confirmation before proceeding after an error. - `string PerformArmChecklist { get; set; }` Enables/disables the pre-arm checklist. - `string RequireAllUnitsPassArmCheckList { get; set; }` If true, *all* units must pass the checklist before arming. - `string CheckInputVoltage { get; set; }` Enables input voltage check during diagnostics. - `string CheckBatteryVoltage { get; set; }` Enables battery voltage check. - `string CheckSquibResistance { get; set; }` Enables squib (pyro) resistance check. - `string MeasureSquibResistances { get; set; }` Explicitly enables squib resistance *measurement* (distinct from check). - `string CheckSensorIds { get; set; }` Enables sensor ID validation. - `string CheckStartEventLines { get; set; }` Validates start event line states. - `string CheckTiltSensor { get; set; }` Enables tilt sensor diagnostics. - `string CheckTemperature { get; set; }` Enables temperature sensor diagnostics. - `string TriggerCheckStep { get; set; }` Enables/disables a dedicated trigger verification step. - `string PostTestDiagnostics { get; set; }` Enables diagnostics run after test completion. #### **Data Acquisition Configuration** - `string ViewRealtime { get; set; }` Enables/disables real-time data visualization. - `string RecordingMode { get; set; }` Specifies recording mode (e.g., continuous, event-triggered). - `string SamplesPerSecond { get; set; }` Sampling rate (as string). - `string PreTriggerSeconds { get; set; }` Duration of pre-trigger buffer (seconds). - `string PostTriggerSeconds { get; set; }` Duration of post-trigger buffer (seconds). - `string NumberOfEvents { get; set; }` Maximum number of events to record. - `string WakeUpMotionTimeout { get; set; }` Timeout (seconds) for motion-based wake-up detection. - `string AllowSensorIdToBlankChannel { get; set; }` If true, permits mapping sensor IDs to blank/unconfigured channels. - `string ExcitationWarmupTimeMS { get; set; }` Warm-up delay (ms) for sensor excitation before acquisition. - `string UseTestEngineerDetails { get; set; }` If true, embeds test engineer identity in output data. #### **ROI (Region of Interest) & Download Settings** - `string ROIDownload { get; set; }` Enables ROI-based data download. - `string ViewROIDownload { get; set; }` Enables ROI download visualization. - `string ROIStart { get; set; }` Start time (as string, likely seconds) for ROI. - `string ROIEnd { get; set; }` End time (as string) for ROI. #### **Export Configuration** - `string Export { get; set; }` Enables/disables data export. - `string ExportFolder { get; set; }` Output directory for exported files. - `string UseLabDetails { get; set; }` If true, includes lab-specific metadata in exports. - `string UseCustomerDetails { get; set; }` If true, includes customer-specific metadata in exports. - `string UserTags { get; set; }` Custom tags to embed in exported data. - `string CalibrationBehavior { get; set; }` Controls calibration application during export (e.g., raw, calibrated). - `string SuppressMissingSensorsWarning { get; set; }` Suppresses warnings for missing sensors during export. - `string NotAllChannelsRealTime { get; set; }` Indicates not all channels are available in real-time (affects UI/logic). - `string NotAllChannelsViewer { get; set; }` Indicates not all channels are available in post-processing viewer. - `string AllowMissingSensors { get; set; }` Permits test completion despite missing sensors. ##### **Export Format Flags** *Each `Export*Desired` property is a string flag indicating whether a specific export format is requested.* - `ExportCh10FilteredEUDesired`, `ExportChryslerDDASDesired`, `ExportCSVADCDesired`, `ExportCSVFilteredDesired`, `ExportCSVMVDesired`, `ExportCSVUnfilteredDesired`, `ExportDiademADCDesired`, `ExportHDFADCDesired`, `ExportHDFMVDesired`, `ExportHDFUnfilteredDesired`, `ExportISOFilteredDesired`, `ExportISOUnfilteredDesired`, `ExportRDFADCDesired`, `ExportTDASADCDesired`, `ExportTDMSADCDesired`, `ExportToyotaUnfilteredDesired`, `ExportTSVFilteredDesired`, `ExportTSVUnfilteredDesired`, `ExportXLSXFilteredDesired`, `ExportXLSXUnfilteredDesired`, `ExportASCDesired` Boolean-like string values (e.g., `"True"`/`"False"`) indicating inclusion of the respective export format. *Note: Several commented-out properties (e.g., `ExportCh10UnfilteredEUDesired`, `ExportHDFFilteredDesired`) suggest historical or deprecated formats.* #### **Grouping & UI** - `List Groups { get; set; }` Collection of `GroupXMLClass` objects defining logical groupings of channels or tests. - `string CommonStatusLine { get; set; }` Shared status message displayed across UI components. --- ### **Invariants** - **All properties are `string`-typed**, even those logically representing booleans (e.g., `"True"`/`"False"`) or numbers (e.g., `"1000"` for `SamplesPerSecond`). Parsing is deferred to consumers. - **`Groups` must be non-null** when accessed; implementations must initialize it (e.g., in constructor) to avoid `NullReferenceException`. - **`INotifyPropertyChanged` compliance**: Any change to a property must raise `PropertyChanged` with the correct property name. - **No validation is enforced by the interface itself**; validation rules (e.g., numeric range checks) are implemented externally. - **Commented-out properties are not part of the interface** and must not be assumed to exist. --- ### **Dependencies** - **Direct Dependencies**: - `System.ComponentModel` (for `INotifyPropertyChanged`). - `System.Collections.Generic` (for `List`). - `DTS.Common.XMLUtils` (specifically `GroupXMLClass`, used in the `Groups` property). - **Inferred Consumers**: - UI layers (e.g., WPF/WinForms) binding to this interface for configuration forms. - Serialization/deserialization modules (e.g., XML/JSON converters) that persist/load `IBuildTestSetup` instances. - Test execution engine that reads properties to configure acquisition, diagnostics, and export pipelines. - **Inferred Dependents**: - Implementations (e.g., `BuildTestSetup` class) in the same or related modules. - XML serialization utilities (via `GroupXMLClass` dependency) for saving/loading setups. --- ### **Gotchas** - **String-based booleans/numbers**: Consumers must parse values (e.g., `bool.Parse(Export)`) and handle format exceptions—no built-in type safety. - **Deprecated export formats**: Commented-out properties (e.g., `ExportSomatFilteredDesired`) indicate legacy formats no longer supported; avoid referencing them. - **Ambiguous semantics**: Properties like `AutomaticMode` and `RecordingMode` lack documentation on valid values (e.g., `"On"`, `"Auto"`, `"Manual"`); these must be inferred from implementation or external docs. - **No validation guarantees**: The interface does not enforce constraints (e.g., `SamplesPerSecond` must be numeric), leading to potential runtime errors if consumers assume validity. - **`CommonStatusLine` purpose unclear**: Its role as a shared status string suggests UI coordination, but its lifecycle (e.g., who sets/updates it) is not defined here. - **Missing `ExportFormat` property**: The commented-out `ExportFormat` suggests a previous unified format selector, now replaced by per-format flags—potential source of confusion during migration. *None identified beyond the above.*