How do I use the RtiNtpTime structure?

Note: Applies to NDDS 3.x. 

NDDS's internal time representation is in NTP format rather than DDS_Time for computational efficiency reasons. 

The header osapi/osapi_ntptime.h defines NTP time class (struct RTINtpTime) as well as its manipulation methods. A brief excerpt from this header file is given below: 

struct RTINtpTime defines a structure used to represent times and time intervals as seconds and binary fractions ( 1/2^32-ths) of a second. (Ntp is used because the format is the same as the one used by the Network Time Protocol standard.) 

Here is a very brief synopsis of the supported functions/macros: 

RTINtpTime_add(ANSWER, T1, T2) 

Sets ANSWER to T1 + T2

RTINtpTime_compare(TIME1, TIME2)

Returns an integer that is

  • < 0 if TIME1 < TIME2,
  • 0 if TIME1 == TIME2,
  • > 0 if TIME1 > TIME2.
RTINtpTime_compareToZero(TIME)

Returns an integer that is

  • < 0 if TIME < 0,
  • 0 if TIME == 0,
  • > 0 if TIME > 0.
RTINtpTime_decrement(ANSWER, TIME)

Sets ANSWER to ANSWER - TIME.

RTINtpTime_increment(ANSWER, TIME)

Sets ANSWER to ANSWER - TIME.

RTINtpTime_incrementInfinitesimally(TIME)

Increases TIME by a very small amount.

RTINtpTime_isInfinite(TIME)

Returns true if TIME is infinitely large.

RTINtpTime_packFromFraction(TIME, NUMERATOR, DENOMINATOR_PER_SEC)

Sets TIME to (approximately) NUMERATOR / DENOMINATOR_PER_SEC seconds.

RTINtpTime_packFromMillisec(TIME, S, MSEC)

Sets TIME to S seconds and MSEC milliseconds (1/1000 sec).

RTINtpTime_packFromMicrosec(TIME, S, USEC) 

Sets TIME to S seconds and USEC microseconds (1/1000000 sec). 

RTINtpTime_packFromNanosec(TIME, S, NSEC) 

Sets TIME to S seconds and NSEC nanoseconds (1/1000000000 sec). 

RTINtpTime_setMax(TIME) 

Sets TIME to the largest possible value (which is considered infinite).

RTINtpTime_setZero(TIME) 

Sets TIME to zero. 

RTINtpTime_shiftLeft(ANSWER, TIME, SHIFT) 

Sets ANSWER to TIME * 2^SHIFT.

RTINtpTime_shiftRight(ANSWER, TIME, SHIFT) 

Sets ANSWER to TIME / 2^SHIFT.

RTINtpTime_subtract(ANSWER, T1, T2) 

Sets ANSWER to T1 - T2.

RTINtpTime_toDouble(T)

Converts T (an RTINtpTime) to a double and returns the result. 

RTINtpTime_toString(T, STR) 

Writes a string representation of T to STR, which should be a char*. STR must be at least RTI_NTP_TIME_STRING_LEN characters long.

RTINtpTime_unpackToFraction(NUMERATOR, DENOMINATOR_PER_SEC, TIME)

Sets NUMERATOR to (approximately) TIME * DENOMINATOR_PER_SEC

RTINtpTime_unpackToMillisec(S, MSEC, TIME)

Converts TIME to seconds and milliseconds; set S and MSEC to the result. 

RTINtpTime_unpackToMicrosec(S, USEC, TIME) 

Converts TIME to seconds and microseconds; set S and USEC to the result. 

RTINtpTime_unpackToNanosec(S, NSEC, TIME) 

Converts TIME to seconds and nanoseconds; set S and NSEC to the result.

Product:
Programming Language:
Keywords: