1function trig = makeTrigger(channel, varargin)
2%makeTrigger Create a trigger halt event.
3% trigger=makeTrigger() Create a trigger event for a synchronisation with
4% an external signal from a given channel with an
5% optional given delay prio to the sync and
6% duration after the sync.
7% Possible channel values: 'physio1','physio2' (Siemens specific)
8%
9% See also Sequence.addBlock
11persistent parser
12if isempty(parser)
13 parser = mr.aux.InputParserCompat;
14 parser.FunctionName = 'makeTrigger';
16 addOptional(parser, 'delay', 0, @isnumeric);
17 addOptional(parser, 'duration', 0, @isnumeric); % will replace with gradRadterTime below
18 addOptional(parser, 'system', [], @isstruct);
19end
21if nargin<1
22 error('makeTrigger:invalidArguments','Must supply a channel');
23end
25parse(parser, varargin{:});
26opt = parser.Results;
28if isempty(opt.system)
29 system=mr.opts();
30else
31 system=opt.system;
32end
34channel_num=find(strcmp(channel,{'physio1','physio2'}));
35assert(~isempty(channel_num) && channel_num>0,'makeTrigger:invalidChannel',...
36 'Channel (%s) is invalid',channel);
37trig.type = 'trigger';
38trig.channel=channel;
39trig.delay = opt.delay;
40trig.duration = opt.duration;
41if (trig.duration<=system.gradRasterTime)
42 trig.duration=system.gradRasterTime;
43end
45end