0001 function [trig_obj] = vb_trial_extractor_create_trigger(data)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 if ~exist('data', 'var')
0017 error('data is a required parameter.');
0018 end
0019
0020
0021
0022
0023
0024 H = data.H;
0025
0026
0027 ch_name_list = get(H.trigger_channel_listbox, 'String');
0028 ch_name = ch_name_list(get(H.trigger_channel_listbox, 'Value'));
0029 Nch = size(ch_name, 1);
0030
0031 slope_selected = get(H.trigger_slope_popup, 'Value');
0032 slope_item = get(H.trigger_slope_popup, 'String');
0033
0034
0035 trig_type_list = get(H.trigger_type_popup, 'String');
0036 trig_type = trig_type_list{get(H.trigger_type_popup, 'Value')};
0037 trig_slope = slope_item{slope_selected};
0038 try
0039 switch(trig_type)
0040 case 'analog'
0041 trig_level = str2double(get(H.analog_level_edit, 'String'));
0042 trig_obj = vb_analog_trigger_new(ch_name, trig_slope, trig_level);
0043 case 'voice'
0044 trig_obj = vb_voice_trigger_new(ch_name, ...
0045 data.voice_parm.optional_parm.status_level, ...
0046 data.voice_parm.optional_parm.t_period, ...
0047 data.voice_parm.advanced_parm.p_val, ...
0048 data.voice_parm.advanced_parm.t_smooth);
0049 case 'emg'
0050 trig_obj = vb_emg_trigger_new(ch_name, ...
0051 data.emg_parm.optional_parm.status_level, ...
0052 data.emg_parm.optional_parm.t_event, ...
0053 data.emg_parm.advanced_parm.t_smooth, ...
0054 data.emg_parm.optional_parm.t_period, ...
0055 data.emg_parm.advanced_parm.p_val);
0056 case 'integer'
0057 bitpattern = get(H.integer_level_edit, 'String');
0058 offset = data.trigger_adjust_parameter.Data_offset;
0059 bitmask = data.trigger_adjust_parameter.Bitmask;
0060 trig_obj = vb_integer_trigger_new(ch_name, trig_slope, bitpattern, bitmask, offset);
0061 case 'bit'
0062 bit_number = uint32(str2double(get(H.bit_level_edit, 'String')));
0063 offset = data.trigger_adjust_parameter.Data_offset;
0064 bitmask = data.trigger_adjust_parameter.Bitmask;
0065 trig_obj = vb_bit_trigger_new(ch_name, trig_slope, bit_number, bitmask, offset);
0066 case 'multi channel pattern'
0067 table_ix = [];
0068 for k=1:Nch
0069 table_ix = [table_ix; strmatch(ch_name{k}, data.multi_channel_pattern(:, 1), 'exact')];
0070 end
0071 channel_pattern = [data.multi_channel_pattern{table_ix, 2}];
0072 trig_obj = vb_multi_trigger_new(ch_name, trig_slope, channel_pattern);
0073 end
0074 catch
0075 [msg, msg_f] = vb_get_error_msg(lasterror);
0076 errordlg(msg_f, 'Trigger information');
0077 return;
0078 end
0079