Пример #1
0
        public MotionDetector(string id, IMotionDetectorAdapter adapter, ISchedulerService schedulerService, ISettingsService settingsService, IMessageBrokerService messageBroker)
            : base(id)
        {
            if (adapter == null)
            {
                throw new ArgumentNullException(nameof(adapter));
            }
            _messageBroker = messageBroker ?? throw new ArgumentNullException(nameof(messageBroker));

            _settingsService  = settingsService ?? throw new ArgumentNullException(nameof(settingsService));
            _schedulerService = schedulerService ?? throw new ArgumentNullException(nameof(schedulerService));

            adapter.StateChanged += UpdateState;

            settingsService.CreateSettingsMonitor <MotionDetectorSettings>(this, s =>
            {
                Settings = s.NewSettings;

                if (s.OldSettings != null && s.OldSettings.IsEnabled != s.NewSettings.IsEnabled)
                {
                    HandleIsEnabledStateChanged();
                }
            });

            _commandExecutor.Register <ResetCommand>(c => adapter.Refresh());
        }
Пример #2
0
        public MotionDetector(string id, IMotionDetectorAdapter adapter, ISchedulerService schedulerService, ISettingsService settingsService)
            : base(id)
        {
            _adapter          = adapter ?? throw new ArgumentNullException(nameof(adapter));
            _settingsService  = settingsService ?? throw new ArgumentNullException(nameof(settingsService));
            _schedulerService = schedulerService ?? throw new ArgumentNullException(nameof(schedulerService));

            adapter.MotionDetectionBegin += (s, e) => UpdateState(MotionDetectionStateValue.MotionDetected);
            adapter.MotionDetectionEnd   += (s, e) => UpdateState(MotionDetectionStateValue.Idle);

            settingsService.CreateSettingsMonitor <MotionDetectorSettings>(this, s =>
            {
                Settings = s.NewSettings;

                if (s.OldSettings != null && s.OldSettings.IsEnabled != s.NewSettings.IsEnabled)
                {
                    HandleIsEnabledStateChanged();
                }
            });

            _commandExecutor.Register <ResetCommand>(c => _adapter.Refresh());
        }
Пример #3
0
        public async Task <IMotionDetectorAdapter> CreateUIMotionDetectorAdapter(string caption)
        {
            IMotionDetectorAdapter result = null;

            await Dispatcher.RunAsync(
                CoreDispatcherPriority.Normal,
                () =>
            {
                var checkBox = new CheckBox
                {
                    Content = caption
                };

                var adapter = new UIMotionDetectorAdapter(checkBox);
                adapter.Connect();

                DemoMotionDetectorsPanel.Children.Add(checkBox);

                result = adapter;
            });

            return(result);
        }