Update offset correction errors only when needed

This commit is contained in:
Miroslav Lichvar 2010-08-11 17:16:16 +02:00
parent fa84496423
commit 1faeb45063
5 changed files with 13 additions and 12 deletions

View file

@ -349,13 +349,8 @@ LCL_CookTime(struct timeval *raw, struct timeval *cooked, double *err)
void
LCL_GetOffsetCorrection(struct timeval *raw, double *correction, double *err)
{
double e;
/* Call system specific driver to get correction */
(*drv_offset_convert)(raw, correction, &e);
if (err)
*err = e;
(*drv_offset_convert)(raw, correction, err);
}
/* ================================================== */

View file

@ -800,7 +800,6 @@ get_offset_correction(struct timeval *raw,
slow_slewing = 0;
}
}
update_slow_slew_error(offset);
if (!nano_slewing) {
noffset = 0;
@ -812,7 +811,6 @@ get_offset_correction(struct timeval *raw,
nano_slewing = 0;
}
}
update_nano_slew_error(noffset, 0);
if (fast_slewing) {
UTI_DiffTimevalsToDouble(&fast_slew_duration, raw, &slew_start_tv);
@ -824,7 +822,12 @@ get_offset_correction(struct timeval *raw,
}
*corr = - (offset_register + fast_slew_remaining) + offset / 1.0e6 + noffset / 1.0e9;
*err = get_slow_slew_error(raw) + get_fast_slew_error(raw) + get_nano_slew_error();;
if (err) {
update_slow_slew_error(offset);
update_nano_slew_error(noffset, 0);
*err = get_slow_slew_error(raw) + get_fast_slew_error(raw) + get_nano_slew_error();;
}
return;
}

View file

@ -271,7 +271,8 @@ get_offset_correction(struct timeval *raw,
stop_adjust();
*corr = -offset_register;
start_adjust();
*err = 0.0;
if (err)
*err = 0.0;
}
/* ================================================== */

View file

@ -300,7 +300,8 @@ get_offset_correction(struct timeval *raw,
stop_adjust();
*corr = -offset_register;
start_adjust();
*err = 0.0;
if (err)
*err = 0.0;
return;
}

View file

@ -287,7 +287,8 @@ get_offset_correction(struct timeval *raw,
stop_adjust();
*corr = -offset_register;
start_adjust();
*err = 0.0;
if (err)
*err = 0.0;
return;
}