namespace Venus_Core
{
    public enum VenusDevice
    {
        ValveMfc1,
        ValveMfc2,
        ValveMfc3,
        ValveMfc4,
        ValveMfc5,

        ValveChamberPurge,
        ValveProcess,
        ValveSoftPumping,
        ValveFastPumping,
        ValveFastVent,
        ValveN2Supply,

        MfcGas1,
        MfcGas2,
        MfcGas3,
        MfcGas4,
        MfcGas5,

        GasStick1,
        GasStick2,
        GasStick3,

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

        ProcessGauge,
        PressureGauge,
        ForelineGauge,

        MainPump,
        Chiller,

        Rf,
        BiasRf,
        Match,
        BiasMatch,

        PressureControl,
        ThrottleValve,
        HeaterChamber,
        ForelineHeater,

        Heartbeat,
        ResetPlcSignal,

        LiftPin,
        SlitDoor,
        SmallPin,
        MediumPin,

        StatisticsRfOnTime,
        StatisticsPumpOnTime,

        PlcDateTime,
        Lid,
        LidLocker
    }

    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,
        Pump,
        StopPump,

        GasFlow,
        StopGasFlow,

        Cooling,
        StopCooling,

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

        Vent,

        Purge,

        Abort,

        Heat,
        SetConfig,
        SetPMBChillerState,
        SetHardwareConfig,

        RunRecipe,

        SkipCurrentStep,

        ResumeRecipe,

        AbortRecipe,

        Reset,

        LeakCheck,

        DeleteLeakCheck,
        MFCVerification,
        AllMFCVerification,

        SwitchOffBuzzer,

        // Lift pin & Guide pin
        MoveLiftPin,
        MoveGuidePin,

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

        TmRun,
        TmStop,

        PmAuto,
        PmManual,

        PmOnline,
        PmOffline,

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

        JobTmRecovered,
    }

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