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

5.3 KiB
Raw Permalink Blame History

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
Common/DTS.Common/Enums/TSRAIRGo/NavigationButtonId.cs
Common/DTS.Common/Enums/TSRAIRGo/ArmStateMachineStates.cs
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 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.)