52 lines
1.6 KiB
C#
52 lines
1.6 KiB
C#
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;
|
|
}
|
|
}
|