function [ERROR, tramo, codigo] = validaTramo(tramo, codigo, metodo)
%---------------------------------------------------------------------
% function [ERROR, tramo, codigo] = validaTramo(tramo, codigo, metodo)
% --------------------------------------------------------------------
% Funcin que valida los parmetros de la codificacin de
% redundancia.
%
% Ver generaCRC para ms informacin
%-------------------------------------------------------------------------
%| Autor: Cesar Delgado
%| Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------
ERROR=0;
% 1.- Long. tramos > el cdigo empleado
%--------------------------------------
if tramo < codigo,
ERROR = 1;
tramo = 7;
codigo = 4;
else
% 2.- Long. de los tramos = (2^M) -1, siendo M=3,4,...
%------------------------------------------------------
aux = log10(tramo+1)/log10(2);
valido = ((aux >= 3)) & (fix(aux)==aux);
if (~valido)
ERROR = 2;
tramo = 7;
codigo = 4;
% 3.- Particularidades de cada mtodo
%------------------------------------
% 3.1.- El mtodo HAMMINNG impone cdigo una longitud
% de cdigo a partir de la del tramo
elseif strcmp(metodo,'hamming')
valido = (codigo == (tramo-aux));
if (~valido)
ERROR = 3;
codigo = tramo-aux;
end;
% 3.2.- El mtodo BCH requiere un cdigo compatible
% con los polinomios BCH
elseif strcmp(metodo,'bch')
% Tamao de los polinomio BCH
p = bchpoly(tramo);
if size(p,1) > 1
p = p(:,2)';
end;
% Comprobacin de que long. cdigo
% coincide con algun polinonio BCH
prueba = (p == codigo*ones(1,length(p)));
if isempty(find(prueba)),
ERROR = 4;
codigo = max(p);
end;
% 3.3.- El mtodo de Red Solomon requiere long. cdigo > 1
elseif strcmp(metodo,'rs')
if codigo == 1
ERROR = 5;
codigo= codigo+1;
end;
end;
end;