Files
DP44/enriched-qwen3-coder-next/Common/DTS.Common/Enums/TSRAIRGo.md

120 lines
5.3 KiB
Markdown
Raw Normal View History

2026-04-17 14:55:32 -04:00
---
source_files:
- Common/DTS.Common/Enums/TSRAIRGo/NavigationButtonId.cs
- Common/DTS.Common/Enums/TSRAIRGo/ArmStateMachineStates.cs
generated_at: "2026-04-16T03:19:36.720501+00:00"
model: "Qwen/Qwen3-Coder-Next-FP8"
schema_version: 1
sha256: "59ccdc367292f870"
---
# TSRAIRGo
## Documentation Page: TSRAIRGo Navigation & Arm State Machine Enums
---
### 1. **Purpose**
This module defines core enumerations used in the TSRAIRGo application to represent navigation button identifiers and discrete states of the arm subsystems finite state machine (FSM). It serves as a shared contract between UI components (e.g., button handlers, status displays) and the arm control logic, ensuring consistent state and action semantics across the system. The `NavigationButtonId` enum maps UI interactions to logical actions, while `ArmStateMachineStates` provides the canonical set of states governing arming, disarming, data acquisition, and download workflows.
---
### 2. **Public Interface**
#### `NavigationButtonId` Enum
Defined in: `DTS.Common.Enums.TSRAIRGo.NavigationButtonId`
- **Members** (all `public`):
- `TestId` → Represents a test/debug button.
- `ArmDisarm` → Toggles arming/disarming state.
- `Trigger` → Manually initiates a test trigger.
- `Download` → Initiates or manages data download.
- `ViewData` → Opens data view interface.
- `ExportData` → Exports collected data.
- `Help` → Opens help documentation or UI.
- `Dashboard` → Navigates to the main dashboard view.
#### `ArmStateMachineStates.States` Nested Enum
Defined in: `DTS.Common.Enums.TSRAIRGo.ArmStateMachineStates`
- **Members** (all `public`, with `[Description]` attributes):
- `CheckingArmState`
- `CheckingForDAS`
- `CheckingForData`
- `ClearingFlash`
- `Disarmed`
- `Downloading`
- `DownloadCleaningUp`
- `DownloadFinished`
- `Failed`
- `Faulted`
- `GettingEventInfo`
- `IDLE` *(note: uppercase)*
- `PostTestProcessing`
- `PreparingForArming`
- `ReadyForDownload`
- `Rearming`
- `Recording`
- `WaitingForInterval`
- `WaitingForSchedule`
- `WaitingForTrigger`
- `Streaming`
> **Note**: The enum is nested inside a non-generic container class `ArmStateMachineStates`. The actual type used in code is `ArmStateMachineStates.States`.
---
### 3. **Invariants**
- **`NavigationButtonId`**:
- All members are compile-time constants; no runtime mutation is possible.
- Values are implicitly assigned starting from `0` (`TestId = 0`, `ArmDisarm = 1`, ..., `Dashboard = 7`).
- No validation is performed on usage; callers must ensure button IDs map to valid UI elements.
- **`ArmStateMachineStates.States`**:
- The set of states is exhaustive for the arm subsystems lifecycle.
- Each state has a human-readable description via `[Description]` (from `System.ComponentModel`), but **no runtime enforcement** ensures descriptions match expected UI text.
- The `IDLE` state is intentionally capitalized (unlike PascalCase convention), suggesting legacy or external convention adherence.
---
### 4. **Dependencies**
- **Imports/Usings**:
- `System`, `System.Collections.Generic`, `System.Linq`, `System.Text`, `System.Threading.Tasks`, `System.ComponentModel`
→ Indicates usage of standard .NET types (e.g., `DescriptionAttribute`).
- **Module Dependencies**:
- `DTS.Common` namespace suggests this is part of a shared common library (`DTS.Common.dll`).
- Likely consumed by:
- UI layer (e.g., WPF/WinForms/Xamarin projects referencing `DTS.Common`)
- Arm control logic (e.g., `DTS.TSRAIRGo.Core` or similar)
- No direct dependencies on other *TSRAIRGo*-specific enums or classes in the provided files.
- **Consumers**:
- Not inferable from source alone, but given the enum names, consumers are expected to include:
- View models or UI controllers handling button clicks.
- State machine implementations managing the arm subsystem.
---
### 5. **Gotchas**
- **Capitalization Inconsistency**:
`IDLE` is uppercase while all other `ArmStateMachineStates.States` members follow PascalCase (`CheckingArmState`, `Downloading`, etc.). This may cause issues in string comparisons, serialization, or UI binding if case-sensitive logic is used.
- **No Explicit Values Assigned**:
Both enums rely on implicit integer values. If new members are inserted (e.g., between `ArmDisarm` and `Trigger`), existing serialized data or persisted state may become misaligned.
- **`ArmStateMachineStates` is a Container Class**:
The enum is nested inside a class (`ArmStateMachineStates`) rather than being a top-level enum. This adds verbosity (`ArmStateMachineStates.States.CheckingArmState`) and may indicate legacy design or namespace organization constraints.
- **`Description` Attributes Not Auto-Used**:
While `[Description]` attributes are present, the source provides no evidence of helper methods (e.g., `GetDescription()`) to extract them. Consumers must implement reflection-based extraction if needed.
- **No Validation or Guard Clauses**:
Neither enum includes validation logic (e.g., `TryParse`, range checks). Invalid values (e.g., `(NavigationButtonId)99`) will be accepted at runtime.
- **None identified from source alone.**
*(No other non-obvious behavior, tech debt, or quirks are evident from the provided files.)*