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;
 }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 4
0
        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();
        }