function [retardo] = Transmisor(ruta, fichero, metodo, Roll_Off, ...
delta, Ptx, S_N, parametros)
%------------------------------------------------------------------------
%| [retardo] = Transmisor(ruta, fichero, metodo, Roll_Off, ...
%| delta, Ptx, S_N, parametros)
%------------------------------------------------------------------------
%| Funcin que implementa el transmisor BPSK. Se trata de una
%| caja negra vista desde fuera, pero deja varios puntos de observacin
%| almacenados en distintos ficheros:
%| a) OUT.TX : seal de salida del transmisor
%| b) LINEA_I.TX: seal de lnea en rama I (PAM tras coseno alzado)
%| c) LINEA_Q.TX: seal de lnea en rama Q (PAM tras coseno alzado)
%| d) TRAMAS.TX: sucesin de tramas enviadas por el trasnmisor.
%| e) PARAM_TX.MAT: parmetros del transmisor.
%|
%| No est diseado para optimizar nmero de clculos, sino la
%| legibilidad y la flexibilidad. Aunque muchas posibilidades no han sido
%| implementadas, es fcilmente ampliable.
%|
%| Entradas:
%| 1.- RUTA = string con el path del fichero de entrada.
%| 2.- FICHERO = string con el nombre del fichero de entrada.
%| 3.- METODO = mtodo empleado para la generacin de CRC.
%| 4.- ROLL_OFF = factor de Roll_Off del coseno alzado.
%| Por defecto: 1;
%| 5.- DELTA = desviacin de frecuencia
%| Por defecto: 0
%| 6.- P_TX = Potencia Transmitida en dBm sobre 50 Ohm.
%| Por defecto: 10 dBm
%| 7.- S_N = Relacin S/N en dB. Con ello se calculo la
%| desviacin tpica del ruido.
%| Por defecto: 100.
%| 6.- PARAMETROS = matriz con los parmetros del transmisor
%| GENERAL : [fs , Rb ] 2^16 , 2^11 [Hz]
%| ENTRELAZADO: [Filas , Columnas] 14 x 10
%| CRC: [Tramo , Codigo ] 7 x 4
%| MODULADOR_IQ: [Origen Fase() , fi ] 0 , 2^13 [Hz]
%|
%|
%| Salida:
%| 1.- RETARDO = retardo de grupo mximo que introduce el receptor.
%|
%| NOTA: existe un fortsimo acoplamiento entre las funciones
%| que implementan el TX, as que hay que tener cuidado
%| al modificarlas.
%| NOTA: requiere Toolbox de Comunicaciones
%|
%| Ver ayuda de generaCRC, y moduladorIQ para ver los valores
%| por defecto de los parmetros.
%-------------------------------------------------------------------------
%| Autor: Cesar Delgado
%| Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------
pGENERAL = 1; pFS = 1; pRB = 2;
pENTRE = 2; pFILA = 1; pCOL = 2;
pCRC = 3; pTRAMO = 1; pCODE = 2;
pIQ = 4; pFASE = 1; pFI = 2;
fINFO = 0; fTRAMA = 1; fSIGNAL = 2;
I = 1; Q = 2;
%#########################################################################
% 1.- VALIDACIN DE PARMETROS DE ENTRADA
%#########################################################################
% 1.1.- Asignacin Parmetros por defecto
if nargin < 1,
ruta = './';
fichero = 'tramas.tx';
metodo = 'hamming';
parametros = [2^16, 2^11; 14,10;7,4;0,2^13];
Roll_Off = 1;
delta = 0;
S_N = 100;
Ptx = 10; % dBm sobre 50 Oh.
elseif nargin < 2,
fichero = 'tramas.tx';
metodo = 'hamming';
parametros = [2^16, 2^11; 14,10;7,4;0,2^13];
Roll_Off = 1;
delta = 0;
S_N = 100;
Ptx = 10; % dBm sobre 50 Oh.
elseif nargin < 3,
metodo = 'hamming';
parametros = [2^16, 2^11; 14,10;7,4;0,2^13];
Roll_Off = 1;
delta = 0;
S_N = 100;
Ptx = 10; % dBm sobre 50 Oh.
elseif nargin < 4,
parametros = [2^16, 2^11; 14,10;7,4;0,2^13];
Roll_Off = 1;
delta = 0;
S_N = 100;
Ptx = 10; % dBm sobre 50 Oh.
elseif nargin < 5,
delta = 0;
S_N = 100;
Ptx = 10; % dBm sobre 50 Oh.
parametros = [2^16, 2^11; 14,10;7,4;0,2^13];
elseif nargin < 6,
S_N = 100;
Ptx = 10; % dBm sobre 50 Oh.
parametros = [2^16, 2^11; 14,10;7,4;0,2^13];
elseif nargin<7,
S_N = 100; % dBm sobre 50 Oh.
parametros = [2^16, 2^11; 14,10;7,4;0,2^13];
elseif nargin < 8,
parametros = [2^16, 2^11; 14,10;7,4;0,2^13];
end;
% 1.2.- Si algn parmetro de los introducidos est vaco.
if isempty(Roll_Off), Roll_Off = 1; end;
if isempty(Ptx), Ptx = 10; end;
if isempty(S_N), S_N = 0; end;
if isempty(metodo), metodo = 'hamming'
elseif (~validaMetodo(metodo)),
metodo = 'hamming'
disp('WARNING: no se ha comprendido bien el mtodo de generacin CRC');
disp(' Se aplicar el mtodo de Hamming');
end;
% Si isempty es TRUE, size(parametros) fallar, por eso hay if-ifelse
if isempty(parametros),
parametros = [2^16, 2^11; 14,10;7,4;0,2^13];
elseif (size(parametros,1) ~= 4) | (size(parametros,2) ~=2)
parametros = [2^16, 2^11; 14,10;7,4;0,2^13];
else
% 1.3.- Validacin de la matriz de parmetros
%------------> Relacin entre frecuencias: Rb, fi, fs
parametros(pGENERAL, pFS) = abs(parametros(pGENERAL, pFS));
parametros(pGENERAL, pRB) = abs(parametros(pGENERAL, pRB));
parametros(pIQ, pFI) = abs(parametros(pIQ, pFI));
end;
%zzzzzzzzz zzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzz
%#########################################################################
% 2.- APLICACIN DE LOS PROCEDIMIENTOS DEL NIVEL 6: PRESENTACIN
% 2.1.- Traduccin de ASCII a binario
%#########################################################################
nivPresenTX;
%#########################################################################
% 3.- APLICACIN DE LOS PROCEDIMIENTOS DEL NIVEL 2: ENLACE
% 3.1.- Entrelazado
% 3.2.- CRC: Cdigos de Reduncancia Cclica
%#########################################################################
nivEnlaceTX;
%#########################################################################
% 4.- APLICACIN DE LOS PROCEDIMIENTOS DEL NIVEL 1: FSICO
% 4.1.- Codificacin Canal
% 4.2.- Modulacin
%#########################################################################
nivFisicoTX;