120 lines
5.3 KiB
Markdown
120 lines
5.3 KiB
Markdown
|
|
---
|
|||
|
|
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 subsystem’s 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 subsystem’s 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.)*
|