function [TimeTuL,accTuL,magTuL,tempTuL,ay_TuL,ay_TuL_AC,ErrTunnelLink] = defDatiTuL_Dati(...
    DatiTunnelLink,ay_TuL,ay_TuL_AC,Ndatidespike,rTuL,NuovoZeroTuL,ErrTunnelLink,MEMS,FileName)

fileID = fopen(FileName,'a');
fmt = '%s \r';
text = 'defDatiTuL function started';
fprintf(fileID,fmt,text);

[r,c] = size(DatiTunnelLink);
Ncorr = 0;
% Elimino gli eventuali Not a Number
for a = 2:r
    for b = 2:c
        check = isnan(DatiTunnelLink(a,b));
        if check == 1
            DatiTunnelLink(a,b) = DatiTunnelLink(a-1,b);
            ErrTunnelLink(a,b-1) = 1;
            Ncorr = Ncorr+1;
        end
    end
end

text = ['' num2str(Ncorr) ' NaN of Tunnel Link corrected by defDatiTuL function'];
fprintf(fileID,fmt,text);

% Definisco Data (gg:mm:aaaa hh:mm), i 3 dati di accelerometro
% e magnetometro e la Temperatura per la calibrazione
TimeTuL = DatiTunnelLink(:,1); % data
accTuL = zeros(r,rTuL*3); % dati accelerometro
magTuL = zeros(r,rTuL*3); % dati accelerometro
tempTuL = zeros(r,rTuL); % temperatura del nodo per la calibrazione
p = 7; % passo nella definizione dei dati
s = 1;

for i = 1:rTuL
    accTuL(:,s) = DatiTunnelLink(:,2+(i-1)*p);
    accTuL(:,s+1) = DatiTunnelLink(:,3+(i-1)*p);
    accTuL(:,s+2) = DatiTunnelLink(:,4+(i-1)*p); 
    magTuL(:,s) = DatiTunnelLink(:,5+(i-1)*p);
    magTuL(:,s+1) = DatiTunnelLink(:,6+(i-1)*p);
    magTuL(:,s+2) = DatiTunnelLink(:,7+(i-1)*p); 
    s = s+3;
    tempTuL(:,i) = DatiTunnelLink(:,8+(i-1)*p);
    [rT,~] = size(tempTuL);
    if MEMS == 2 
        for j = 1:rT
            if tempTuL(j,i) > 200
                tempTuL(j,i) = tempTuL(j,i) - 256; % Correzione della temperatura dei nuovi MEMS
            end
        end
    end
end

s = 1;
Num_Dati = Ndatidespike; % numero di dati per il despike
if Num_Dati > r
    Num_Dati = r;
end

[rAC,~]=size(ay_TuL);
y = 1;
Num_Dati_AC = Ndatidespike; % numero di dati per il despike
if Num_Dati_AC > rAC
    Num_Dati_AC = rAC;
end

xlswrite('Dati.xlsx',accTuL,2);
xlswrite('Dati.xlsx',magTuL,3);
   
ay_TuL = ay_TuL';
ay_TuL_AC = ay_TuL_AC';
for i = 1:rTuL
    % despiking accelerometri
    accTuL(:,s) = filloutliers(accTuL(:,s),'linear','movmedian',Num_Dati);    
    accTuL(:,s+1) = filloutliers(accTuL(:,s+1),'linear','movmedian',Num_Dati);    
    accTuL(:,s+2) = filloutliers(accTuL(:,s+2),'linear','movmedian',Num_Dati); 
    magTuL(:,s) = filloutliers(magTuL(:,s),'linear','movmedian',Num_Dati);    
    magTuL(:,s+1) = filloutliers(magTuL(:,s+1),'linear','movmedian',Num_Dati);    
    magTuL(:,s+2) = filloutliers(magTuL(:,s+2),'linear','movmedian',Num_Dati); 
    s = s+3;
    if NuovoZeroTuL == 1
        % despiking dati ay di riferimento
        ay_TuL(:,y) = filloutliers(ay_TuL(:,y),'linear','movmedian',Num_Dati_AC);
        ay_TuL_AC(:,y) = filloutliers(ay_TuL_AC(:,y),'linear','movmedian',Num_Dati_AC);
        y = y+1;
    end
end

text = 'Data of Tunnel Link defined correctly. defDatiTuL function closed';
fprintf(fileID,fmt,text);
fclose(fileID);

end