1
- function waitForTrigger(cfg , deviceNumber )
2
- % waitForTrigger(cfg, deviceNumber)
1
+ function waitForTrigger(varargin )
2
+ % waitForTrigger(cfg, deviceNumber, quietMode, nbTriggersToWait )
3
3
%
4
4
% Counts a certain number of triggers coming from the scanner before returning.
5
5
%
@@ -13,25 +13,29 @@ function waitForTrigger(cfg, deviceNumber)
13
13
% When no deviceNumber is set then it will check the default device: this is
14
14
% probably only useful in debug as you will want to make sure you get the
15
15
% 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
16
26
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 );
25
28
26
29
triggerCounter = 0 ;
27
30
28
31
if strcmpi(cfg .testingDevice , ' mri' )
29
32
30
33
msg = [' Experiment starting in ' , ...
31
- num2str(cfg .mri .triggerNb - triggerCounter ), ' ...' ];
32
- talkToMe(cfg , msg );
34
+ num2str(nbTriggersToWait - triggerCounter ), ' ...' ];
35
+
36
+ talkToMe(cfg , msg , quietMode );
33
37
34
- while triggerCounter < cfg . mri . triggerNb
38
+ while triggerCounter < nbTriggersToWait
35
39
36
40
keyCode = []; % #ok<NASGU>
37
41
@@ -42,10 +46,11 @@ function waitForTrigger(cfg, deviceNumber)
42
46
triggerCounter = triggerCounter + 1 ;
43
47
44
48
msg = sprintf(' Trigger %i ' , triggerCounter );
45
- talkToMe(cfg , msg );
49
+
50
+ talkToMe(cfg , msg , quietMode );
46
51
47
52
% we only wait if this is not the last trigger
48
- if triggerCounter < cfg . mri . triggerNb
53
+ if triggerCounter < nbTriggersToWait
49
54
pauseBetweenTriggers(cfg );
50
55
end
51
56
@@ -54,16 +59,53 @@ function waitForTrigger(cfg, deviceNumber)
54
59
end
55
60
end
56
61
57
- function talkToMe( cfg , msg )
62
+ function [ cfg , nbTriggersToWait , deviceNumber , quietMode ] = checkInputs( varargin )
58
63
59
- fprintf([ msg , ' \n ' ]) ;
64
+ varargin = varargin{ 1 } ;
60
65
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
62
71
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
65
77
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
67
109
68
110
end
69
111
0 commit comments