using System; namespace DTS.DASLib.Service.StateMachine { public class HardwareDiscoveryStart : DASStateSelector { private void Start() { OnEnterState(); if (null != Status.HardwareDiscoveryParams.RequeryDevice) { Status.HardwareDiscoveryStatusInfo.RequeryDevice(); } else { Status.HardwareDiscoveryStatusInfo.Ping(); } } private bool CanTransitToDownload() { return CanTransitToConfigure() && Status.HardwareDiscoveryParams.GoToDownload; } private bool CanTransitToConfigure() { return Status.HardwareDiscoveryParams.ProceedWhenDone && (Status.HardwareDiscoveryStatusInfo.AllDASFound || !Status.HardwareDiscoveryParams.RequireAllDASFound); } private bool CanTransitToArm() { return Status.HardwareDiscoveryParams.ProceedWhenDone && Status.HardwareDiscoveryStatusInfo.SomeUnitsInArmState; } public override IDASState StateSelector() { if (CanTransitToDownload()) return States.Instance.Download; if (CanTransitToConfigure()) return States.Instance.Configure; if (CanTransitToArm()) return States.Instance.Arm; return States.Instance.HardwareDiscovery; } public override Action OnEntry { get => Start; } public override State State => State.HardwareDiscoveryStart; } }