using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization;
using System.Text;
using System.Windows.Input;
using Aitex.Core.UI.MVVM;
using MECF.Framework.Common.CommonData;
namespace Aitex.Core.Common.DeviceData
{
    [DataContract]
    [Serializable]
    public class AITPumpData : NotifiableItem
    {
        [DataMember]
        public string DeviceModule { get; set; }
        [DataMember]
        public string DeviceName { get; set; }
        /// 
        /// 显示在界面上的名称
        /// 
        [DataMember]
        public string DisplayName { get; set; }
        /// 
        /// IO 表中定义的物理编号,物理追溯使用 比如: V122
        /// 
        [DataMember]
        public string DeviceSchematicId { get; set; }
        /// 
        /// 当前设定值
        /// 
        [DataMember]
        public bool IsOn { get; set; }
        /// 
        /// 默认值
        /// 
        [DataMember]
        public bool IsWarning { get; set; }
        /// 
        /// 实际反馈值
        /// 
        [DataMember]
        public bool IsError { get; set; }
        [DataMember]
        public int Speed { get; set; }
        [DataMember]
        public bool OverTemp { get; set; }
        [DataMember]
        public bool AtSpeed { get; set; }
        [DataMember]
        public int Temperature { get; set; }
        [DataMember]
        public int LocalRemoteMode { get; set; }
        [DataMember]
        public double WaterFlow { get; set; }
        [DataMember]
        public bool IsDryPumpEnable { get; set; }
        [DataMember]
        public bool IsN2PressureEnable { get; set; }
        [DataMember]
        public bool N2PressureWarning { get; set; }
        [DataMember]
        public bool N2PressureAlarm { get; set; }
        [DataMember]
        public bool IsWaterFlowEnable { get; set; }
        [DataMember]
        public bool WaterFlowWarning { get; set; }
        [DataMember]
        public bool WaterFlowAlarm { get; set; }
        public AITPumpData()
        {
            DisplayName = "Undefined";
        }
        public void Update(IDeviceData data)
        {
            AITPumpData item = data as AITPumpData;
            if (item == null)
                return;
            InvokePropertyChanged();
        }
    }
    public enum AITPumpOperation
    {
        SetOnOff,
        PumpOn,
        PumpOff,
    }
    public class AITPumpProperty
    {
        public const string EnableWaterFlow = "EnableWaterFlow";
        public const string WaterFlowValue = "WaterFlowValue";
        public const string WaterFlowMinValue = "WaterFlowMinValue";
        public const string WaterFlowMaxValue = "WaterFlowMaxValue";
        public const string WaterFlowAlarm = "WaterFlowAlarm";
        public const string WaterFlowAlarmSetPoint = "WaterFlowAlarmSetPoint";
        public const string WaterFlowWarning = "WaterFlowWarning";
        public const string WaterFlowAlarmTime = "WaterFlowAlarmTime";
        public const string WaterFlowWarningTime = "WaterFlowWarningTime";
        public const string EnableN2Pressure = "EnableN2Pressure";
        public const string N2PressureValue = "N2PressureValue";
        public const string N2PressureMinValue = "N2PressureMinValue";
        public const string N2PressureMaxValue = "N2PressureMaxValue";
        public const string N2PressureAlarm = "N2PressureAlarm";
        public const string N2PressureAlarmSetPoint = "N2PressureAlarmSetPoint";
        public const string N2PressureWarning = "N2PressureWarning";
        public const string N2PressureAlarmTime = "N2PressureAlarmTime";
        public const string N2PressureWarningTime = "N2PressureWarningTime";
        public const string EnableDryPump = "EnableDryPump";
        public const string PumpBreakerStatus = "PumpBreakerStatus";
        public const string IsOverTemp = "IsOverTemp";
        public const string IsRunning = "IsRunning";
        public const string IsControl = "IsControl";
        public const string IsError = "IsError";
        public const string IsStart = "IsStart";
        public const string IsStop = "IsStop";
    }
}