From c26cd7fdce27747220fffa2aaf3671236971d426 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Tue, 28 Oct 2003 18:56:56 +0000 Subject: [PATCH] architecture independent manipulation of NTP stamps --- src/libCom/osi/epicsTime.cpp | 6 +++--- src/libCom/test/epicsTimeTest.cpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libCom/osi/epicsTime.cpp b/src/libCom/osi/epicsTime.cpp index 905b2379b..c35c45a07 100644 --- a/src/libCom/osi/epicsTime.cpp +++ b/src/libCom/osi/epicsTime.cpp @@ -391,7 +391,7 @@ epicsTime::epicsTime (const aitTimeStamp &ts) // 631152000 (at posix epic) + 2272060800 (btw posix and epics epoch) + // 15 ( leap seconds ) static const unsigned long epicsEpocSecsPastEpochNTP = 2903212815u; -static const double ULONG_MAX_PLUS_ONE = (static_cast(ULONG_MAX) + 1.0); +static const double NTP_FRACTION DENOMINATOR = (static_cast(0xffffffff) + 1.0); struct l_fp { /* NTP time stamp */ epicsUInt32 l_ui; /* sec past NTP epoch */ @@ -406,7 +406,7 @@ epicsTime::operator l_fp () const l_fp ts; ts.l_ui = this->secPastEpoch + epicsEpocSecsPastEpochNTP; ts.l_uf = static_cast < unsigned long > - ( ( this->nSec * ULONG_MAX_PLUS_ONE ) / nSecPerSec ); + ( ( this->nSec * NTP_FRACTION DENOMINATOR ) / nSecPerSec ); return ts; } @@ -417,7 +417,7 @@ epicsTime::epicsTime ( const l_fp & ts ) { this->secPastEpoch = ts.l_ui - epicsEpocSecsPastEpochNTP; this->nSec = static_cast < unsigned long > - ( ( ts.l_uf / ULONG_MAX_PLUS_ONE ) * nSecPerSec ); + ( ( ts.l_uf / NTP_FRACTION DENOMINATOR ) * nSecPerSec ); } // return pointer to trailing "%0f" ( is a number) in a format string, diff --git a/src/libCom/test/epicsTimeTest.cpp b/src/libCom/test/epicsTimeTest.cpp index 34357af68..f9a494d56 100644 --- a/src/libCom/test/epicsTimeTest.cpp +++ b/src/libCom/test/epicsTimeTest.cpp @@ -78,7 +78,7 @@ int epicsTimeTest (void) epicsTime tsf = ntp; const double diff = fabs ( tsf - tsi ); // the difference in the precision of the two time formats - static const double precisionNTP = 1.0 / ( 1.0 + UINT_MAX ); + static const double precisionNTP = 1.0 / ( 1.0 + 0xffffffff ); static const double precisionEPICS = 1.0 / nSecPerSec; assert ( diff <= precisionEPICS + precisionNTP ); }