1- function waitForTrigger(cfg , deviceNumber )
2- % waitForTrigger(cfg, deviceNumber)
1+ function waitForTrigger(varargin )
2+ % waitForTrigger(cfg, deviceNumber, quietMode, nbTriggersToWait )
33 %
44 % Counts a certain number of triggers coming from the scanner before returning.
55 %
@@ -13,25 +13,29 @@ function waitForTrigger(cfg, deviceNumber)
1313 % When no deviceNumber is set then it will check the default device: this is
1414 % probably only useful in debug as you will want to make sure you get the
1515 % triggers coming from the scanner in a real case scenario.
16+ %
17+ % INPUTS
18+ % - varargin{1} = cfg
19+ %
20+ % - varargin{2} = deviceNumber
21+ %
22+ % - varargin{3} = quietMode: a boolean to make sure nothing is printed on the screen or
23+ % the prompt
24+ %
25+ % - nbTriggersToWait
1626
17- if nargin < 1 || isempty(cfg )
18- error(' I need at least one input.' );
19- end
20-
21- if nargin < 2 || isempty(deviceNumber )
22- deviceNumber = - 1 ;
23- fprintf(' Will wait for triggers on the main keyboard device.\n ' );
24- end
27+ [cfg , nbTriggersToWait , deviceNumber , quietMode ] = checkInputs(varargin );
2528
2629 triggerCounter = 0 ;
2730
2831 if strcmpi(cfg .testingDevice , ' mri' )
2932
3033 msg = [' Experiment starting in ' , ...
31- num2str(cfg .mri .triggerNb - triggerCounter ), ' ...' ];
32- talkToMe(cfg , msg );
34+ num2str(nbTriggersToWait - triggerCounter ), ' ...' ];
35+
36+ talkToMe(cfg , msg , quietMode );
3337
34- while triggerCounter < cfg . mri . triggerNb
38+ while triggerCounter < nbTriggersToWait
3539
3640 keyCode = []; % #ok<NASGU>
3741
@@ -42,10 +46,11 @@ function waitForTrigger(cfg, deviceNumber)
4246 triggerCounter = triggerCounter + 1 ;
4347
4448 msg = sprintf(' Trigger %i ' , triggerCounter );
45- talkToMe(cfg , msg );
49+
50+ talkToMe(cfg , msg , quietMode );
4651
4752 % we only wait if this is not the last trigger
48- if triggerCounter < cfg . mri . triggerNb
53+ if triggerCounter < nbTriggersToWait
4954 pauseBetweenTriggers(cfg );
5055 end
5156
@@ -54,16 +59,53 @@ function waitForTrigger(cfg, deviceNumber)
5459 end
5560end
5661
57- function talkToMe( cfg , msg )
62+ function [ cfg , nbTriggersToWait , deviceNumber , quietMode ] = checkInputs( varargin )
5863
59- fprintf([ msg , ' \n ' ]) ;
64+ varargin = varargin{ 1 } ;
6065
61- if isfield(cfg , ' screen' ) && isfield(cfg .screen , ' win' )
66+ if numel(varargin ) < 1 || isempty(varargin{1 }) || ~isstruct(varargin{1 })
67+ error(' First input must be a cfg structure.' );
68+ elseif isstruct(varargin{1 })
69+ cfg = varargin{1 };
70+ end
6271
63- DrawFormattedText(cfg .screen .win , msg , ...
64- ' center' , ' center' , cfg .text .color );
72+ if numel(varargin ) < 3 || isempty(varargin{3 })
73+ quietMode = false ;
74+ else
75+ quietMode = varargin{3 };
76+ end
6577
66- Screen(' Flip' , cfg .screen .win );
78+ if numel(varargin ) < 2 || isempty(varargin{2 })
79+ deviceNumber = - 1 ;
80+ if ~quietMode
81+ fprintf(' Will wait for triggers on the main keyboard device.\n ' );
82+ end
83+ else
84+ deviceNumber = varargin{2 };
85+ end
86+
87+ if numel(varargin ) < 4 || isempty(varargin{4 })
88+ nbTriggersToWait = cfg .mri .triggerNb ;
89+ else
90+ nbTriggersToWait = varargin{4 };
91+ end
92+
93+ end
94+
95+ function talkToMe(cfg , msg , quietMode )
96+
97+ if ~quietMode
98+
99+ fprintf([msg , ' \n ' ]);
100+
101+ if isfield(cfg , ' screen' ) && isfield(cfg .screen , ' win' )
102+
103+ DrawFormattedText(cfg .screen .win , msg , ...
104+ ' center' , ' center' , cfg .text .color );
105+
106+ Screen(' Flip' , cfg .screen .win );
107+
108+ end
67109
68110 end
69111
0 commit comments