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()); }
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()); }
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); }