using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CyberX8_Core
{
    public enum RtState
    {
        Init,

        Initializing,
        Idle,

        Manual,
        Transfer,
        AutoIdle,
        AutoRunning,
        AutoRunningPaused,
        AutoAborting,

        ReturningCassette,

        Cycle,
        PrepareCycle,
        PostCycle,

        SetSpeed,
        Error,
        Reset,

        Processing,
        PostProcess,
        PauseProcess,


        //Maintenance,
        //WaferMapping,
        //Cycling,
        TMCycle,
        SETMCycle,
        SERunning,
        ReturnWafer,
        SETransfer,
        SEReturnWafer
    }
    public enum EFEMSTATE
    {
        Unknown,            // 0
        Homing,             // 1
        Idle,               // 2
        Error,              // 3
        Picking,            // 4
        Placing,            // 5
        Aligning,           // 6
        Mapping,            // 7
        Init,               // 8
        Orgshing,           // 9
        Lifting,            // 10
        InitingAL,          // 11
        InitingRB,          // 12
        Extending,          // 13
        Retracting,         // 14
                            //SettingLamp,        // 15
        Swapping,
        Gotoing,
        Gripping,
        Ungripping,
        Fliping,
        Initializing,
        Vacuuming,
        Retrying,
        ConfirmCompleting,
        ErrorPicking,
        ErrorPlacing,
        RobotCycleing
    }
    public enum PUFSTATE
    {
        Unknown,            // 0
        Homing,       // 1
        Idle,               // 2
        Error,
        Init,
        SwitchOning,
        SwitchOffing,
        Calibrating,
        Picking,
        Placing,
        Positioning,
        GotoRobotPositionForPlace,
        GotoRobotPositionForPick,
        WaitForRobotPlacing,
        WaitForRobotPlace,
        WaitForSwaping,
        WaitForSwap,
        Swaping,
        AferSwapParkStation,
        WaitForRobotPicking,
        WaitForRobotPick,
        BackToPackStationing,
        Retrying,
        ConfirmCompleting,
        Fliping
    }
    public enum LOADERSTATE
    {
        Unknown,            // 0
        Homing,       // 1
        Idle,               // 2
        Error,
        Init,
        Positioning,
        SwitchOning,
        SwitchOffing,
        Loading,
        Unloading,
        InstallCRSing,
        PrepreForPlacing,
        WaitForUnload,
        WaitForLoad,
        WaitForPick,
        Retrying,
        ConfirmCompleting,
        WaitForFlip
    }
    public enum TransporterState
    {
        Unknown,
        Init,
        Initialized,
        Homing,
        Idle,
        Error,
        ErrorGantryPositioning,
        GantryPositioning,
        Positioning,
        SwitchOning,
        SwitchOffing,
        PickUping,
        MovingTo,
        Placing,
        Parking,
        ElevatorUping,
        ElevatorLowing,
        Transfering,
        PickUpMoveToing,
        PickUpMoveToComplete,
        PickUpValidating,
        PickUpValidateComplete,
        ValidateMoveTo, 
        ValidateMoveToComplete,
        GantrySafeMoving,
        Retrying,
        ConfirmCompleting
    }

    public enum SRDState
    {
        Unknown,
        Init,
        Initialized,
        Initializing,
        InitializeHoming,
        Homing,
        Idle,
        Error,
        SwitchOning,
        SwitchOffing,
        Positioning,
        Aborting,
        Abort,
        Rotating,
        Stopping,
        PresenceTesting,
        ProcessReciping,
        ProcessError,
        AWCCycling,
        AWCHoming,
        Retrying,
        ConfirmCompleting,
        Loading,
        Unloading
    }

    public enum PrewetState
    {
        Unknown,
        Error,
        Abort,
        Init,
        Initialized,
        Idle,
        Initializing,
        PrepareToTransfering,
        ReadyForPick,
        KeepWeting,
        Linmot_Scanning,
        ManualProcessing,
        CycleManualProcessing,
        RunReciping,
        Aborting,
        PreparingToPick,
        PreparingToPlace,
        WaitForPick,
        WaitForPlace,
        RunRecipeComplete,
        DelayKeepweting,
        DelayKeepwetComplete
    }

    public enum DryerState
    {
        Unknown,
        Disable,
        Abort,
        Error,
        Init, 
        Initialized,
        Idle,
        Initializing,
        RunReciping,
        CycleManualProcessing,
        Retrying
    }

    public enum RinseState
    {
        Unknown,
        Disable,
        Error,
        Init,
        Initialized,
        Idle,
        Initializing,
        CycleManualProcessing,
        RunReciping,
        RunRecipeComplete,
        KeepWeting,
        KeepWetComplete,
        Retrying,
        Aborting,
        Abort,
    }
    public enum MetalState
    {
        Unknown,
        Disable,
        Error,
        Init,
        Initialized,
        Idle,
        Initializing,
        ShortTesting,
        RunReciping,
        CurrentShortTesting,
        WaitCloseFlow,
        WaitOpenFlow,
        WaitForRunRecipe,
        Abort
    }
    public enum DummyState
    {
        Unknown,
        Disable,
        Error,
        Init,
        Initializing,
        Initialized,
        Idle
    }

    public enum ReservoirState
    {
        Unknown,
        Disable,
        Error,
        Init,
        Initializing,
        Initialized,
        Idle,
    }
}