using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace MECF.Framework.Common.CommonData.PowerSupplier
{
    [DataContract]
    public class PowerSupplierData : NotifiableItem
    {
        #region 内部变量
        /// 
        /// 电压
        /// 
        private double _voltage;
        /// 
        /// 电流
        /// 
        private double _current;
        /// 
        /// 设置数值
        /// 
        private double _setPoint;
        /// 
        /// 可用性
        /// 
        private bool _enabled;
        /// 
        /// 电源状态
        /// 
        private ushort _powerStatus;
        /// 
        /// 电源状态内容
        /// 
        private string _powerStatusContent;
        /// 
        /// 电源控制 
        /// 
        private ushort _powerControl;
        /// 
        /// 电源控制内容
        /// 
        private string _powerControlContent;
        /// 
        /// 电源运行模式
        /// 
        private ushort _powerRunModel;
        /// 
        /// 电源运行模式内容
        /// 
        private string _powerRunModelContent;
        /// 
        /// 初始化
        /// 
        private bool _isDataInitialized;
        #endregion
        #region 属性
        [DataMember]
        ///电压
        public double Voltage
        {
            get { return _voltage; }
            set { _voltage = value; InvokePropertyChanged(nameof(Voltage)); }
        }
        [DataMember]
        ///电流
        public double Current
        {
            get { return _current; }
            set { _current = value; InvokePropertyChanged(nameof(Current)); }
        }
        [DataMember]
        ///设置数值
        public double SetPoint
        {
            get { return _setPoint; }
            set { _setPoint = value; InvokePropertyChanged(nameof(SetPoint)); }
        }
        [DataMember]
        public bool Enabled
        {
            get { return _enabled; }
            set { _enabled = value; InvokePropertyChanged(nameof(Enabled)); } 
        }
        [DataMember]
        public ushort PowerStatus
        {
            get { return _powerStatus; }
            set 
            {
                _powerStatus = value;
                InvokePropertyChanged(nameof(PowerStatus));
                
                PowerStatusEnum statusEnum= (PowerStatusEnum)value;
                PowerStatusContent=statusEnum.ToString();
            }
        }
        [DataMember]
        public string PowerStatusContent
        {
            get { return _powerStatusContent; }
            set { _powerStatusContent = value; InvokePropertyChanged(nameof(PowerStatusContent)); }
        }
        public bool IsDataInitialized
        {
            get { return _isDataInitialized; }
            set { _isDataInitialized = value; InvokePropertyChanged(nameof(IsDataInitialized)); }
        }
        [DataMember]
        public ushort PowerControl
        {
            get { return _powerControl; }
            set
            {
                _powerControl = value;
                InvokePropertyChanged(nameof(PowerControl));
                PowerControlEnum controlEnum = (PowerControlEnum)value;
                PowerControlContent = controlEnum.ToString();
            }
        }
        [DataMember]
        public string PowerControlContent
        {
            get { return _powerControlContent; }
            set { _powerControlContent = value;InvokePropertyChanged(nameof(PowerControlContent)); }
        }
        public ushort PowerRunModel
        {
            get { return _powerRunModel; }
            set
            {
                _powerRunModel = value;
                PowerRunModelEnum modelEnum = (PowerRunModelEnum)value;
                PowerRunModelContent = modelEnum.ToString();
                InvokePropertyChanged(nameof(PowerRunModel));
            }
        }
        [DataMember]
        public string PowerRunModelContent
        {
            get { return _powerRunModelContent; }
            set { _powerRunModelContent = value; InvokePropertyChanged(nameof(PowerRunModelContent)); }
        }
        #endregion
    }
}