16 #ifndef epicsTimehInclude 17 #define epicsTimehInclude 21 #include "libComAPI.h" 27 #define POSIX_TIME_AT_EPICS_EPOCH 631152000u 43 #define TS_STAMP epicsTimeStamp 116 operator int ()
const;
221 epicsTime & operator = (
const struct timespec & );
228 operator struct timeval () const;
230 epicsTime (
const struct timeval & );
232 epicsTime & operator = (
const struct timeval & );
239 operator l_fp ()
const;
241 epicsTime (
const l_fp & );
243 epicsTime & operator = (
const l_fp & );
251 operator struct _FILETIME () const;
253 epicsTime (
const struct _FILETIME & );
255 epicsTime & operator = (
const struct _FILETIME & );
262 double operator- (
const epicsTime & )
const;
265 epicsTime operator+ (
const double & )
const;
267 epicsTime operator- (
const double & )
const;
269 epicsTime operator+= (
const double & );
271 epicsTime operator-= (
const double & );
277 bool operator == (
const epicsTime & )
const;
280 bool operator != (
const epicsTime & )
const;
282 bool operator <= (
const epicsTime & )
const;
284 bool operator < (
const epicsTime & )
const;
286 bool operator >= (
const epicsTime & )
const;
288 bool operator > (
const epicsTime & )
const;
311 size_t strftime (
char * pBuff,
size_t bufLength,
const char * pFormat )
const;
314 void show (
unsigned interestLevel )
const;
325 epicsTime (
const unsigned long secPastEpoch,
const unsigned long nSec );
326 void addNanoSec (
long nanoSecAdjust );
340 #define epicsTimeOK 0 342 #define S_time_noProvider (M_time| 1) 344 #define S_time_badEvent (M_time| 2) 346 #define S_time_badArgs (M_time| 3) 348 #define S_time_noMemory (M_time| 4) 350 #define S_time_unsynchronized (M_time| 5) 352 #define S_time_timezone (M_time| 6) 354 #define S_time_conversion (M_time| 7) 361 #define epicsTimeEventCurrentTime 0 362 #define epicsTimeEventBestTime -1 363 #define epicsTimeEventDeviceTime -2 409 struct tm * pDest,
unsigned long * pNSecDest,
const epicsTimeStamp * pSrc );
412 struct tm * pDest,
unsigned long * pNSecDest,
const epicsTimeStamp * pSrc );
415 epicsTimeStamp * pDest,
const struct tm * pSrc,
unsigned long nSecSrc );
418 epicsTimeStamp * pDest,
const struct tm * pSrc,
unsigned long nSecSrc );
481 char * pBuff,
size_t bufLength,
const char * pFormat,
const epicsTimeStamp * pTS );
492 LIBCOM_API
int epicsStdCall
epicsTime_localtime (
const time_t * clock,
struct tm * result );
494 LIBCOM_API
int epicsStdCall
epicsTime_gmtime (
const time_t * clock,
struct tm * result );
509 #ifdef EPICS_EXPOSE_LIBCOM_MONOTONIC_PRIVATE 510 LIBCOM_API
void osdMonotonicInit(
void);
523 eventNumber(number) {}
525 inline epicsTimeEvent::operator int ()
const 527 return this->eventNumber;
552 if ( this->secPastEpoch == rhs.secPastEpoch && this->nSec == rhs.nSec ) {
565 return ! ( *
this < rhs );
570 return ! ( *
this <= rhs );
Network Time Protocol timestamp.
LIBCOM_API double epicsStdCall epicsTimeDiffInSeconds(const epicsTimeStamp *pLeft, const epicsTimeStamp *pRight)
Time difference between left and right in seconds.
LIBCOM_API int epicsStdCall epicsTimeToGMTM(struct tm *pDest, unsigned long *pNSecDest, const epicsTimeStamp *pSrc)
Convert epicsTimeStamp to struct tm in UTC/GMT.
epicsTime operator-=(const double &)
subtract rhs seconds from lhs
C++ only ANSI C struct tm with nanoseconds, local timezone.
LIBCOM_API int epicsStdCall epicsTimeLessThanEqual(const epicsTimeStamp *pLeft, const epicsTimeStamp *pRight)
right was no later than left
double operator-(const epicsTime &) const
lhs minus rhs, in seconds
LIBCOM_API int epicsStdCall epicsTimeGreaterThan(const epicsTimeStamp *pLeft, const epicsTimeStamp *pRight)
left was after right
LIBCOM_API epicsUInt64 epicsMonotonicResolution(void)
Monotonic time resolution, may not be accurate. Returns the minimum non-zero time difference between ...
LIBCOM_API int epicsStdCall epicsTimeFromTime_t(epicsTimeStamp *pDest, time_t src)
Convert ANSI C time_t to epicsTimeStamp.
epicsTime & operator=(const epicsTimeStamp &)
Assign from epicsTimeStamp.
bool operator==(const epicsTime &) const
lhs equals rhs
LIBCOM_API int epicsStdCall epicsTimeGetEvent(epicsTimeStamp *pDest, int eventNumber)
Get time of event eventNumber into *pDest.
unsigned long nSec
nanoseconds extension
epicsUInt32 nsec
nanoseconds within second
LIBCOM_API int epicsStdCall epicsTimeEqual(const epicsTimeStamp *pLeft, const epicsTimeStamp *pRight)
left equals right
The core data types used by epics.
LIBCOM_API int epicsTimeGetCurrentInt(epicsTimeStamp *pDest)
Get current time into *pDest (ISR-safe)
LIBCOM_API int epicsStdCall epicsTimeToTimeval(struct timeval *pDest, const epicsTimeStamp *pSrc)
Convert epicsTimeStamp to struct timeval
LIBCOM_API int epicsStdCall epicsTimeToTimespec(struct timespec *pDest, const epicsTimeStamp *pSrc)
Convert epicsTimeStamp to struct timespec
LIBCOM_API int epicsStdCall epicsTimeFromTimespec(epicsTimeStamp *pDest, const struct timespec *pSrc)
Set epicsTimeStamp from struct timespec
epicsTime operator+(const double &) const
lhs plus rhs seconds
bool operator>(const epicsTime &) const
lhs was after rhs
LIBCOM_API int epicsStdCall epicsTimeFromTimeval(epicsTimeStamp *pDest, const struct timeval *pSrc)
Set epicsTimeStamp from struct timeval
bool operator!=(const epicsTime &) const
lhs not equal to rhs
unsigned long nSec
nanoseconds extension
epicsUInt32 secPastEpoch
seconds since 0000 Jan 1, 1990
LIBCOM_API int epicsStdCall epicsTime_localtime(const time_t *clock, struct tm *result)
Break down a time_t into a struct tm in the local timezone.
EPICS time stamp, for use from C code.
bool operator>=(const epicsTime &) const
rhs not before lhs
LIBCOM_API int epicsStdCall epicsTimeToTM(struct tm *pDest, unsigned long *pNSecDest, const epicsTimeStamp *pSrc)
Convert epicsTimeStamp to struct tm in local time zone.
C++ only ANSI C sruct tm with nanoseconds, UTC.
LIBCOM_API int epicsStdCall epicsTimeGetCurrent(epicsTimeStamp *pDest)
Get current time into *pDest.
BSD and SRV5 Unix timestamp.
LIBCOM_API int epicsStdCall epicsTime_gmtime(const time_t *clock, struct tm *result)
Break down a time_t into a struct tm in the UTC timezone.
C++ Event number wrapper class.
LIBCOM_API epicsUInt64 epicsMonotonicGet(void)
Fetch monotonic counter, returns the number of nanoseconds since some unspecified time...
epicsTime operator+=(const double &)
add rhs seconds to lhs
epicsTimeEvent(const int &number)
Constructor.
LIBCOM_API void epicsStdCall epicsTimeShow(const epicsTimeStamp *, unsigned interestLevel)
Dump current state to stdout.
LIBCOM_API int epicsStdCall epicsTimeLessThan(const epicsTimeStamp *pLeft, const epicsTimeStamp *pRight)
left was before right
Defined by POSIX Real Time.
LIBCOM_API int epicsStdCall epicsTimeFromTM(epicsTimeStamp *pDest, const struct tm *pSrc, unsigned long nSecSrc)
Set epicsTimeStamp from struct tm in local time zone.
LIBCOM_API int epicsStdCall epicsTimeGreaterThanEqual(const epicsTimeStamp *pLeft, const epicsTimeStamp *pRight)
right was not before left
Exception: Time provider problem.
LIBCOM_API int epicsStdCall epicsTimeFromGMTM(epicsTimeStamp *pDest, const struct tm *pSrc, unsigned long nSecSrc)
Set epicsTimeStamp from struct tm in UTC/GMT.
LIBCOM_API int epicsTimeGetMonotonic(epicsTimeStamp *pDest)
Get monotonic time into *pDest.
LIBCOM_API int epicsStdCall epicsTimeNotEqual(const epicsTimeStamp *pLeft, const epicsTimeStamp *pRight)
left not equal to right
LIBCOM_API int epicsTimeGetEventInt(epicsTimeStamp *pDest, int eventNumber)
Get time of event eventNumber into *pDest (ISR-safe)
LIBCOM_API size_t epicsStdCall epicsTimeToStrftime(char *pBuff, size_t bufLength, const char *pFormat, const epicsTimeStamp *pTS)
Convert epicsTimeStamp to string. See epicsTime::strftime()
LIBCOM_API void epicsStdCall epicsTimeAddSeconds(epicsTimeStamp *pDest, double secondsToAdd)
Add some number of seconds to dest.
LIBCOM_API int epicsStdCall epicsTimeToTime_t(time_t *pDest, const epicsTimeStamp *pSrc)
Convert epicsTimeStamp to ANSI C time_t.