This is Unofficial EPICS BASE Doxygen Site
devTimestamp.c
Go to the documentation of this file.
1 /*************************************************************************\
2 * Copyright (c) 2008 UChicago Argonne LLC, as Operator of Argonne
3 * National Laboratory.
4 * EPICS BASE is distributed subject to a Software License Agreement found
5 * in the file LICENSE that is included with this distribution.
6 \*************************************************************************/
7 
8 /*
9  * Device support for EPICS time stamps
10  *
11  * Original Author: Eric Norum
12  */
13 
14 #include "dbDefs.h"
15 #include "epicsTime.h"
16 #include "alarm.h"
17 #include "devSup.h"
18 #include "recGbl.h"
19 
20 #include "aiRecord.h"
21 #include "stringinRecord.h"
22 #include "epicsExport.h"
23 
24 
25 /* Extended device support to allow INP field changes */
26 
27 static long initAllow(int pass) {
28  if (pass == 0) devExtend(&devSoft_DSXT);
29  return 0;
30 }
31 
32 
33 /* ai record */
34 
35 static long read_ai(aiRecord *prec)
36 {
37  recGblGetTimeStamp(prec);
38  prec->val = prec->time.secPastEpoch + (double)prec->time.nsec * 1e-9;
39  prec->udf = FALSE;
40  return 2;
41 }
42 
43 aidset devTimestampAI = {
44  {6, NULL, initAllow, NULL, NULL},
45  read_ai, NULL
46 };
47 epicsExportAddress(dset, devTimestampAI);
48 
49 
50 /* stringin record */
51 
52 static long read_stringin (stringinRecord *prec)
53 {
54  int len;
55 
56  recGblGetTimeStamp(prec);
57  len = epicsTimeToStrftime(prec->val, sizeof prec->val,
58  prec->inp.value.instio.string, &prec->time);
59  if (len >= sizeof prec->val) {
60  prec->udf = TRUE;
61  recGblSetSevr(prec, UDF_ALARM, prec->udfs);
62  return -1;
63  }
64  prec->udf = FALSE;
65  return 0;
66 }
67 
68 stringindset devTimestampSI = {
69  {5, NULL, initAllow, NULL, NULL},
70  read_stringin
71 };
72 epicsExportAddress(dset, devTimestampSI);
#define FALSE
Definition: dbDefs.h:32
stringindset devTimestampSI
Definition: devTimestamp.c:68
void devExtend(dsxt *pdsxt)
Definition: dbStaticRun.c:60
#define NULL
Definition: catime.c:38
Miscellaneous macro definitions.
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
Device support routines.
Definition: devSup.h:140
aidset devTimestampAI
Definition: devTimestamp.c:43
epicsExportAddress(dset, devTimestampAI)
struct dsxt devSoft_DSXT
Definition: dbStaticRun.c:40
#define TRUE
Definition: dbDefs.h:27
EPICS time-stamps (epicsTimeStamp), epicsTime C++ class and C functions for handling wall-clock times...
int prec
Definition: reader.c:29
#define UDF_ALARM
Definition: alarm.h:108
Exporting IOC objects.