function [x,y,typ]=CLOCK_c(job,arg1,arg2) // Copyright INRIA x=[];y=[],typ=[] select job case 'plot' then standard_draw(arg1) case 'getinputs' then [x,y,typ]=standard_inputs(arg1) case 'getoutputs' then [x,y,typ]=standard_outputs(arg1) case 'getorigin' then [x,y]=standard_origin(arg1) case 'set' then path = 2 newpar=list(); xx=arg1.model.rpar.objs(path)// get the evtdly block exprs=xx.graphics.exprs model=xx.model; t0_old=model.firing dt_old= model.rpar(1) model_n=model while %t do [ok,dt,t0,exprs0]=getvalue('Set Clock block parameters',.. ['Period';'Init time'],list('vec',1,'vec',1),exprs) if ~ok then break,end if dt<=0 then message('period must be positive') ok=%f end if ok then xx.graphics.exprs=exprs0 model.rpar=[dt;t0] model.firing=t0 xx.model=model arg1.model.rpar.objs(path)=xx// Update break end end if ~and([t0_old dt_old]==[t0 dt]) then // parameter changed newpar(size(newpar)+1)=path// Notify modification end if t0_old<>t0 then needcompile=2,else needcompile=0,end x=arg1 y=needcompile typ=newpar case 'define' then evtdly=EVTDLY_c('define') evtdly.graphics.orig=[320,232] evtdly.graphics.sz=[40,40] evtdly.graphics.flip=%t evtdly.graphics.exprs=['0.1';'0.1'] evtdly.graphics.pein=6 evtdly.graphics.peout=3 evtdly.model.rpar=[0.1;0.1] evtdly.model.firing=0.1 output_port=CLKOUT_f('define') output_port.graphics.orig=[399,162] output_port.graphics.sz=[20,20] output_port.graphics.flip=%t output_port.graphics.exprs='1' output_port.graphics.pein=5 output_port.model.ipar=1 split=CLKSPLIT_f('define') split.graphics.orig=[380.71066;172] split.graphics.pein=3, split.graphics.peout=[5;6] gr_i=list(['wd=xget(''wdim'').*[1.016,1.12];'; 'thick=xget(''thickness'');xset(''thickness'',2);'; 'p=wd(2)/wd(1);p=1;'; 'rx=sz(1)*p/2;ry=sz(2)/2;'; 'xarcs([orig(1)+0.05*sz(1);'; 'orig(2)+0.95*sz(2);'; ' 0.9*sz(1)*p;'; ' 0.9*sz(2);'; ' 0;'; ' 360*64],scs_color(5));'; 'xset(''thickness'',1);'; 'xx=[orig(1)+rx orig(1)+rx;'; ' orig(1)+rx orig(1)+rx+0.6*rx*cos(%pi/6)];'; 'yy=[orig(2)+ry orig(2)+ry ;'; ' orig(2)+1.8*ry orig(2)+ry+0.6*ry*sin(%pi/6)];'; 'xsegs(xx,yy,scs_color(10));'; 'xset(''thickness'',thick);'],8) diagram=scicos_diagram(); diagram.objs(1)=output_port diagram.objs(2)=evtdly diagram.objs(3)=scicos_link(xx=[340;340;380.71],.. yy=[226.29;172;172],.. ct=[5,-1],from=[2,1],to=[4,1]) diagram.objs(4)=split diagram.objs(5)=scicos_link(xx=[380.71;399],yy=[172;172],.. ct=[5,-1],from=[4,1],to=[1,1]) diagram.objs(6)=scicos_link(xx=[380.71;380.71;340;340],.. yy=[172;302;302;277.71],.. ct=[5,-1],from=[4,2],to=[2,1]) x=scicos_block() x.gui='CLOCK_c' x.graphics.sz=[2,2] x.graphics.gr_i=gr_i x.graphics.peout=0 x.model.sim='csuper' x.model.evtout=1 x.model.blocktype='h' x.model.firing=%f x.model.dep_ut=[%f %f] x.model.rpar=diagram end endfunction