This is Unofficial EPICS BASE Doxygen Site
osiNTPTime.c File Reference
#include <stddef.h>
#include <stdio.h>
#include <string.h>
#include <limits.h>
#include <time.h>
#include <errno.h>
#include "epicsEvent.h"
#include "epicsExit.h"
#include "epicsTypes.h"
#include "cantProceed.h"
#include "epicsThread.h"
#include "epicsMutex.h"
#include "errlog.h"
#include "epicsGeneralTime.h"
#include "generalTimeSup.h"
#include "iocsh.h"
#include "osdTime.h"
#include "osiNTPTime.h"
#include "taskwd.h"
+ Include dependency graph for osiNTPTime.c:

Go to the source code of this file.

Macros

#define NSEC_PER_SEC   1000000000
 
#define NTPTimeSyncInterval   60.0
 
#define NTPTimeSyncRetries   4
 

Functions

void NTPTime_Init (int priority)
 
void NTPTime_Shutdown (void *dummy)
 
int NTPTime_Report (int level)
 

Macro Definition Documentation

#define NSEC_PER_SEC   1000000000

Definition at line 35 of file osiNTPTime.c.

#define NTPTimeSyncInterval   60.0

Definition at line 36 of file osiNTPTime.c.

#define NTPTimeSyncRetries   4

Definition at line 37 of file osiNTPTime.c.

Function Documentation

void NTPTime_Init ( int  priority)

Definition at line 121 of file osiNTPTime.c.

122 {
123  epicsThreadOnce(&onceId, NTPTime_InitOnce, &priority);
124 }
LIBCOM_API void epicsStdCall epicsThreadOnce(epicsThreadOnceId *id, EPICSTHREADFUNC, void *arg)
int NTPTime_Report ( int  level)

Definition at line 253 of file osiNTPTime.c.

254 {
255  if (onceId == EPICS_THREAD_ONCE_INIT) {
256  printf("NTP driver not initialized\n");
257  } else if (NTPTimePvt.synchronize) {
258  printf("NTP driver %s synchronized with server\n",
259  NTPTimePvt.synchronized ? "is" : "is *not*");
260  if (NTPTimePvt.syncsFailed) {
261  printf("Last successful sync was %.1f minutes ago\n",
262  NTPTimePvt.syncsFailed * NTPTimeSyncInterval / 60.0);
263  }
264  if (level) {
265  char lastSync[32];
266 
267  epicsTimeToStrftime(lastSync, sizeof(lastSync),
268  "%Y-%m-%d %H:%M:%S.%06f", &NTPTimePvt.syncTime);
269  printf("Syncronization interval = %.1f seconds\n",
271  printf("Last synchronized at %s\n",
272  lastSync);
273  printf("Current OS tick rate = %u Hz\n",
274  osdTickRateGet());
275  printf("Measured tick rate = %.3f Hz\n",
276  NTPTimePvt.tickRate);
277  osdNTPReport();
278  }
279  } else {
280  printf("NTP synchronization thread not running.\n");
281  }
282  return 0;
283 }
void osdNTPReport(void)
Definition: osdTime.cpp:101
#define printf
Definition: epicsStdio.h:41
#define NTPTimeSyncInterval
Definition: osiNTPTime.c:36
LIBCOM_API size_t epicsStdCall epicsTimeToStrftime(char *pBuff, size_t bufLength, const char *pFormat, const epicsTimeStamp *pTS)
Convert epicsTimeStamp to string. See epicsTime::strftime()
Definition: epicsTime.cpp:1120
#define EPICS_THREAD_ONCE_INIT
Definition: epicsThread.h:109
#define osdTickRateGet
Definition: osdTime.h:27
void NTPTime_Shutdown ( void *  dummy)

Definition at line 129 of file osiNTPTime.c.

130 {
131  NTPTimePvt.synchronize = 0;
132  epicsEventSignal(NTPTimePvt.loopEvent);
133 }
#define epicsEventSignal(ID)
A synonym for epicsEventTrigger().
Definition: epicsEvent.h:172

Variable Documentation

epicsUInt32 clockTick

Definition at line 49 of file osiNTPTime.c.

epicsTimeStamp clockTime

Definition at line 48 of file osiNTPTime.c.

Definition at line 45 of file osiNTPTime.c.

epicsEventId loopEvent

Definition at line 43 of file osiNTPTime.c.

int synchronize

Definition at line 41 of file osiNTPTime.c.

int synchronized

Definition at line 42 of file osiNTPTime.c.

int syncsFailed

Definition at line 44 of file osiNTPTime.c.

epicsUInt32 syncTick

Definition at line 47 of file osiNTPTime.c.

epicsTimeStamp syncTime

Definition at line 46 of file osiNTPTime.c.

double tickRate

Definition at line 51 of file osiNTPTime.c.

epicsUInt32 ticksToSkip

Definition at line 50 of file osiNTPTime.c.