% Funzione che definisce le attivazioni di fine corsa per i nodi di tipo Trigger Link
function [ARRAYdateTrL,val_TrL,ErrTriggerLink] = defDatiTrL(DatiTriggerLink,...
    Type,ErrTriggerLink,rTrL,NuovoZeroTrL,FileName)

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

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

if NuovoZeroTrL == 1
    DatiTriggerLink = DatiTriggerLink(2:end,:);
    ErrTriggerLink = ErrTriggerLink(2:end,:);
end

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

[r,~] = size(DatiTriggerLink);
TimeTrL = DatiTriggerLink(:,1); % data
val_TrL = zeros(r,rTrL); % dati fine corsa
if Type == 7
    code = 16;
else
    code = 1;
end

i = 1;
while i <= rTrL
    for j = 1:r
        if DatiTriggerLink(j,1+i) == code % Se la prima colonna ha il codice associato al Trigger
            if j > 1 && Type == 7
                check = DatiTriggerLink(j,1+i)-DatiTriggerLink(j-1,1+i);
            else
                check = 1;
            end
            if check > 0
                val_TrL(j,i) = 1;
            end
        else
            val_TrL(j,i) = 0;
        end
    end
    if Type == 7
        i = i+2;
    else
        i = i+1;
    end
end

ARRAYdateTrL = TimeTrL;

text = 'Data of Trigger Link defined correctly';
fprintf(fileID,fmt,text);
fclose(fileID);

end
