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();
            });
        }
Пример #3
0
        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);
        }
Пример #4
0
        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();
            });
        }