Interfacing function
eng


EYESCOPE_c

File content


//EYESCOPE_c Scicos eye diagram scope block
//Classical interface function ver1.0 - scilab-4.1
//26 mars 2007 - INRIA - Author : A.Layec
function [x,y,typ]=EYESCOPE_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=[];
case 'getorigin' then
  [x,y]=standard_origin(arg1)
case 'set' then
  x=arg1;
  graphics=arg1.graphics;
  exprs=graphics.exprs;
  model=arg1.model;

  //compatibility : add wdim
  if size(exprs,'*')==8 then exprs=[exprs;'[600;400]'], end

  while %t do
    [ok,insz,wid,Tse,ne,ns,nt,y_dim,herit,wdim,exprs]=getvalue(..
        'Set Scope parameters',..
        ['In size';
         'Output window number (automatic:-1)';
         'Sampling period';
         'Samples per symbol';
         'Number of symbols';
         'Number of traces';
         'Y axis bound [min,max] (autoscale:-1)';
         'Inherit (no:0, yes:1)';
         'Window sizes'],..
        list('vec',1, 'vec',1, 'vec',1, 'vec',1, 'vec',1, ..
             'vec',1, 'vec',-1, 'vec',1, 'vec',-1),exprs)

    if ~ok then break,end //user cancel modification

    mess=[]

    //check values of user param
    if Tse<=0 then
      mess=[mess;'Sampling period must be greather than zero';' ']
      ok=%f
    end
    if ne<=0 then
      mess=[mess;'Sampling per symbol must be greather than zero';' ']
      ok=%f
    end
    if ns<=0 then
      mess=[mess;'Number of symbols must be greather than zero';' ']
      ok=%f
    end
    if nt<=0 then
      mess=[mess;'Number of trace must be greather than zero';' ']
      ok=%f
    end

    if size(y_dim,'*')==1|size(y_dim,'*')==0 then //autoscale
      ymin=-1;
      ymax=-1;
      scaltyp=1
    else
      if y_dim(1)==-1 & y_dim(2)==-1 then //autoscale
        ymin=-1;
        ymax=-1;
        scaltyp=1
      else
        if y_dim(1)>=y_dim(2) then
          mess=[mess;'Ymax must be greater than Ymin';' ']
          ok=%f
        else
          ymin=y_dim(1);
          ymax=y_dim(2);
          scaltyp=0
        end
      end
    end

    if size(wdim,'*')<>0 &size(wdim,'*')<>2 then
      mess=[mess;'Window dim must be [] or a 2 vector';' ']
      ok=%f
    end

    if ~ok then
      message(['Some specified values are inconsistent:';
                 ' ';mess])
    end

    //auto adjustement of some values
    if ok then
      if insz==0 then insz=-1, end
      if size(insz,'*')<>1 then insz=insz(1), end
      if herit==1 then
        [model,graphics,ok]=check_io(model,graphics,insz,[],[],[])
      else
        [model,graphics,ok]=check_io(model,graphics,insz,[],1,[])
      end
    end

    if ok then
      if wdim==[] then wdim=[-1;-1];end
      model.ipar = [wid;ne;ns;,nt;scaltyp;wdim(:)]
      model.rpar = [Tse;ymin;ymax]
      model.dstate = [0;0;0;0] //[Samples;Symbols;Traces;ind_gr]
      graphics.exprs=exprs;
      x.graphics=graphics;x.model=model
      break
    end
  end
case 'define' then
  insz  = -1
  wid   = -1   //ipar(1)
  Tse   = 1    //rpar(1)
  ne    = 8    //ipar(2)
  ns    = 2    //ipar(3)
  nt    = 20   //ipar(4)
 // y_dim = [-1;-1]
  ymin    = -1 //rpar(2)
  ymax    = -1 //rpar(3)
  scaltyp = 1  //ipar(5)
  herit   = 0
  wdim    = [600;400] //ipar(6)/ipar(7)

  model=scicos_model()

  model.sim       = list('eye_scope',4)
  model.in        = insz
  model.out       = []
  model.evtin     = [1]
  model.evtout    = []
  model.dstate    = [0;0;0;0] //[Samples;Symbols;Traces;ind_gr]
  model.ipar      = [wid;ne;ns;,nt;scaltyp;wdim(:)]
  model.rpar      = [Tse;ymin;ymax]
  model.blocktype = 'd'
  model.firing    = []
  model.dep_ut    = [%t %f]

  exprs=[string(insz)
         string(wid)
         string(Tse)
         string(ne)
         string(ns)
         string(nt)
         sci2exp([-1 -1])
         string(herit)
         sci2exp(wdim)];

  gr_i=['thick=xget(''thickness'');';
        'pat=xget(''pattern'');';
        'fnt=xget(''font'');';
        'a=orig(1)+sz(1)/10;';
        'b=a+sz(1)*8/10;';
        'd=orig(2)+(1-1/10)*sz(2);';
        'c=d-sz(2)*8/10;';
        '';
        'xset(''thickness'',2);';
        'xrect(a,d,sz(1)*8/10,sz(2)*8/10);';
        '';
        'cc=0.2*(d-c)/2;';
        'ccc=0.15*(d-c)/2;';
        'c1=c+cc;d1=d-cc;';
        'cc1=c+ccc;dd1=d-ccc;';
        '';
        'xx=(a:(b-a)/16:b);';
        'xx=xx'';';
        '';
        'yy=[1     ;  0.873;';
         '   0.626 ;  0.311;';
        '   -0.041 ; -0.390;';
        '   -0.692 ; -0.906;';
        '   -1     ; -0.956;';
        '   -0.793 ; -0.520;';
        '   -0.177 ;  0.189;';
        '    0.528 ;  0.795;';
        '    1];';
        '';
        'xset(''thickness'',1);';
        'xpoly(xx,((yy+1)/2)*(d1-c1)+c1);';
        'xpoly(xx,((-yy+1)/2)*(d1-c1)+c1);';
        'xpoly([a;b],[cc1;cc1]);';
        'xpoly([a;b],[dd1;dd1]);';
        'xset(''thickness'',thick);';
        'xset(''pattern'',pat);';
        'xset(''font'',fnt(1),fnt(2));';
       ]
  x=standard_define([2 2],model,exprs,gr_i)
end
endfunction