using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.Xml;
using System.Xml.Serialization;
using System.Xml.Schema;
using Aitex.Core.Util;
namespace Aitex.Platform
{
    /// 
    /// Defines sequencer running mode.
    /// 
    [Serializable]
    [DataContract]
    public enum SystemMode
    {
        /// 
        /// In Auto mode, operators cannot manually create, delete, and move susceptors; instead,
        /// operators can only run sequences.
        /// 
        [EnumMember]
        Auto = 0,
        /// 
        /// In Manual mode, operators can manually create, delete, and move susceptors, but cannot
        /// run sequences.
        /// 
        [EnumMember]
        Manual,
        /// 
        /// In AtmCycle mode, the sequencer moves susceptor from chamber to chamber without checking
        /// any interlocks: chambers can be at atmosphere condition, and can be online or offline.
        /// It moves susceptor from Loadlock to the buffer first, and the moves it to the first reactor, 
        /// and then moves the susceptor from that reactor to the next one one by one. After all reactors 
        /// are traversed, it moves susceptor to the cooldown. And finally moves the susceptor from 
        /// cooldown to the loadlock. At this point, the cycle is completed.
        /// 
        [EnumMember]
        Cycle
    }
    /// 
    /// Tower light status define
    /// 
    [Serializable]
    [DataContract]
    public enum TowerLight
    {
        /// 
        /// Light red
        /// 
        [EnumMember]
        Red,
        /// 
        /// Light blue
        /// 
        [EnumMember]
        Blue,
        /// 
        /// Light green
        /// 
        [EnumMember]
        Green,
        /// 
        //
        /// 
        [EnumMember]
        Buzzer,
        /// 
        //
        /// 
        [EnumMember]
        Max,
    }
    /// 
    /// Tower light status define
    /// 
    [Serializable]
    [DataContract]
    public enum TowerLightStatus
    {
        /// 
        /// Light steady off
        /// 
        [EnumMember]
        Off,
        /// 
        /// Light steady on
        /// 
        [EnumMember]
        On,
        /// 
        /// Light blinking
        /// 
        [EnumMember]
        Blinking,
        /// 
        /// Unknow state
        /// 
        [EnumMember]
        Unknow,
    }
 
    
    [Serializable]
    [DataContract]
    public enum PressureCtrlMode
    {
        [EnumMember]
        TVPressureCtrl = 1,
        [EnumMember]
        TVPositionCtrl = 2,
    }
    [Serializable]
    [DataContract]
    public enum RfMode
    {
        [EnumMember]
        ContinuousWaveMode = 1,
        [EnumMember]
        PulsingMode = 2,
    }
 
    [Serializable]
    [DataContract]
    public enum CarrierDataType
    {
        [EnumMember]
        NONE,
        [EnumMember]
        Created,
        [EnumMember]
        Deleted,
        [EnumMember]
        SusceptorMove,
        [EnumMember]
        ProcessStart,
        [EnumMember]
        ProcessNormalEnd,
        [EnumMember]
        ProcessErrStop,
        [EnumMember]
        ProcessManualAbort,
        [EnumMember]
        RecipeStepStart,
        [EnumMember]
        RecipeStepNormalEnd,
        [EnumMember]
        RecipeStepPaused,
        [EnumMember]
        RecipeStepResume,
        [EnumMember]
        RecipeStepJump,
        [EnumMember]
        RecipeUpdated,
        [EnumMember]
        PreProcessStart,
        [EnumMember]
        PreProcessStep,
        [EnumMember]
        PreProcessNormalEnd,
        [EnumMember]
        PreProcessErrorEnd,
        [EnumMember]
        PostProcessStart,
        [EnumMember]
        PostProcessStep,
        [EnumMember]
        PostProcessNormalEnd,
        [EnumMember]
        PostProcessErrorEnd,
        [EnumMember]
        MoUsedWeight,
    }
    [Serializable]
    [DataContract]
    public enum EndByCondition
    {
        [EnumMember]
        EndByRfTime,
        [EnumMember]
        EndByStepTime,
        [EnumMember]
        EndByHeatUp,
    }
}