protected SpellerStageProvider(SpellerExperiment.Configuration.TestConfig testConfig, bool initialization, T provider) : base( SpellerStageProviderUtils.CreateCalibrationStages(testConfig, initialization, out var handle), new MarkedStageProvider(MarkerDefinitions.ExperimentStartMarker), new DelayStageProvider(testConfig.Trial.Interval), provider, new MarkedStageProvider(MarkerDefinitions.ExperimentEndMarker), new DelayStageProvider(testConfig.Trial.Interval)) { Provider = provider; _eventWaitHandle = handle; }
public ButtonInsideTrialTrigger(IClock clock, SpellerController spellerController, GazePointHandler gazePointHandler, SpellerExperiment.Configuration.TestConfig testConfig, Func <Point, SpellerBaseWindow.UIButton> findButtonFunc) { _clock = clock; _spellerController = spellerController; _gazePointHandler = gazePointHandler; _cancellable = testConfig.TrialCancellable; _minTrialInterval = testConfig.Trial.Interval; _hoverToSelectDuration = testConfig.SelectionDelay; _findButtonFunc = findButtonFunc; spellerController.Starting += (sender, e) => Start(); spellerController.Stopping += (sender, e) => Stop(); Reset(); }
public static IStageProvider CreateCalibrationStages(SpellerExperiment.Configuration.TestConfig testConfig, bool initialization, out EventWaitHandle waitHandle) { if (!initialization || testConfig.Baseline.Duration == 0) { waitHandle = null; return(EmptyStageProvider.Instance); } /* Generating stage providers */ var stageProviders = new LinkedList <IStageProvider>(); /* Generating baseline stages */ var stages = new LinkedList <Stage>(); stages.AddLast(new Stage { Marker = MarkerDefinitions.BaselineStartMarker, Cue = "Baseline", Duration = 500 }); foreach (var stage in CountdownStageProvider.GenerateStages(testConfig.Baseline.Duration / 1000)) { stage.Subtitle = stage.Cue; stage.Cue = "Baseline"; stages.AddLast(stage); } var remainingMilliseconds = testConfig.Baseline.Duration % 1000; if (remainingMilliseconds > 0) { stages.AddLast(new Stage { Duration = remainingMilliseconds }); } stages.AddLast(new Stage { Cue = "Calibrating", Marker = MarkerDefinitions.BaselineEndMarker }); stageProviders.AddLast(new StageProvider(stages)); /* waiting calibration stage provider */ stageProviders.AddLast(new EventWaitingStageProvider(waitHandle = new ManualResetEvent(false))); return(new CompositeStageProvider(stageProviders)); }
public DwellTrialTrigger(IClock clock, SpellerController spellerController, GazePointHandler gazePointHandler, SpellerExperiment.Configuration.TestConfig testConfig) { _clock = clock; _spellerController = spellerController; _gazePointHandler = gazePointHandler; _cancellable = testConfig.TrialCancellable; _minTrialInterval = testConfig.Trial.Interval; _cursorMovementTolerance = testConfig.CursorMovementTolerance; _hoverToSelectDuration = testConfig.SelectionDelay; spellerController.Starting += (sender, e) => Start(); spellerController.Stopping += (sender, e) => Stop(); Reset(); }