[tok, blockName] = strtok(newBlocks{k}, '/');
blockName = ['rpp_lib', blockName];
disp([' ', newBlocks{k}, ' as ', blockName]);
- add_block(newBlocks{k}, blockName);
+
+ % Copy rather than link blocks to rpp_lib. This is
+ % because we don't want rpp_update_blocks_for_target
+ % below to modify the original blocks.
+ add_block(newBlocks{k}, blockName, 'LinkStatus', 'none');
end
close_system(blockFilePath, 0);
end
};
set_param('rpp_lib', 'ForwardingTable', ft);
+ rpp_update_blocks_for_target()
+
disp(['Closing and saving file ', 'rpp_lib.slx']);
set_param('rpp_lib', 'Lock', 'on');
save_system('rpp_lib');
function rpp_update_blocks_for_target
%RPP_UPDATE_BLOCKS_FOR_TARGET Update blocks for use with the particular target hardware
-% Update GIO pin names
- update_gio_names('rpp_gio_in')
- update_gio_names('rpp_gio_out')
+ block_lib = load_system('rpp_lib');
+ lock = get_param(block_lib, 'Lock');
+ set_param(block_lib, 'Lock', 'off');
+
+ % Update GIO pin names
+ update_gio_names('rpp_lib/General Purpose Digital Input')
+ update_gio_names('rpp_lib/General Purpose Digital Output')
+
+ set_param(block_lib, 'Lock', lock);
+ save_system(block_lib);
end
-function update_gio_names(lib)
- block_lib = load_system(lib);
- set_param(block_lib, 'Lock', 'off');
- block = find_system(block_lib, 'Type', 'block');
- params = get_param(block, 'ObjectParameters');
- p = Simulink.Mask.get(block);
- param = p.getParameter('pin');
+function update_gio_names(block)
+ mask = Simulink.Mask.get(block);
+ param = mask.getParameter('pin');
gio_names_txt = fullfile(getpref('rpp', 'RppLibRoot'), 'build', 'gio_names.txt');
[names,conf]=textread(gio_names_txt, '%s %s');
gio_names = names(cellfun(@(x) ~isempty(x), strfind(conf, 'FNC_GPIO')));
param.TypeOptions = [{'---'}; gio_names];
- set_param(block_lib, 'Lock', 'on');
- save_system(block_lib);
- close_system(block_lib);
end