public ZonesSelectionViewModel(Device device, List<Guid> zones, ZoneLogicState zoneLogicState)
		{
			Title = "Выбор зон устройства " + device.PresentationAddressAndName;
            AddCommand = new RelayCommand<object>(OnAdd, CanAdd);
            RemoveCommand = new RelayCommand<object>(OnRemove, CanRemove);
            AddAllCommand = new RelayCommand(OnAddAll, CanAddAll);
            RemoveAllCommand = new RelayCommand(OnRemoveAll, CanRemoveAll);
			Zones = zones;
			TargetZones = new ObservableCollection<ZoneViewModel>();
			SourceZones = new ObservableCollection<ZoneViewModel>();

			var zoneTypeFilter = ZoneType.Fire;
			switch (zoneLogicState)
			{
				case ZoneLogicState.Alarm:
				case ZoneLogicState.GuardSet:
				case ZoneLogicState.GuardUnSet:
				case ZoneLogicState.PCN:
				case ZoneLogicState.Lamp:
					zoneTypeFilter = ZoneType.Guard;
					break;
			}

			List<Zone> availableZones = FiresecManager.FiresecConfiguration.GetChannelZones(device);
			if (device.Driver.DriverType == DriverType.Exit)
			{
				availableZones = FiresecManager.FiresecConfiguration.GetPanelZones(device);
			}

			foreach (var zone in availableZones)
			{
				var zoneViewModel = new ZoneViewModel(zone);

				if (zone.ZoneType != zoneTypeFilter)
				{
					continue;
				}

				if ((zoneLogicState == ZoneLogicState.MPTAutomaticOn) || (zoneLogicState == ZoneLogicState.MPTOn) || (zoneLogicState == ZoneLogicState.Firefighting))
				{
					if (!zone.DevicesInZone.Any(x => x.Driver.DriverType == DriverType.MPT))
						continue;

                    //if (device.ParentPanel.Children.Any(x => x.Driver.DriverType == DriverType.MPT && x.ZoneUID == zone.UID) == false)
                    //{
                    //    continue;
                    //}
				}

                if (Zones.Contains(zone.UID))
					TargetZones.Add(zoneViewModel);
				else
					SourceZones.Add(zoneViewModel);
			}

			SelectedTargetZone = TargetZones.FirstOrDefault();
			SelectedSourceZone = SourceZones.FirstOrDefault();
		}
		public ZoneLogicDevicesSelectionViewModel(Device device, List<Device> selectedDevices, ZoneLogicState zoneLogicState)
		{
			Title = "Выбор устройств";
			AddCommand = new RelayCommand(OnAdd, CanAdd);
			RemoveCommand = new RelayCommand(OnRemove, CanRemove);

			Device = device;
			ZoneLogicState = zoneLogicState;
			SelectedDevices = selectedDevices;
			InitializeDevices();
			InitializeAvailableDevices();
		}
		public static ZoneLogicState GetEventTypeByCode(byte code)
		{
			ZoneLogicState zoneLogicState;
			switch (code)
			{
				case 0x01:
					zoneLogicState = ZoneLogicState.MPTAutomaticOn;
					break;
				case 0x02:
					zoneLogicState = ZoneLogicState.Alarm;
					break;
				case 0x03:
					zoneLogicState = ZoneLogicState.GuardSet;
					break;
				case 0x04:
					zoneLogicState = ZoneLogicState.Fire;
					break;
				case 0x05:
					zoneLogicState = ZoneLogicState.GuardUnSet;
					break;
				case 0x06:
					zoneLogicState = ZoneLogicState.PCN;
					break;
				//case 0x07: Меандр?
				case 0x08:
					zoneLogicState = ZoneLogicState.Failure;
					break;
				case 0x09:
					zoneLogicState = ZoneLogicState.PumpStationOn;
					break;
				case 0x0A:
					zoneLogicState = ZoneLogicState.PumpStationAutomaticOff;
					break;
				case 0x0B:
					zoneLogicState = ZoneLogicState.AM1TOn;
					break;
				//case 0x10: Выходная задержка?
				case 0x20:
					zoneLogicState = ZoneLogicState.Attention;
					break;
				case 0x40:
					zoneLogicState = ZoneLogicState.MPTOn;
					break;
				case 0x80:
					zoneLogicState = ZoneLogicState.Firefighting;
					break;
				default:
					zoneLogicState = new ZoneLogicState();
					break;
			}
			return zoneLogicState;
		}
Esempio n. 4
0
		int ZoneLogicStateToInt(ZoneLogicState zoneLogicState)
		{
			switch (zoneLogicState)
			{
				case ZoneLogicState.MPTAutomaticOn:
					return 0x01;

				case ZoneLogicState.Alarm:
					return 0x02;

				case ZoneLogicState.GuardSet:
					return 0x03;

				case ZoneLogicState.GuardUnSet:
					return 0x05;

				case ZoneLogicState.PCN:
					return 0x06;

				case ZoneLogicState.Fire:
					return 0x04;

				case ZoneLogicState.Failure:
					return 0x08;

				case ZoneLogicState.PumpStationOn:
					return 0x09;

				case ZoneLogicState.PumpStationAutomaticOff:
					return 0x0A;

				case ZoneLogicState.Attention:
					return 0x20;

				case ZoneLogicState.MPTOn:
					return 0x40;

				case ZoneLogicState.Firefighting:
					return 0x80;

				case ZoneLogicState.AM1TOn:
					return 0x0B;

				case ZoneLogicState.ShuzOn:
					return 0x0D;
			}
			return 0;
		}
Esempio n. 5
0
		public void OnCurrentClauseStateChanged(ZoneLogicState zoneLogicState)
		{
			_isBlocked = ((zoneLogicState == ZoneLogicState.Lamp) || (zoneLogicState == ZoneLogicState.PCN));
			if (_isBlocked)
			{
				var selectedClause = Clauses.FirstOrDefault(x => x.SelectedState == zoneLogicState);
				Clauses.Clear();
				Clauses.Add(selectedClause);
			}
		}