51 lines
1.8 KiB
Matlab
51 lines
1.8 KiB
Matlab
% Copyright 2024 Volvo Car Corporation
|
|
% Licensed under Apache 2.0.
|
|
|
|
function out = getCodeSwitches(handle, in)
|
|
% recursivly find if there are any configuration switches affecting
|
|
% the block "handle"
|
|
if nargin == 1
|
|
in = {};
|
|
end
|
|
parent = get_param(handle, 'Parent');
|
|
if ~isempty(strfind(parent, '/'))
|
|
ph = get_param(parent, 'PortHandles');
|
|
if ~isempty(ph.Ifaction)
|
|
l=get_param(ph.Ifaction,'Line');
|
|
sbh=get_param(l,'SrcBlockHandle');
|
|
sbp=get_param(l,'SrcPort');
|
|
%hilite_system(sbh);
|
|
mt=get_param(sbh,'MaskType');
|
|
if strcmp(mt,'TL_PreProcessorIf')
|
|
ports = get_param(sbh, 'PortHandles');
|
|
l=get_param(ports.Inport, 'Line');
|
|
blk = get_param(l, 'SrcBlockHandle');
|
|
if strcmp(get_param(blk, 'BlockType'), 'Inport')
|
|
tmp=get_param(get_param(blk, 'Parent'), 'LineHandles');
|
|
blk=get_param(tmp.Inport(str2num(get_param(blk, 'Port'))), 'SrcBlockHandle');
|
|
end
|
|
if_exp = tl_get(sbh, 'ifexpression');
|
|
if str2num(sbp)==2
|
|
if_exp = ['!(' if_exp ')'];
|
|
end
|
|
exp = strrep(if_exp,'u1',get_param(blk, 'const_name'));
|
|
in = [in; exp];
|
|
end
|
|
elseif ~isempty(ph.Enable)
|
|
l=get_param(ph.Enable,'Line');
|
|
sbh=get_param(l,'SrcBlockHandle');
|
|
mt=get_param(sbh,'MaskType');
|
|
if strcmp(mt,'PreProcessorName')
|
|
exp = get_param(sbh, 'const_name');
|
|
in = [in; exp];
|
|
end
|
|
end
|
|
in = getCodeSwitches(parent, in);
|
|
end
|
|
if length(in) > 0
|
|
out = in;
|
|
else
|
|
out = {'all'};
|
|
end
|
|
end
|