public BackChannelConnection(AlarmEventsService alarmEvents) { _alarmEvents = alarmEvents ?? throw new ArgumentNullException(nameof(alarmEvents)); _alarmEvents.AsObservable() .Where(x => x.Type == AlarmEvent.EventType.SensorAlarm && x.Status) .Subscribe(e => { if (e.Numbers.FirstOrDefault() == 1) { Connect(); _isDuplexMode = false; } }); }
public MainWindowViewModel(AlarmEventsService alarmEvents) { ChangeWindowStateCommand = new RelayCommand(ChangeWindowState); ChangeOverlayStateCommand = new RelayCommand <bool>(ChangeOverlayState); ChangeOverlayTimerStateCommand = new RelayCommand <bool>(ChangeOverlayTimerState); ChangeOverlayTimerState(false); var eventsSubscription = InitAlarmEvents(alarmEvents); _disposable = Disposable.Create(() => { eventsSubscription.Dispose(); }); }
public AlarmRingerViewModel(AlarmEventsService alarmEvents) { _wavePlayer = new WaveOut(); var streamInfo = Application.GetResourceStream(new Uri("pack://application:,,,/Assets/DoorBell.mp3")); _wavePlayer.Init(new LoopStream(new Mp3FileReader(streamInfo.Stream))); ChangeActiveStateCommand = new RelayCommand <bool>(ChangeActiveState); ChangeMutedStateCommand = new RelayCommand(ChangeMuteState); alarmEvents.AsObservable() .Where(x => x.Type == AlarmEvent.EventType.SensorAlarm && x.Status) .Select(x => true) .ObserveOnDispatcher(DispatcherPriority.Send) .Subscribe(ChangeActiveState); }
public IntercomViewModel(RtspDataService rtsp, AlarmEventsService alarmEvents) { _rtsp = rtsp ?? throw new ArgumentNullException(nameof(rtsp)); _backChannelConnection = new BackChannelConnection(alarmEvents); IsDoorLocked = true; IsActive = false; ChangeLockStateCommand = new RelayCommand(ChangeLockState); ChangeCallStateCommand = new RelayCommand(ChangeCallState); alarmEvents.AsObservable() .Where(x => x.Type == AlarmEvent.EventType.SensorAlarm && x.Status) .ObserveOnDispatcher(DispatcherPriority.Send) .Subscribe(e => { IsActive = false; _activeCall?.Dispose(); }); }