Fonction d'interfaçage
fr
DEMODGEN_c
//DEMODGEN_c Scicos generic symbol demodulator block
//Classical interface function ver1.0 - scilab-4.1
//25 mars 2007 Author : - INRIA - A.Layec
function [x,y,typ]=DEMODGEN_c(job,arg1,arg2)
x=[];y=[];typ=[]
select job
case 'plot' then
constel=arg1.model.rpar(:);
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;model=arg1.model;
exprs=graphics.exprs;
while %t do
[ok,constel,herit,exprs]=getvalue('Set generic demodulator block',...
['Points constellation';'Inherit (no:0, yes:1)'],...
list('vec',-1,'vec',1),exprs);
if ~ok then break,end;
//teste des points de la constellation
if isreal(constel) then
tt=find(size(constel)==2)
if tt==[] then
message('Set a complex vector of a matrix of size p,2 for constellation')
ok=%F
else
if size(tt,'*')==1 then
if tt==1 then
constel=[constel(1,:)+%i*constel(2,:)]
else
constel=[constel(:,1)+%i*constel(:,2)]
end
else
constel=[constel(:,1)+%i*constel(:,2)]
end
end
end
if ok then
if herit==1 then
model.dep_ut=[%t %f]
[model,graphics,ok]=check_io(model,graphics,[-1;-1],-1,[],[])
else
model.dep_ut=[%t %f]
[model,graphics,ok]=check_io(model,graphics,[-1;-1],-1,1,[])
end
graphics.exprs=exprs;
model.ipar=size(constel,'*');
model.rpar=[real(constel(:));imag(constel(:))]
x.graphics=graphics; x.model=model;
break;
end
end
case 'define' then
nb=4
nu=-1
constel=[exp(%i*((0:5)*%pi/3+%pi/4))]
herit=1
model=scicos_model()
model.sim=list('demodgen',4)
model.in=[nu;nu]
model.out=nu;
model.evtin=[]
model.evtout=[]
model.dstate=[]
model.rpar=[real(constel(:));imag(constel(:))]
model.ipar=size(constel,'*')
model.blocktype='d'
model.firing=[]
model.dep_ut=[%t %f]
gr_i=['thick=xget(''thickness'')';
'pat=xget(''pattern'')';
'fnt=xget(''font'')';
'ln_st=xget(""line style"")';
'sz1=0.86*sz(1);sz2=0.86*sz(2)';
'xxs=orig(1)+sz(1)/2';
'yys=orig(2)+sz(2)/2';
'nb=size(constel(:),''*'')/2';
'if nb<16 then';
' ww=0.14*sz(1)';
' hh=0.14*sz(2)';
'elseif nb>=32 then';
' ww=0.06*sz(1)';
' hh=0.06*sz(2)';
'else';
' ww=0.1*sz(1)';
' hh=0.1*sz(2)';
'end';
'mmax=max([constel(:);imag(constel(:))])';
'mmin=min([constel(:);imag(constel(:))])';
'if(mmax>1)|(mmin<-1) then';
' aa_s=(mmax-mmin)/2';
'else';
' aa_s=1';
'end';
'aa_s=aa_s/0.9';
'aa1=0';
'aa2=64*360';
'xset(""line style"",2)';
'xset(""line style"",ln_st)';
'for ii=1:nb';
' xxx=xxs+sz1/2*constel(ii)/aa_s-ww/2';
' yyy=yys+sz2/2*constel(ii+nb(1))/aa_s+hh/2';
' xfarc(xxx,yyy,ww,hh,aa1,aa2)';
'end';
'xpoly([xxs;xxs],[orig(2);orig(2)+sz(2)],""lines"")';
'xpoly([orig(1);orig(1)+sz(2)],[yys;yys],""lines"")';
'xset(''font'',5,0)'
'txt=''Demodulator'';'
'style=5;'
'rectstr=stringbox(txt,orig(1),orig(2),0,style,0);'
'w=(rectstr(1,3)-rectstr(1,2))*%zoom;'
'h=(rectstr(2,2)-rectstr(2,4))*%zoom;'
'xstringb(orig(1)+sz(1)/2-w/2,orig(2)-h-4,txt,w,h,''fill'');'
'e=gce();'
'e.font_style=style;'
'xset(''thickness'',thick)';
'xset(''pattern'',pat)';
'xset(''font'',fnt(1),fnt(2))';]
exprs=['exp(%i*((0:5)*%pi/3+%pi/4))',string(herit)];
x=standard_define([2 2],model,exprs,gr_i)
end
endfunction