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