5.3 KiB
source_files, generated_at, model, schema_version, sha256
| source_files | generated_at | model | schema_version | sha256 | ||
|---|---|---|---|---|---|---|
|
2026-04-16T03:19:36.720501+00:00 | Qwen/Qwen3-Coder-Next-FP8 | 1 | 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):CheckingArmStateCheckingForDASCheckingForDataClearingFlashDisarmedDownloadingDownloadCleaningUpDownloadFinishedFailedFaultedGettingEventInfoIDLE(note: uppercase)PostTestProcessingPreparingForArmingReadyForDownloadRearmingRecordingWaitingForIntervalWaitingForScheduleWaitingForTriggerStreaming
Note
: The enum is nested inside a non-generic container class
ArmStateMachineStates. The actual type used in code isArmStateMachineStates.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](fromSystem.ComponentModel), but no runtime enforcement ensures descriptions match expected UI text. - The
IDLEstate 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.Commonnamespace 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.Coreor similar)
- UI layer (e.g., WPF/WinForms/Xamarin projects referencing
- 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.
- Not inferable from source alone, but given the enum names, consumers are expected to include:
5. Gotchas
-
Capitalization Inconsistency:
IDLEis uppercase while all otherArmStateMachineStates.Statesmembers 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., betweenArmDisarmandTrigger), existing serialized data or persisted state may become misaligned. -
ArmStateMachineStatesis 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. -
DescriptionAttributes 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.)