public P300DynamicSpellerStageProvider(SpellerController spellerController, SpellerExperiment.Configuration.TestConfig testConfig) : base(testConfig, false, new PipelinedStageProvider((int)(testConfig.SubTrialCount * 2), TimeSpan.FromMilliseconds(5))) { spellerController.Calibrated += (sender, e) => CalibrationCompleted(); spellerController.Stopping += (sender, e) => Provider.Break(); spellerController.CreatingTrial += (sender, e) => Provider.Offer(P300SpellerStageProviderUtils.GenerateRepeatingStages(testConfig)); }
public static IStageProvider GetExperimentProvider(SpellerController spellerController, SpellerExperiment.Configuration.TestConfig testConfig) { return(testConfig.DynamicInterval ? (IStageProvider) new P300DynamicSpellerStageProvider(spellerController, testConfig) : new P300StaticSpellerStageProvider(spellerController, testConfig)); }
public static Stage[] GenerateRepeatingStages(SpellerExperiment.Configuration.TestConfig testConfig) => new[] { new Stage { Marker = MarkerDefinitions.TrialStartMarker, Duration = testConfig.Trial.Duration }, new Stage { Marker = MarkerDefinitions.TrialEndMarker, Duration = testConfig.DynamicInterval ? 0 : testConfig.Trial.Interval }, };
public static IReadOnlyCollection <Stage> GenerateRepeatingStages(SpellerExperiment.Configuration.TestConfig testConfig) { var stages = new LinkedList <Stage>(); stages.AddLast(new Stage { Marker = MarkerDefinitions.TrialStartMarker, Duration = 0 }); var subTrialDuration = testConfig.SubTrialDuration; for (var i = 0; i < testConfig.SubTrialCount; i++) { stages.AddLast(new Stage { Marker = SpellerMarkerDefinitions.SubTrialMarker, Duration = subTrialDuration }); } stages.AddLast(new Stage { Marker = MarkerDefinitions.TrialEndMarker, Duration = testConfig.DynamicInterval ? 0 : testConfig.Trial.Interval }); return(stages); }
public P300StaticSpellerStageProvider(SpellerController spellerController, SpellerExperiment.Configuration.TestConfig testConfig) : base(testConfig, false, RepeatingStageProvider.Static.Unlimited(P300SpellerStageProviderUtils.GenerateRepeatingStages(testConfig))) { spellerController.Calibrated += (sender, e) => CalibrationCompleted(); spellerController.Stopping += (sender, e) => ((RepeatingStageProvider)this[1]).Break(); }
public static IStageProvider GetExperimentProvider(SpellerController spellerController, SpellerExperiment.Configuration.TestConfig testConfig) => testConfig.DynamicInterval ? (IStageProvider) new EyeTrackingDynamicSpellerStageProvider(spellerController, testConfig) : new EyeTrackingStaticSpellerStageProvider(spellerController, testConfig);
public EyeTrackingDynamicSpellerStageProvider(SpellerController spellerController, SpellerExperiment.Configuration.TestConfig testConfig) : base(testConfig, false, new PipelinedStageProvider(1024, TimeSpan.FromMilliseconds(5))) { spellerController.Stopping += (sender, e) => Provider.Break(); spellerController.CreatingTrial += (sender, e) => Provider.Offer(EyeTrackingSpellerStageProviderUtils.GenerateRepeatingStages(testConfig)); }
public SsvepStaticSpellerStageProvider(SpellerController spellerController, SpellerExperiment.Configuration.TestConfig testConfig) : base(testConfig, true, RepeatingStageProvider.Static.Unlimited(SsvepSpellerStageProviderUtils.GenerateRepeatingStages(testConfig))) { spellerController.Calibrated += (sender, e) => CalibrationCompleted(); spellerController.Stopping += (sender, e) => Provider.Break(); }