]> rtime.felk.cvut.cz Git - pes-rpp/rpp-simulink.git/commitdiff
Don't modify original blocks in rpp_update_blocks_for_target personal/sojka/gio-spi5
authorMichal Sojka <sojkam1@fel.cvut.cz>
Mon, 5 Oct 2015 07:58:19 +0000 (09:58 +0200)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Mon, 5 Oct 2015 07:58:19 +0000 (09:58 +0200)
Instead, copy the original block to the rpp_lib and modify it there.

rpp/blocks/rpp_generate_lib.m
rpp/blocks/rpp_gio_in.slx
rpp/blocks/rpp_gio_out.slx
rpp/blocks/rpp_update_blocks_for_target.m
rpp/rpp/rpp_setup.m

index 19250243e6eb56283f144174d400495c11031e56..8f07db47a68ee749b72496ae336efb7b0bb558ef 100644 (file)
@@ -45,7 +45,11 @@ function rpp_generate_lib()
                        [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
@@ -62,6 +66,8 @@ function rpp_generate_lib()
          };
        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');
index 21677e39b4e2a7bb416f906aba9c0c67303395a0..63d64fe37780f431496f7b3acaebc8da7759e1a0 100644 (file)
Binary files a/rpp/blocks/rpp_gio_in.slx and b/rpp/blocks/rpp_gio_in.slx differ
index 7652a1e93b19a092b84396824944fcf895b0cc81..24b929b034972a220cb3b568c104a4acfd25817a 100644 (file)
Binary files a/rpp/blocks/rpp_gio_out.slx and b/rpp/blocks/rpp_gio_out.slx differ
index e7a154d9d00c3a7dde0acfa10e635cd1e08814e3..1f0ca8df5686bcd1347df163252cc303b2bc77b7 100644 (file)
@@ -1,23 +1,23 @@
 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
index e402b48300e24aa615d420e81179729f07f0d84f..2271c53046d507df3562f9fb2e1851143c0b1f75 100644 (file)
@@ -94,7 +94,6 @@ function rpp_setup(varargin)
     % Generate blocks and library
     cd('../blocks');
     compile_blocks();
-    rpp_update_blocks_for_target()
     rpp_generate_lib();
     cd(currentPath);