function [eqn,insigs,innames] = SS_seqn (Name, name, cr, arg, outsig, ... insigs,innames,is_port) ## usage: [eqn,inbonds] = SS_seqn (Name, cr, arg, outbond, inbonds) ## ## ## Multi port SS's ?? delim = "__"; N = mtt_check_sigs (outsig,insigs); full_name = sprintf("%s%s%s", Name,delim,name); ## Get the special attibutes for SS attrib_name = char(strsplit(arg,",")); [N_a,M_a]=size(attrib_name); if (N_a~=2) # Must have 2 arguments mtt_error(sprintf("SS should have 2 args not %i", N_a)); end; effort_attribute = deblank(attrib_name(1,:)); flow_attribute = deblank(attrib_name(2,:)); ## Default attributes if strcmp(effort_attribute,"")||is_port effort_attribute = "external"; end; if strcmp(flow_attribute,"")||is_port flow_attribute = "external"; end; if mtt_is_external("SS",outsig,insigs) # Source if outsig(2)==1 # effort output. attribute = effort_attribute; else attribute = flow_attribute; endif ## Create the equation LHS = varname(Name, outsig(1,1), outsig(1,2)); RHS = Source_seqn (attribute,full_name); eqn = sprintf("%s := %s;", LHS, RHS); else # Sensor if insigs(1,2)==1 # effort output. attribute = effort_attribute; else attribute = flow_attribute; endif ## Create the equation LHS = Sensor_seqn (attribute,full_name); RHS = varname(Name, insigs(1,1), insigs(1,2)); eqn = sprintf("%s := %s;", LHS, RHS); endif endfunction