function [node,outputs] = sinuso(gp, node, event, inputs, outputs)
% bla bla
%% N\_SIGNAL\_SINUSOIDAL - gnration d'un signal sinusoidal
% ceci est un test
% $$out = A\, sin( {(t + d) \over p} + \phi)$$
VERSION = 1.1;
node.status = 0 ;
% Le statut n'est utilis que lors du transfert (acc ou trf).
% Excution du module.
switch(event)
case 'rst'
if( node.version < VERSION )
%<* Dclaration du module.
node.author = 'Charles-Albert Lehalle' ;
node.mailto = 'charles.lehalle@miriadtech.com' ;
node.date = '03-Jan-2002' ;
node.version = VERSION ;
%>
%<** Initialisation des tats et paramtres.
node.nargin = 1 ;
node.nargout = 1 ;
node.network = 0 ;
node.param = [
make_param('Priode','edit','on','50')
make_param('Dure','edit','on','100')
make_param('Phase','edit','on','0')
make_param('Dlais','edit','on','10')
make_param('Amplitude','edit','on','1')
] ;
node.plot = 'p_stdplot' ;
node.state = [] ;
%>
end;
case 'prm'
%<*2 Validit des paramtres. c'est un commentaire
% qui continue ici
% tout cela utilise la variable |node|,
node.assist = 0 ;
% Renvoyer une erreur en cas de problme.
% Modifier ventuellement le vecteur de paramtres pour une autre demande.
node = isNumStrictPos( node, 'Priode');
node = isNumStrictPos( node, 'Dure');
node = isNum( node, 'Phase');
node = isNum( node, 'Dlais');
node = isNumStrictPos( node, 'Amplitude');
%>
case 'dbu'
node.status = 0 ;
node.state = [ ] ;
node.delay = 0;
case 'trf'
% Excution du module.
%< Transmission des anciennes donnes.
if node.nargin==1
%< encastrement 1
a = 2;
%< encastrement 2
a = 3;
%< encastrement 3
a = 4;
%>
%>
%>
outputs{1} = inputs{1} ;
end
%>
%< rcupration des paramtres
p = mparam(node, 'Priode');
D = mparam(node, 'Dure');
phi = mparam(node, 'Phase');
d = mparam(node, 'Dlais');
A = mparam(node, 'Amplitude');
if( ~isfield(node, 'delay') )
dl = 0;
else
dl = node.delay ;
end;
%>
%< gnration du signal
outputs{1}.value = A * sin( ((1:D) + dl) / p + phi)';
outputs{1}.name = 'sinusoidale';
%>
node.delay = dl + d;
%< Cas itratif.
% sacr test
if ~isempty(node.state)
node.state = node.state - 1 ;
if node.state
node.status = 1 ;
else
node.status = 0 ;
end
end
%>
case 'fin'
node.state = [] ;
end
%< fonctions de vrification des paramtres: poritif?
function a_node = isNumPos( a_node, name, recup)
recup = mparam(a_node, name);
if isempty(recup) | ~isnumeric(recup) | (recup < 0)
a_node.assist = [('The parameter ''') name (''' must be positive.')];
end;
%>
%% vrif paramtre strictement positif
function a_node = isNumStrictPos( a_node, name, recup)
recup = mparam(a_node, name);
if isempty(recup) | ~isnumeric(recup) | (recup <= 0)
a_node.assist = [('The parameter ''') name (''' must be positive.')];
end;
%% vrif paramtre numrique
% ceci est un commentaire (vpn)
function a_node = isNum( a_node, name, recup)
recup = mparam(a_node, name);
if isempty(recup) | ~isnumeric(recup)
a_node.assist = [('The parameter ''') name (''' must be positive.')];
end;
if 1 & 0
0;
end;