view m-toolbox/sltpda/getIOblockCommands.m @ 18:947e2ff4b1b9
database-connection-manager
Update plist.FROM_REPOSITORY_PLIST and plist.TO_REPOSITORY_PLIST
author |
Daniele Nicolodi <nicolodi@science.unitn.it> |
date |
Mon, 05 Dec 2011 16:20:06 +0100 (2011-12-05) |
parents |
f0afece42f48 |
children |
|
line source
function cmds = getIOblockCommands(blocks)
% GETIOBLOCKCOMMANDS get a set of commands from a set of sLTPDA blocks.
%
% M Hewitson 27-03-07
%
disp(' + compiling IO block list');
cmds = [];
for j=1:length(blocks)
b = blocks(j);
blocktype = get(b, 'blocktype');
name = get(b, 'Name');
masktype = get(b, 'MaskType');
parent = get(b, 'Parent');
% split parent name to get block name
idx = findstr('/', parent);
blockname = strrep(parent(max(idx)+1:end), ' ', '_');
% get my port number
pn = get(b, 'Port');
fcn = name;
fcn = sltpda_fixvar(fcn);
% If I am an output port, map my line src to blockname_portnum
switch blocktype
case 'Outport'
if ~isempty(blockname)
l = get(b, 'LineHandles');
l = get(l.Inport, 'Handle');
% get src block name
srcblock = get(l, 'SrcBlockHandle');
sbname = get(srcblock, 'Name');
% get src port number
srcport = get(l, 'SrcPortHandle');
spn = get(srcport, 'PortNumber');
% Src variable
svar = [ sbname '_out_' num2str(spn)];
svar = [parent ' ' svar];
svar = sltpda_reduceVarName(svar);
svar = sltpda_fixvar(svar);
% dvar = [ blockname '_out_' num2str(pn)];
dvar = [ parent '_out_' num2str(pn)];
dvar = sltpda_reduceVarName(dvar);
dvar = sltpda_fixvar(dvar);
cmd = [dvar ' = ' svar ';'];
% store info
info.fcn = '';
info.params = [];
info.plist = plist();
info.ins = cellstr(svar);
info.outs = cellstr(dvar);
info.outsUsed = [];
info.cmd = cmd;
info.name = get(b, 'Name');
info.handle = get(b, 'Handle');
info.ranges = [];
cmds = [cmds info];
end
% If I am an input port, map my output to parent_name_in_N
case 'Inport'
svar = [ name '_out_' num2str(1)];
svar = [parent ' ' svar];
svar = sltpda_reduceVarName(svar);
svar = sltpda_fixvar(svar);
l = get(b, 'LineHandles');
l = get(l.Inport, 'Handle');
dvar = [ parent '_in_' num2str(pn)];
dvar = sltpda_reduceVarName(dvar);
dvar = sltpda_fixvar(dvar);
cmd = [svar ' = ' dvar ';'];
% store info
info.fcn = '';
info.params = [];
info.plist = plist();
info.ins = cellstr(dvar);
info.outs = cellstr(svar);
info.outsUsed = [];
info.cmd = cmd;
info.name = get(b, 'Name');
info.handle = get(b, 'Handle');
info.ranges = [];
cmds = [cmds info];
otherwise
warning('### Unknown block type');
end
end