Files
2026-04-17 14:55:32 -04:00

99 lines
5.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
source_files:
- Common/DTS.Common/Interface/TSRAIRGo/INavigationButtonInfo.cs
- Common/DTS.Common/Interface/TSRAIRGo/ArmStateMachineStates.cs
generated_at: "2026-04-16T02:58:05.648513+00:00"
model: "Qwen/Qwen3-Coder-Next-FP8"
schema_version: 1
sha256: "4d4fb80c3a1cb6b2"
---
# TSRAIRGo
## Documentation: `INavigationButtonInfo` Interface and `ArmStateMachineStates` Enum
---
### 1. Purpose
This module defines core data structures for UI state representation in the TSRAIRGo application. Specifically, the `INavigationButtonInfo` interface standardizes how navigation buttons are modeled—enabling consistent binding and control of button properties (e.g., text, tooltip, enabled state) across the UI layer. The `ArmStateMachineStates` enum captures the discrete operational states of the arm subsystems finite state machine (FSM), providing a typed, descriptive representation of arm lifecycle stages (e.g., disarmed, recording, faulted). Together, they support UI responsiveness to arm state changes and button state management.
---
### 2. Public Interface
#### `INavigationButtonInfo` interface
Defined in `DTS.Common.Interface.TSRAIRGo.INavigationButtonInfo`
- **`NavigationButtonId Id { get; }`**
Read-only identifier for the button. Used to uniquely reference the button in logic or event handling.
- **`string Text { get; set; }`**
Read-write display text shown on the button.
- **`string Tooltip { get; set; }`**
Read-write tooltip text shown on hover (or equivalent UI affordance).
- **`bool Enabled { get; set; }`**
Read-write flag indicating whether the button is interactive (i.e., not disabled).
- **`bool ShowBorder { get; set; }`**
Read-write flag controlling visual rendering—specifically, whether the button should display a border.
#### `ArmStateMachineStates.States` enum
Defined in `DTS.Common.Enums.TSRAIRGo.ArmStateMachineStates.States`
- **`CheckingArmState`**
Initial state verifying arm readiness.
- **`Disarmed`**
Arm is inactive and safe.
- **`IDLE`**
Arm is armed but not actively recording.
- **`PreparingForArming`**
Pre-flight checks and setup before arming.
- **`ClearingFlash`**
Flash memory is being cleared (e.g., prior to recording).
- **`WaitingForTrigger`**
Armed and ready, awaiting external trigger.
- **`Recording`**
Data acquisition is in progress.
- **`PostTestProcessing`**
Post-recording cleanup or analysis.
- **`CheckingForData`**
Verifying data integrity or availability post-test.
- **`GettingEventInfo`**
Retrieving event metadata (e.g., timestamps, annotations).
- **`ReadyForDownload`**
Data is ready for export/download.
- **`Faulted`**
An unrecoverable error has occurred; arm is non-operational.
> **Note**: Each enum value is annotated with a `[Description]` attribute (from `System.ComponentModel`) containing a human-readable label.
---
### 3. Invariants
- **`Id` is immutable**: Once instantiated, the `Id` property cannot be modified (read-only).
- **`Text`, `Tooltip`, `Enabled`, and `ShowBorder` are mutable**: All other properties are read-write, implying consumers may update them dynamically (e.g., in response to state changes).
- **`Enabled` and `ShowBorder` are boolean flags**: No validation beyond `true`/`false`; no semantic constraints (e.g., `ShowBorder = true` does not imply `Enabled = true`).
- **`ArmStateMachineStates.States` values are exhaustive and mutually exclusive**: The FSM is assumed to be in exactly one state at a time, though the interface does not enforce this.
---
### 4. Dependencies
#### This module depends on:
- `DTS.Common.Enums.TSRAIRGo.NavigationButtonId` (referenced in `INavigationButtonInfo.Id` but *not provided in source*).
- `System.ComponentModel` (for `[Description]` attribute usage in `ArmStateMachineStates`).
#### This module is depended upon by:
- UI components or view models that consume `INavigationButtonInfo` to render navigation controls.
- State machine logic that maps `ArmStateMachineStates` to UI updates (e.g., enabling/disabling buttons based on current arm state).
- Serialization/deserialization logic (e.g., for persisting button states or state transitions).
> **Note**: The `NavigationButtonId` type is referenced but not defined in the provided sources. Its definition is required to fully understand `INavigationButtonInfo`.
---
### 5. Gotchas
- **`NavigationButtonId` is undefined here**: Its type (e.g., `enum`, `struct`, `class`) and possible values are unknown from the provided sources. This is critical for interpreting `Id` semantics.
- **`ArmStateMachineStates.States` is nested**: The enum is declared inside a class (`ArmStateMachineStates`), not as a top-level type. Consumers must reference it as `ArmStateMachineStates.States`.
- **No validation on `Text`/`Tooltip`**: Empty strings or null values are permitted unless enforced elsewhere (e.g., in UI binding or view logic).
- **`ShowBorder` semantics are ambiguous**: Its purpose (e.g., visual styling, accessibility, theming) is not documented; behavior may vary by UI framework.
- **No state transition guarantees**: The enum describes states but does not define valid transitions or timing constraints.
- **`[Description]` attributes are metadata-only**: They do not affect runtime behavior unless explicitly consumed (e.g., via reflection for localization or logging).
None identified beyond the above.