diff options
Diffstat (limited to 'macros/Events/MCLOCK_f.sci')
-rw-r--r-- | macros/Events/MCLOCK_f.sci | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/macros/Events/MCLOCK_f.sci b/macros/Events/MCLOCK_f.sci new file mode 100644 index 00000000..2dd62f6f --- /dev/null +++ b/macros/Events/MCLOCK_f.sci @@ -0,0 +1,141 @@ +// Scicos +// +// Copyright (C) INRIA - METALAU Project <scicos@inria.fr> +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// +// See the file ../license.txt +// + +function [x,y,typ]=MCLOCK_f(job,arg1,arg2) + x=[]; + y=[]; + typ=[]; + select job + case "set" then + // look for the clock block + for i=1:length(arg1.model.rpar.objs) do + o = arg1.model.rpar.objs(i); + if typeof(o) == "Block" & o.gui == "MFCLCK_f" then + path = i; + break; + end + end + + newpar=list(); + spath=list("model","rpar","objs",path) + xx=arg1(spath)// get the block + execstr("xxn="+xx.gui+"(''set'',xx)") + if or(xxn<>xx) then + // parameter or states changed + arg1(spath)=xxn// Update + newpar(size(newpar)+1)=path// Notify modification + end + x=arg1 + y=0 + typ=newpar + case "define" then + nn=2 + dt=0.1 + exprs=[string(dt);string(nn)] + + mfclck=MFCLCK_f("define") + mfclck.graphics.orig=[334,199] + mfclck.graphics.sz=[40,40] + mfclck.graphics.flip=%t + mfclck.graphics.exprs=exprs + mfclck.graphics.pein=12 + mfclck.graphics.peout=[4;3] + mfclck.model.rpar=0.1 + mfclck.model.ipar=nn + mfclck.model.firing=[-1 0] + + clksom=CLKSOM_f("define") + clksom.graphics.orig=[457,161] + clksom.graphics.sz=[16.666667,16.666667] + clksom.graphics.flip=%t + clksom.graphics.exprs=["0.1";"0.1"] + clksom.graphics.pein=[4;9;0] + clksom.graphics.peout=5 + + output_port1=CLKOUT_f("define") + output_port1.graphics.orig=[509,261] + output_port1.graphics.sz=[20,20] + output_port1.graphics.flip=%t + output_port1.graphics.exprs="1" + output_port1.graphics.pein=10 + output_port1.model.ipar=1 + + output_port2=CLKOUT_f("define") + output_port2.graphics.orig=[509,142] + output_port2.graphics.sz=[20,20] + output_port2.graphics.flip=%t + output_port2.graphics.exprs="2" + output_port2.graphics.pein=13 + output_port2.model.ipar=2 + + + split1=CLKSPLIT_f("define") + split1.graphics.orig=[411.92504;169.33333] + split1.graphics.pein=3, + split1.graphics.peout=[9;10] + + split2=CLKSPLIT_f("define") + split2.graphics.orig=[482.45315;169.33333] + split2.graphics.pein=5 + split2.graphics.peout=[12;13] + + gr_i=[] + + diagram=scicos_diagram(); + diagram.objs(1)=mfclck + diagram.objs(2)=clksom + diagram.objs(3)=scicos_link(xx=[360.7;360.7;411.9],.. + yy=[193.3;169.3;169.3],.. + ct=[10,-1],from=[1,2],to=[8,1]) + diagram.objs(4)=scicos_link(xx=[347.3;347.3;461.8;461.8],.. + yy=[193.3;155.5;155.5;161],.. + ct=[10,-1],from=[1,1],to=[2,1]) + diagram.objs(5)=scicos_link(xx=[468.9;482.5],yy=[169.3;169.3],.. + ct=[10,-1],from=[2,1],to=[11,1]) + + diagram.objs(6)=output_port1 + diagram.objs(7)=output_port2 + diagram.objs(8)=split1 + + diagram.objs(9)=scicos_link(xx=[411.9;457],.. + yy=[169.3;169.3],.. + ct=[10,-1],from=[8,1],to=[2,2]) + diagram.objs(10)=scicos_link(xx=[411.9;411.9;509],yy=[169.3;271;271],.. + ct=[10,-1],from=[8,2],to=[6,1]) + + diagram.objs(11)=split2 + + diagram.objs(12)=scicos_link(xx=[482.5;489.6;489.6;354;354],.. + yy=[169.3;169.3;338.3;338.3;244.7],.. + ct=[10,-1],from=[11,1],to=[1,1]) + diagram.objs(13)=scicos_link(xx=[482.4;482.4;509],yy=[169.3;152;152],.. + ct=[10,-1],from=[11,2],to=[7,1]) + x=scicos_block() + x.gui="MCLOCK_f" + x.graphics.sz=[3,2] + x.graphics.gr_i=gr_i + x.model.sim="csuper" + x.model.evtout=[1;1] + x.model.blocktype="h" + x.model.rpar=diagram + x.graphics.peout=[0;0] + end +endfunction |