function [T,m,dTcorr]=correct_time_dev_fun(T0,T,device_file)
% Корректировка времени в данных выбранного устройства
%
%      [T,m,dTcorr]=correct_time_dev_fun(T0,T,device_file);
%
% T0    - текущая сериальная дата
% T     - массив времени измерений (сериальная дата) - на выходе меняется
% device_file - имя файла с данными для коррекции (полный путь)
% m     - индекс для коррекции значений поля, напр. Fc = F(m). Если
%       коррекции нет - будет пустой []

% 15.04.2014 - S.Khomutov, Paratunka, Kamchatka
% 15.04.2016 - на экран выводится величина коррекции
% 18.04.2016 - начальный путь объявлен global для доступа из подпапок
% 24.04.2016 - вместо fix() используется round()
% 27.08.2016 - адаптировано по ф-ции для Паратунки
% 26.08.2020 - нужно задавать выбор файла с данными о коррекции
% 27.03.2025 - сделано под два формата файла с данными о коррекции
%   Data1       UT1        UT2       dT(sec)
%2000 01 01   00 00 00   23 59 59         +0 % технол. запись
% YY MM DD hh mm ss.sss    YY MM DD hh mm ss.sss     dT(sec)
%2000 01 01 00 00 00.000  2000 01 01 00 00 00.000   +0000.0

% считываем файл с информацией о коррекции таймера
if ~exist('device_file','var')
    disp('!!! Не задан файл с информацией о коррекции - не корректирую !!!')
    m=[]; dTcorr=[];
    return
end
if ~exist(device_file,'file')
    disp('!!! Не могу найти файл с информацией о коррекции - не корректирую !!!')
    m=[]; dTcorr=[];
    return
end
tmp=load(device_file);
if length(tmp(1,:)<11) % короткий формат записи в файл о коррекции таймера
    Tc1=datenum(tmp(:,1),tmp(:,2),tmp(:,3),tmp(:,4),tmp(:,5),tmp(:,6));
    Tc2=datenum(tmp(:,1),tmp(:,2),tmp(:,3),tmp(:,7),tmp(:,8),tmp(:,9));
    dTc=tmp(:,10);
else                  % длинный формат записи в файл о коррекции таймера
    Tc1=datenum(tmp(:,1),tmp(:,2),tmp(:,3),tmp(:,4),tmp(:,5),tmp(:,6));
    Tc2=datenum(tmp(:,7),tmp(:,8),tmp(:,9),tmp(:,10),tmp(:,11),tmp(:,12));
    dTc=tmp(:,13);
end
kc=find(fix(Tc1)==T0);
if isempty(kc), % нет суток для правки времени
    m=[]; dTcorr=0; return
end
for k=1:length(kc)
    fprintf('... Выполняется коррекция таймера на %d секунд ...\n',dTc(kc(k)))
    dTcorr(kc(k))=dTc(kc(k))/86400;
    ki=between_my(T,Tc1(kc(k)),Tc2(kc(k)),'11');
    T(ki)=T(ki)+dTc(kc(k))/86400;
end
[T,m,n]=unique(round(T*864000)); T=T/864000; % 24.04.2016
