Interfacing function
eng

##
CLOCK_c

### File content

    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