Interfacing function
eng

##
DLRADAPT_f

### File content

    function [x,y,typ]=DLRADAPT_f(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
      x=arg1;
      graphics=arg1.graphics;exprs=graphics.exprs
      model=arg1.model;
      while %t do
        [ok,p,rn,rd,g,last_u,last_y,exprs]=getvalue('Set block parameters',..
    	['Vector of p mesh points';
    	'Numerator roots (one line for each mesh)';
    	'Denominator roots (one line for each mesh)';
            'Vector of gain at mesh points' ;
    	'past inputs (Num degree values)';
    	'past outputs (Den degree values)'],..
    	list('vec',-1,'mat',[-1,-1],'mat',..
    	['size(%1,''*'')','-1'],'vec','size(%1,''*'')',..
    	'vec','size(%2,2)','vec','size(%3,2)'),exprs)

        if ~ok then break,end
        m=size(rn,2)
        [npt,n]=size(rd)
        if m>=n then
          message('Transfer must be strictly proper'),
        elseif size(rn,1)<>0&size(rn,1)<>size(p,'*') then
          message('Numerator roots matrix row size''s is incorrect')
        else
          rpar=[p(:);real(rn(:));imag(rn(:));real(rd(:));imag(rd(:));g(:)]
          ipar=[m;n;npt]
          model.dstate=[last_u(:);last_y(:)]
          model.rpar=rpar
          model.ipar=ipar
          graphics.exprs=exprs
          x.graphics=graphics;x.model=model
          break;
        end
      end
    case 'define' then
      p=[0;1]
      rn=[]
      rd=[0.2+0.8*%i,0.2-0.8*%i;0.3+0.7*%i,0.3-0.7*%i]
      g=[1;1]
      last_u=[]
      last_y=[0;0]

      model=scicos_model()
      model.sim='dlradp'
      model.in=[1;1]
      model.out=1
      model.evtin=1

      model.dstate=[last_u;last_y]
      model.rpar=[p(:);real(rn(:));imag(rn(:));real(rd(:));imag(rd(:));g(:)]
      model.ipar=[0;2;2]
      model.blocktype='d'
      model.firing=[]
      model.dep_ut=[%t %f]

      exprs=[sci2exp(p);
    	sci2exp(rn);
    	sci2exp(rd,0);
    	sci2exp(g);
    	sci2exp(last_u);
    	sci2exp(last_y)]
      gr_i=['txt=[''N(z,p)'';''-----'';''D(z,p)''];';
    	'xstringb(orig(1),orig(2),txt,sz(1),sz(2),''fill'');']
      x=standard_define([2 2],model,exprs,gr_i)
    end
    endfunction