namespace CyberX8_Core
{
    public enum VenusDevice
    {
        ValveMfc1,
        ValveMfc2,
        ValveMfc3,
        ValveMfc4,
        ValveMfc5,
        ValveMfc6,
        ValveMfc7,
        ValveMfc8,
        ValveMfc9,
        ValveMfc10,
        ValveMfc11,
        ValveMfc12,

        ValvePVN21,
        ValvePVN22,
        ValvePV11,
        ValvePV12,
        ValvePV21,
        ValvePV22,
        ValvePV31,
        ValvePV32,
        ValvePV41,
        ValvePV42,
        ValvePV51,
        ValvePV52,
        ValvePV61,
        ValvePV62,
        ValvePV71,
        ValvePV72,
        ValvePV81,
        ValvePV82,
        ValvePV91,
        ValvePV92,
        ValvePVA1,
        ValvePVA2,
        ValvePVB1,
        ValvePVB2,
        ValvePVC1,
        ValvePVC2,

        ValveN2,
        ValvePVHe1,
        ValvePVHe2,
        ValvePVHe3,
        ValveHeISO,

        ValveMainPurge,


        ValveGasFinal,
        ValveSoftPump,
        ValveFastPump,
        ValveCHBPurge,
        ValveTurboPumpPumping,
        ValveTurboPumpPurge,
        ValveGuage,
        ValveLoadlockVent,
        ValveLoadlockPumping,
        ValvePurge,
        MfcGas1,
        MfcGas2,
        MfcGas3,
        MfcGas4,
        MfcGas5,

        GasStick1,
        GasStick2,
        GasStick3,

        TemperatureControl,
        ChamberLid,
        ATM_SW,
        VAC_SW,
        WaterFlow_SW,
        N2_Pressure,

        ProcessGauge,
        PressureGauge,
        ForelineGauge,

        MainPump,
        Chiller,
        InnerChiller,
        OuterChiller,
        TopChiller,


        Rf,
        BiasRf,
        Match,
        BiasMatch,

        PressureControl,
        ThrottleValve,
        HeaterChamber,
        ForelineHeater,

        Heartbeat,
        ResetPlcSignal,

        LiftPin,
        SlitDoor,
        SmallPin,
        MediumPin,

        LoadLockArm,

        StatisticsRfOnTime,
        StatisticsPumpOnTime,

        PlcDateTime,
        Lid,
        LidLoadlock,
        LidLocker,
        ESCHV,
        PendulumValve,
        TurboPump,
        EndPoint,

        TMLid,
        LLALid,
        LLBLid,
        LLATSlitDoor,
        LLBTSlitDoor,
        LLAESlitDoor,
        LLBESlitDoor,

        //se vce
        VCESlitDoor,
        VCESoftPumpValve,
        VCEFastPumpValve,
        VCESoftVentValve,
        VCEFastVentValve,
        VCEATMSensor,
        TMATMSensor,
        VCEVACSensor,
        TMVACSensor,
        VCESlitDoorOpenEnable,
        TMExtendVCEEnable,
        //se pm
        PMASlitDoor,
        PMBSlitDoor,
        PMCSlitDoor,
        PMASlitDoorOpenEnable,
        PMBSlitDoorOpenEnable,
        PMCSlitDoorOpenEnable,
        TMExtendPMAEnable,
        TMExtendPMBEnable,
        TMExtendPMCEnable,

        //tm all
        TMValveN2,
        TMSoftPumpValve,
        TMFastPumpValve,
        TMPurgeValve,
        TMVentValve,
        TMSoftVentValve,
        TMFastVentValve,

        //kepler tm
        LLASoftPumpValve,
        LLAFastPumpValve,
        LLAPurgeValve,
        LLAVentValve,
        LLBSoftPumpValve,
        LLBFastPumpValve,
        LLBPurgeValve,
        LLBVentValve,
        ValveWaterRelay,
        TMPowerOn,
        TMInSafty,
        WaferLeakSensor,
        EFEMSideDoorClosed,
        TMPCWFlowSwitch,
        LLAPCWFlowSwitch,
        LLBPCWFlowSwitch,
        TMLidClosed,
        CDAPressureSwitch,
        VaccumPressureSwitch,
        N2PressureSwitch,
        TMPressureCtrl,
        TMRobotNotExtendPMA,
        TMRobotNotExtendPMB,
        TMRobotNotExtendPMC,
        TMRobotNotExtendPMD,
        TMRobotNotExtendLLA,
        TMRobotNotExtendLLB,
        EfemRobotNotExtendLLA,
        EfemRobotNotExtendLLB,
        TMVacSwitch,
        LLAVacSwitch,
        LLBVacSwitch,
        TMATMSwitch,
        LLAATMSwitch,
        LLBATMSwitch,

        LLAWaferSizeCheckSwitch,
        LLBWaferSizeCheckSwitch,
        PMAWaferSizeCheckSwitch,
        PMBWaferSizeCheckSwitch,
        PMCWaferSizeCheckSwitch,
        PMDWaferSizeCheckSwitch,

        LLASoftVentValve,
        LLAFastVentValve,
        LLBSoftVentValve,
        LLBFastVentValve,
        TMVacAtmMode,

    }

    public enum StateData
    {
        RecipeProcessTime,
        RecipeStepNo,
        RecipeStepMode,
        RecipeName,
        RecipeBaseName,

        RecipeStepTimeElapsed,
        RecipeStepTimeSetPoint,

        RecipeStepRfTimeSetPoint,
        RecipeStepElectrodeTemp,

        SmallWafer,
        MidWafer,
        BigWafer,

        RfTimeElapsed,

        PumpTime,

        PMState,

        TMState,

        IsAutoMode,

        IsPmOnline,
        IsTmOnline,

        PMJobState,
        TMJobState,

        PmPlatformState,

        JobState,
        JobTmRecipe,
        JobPmRecipe,

        JobStartTime,
        JobStopTime,
        JobProcessCount,

        IsPumpingOkForProcess,
        IsCoolingOkForProcess,
        IsGasFlowingOkForProcess,
        IsRfPowering,

        TotalCycle,

        ProcessStatus,

        AlarmEvent,

        LeakCheckElapseTime,

        DataLogName,

        LotName,

        CurrentMagazineType,
        SchedulerRecipe,

        SchedulerState,

        SchedulerLoadStationInSubstrate,
        SchedulerRailInSubstrate,
        SchedulerPmSubstrate,
        SchedulerRailOutSubstrate,
        SchedulerLoadStationOutSubstrate,
    }

    public enum RtOperation
    {
        DeviceOperation,

        LockLid,
        UnlockLid,
        StartPump,
        StartTurboPump,
        Pump,
        PumpLoadLock,
        StopPump,

        GasFlow,
        StopGasFlow,

        Cooling,
        StopCooling,

        /// <summary>
        ///
        /// 0:Step mode
        /// 1:Power on time
        /// 2:Electrode temperature
        /// 3:Electrode Critical temperature
        /// </summary>
        RfPower,

        Vent,
        VentLoadLock,
        Purge,
        PurgeLoadLock,
        Abort,

        Heat,
        SetConfig,
        SetPMBChillerState,
        SetHardwareConfig,

        LLPlace,
        LLPick,
        PMPick,
        PMPlace,
        Extend,
        Retract,
        Goto,

        RunRecipe,
        RunCleanRecipe,


        SkipCurrentStep,

        ResumeRecipe,

        AbortRecipe,

        Reset,

        LeakCheck,
        GasLeakCheck,
        DeleteLeakCheck,
        MFCVerification,
        AllMFCVerification,

        SwitchOffBuzzer,

        // Lift pin & Guide pin
        MoveLiftPin,
        MoveGuidePin,

        StartAutoRun,
        StopAutoRun,
        PauseAutoRun,
        ResumeAutoRun,
        InitAll,
        AckError,

        TmRun,
        TmStop,

        PmAuto,
        PmManual,

        PmOnline,
        PmOffline,
        PmError,

        JobAuto,
        JobManual,
        JobRun,
        JobStop,
        JobAbort,
        JobPmLoadRecipe,
        JobTmLoadRecipe,
        JobTmRun,
        JobTmStop,
        JobPmOnline,
        JobPmOffline,
        JobPmProcessDone,

        JobTmRecovered,

        Cycle,
        Online,
        Offline,
        ControlPressure,
        AbortControlPressure

    }

    public enum MovementPosition
    {
         Down, Up, Left, Right, Middle, Unknown
    }

    public enum RState
    {
        Init,
        Running,
        End,
        Failed,
        Timeout,
        Paused,
    }
}