using System;
using System.CodeDom;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization;
using System.Text;
using System.Windows.Data;
using System.Windows.Input;
using Aitex.Core.UI.MVVM;
using MECF.Framework.Common.CommonData;
namespace Aitex.Core.Common.DeviceData
{
    [DataContract]
    [Serializable]
    public class AITAPCData : NotifiableItem, IDeviceData
    {
        [DataMember]
        public string Module { get; set; }
        [DataMember]
        public string DeviceName { get; set; }
        [DataMember]
        public string DisplayName { get; set; }
        [DataMember]
        public string DeviceSchematicId { get; set; }
        [DataMember]
        public string UnitPosition { get; set; }
        [DataMember]
        public string UnitPressure { get; set; }
        [DataMember]
        public string Description { get; set; }
        /// 
        /// 量程
        /// 
        [DataMember]
        public double MaxValuePosition { get; set; }
        [DataMember]
        public double MaxValuePressure { get; set; }
        /// 
        /// MFC,PC
        /// 
        [DataMember]
        public string Type { get; set; }
        [DataMember]
        public int ModeFeedback { get; set; }
        [DataMember]
        public int ModeSetPoint { get; set; }
        [DataMember]
        public float PositionFeedback { get; set; }
        [DataMember]
        public float PressureFeedback { get; set; }
        [DataMember]
        public float Pressure1Feedback { get; set; }
        [DataMember]
        public float Pressure2Feedback { get; set; }
        [DataMember]
        public float PressureSetPoint { get; set; }//界面设定
        [DataMember]
        public float PositionSetPoint { get; set; }//界面设定
        [DataMember]
        public float SlowRateSetPoint { get; set; }//界面设定
        [DataMember]
        public float SlowTargetPressureSetPoint { get; set; }//界面设定
        [DataMember]
        public int State { get; set; }
        [DataMember]
        public int HomingStatus { get; set; }
        [DataMember]
        public int SelectedControllerFeedback { get; set; }
        [DataMember]
        public int SelectedControllerSetPoint { get; set; }//界面设定
        [DataMember]
        public string PIDTable//界面设定
        {
            get;
            set;
        }
        [DataMember]
        public string AlarmWatchTable
        {
            get;
            set;
        }
        [DataMember]
        public float SetPoint { get; set; }//界面设定
        [DataMember]
        public string CommandSetPoint { get; set; }//界面设定
        [DataMember]
        public string LowPressWaitSetPoint { get; set; }//界面设定
        [DataMember]
        public string HardError { get; set; }
        [DataMember]
        public string HomeStatusDisplay { get; set; }
        public string TextModeSetPoint
        {
            get
            {
                switch (ModeSetPoint)
                {
                    case (int)(PressureControlMode.PositionControl):
                        return "Valve Angle";
                    case (int)(PressureControlMode.Press1Control):
                        return "Press";
                    case (int)(PressureControlMode.Press2Control):
                        return "Press2";
                    case (int)(PressureControlMode.Open):
                        return "Full Open";
                    case (int)(PressureControlMode.Close):
                        return "Full Close";
                    case (int)(PressureControlMode.SlowVacuum):
                        return "Slow Vac";
                    case (int)(PressureControlMode.Hold):
                        return "Hold";
                    case (int)(PressureControlMode.Homing):
                        return "Homing";
                    default:
                        return "Idle";
                }
            }
        }
        public string TextModeFeedback
        {
            get
            {
                switch (ModeFeedback)
                {
                    case (int)(PressureControlMode.PositionControl):
                        return "Valve Angle";
                    case (int)(PressureControlMode.Press1Control):
                        return "Press";
                    case (int)(PressureControlMode.Press2Control):
                        return "Press2";
                    case (int)(PressureControlMode.Open):
                        return "Full Open";
                    case (int)(PressureControlMode.Close):
                        return "Full Close";
                    case (int)(PressureControlMode.SlowVacuum):
                        return "Slow Vac";
                    case (int)(PressureControlMode.Hold):
                        return "Hold";
                    case (int)(PressureControlMode.Homing):
                        return "Homing";
                    default:
                        return "Idle";
                }
            }
        }
        public AITAPCData()
        {
            DisplayName = "Undefined";
            UnitPosition = "%";
            UnitPressure = "mTorr";
            Type = "TV";
            MaxValuePosition = 100;
            MaxValuePressure = 1000;
        }
        public void Update(IDeviceData data)
        {
            throw new NotImplementedException();
        }
    }
}