%------------------------------------------------------------------------
%| nivEnlaceTX
%------------------------------------------------------------------------
%| Script que contiene las funciones del nivel de enlace del TX:
%| 1.- Generacin CRC
%| 2.- Entrelazado
%| 3.- Encapsulado
%-------------------------------------------------------------------------
%| Autor: Cesar Delgado
%| Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------
if ~exist([ruta 'info.tx']),
uiwait(errordlg('ERROR EN TX: no se han aplicado los procedimientos del nivel de presentacion - NivEnlaceTX()'));
else,
% 1.- Cargamos el fichero de informacin al completo
%----------------------------------------------------
info = cargar(ruta,'info.tx',1, inf, fTRAMA);
lonInfo = length(info);
% 2.- Calculamos nBits de Informacin/ paquete (sin CRC)
%--------------------------------------------------------
lonCRC = floor(140*parametros(pCRC,pCODE)/parametros(pCRC,pTRAMO));
% 3.- Simulacin de procedimientos del nivel de aplicacin
%----------------------------------------------------------
% >>> 3.1.- Inicializamos Variables del bucle
cabecera = 1; % Primera Cabecera: SYNCRO BOD INFO
if length(info)<=lonCRC,
cabecera=3; % Solo hay un paquete: SYNCRO BOD INFO EOD
lonCRC = length(info);
end;
primera = 1;
contador = 0;
avance = waitbar(contador, 'TRANSMISOR: aplicando procedimientos de nivel de enlace');
while ~isempty(info),
contador = contador +1;
% >>> 3.2.- Extraemos informacin para rellenar 1 trama
paquete = info(1:lonCRC);
info(1:lonCRC) = [];
% >>> 3.3.- Aplicamos cdigos de redundancia cclica
paquete = generaCRC (paquete, parametros(pCRC,pTRAMO), ...
parametros(pCRC,pCODE), ...
metodo);
% >>> 3.4.- Entrelazamos
[paquete] = entrelaza(paquete, parametros(pENTRE,pFILA), ...
parametros(pENTRE,pCOL));
% >>> 3.5.- Encapsulamos
paquete = encapsula(paquete,cabecera);
% >>> 3.6.- Cabeceras a aplicar al siquiente paquete
if length(info) <= lonCRC, % Informacin restante <= 1 paquete?
cabecera = 2; % Estamos en el ltimo paquete ===> BOD SYNCRO EOD
lonCRC = length(info);
else,
cabecera = 0; % Por defecto: BOD INFO
end;
% >>> 3.7.- Guardamos lo que llevamos hasta el momento
guardar(ruta, 'tramas.tx', paquete, fTRAMA, primera);
primera = 0;
paquete = [];
waitbar(140*contador/lonInfo)
end;
close(avance);
end;