using MECF.Framework.Common.CommonData;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
namespace MECF.Framework.Common.Device.Safety
{
    public class SafetyData : NotifiableItem
    {
        # region 内部变量
        /// 
        /// Twincat状态
        /// 
        private double _twincatState;
        /// 
        /// Main通信故障
        /// 
        private bool _mainCommErr;
        /// 
        /// Main Function Block故障
        /// 
        private bool _mainFbErr;
        /// 
        /// VPW状态
        /// 
        private double _vpwHotConectState;
        /// 
        /// VPW通信故障
        /// 
        private bool _vpwCommErr;
        /// 
        /// VPW function block故障
        /// 
        private bool _vpwFbErr;
        /// 
        /// RES1_2状态
        /// 
        private double _res12HotConectState;
        /// 
        /// RES1_2通信故障
        /// 
        private bool _res12CommErr;
        /// 
        /// RES1_2 Function Block故障
        /// 
        private bool _res12FbErr;
        /// 
        /// RES3_4状态
        /// 
        private double _res34HotConectState;
        /// 
        /// RES3_4通信故障
        /// 
        private bool _res34CommErr;
        /// 
        /// RES3_4Function Block故障
        /// 
        private bool _res34FbErr;
        /// 
        /// Facility状态
        /// 
        private double _facilityHotConectState;
        /// 
        /// Facility通信故障
        /// 
        private bool _facilityCommErr;
        /// 
        /// Facility Function Block故障
        /// 
        private bool _facilityFbErr;
        /// 
        /// PlatingCell1_2状态
        /// 
        private double _plating12HotConectState;
        /// 
        /// Plating1_2通信故障
        /// 
        private bool _plating12CommErr;
        /// 
        /// Plating1_2 Function Block故障
        /// 
        private bool _plating12FbErr;
        /// 
        /// Plating3_4状态
        /// 
        private double _plating34HotConectState;
        /// 
        /// Plating3_4通信故障
        /// 
        private bool _plating34CommErr;
        /// 
        /// Plating34 Function Block故障
        /// 
        private bool _plating34FbErr;
        /// 
        /// SRD状态
        /// 
        private double _srdHotConnectState;
        /// 
        /// SRD通信故障
        /// 
        private bool _srdCommErr;
        /// 
        /// SRD Function Block故障
        /// 
        private bool _srdFbErr;
        /// 
        /// 数据是否初始化
        /// 
        private bool _isDataInitialized;
        #region Restart
        /// 
        /// Run stop
        /// 
        private bool _runStop;
        /// 
        /// Err ack
        /// 
        private bool _errAck;
        /// 
        /// VPW Estop restart
        /// 
        private bool _vpwStoEstopRestart;
        /// 
        /// Res12 Estop restart
        /// 
        private bool _res12StoEstopRestart;
        /// 
        /// Res34 Estop restart
        /// 
        private bool _res34StoEstopRestart;
        /// 
        /// Plating cell 1_2 sto1 estop restart
        /// 
        private bool _platingCell12Sto1EstopRestart;
        /// 
        /// Plating cell 1_2 sto2 estop restart
        /// 
        private bool _platingCell12Sto2EstopRestart;
        /// 
        /// Plating cell 3_4 sto1 estop restart
        /// 
        private bool _platingCell34Sto1EstopRestart;
        /// 
        /// Plating cell 3_4 sto2 estop restart
        /// 
        private bool _platingCell34Sto2EstopRestart;
        /// 
        /// Facility sto estop restart
        /// 
        private bool _facilityStoEstopRestart;
        /// 
        /// SRD Sto Estop restart
        /// 
        private bool _srdStoEstopRestart;
        #endregion
        #region Doors Lock
        /// 
        /// Req Aligner Door Lock
        /// 
        private bool _reqAlignerDoorLock;
        /// 
        /// Req cassette doors lock
        /// 
        private bool _reqCassetteDoorsLock;
        /// 
        /// Req cell 1_2 doors lock
        /// 
        private bool _reqCell12DoorsLock;
        /// 
        /// Req cell doors lock
        /// 
        private bool _reqCell34DoorsLock;
        #endregion
        #region locked
        /// 
        /// Cell1_2 Doors Left Locked
        /// 
        private bool _cell12DoorsLeftLocked;
        /// 
        /// Cell1_2 Doors Right Locked
        /// 
        private bool _cell12DoorsRightLocked;
        /// 
        /// Cell3_4 Doors Left Locked
        /// 
        private bool _cell34DoorsLeftLocked;
        /// 
        /// Cell3_4 Doors Right Locked
        /// 
        private bool _cell34DoorsRightLocked;
        /// 
        /// Aligner Door closed
        /// 
        private bool _alignerDoorClosed;
        /// 
        /// Cassette Doors Left locked
        /// 
        private bool _cassetteDoorsLeftLocked;
        /// 
        /// Cassette Doors Right locked
        /// 
        private bool _cassetteDoorsRightLocked;
        #endregion
        #region Closed
        private bool _res12DoorClosed;
        private bool _res34DoorClosed;
        private bool _vpwDoorClosed;
        private bool _plumblingDoorClosed;
        private bool _srdPanelClosed;
        #endregion
        #region Halt
        private bool _haltButtonLeft;
        private bool _haltButtonRight;
        #endregion
        #region Leak Detected
        private bool _platingCell12LeakDetected;
        private bool _platingCell34LeakDetected;
        private bool _vacuumPrewetLeakDetected;
        private bool _sampleStation1LeakDetected;
        private bool _sampleStation2LeakDetected;
        private bool _frameContainmentLeakDetected;
        #endregion
        #region EDM
        private bool _reservoir12CAPumpEdm;
        private bool _reservoir34CAPumpEdm;
        private bool _resDegas1PumpEdm;
        private bool _resDegas2PumpEdm;
        private bool _vpwVacuumPumpEdm;
        private bool _vpwBoosterPumpEdm;
        private bool _extFluidEnableEdm;
        #endregion
        #region Level High
        private bool _reservoir1CALevelHigh;
        private bool _reservoir2CALevelHigh;
        private bool _reservoir3CALevelHigh;
        private bool _reservoir4CALevelHigh;
        #endregion
        #region Axis STO
        private bool _vpwCell1RotationStoEdm;
        private bool _vpwCell2RotationStoEdm;
        private bool _platingCell1RotationStoEdm;
        private bool _platingCell2RotationStoEdm;
        private bool _platingCell3RotationStoEdm;
        private bool _platingCell4RotationStoEdm;
        private bool _platingCell12VerticalStoEdm;
        private bool _platingCell34VerticalStoEdm;
        private bool _srd1RotationStoEdm;
        private bool _srd2RotationStoEdm;
        #endregion
        #endregion
        #region 属性
        /// 
        /// Twincat状态
        /// 
        public double TwincatState { get { return _twincatState; } set { _twincatState = value; InvokePropertyChanged(nameof(TwincatState)); } }
        
        /// 
        /// Ethercat通信故障
        /// 
        public bool MainCommErr { get { return _mainCommErr; } set { _mainCommErr = value;InvokePropertyChanged(nameof(MainCommErr)); } }
        /// 
        /// Main Function Block故障
        /// 
        public bool MainFbErr { get { return _mainFbErr; } set { _mainFbErr = value;InvokePropertyChanged(nameof (MainFbErr)); } }
        /// 
        /// 数据是否初始化
        /// 
        public bool IsDataInitialized { get { return _isDataInitialized; } set { _isDataInitialized = value; InvokePropertyChanged(nameof(IsDataInitialized)); } }
       
        public double VpwHotConnectState { get { return _vpwHotConectState; } set { _vpwHotConectState = value;InvokePropertyChanged(nameof(VpwHotConnectState)); } }
        public bool VpwCommErr { get { return _vpwCommErr; }set { _vpwCommErr = value; InvokePropertyChanged(nameof(VpwCommErr)); } }
        public bool VpwFbErr { get {return _vpwFbErr; } set {_vpwFbErr = value; InvokePropertyChanged(nameof (VpwFbErr)); } }
        public double Res12HotConnectState { get { return _res12HotConectState; } set { _res12HotConectState = value;InvokePropertyChanged(nameof(Res12HotConnectState)); } }
        public bool Res12CommErr { get { return _res12CommErr; }set {_res12CommErr = value;InvokePropertyChanged(nameof(Res12CommErr)); } } 
        public bool Res12FbErr { get { return _res12FbErr; } set { _res12FbErr = value; InvokePropertyChanged(nameof(Res12FbErr)); } }
        public double Res34HotConnectState { get { return _res34HotConectState; } set { _res34HotConectState = value;InvokePropertyChanged(nameof( Res34HotConnectState)); } }  
        public bool Res34CommErr { get { return _res34CommErr; }set{_res34CommErr = value;InvokePropertyChanged(nameof (Res34CommErr)); } }
        public bool Res34FbErr { get { return _res34FbErr; } set { _res34FbErr = value; InvokePropertyChanged(nameof(Res34FbErr)); } }
        public double FacilityHotConnectState { get { return _facilityHotConectState;}set { _facilityHotConectState = value; InvokePropertyChanged(nameof(FacilityHotConnectState));} }
        public bool FacilityCommErr { get { return _facilityCommErr; } set { _facilityCommErr = value; InvokePropertyChanged(nameof(FacilityCommErr)); } }
        public bool FacilityFbErr { get { return _facilityFbErr; }set { _facilityFbErr = value;InvokePropertyChanged(nameof(FacilityFbErr)); } }    
        public double Plating12HotConnectState { get { return _plating12HotConectState; } set { _plating12HotConectState = value; InvokePropertyChanged(nameof(Plating12HotConnectState)); } }
        public bool Plating12CommErr { get { return _plating12CommErr; } set { _plating12CommErr = value; InvokePropertyChanged(nameof(Plating12CommErr)); } }
        public bool Plating12FbErr { get { return _plating12FbErr;}set { _plating12FbErr = value;InvokePropertyChanged(nameof (Plating12FbErr)); } }
        public double Plating34HotConnectState { get { return _plating34HotConectState; } set { _plating34HotConectState = value; InvokePropertyChanged(nameof(Plating34HotConnectState)); } }
        public bool Plating34CommErr { get { return _plating34CommErr; } set { _plating34CommErr = value; InvokePropertyChanged(nameof(Plating34CommErr)); } }
        public bool Plating34FbErr { get { return _plating34FbErr; } set { _plating34FbErr = value; InvokePropertyChanged(nameof(Plating34FbErr)); } }
        public double SrdHotConnectState { get { return _srdHotConnectState; } set { _srdHotConnectState = value; InvokePropertyChanged(nameof(SrdHotConnectState)); } }
        public bool SrdCommErr { get { return _srdCommErr; } set { _srdCommErr = value; InvokePropertyChanged(nameof(SrdCommErr)); } }
        public bool SrdFbErr { get { return _srdFbErr; } set { _srdFbErr = value; InvokePropertyChanged(nameof(SrdFbErr)); } }
        #region Restart
        /// 
        /// Run stop
        /// 
        public bool RunStop { get { return _runStop; } set { _runStop = value;InvokePropertyChanged(nameof(RunStop)); } }
        /// 
        /// Err ack
        /// 
        public bool ErrAck { get { return _errAck; } set { _errAck = value;InvokePropertyChanged(nameof(ErrAck)); } }  
        /// 
        /// VPW Estop restart
        /// 
        public bool VpwStoEstopRestart { get { return _vpwStoEstopRestart; } set { _vpwStoEstopRestart = value;InvokePropertyChanged(nameof(VpwStoEstopRestart)); } }
        /// 
        /// Res12 Estop restart
        /// 
        public bool Res12StoEstopRestart { get { return _res12StoEstopRestart; } set { _res12StoEstopRestart = value;InvokePropertyChanged(nameof(Res12StoEstopRestart)); } }
        /// 
        /// Res34 Estop restart
        /// 
        public bool Res34StoEstopRestart { get { return _res34StoEstopRestart; } set { _res34StoEstopRestart = value;InvokePropertyChanged(nameof(Res34StoEstopRestart)); } }
        /// 
        /// Plating cell 1_2 sto1 estop restart
        /// 
        public bool PlatingCell12Sto1EstopRestart { get { return _platingCell12Sto1EstopRestart; } set { _platingCell12Sto1EstopRestart = value;InvokePropertyChanged(nameof(PlatingCell12Sto1EstopRestart)); } }
        /// 
        /// Plating cell 1_2 sto2 estop restart
        /// 
        public bool PlatingCell12Sto2EstopRestart { get { return _platingCell12Sto2EstopRestart; } set { _platingCell12Sto2EstopRestart = value;InvokePropertyChanged(nameof(PlatingCell12Sto2EstopRestart)); } }
        /// 
        /// Plating cell 3_4 sto1 estop restart
        /// 
        public bool PlatingCell34Sto1EstopRestart { get { return _platingCell34Sto1EstopRestart; } set { _platingCell34Sto1EstopRestart = value;InvokePropertyChanged(nameof(PlatingCell34Sto1EstopRestart)); } }
        /// 
        /// Plating cell 3_4 sto2 estop restart
        /// 
        public bool PlatingCell34Sto2EstopRestart { get { return _platingCell34Sto2EstopRestart; } set { _platingCell34Sto2EstopRestart = value;InvokePropertyChanged(nameof(PlatingCell34Sto2EstopRestart)); } }
        /// 
        /// Facility sto estop restart
        /// 
        public bool FacilityStoEstopRestart { get { return _facilityStoEstopRestart; } set { _facilityStoEstopRestart = value;InvokePropertyChanged(nameof(FacilityStoEstopRestart)); } }
        /// 
        /// SRD Sto Estop restart
        /// 
        public bool SrdStoEstopRestart { get { return _srdStoEstopRestart; } set { _srdStoEstopRestart = value;InvokePropertyChanged(nameof(SrdStoEstopRestart)); } }
        #endregion
        #region Doors Lock
        /// 
        /// Req Aligner Door Lock
        /// 
        public bool ReqAlignerDoorLock { get { return _reqAlignerDoorLock; } set { _reqAlignerDoorLock = value;InvokePropertyChanged(nameof(ReqAlignerDoorLock)); } }
        /// 
        /// Req cassette doors lock
        /// 
        public bool ReqCassetteDoorsLock { get { return _reqCassetteDoorsLock; } set { _reqCassetteDoorsLock = value;InvokePropertyChanged(nameof(ReqCassetteDoorsLock)); } }
        /// 
        /// Req cell 1_2 doors lock
        /// 
        public bool ReqCell12DoorsLock { get { return _reqCell12DoorsLock; } set { _reqCell12DoorsLock = value;InvokePropertyChanged(nameof(ReqCell12DoorsLock)); } }
        /// 
        /// Req cell doors lock
        /// 
        public bool ReqCell34DoorsLock { get { return _reqCell34DoorsLock; } set { _reqCell34DoorsLock = value; InvokePropertyChanged(nameof(ReqCell34DoorsLock)); } }
        #endregion
        #region locked
        /// 
        /// Cell1_2 Doors Left Locked
        /// 
        public bool Cell12DoorsLeftLocked { get { return _cell12DoorsLeftLocked; } set { _cell12DoorsLeftLocked = value;InvokePropertyChanged(nameof(Cell12DoorsLeftLocked)); } }
        /// 
        /// Cell1_2 Doors Right Locked
        /// 
        public bool Cell12DoorsRightLocked { get { return _cell12DoorsRightLocked; } set { _cell12DoorsRightLocked = value;InvokePropertyChanged(nameof(Cell12DoorsRightLocked)); } }
        /// 
        /// Cell3_4 Doors Left Locked
        /// 
        public bool Cell34DoorsLeftLocked { get { return _cell34DoorsLeftLocked; } set { _cell34DoorsLeftLocked = value;InvokePropertyChanged(nameof(Cell34DoorsLeftLocked)); } }
        /// 
        /// Cell3_4 Doors Right Locked
        /// 
        public bool Cell34DoorsRightLocked { get { return _cell34DoorsRightLocked; } set { _cell34DoorsRightLocked = value;InvokePropertyChanged(nameof(Cell34DoorsRightLocked)); } }
        /// 
        /// Aligner Door closed
        /// 
        public bool AlignerDoorClosed { get { return _alignerDoorClosed; } set { _alignerDoorClosed = value;InvokePropertyChanged(nameof(AlignerDoorClosed)); } }
        /// 
        /// Cassette Doors Left locked
        /// 
        public bool CassetteDoorsLeftLocked { get { return _cassetteDoorsLeftLocked; } set { _cassetteDoorsLeftLocked = value;InvokePropertyChanged(nameof(CassetteDoorsLeftLocked)); } }
        /// 
        /// Cassette Doors Right locked
        /// 
        public bool CassetteDoorsRightLocked { get { return _cassetteDoorsRightLocked; } set { _cassetteDoorsRightLocked = value;InvokePropertyChanged(nameof(CassetteDoorsRightLocked)); } }
        #endregion
        #region Closed
        public bool Res12DoorClosed { get { return _res12DoorClosed; } set { _res12DoorClosed = value;InvokePropertyChanged(nameof(Res12DoorClosed)); } }
        public bool Res34DoorClosed { get { return _res34DoorClosed; } set { _res34DoorClosed = value;InvokePropertyChanged(nameof(Res34DoorClosed)); } }
        public bool VpwDoorClosed { get { return _vpwDoorClosed; } set { _vpwDoorClosed = value;InvokePropertyChanged(nameof(VpwDoorClosed)); } }
        public bool PlumblingDoorClosed { get { return _plumblingDoorClosed; } set { _plumblingDoorClosed = value;InvokePropertyChanged(nameof(PlumblingDoorClosed)); } }
        public bool SrdPanelClosed { get { return _srdPanelClosed; } set { _srdPanelClosed = value;InvokePropertyChanged(nameof(SrdPanelClosed)); } }  
        #endregion
        #region Halt
        public bool HaltButtonLeft { get { return _haltButtonLeft; } set { _haltButtonLeft = value;InvokePropertyChanged(nameof(HaltButtonLeft)); } }
        public bool HaltButtonRight { get { return _haltButtonRight; } set { _haltButtonRight = value;InvokePropertyChanged(nameof(HaltButtonRight)); } }
        #endregion
        #region Leak Detected
        public bool PlatingCell12LeakDetected { get { return _platingCell12LeakDetected; } set { _platingCell12LeakDetected = value;InvokePropertyChanged(nameof(PlatingCell12LeakDetected)); } }
        public bool PlatingCell34LeakDetected { get { return _platingCell34LeakDetected; } set { _platingCell34LeakDetected = value;InvokePropertyChanged(nameof(PlatingCell34LeakDetected)); } }
        public bool VacuumPrewetLeakDetected { get { return _vacuumPrewetLeakDetected;} set { _vacuumPrewetLeakDetected = value;InvokePropertyChanged(nameof(VacuumPrewetLeakDetected)); } }
        public bool SampleStation1LeakDetected { get { return _sampleStation1LeakDetected;} set { _sampleStation1LeakDetected = value;InvokePropertyChanged(nameof(SampleStation1LeakDetected)); } }
        public bool SampleStation2LeakDetected { get { return _sampleStation2LeakDetected; } set { _sampleStation2LeakDetected = value; InvokePropertyChanged(nameof(SampleStation2LeakDetected)); } }
        public bool FrameContainmentLeakDetected { get { return _frameContainmentLeakDetected; } set { _frameContainmentLeakDetected = value;InvokePropertyChanged(nameof(FrameContainmentLeakDetected)); } }
        #endregion
        #region EDM
        public bool Reservoir12CAPumpEdm { get { return _reservoir12CAPumpEdm; } set { _reservoir12CAPumpEdm = value;InvokePropertyChanged(nameof(Reservoir12CAPumpEdm)); } }
        public bool Reservoir34CAPumpEdm { get { return _reservoir34CAPumpEdm; } set { _reservoir34CAPumpEdm = value;InvokePropertyChanged(nameof(Reservoir34CAPumpEdm)); } }
        public bool ResDegas1PumpEdm { get { return _resDegas1PumpEdm; } set { _resDegas1PumpEdm = value;InvokePropertyChanged(nameof(ResDegas1PumpEdm)); } }
        public bool ResDegas2PumpEdm { get { return _resDegas2PumpEdm; } set { _resDegas2PumpEdm = value;InvokePropertyChanged(nameof(ResDegas2PumpEdm)); } }
        public bool VpwVacuumPumpEdm { get { return _vpwVacuumPumpEdm; } set { _vpwVacuumPumpEdm = value;InvokePropertyChanged(nameof(VpwVacuumPumpEdm)); } }
        public bool VpwBoosterPumpEdm { get { return _vpwBoosterPumpEdm; } set { _vpwBoosterPumpEdm = value;InvokePropertyChanged(nameof(VpwBoosterPumpEdm)); } }
        public bool ExtFluidEnableEdm { get { return _extFluidEnableEdm; } set { _extFluidEnableEdm = value;InvokePropertyChanged(nameof(ExtFluidEnableEdm)); } }
        #endregion
        #region Level High
        public bool Reservoir1CALevelHigh { get { return _reservoir1CALevelHigh; } set { _reservoir1CALevelHigh = value; InvokePropertyChanged(nameof(Reservoir1CALevelHigh)); } }
        public bool Reservoir2CALevelHigh { get { return _reservoir2CALevelHigh; } set { _reservoir2CALevelHigh = value; InvokePropertyChanged(nameof(Reservoir2CALevelHigh)); } }
        public bool Reservoir3CALevelHigh { get { return _reservoir3CALevelHigh; } set { _reservoir3CALevelHigh = value; InvokePropertyChanged(nameof(Reservoir3CALevelHigh)); } }
        public bool Reservoir4CALevelHigh { get { return _reservoir4CALevelHigh; } set { _reservoir4CALevelHigh = value; InvokePropertyChanged(nameof(Reservoir4CALevelHigh)); } }
        #endregion
        #region Axis STO
        public bool VpwCell1RotationStoEdm { get { return _vpwCell1RotationStoEdm; } set { _vpwCell1RotationStoEdm = value;InvokePropertyChanged(nameof(VpwCell1RotationStoEdm)); } }
        public bool VpwCell2RotationStoEdm { get { return _vpwCell2RotationStoEdm; } set { _vpwCell2RotationStoEdm = value;InvokePropertyChanged(nameof(VpwCell2RotationStoEdm)); } }
        public bool PlatingCell1RotationStoEdm { get { return _platingCell1RotationStoEdm; } set { _platingCell1RotationStoEdm = value;InvokePropertyChanged(nameof(PlatingCell1RotationStoEdm)); } }
        public bool PlatingCell2RotationStoEdm { get { return _platingCell2RotationStoEdm; } set { _platingCell2RotationStoEdm = value; InvokePropertyChanged(nameof(PlatingCell2RotationStoEdm)); } }
        public bool PlatingCell3RotationStoEdm { get { return _platingCell3RotationStoEdm; } set { _platingCell3RotationStoEdm = value; InvokePropertyChanged(nameof(PlatingCell3RotationStoEdm)); } }
        public bool PlatingCell4RotationStoEdm { get { return _platingCell4RotationStoEdm; } set { _platingCell4RotationStoEdm = value; InvokePropertyChanged(nameof(PlatingCell4RotationStoEdm)); } }
        public bool PlatingCell12VerticalStoEdm { get { return _platingCell12VerticalStoEdm; } set { _platingCell12VerticalStoEdm = value;InvokePropertyChanged(nameof(PlatingCell12VerticalStoEdm)); } }
        public bool PlatingCell34VerticalStoEdm { get { return _platingCell34VerticalStoEdm; } set { _platingCell34VerticalStoEdm = value; InvokePropertyChanged(nameof(PlatingCell34VerticalStoEdm)); } }
        public bool Srd1RotationStoEdm { get { return _srd1RotationStoEdm; } set { _srd1RotationStoEdm = value;InvokePropertyChanged(nameof(Srd1RotationStoEdm)); } }
        public bool Srd2RotationStoEdm { get { return _srd2RotationStoEdm; } set { _srd2RotationStoEdm = value;InvokePropertyChanged(nameof(Srd2RotationStoEdm)); } }
        #endregion
        #endregion
    }
}