Fixes for Cygwin build.
This commit is contained in:
@@ -33,11 +33,22 @@
|
||||
|
||||
|
||||
/********* ai record **********/
|
||||
static int getCurrentTime(double * pseconds)
|
||||
{
|
||||
epicsTimeStamp ts;
|
||||
|
||||
if (epicsTimeERROR != epicsTimeGetCurrent(&ts)) {
|
||||
*pseconds = ts.secPastEpoch + ((double)(ts.nsec)) * 1e-9;
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
static struct ai_channel {
|
||||
char *name;
|
||||
int (*get)(double *);
|
||||
} ai_channels[] = {
|
||||
{"TIME", generalTimeGetCurrentDouble},
|
||||
{"TIME", getCurrentTime},
|
||||
};
|
||||
|
||||
static long init_ai(aiRecord *prec)
|
||||
@@ -92,11 +103,16 @@ epicsExportAddress(dset, devAiGeneralTime);
|
||||
|
||||
|
||||
/********* bo record **********/
|
||||
static void resetErrors(void)
|
||||
{
|
||||
generalTimeResetErrorCounts();
|
||||
}
|
||||
|
||||
static struct bo_channel {
|
||||
char *name;
|
||||
void (*put)();
|
||||
void (*put)(void);
|
||||
} bo_channels[] = {
|
||||
{"RSTERRCNT", generalTimeResetErrorCounts},
|
||||
{"RSTERRCNT", resetErrors},
|
||||
};
|
||||
|
||||
static long init_bo(boRecord *prec)
|
||||
@@ -132,7 +148,7 @@ static long write_bo(boRecord *prec)
|
||||
|
||||
if (!pchan) return -1;
|
||||
|
||||
pchan->put(prec->val);
|
||||
pchan->put();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -146,11 +162,16 @@ epicsExportAddress(dset, devBoGeneralTime);
|
||||
|
||||
|
||||
/******* longin record *************/
|
||||
static int errorCount(void)
|
||||
{
|
||||
return generalTimeGetErrorCounts();
|
||||
}
|
||||
|
||||
static struct li_channel {
|
||||
char *name;
|
||||
int (*get)(void);
|
||||
} li_channels[] = {
|
||||
{"GETERRCNT", generalTimeGetErrorCounts},
|
||||
{"GETERRCNT", errorCount},
|
||||
};
|
||||
|
||||
static long init_li(longinRecord *prec)
|
||||
@@ -199,12 +220,22 @@ epicsExportAddress(dset, devLiGeneralTime);
|
||||
|
||||
|
||||
/********** stringin record **********/
|
||||
static void timeProvider(char *buf)
|
||||
{
|
||||
generalTimeGetBestTcp(buf);
|
||||
}
|
||||
|
||||
static void eventProvider(char *buf)
|
||||
{
|
||||
generalTimeGetBestTep(buf);
|
||||
}
|
||||
|
||||
static struct si_channel {
|
||||
char *name;
|
||||
void (*get)(char *buf);
|
||||
} si_channels[] = {
|
||||
{"BESTTCP", generalTimeGetBestTcp},
|
||||
{"BESTTEP", generalTimeGetBestTep},
|
||||
{"BESTTCP", timeProvider},
|
||||
{"BESTTEP", eventProvider},
|
||||
};
|
||||
|
||||
static long init_si(stringinRecord *prec)
|
||||
|
||||
@@ -452,37 +452,22 @@ long generalTimeReport(int level)
|
||||
}
|
||||
|
||||
/*
|
||||
* The following functions are accessors for various internal values, so that
|
||||
* they can be made available to device support. They are used by the
|
||||
* devGeneralTime.c file in <base>/src/dev/softDev which implements the
|
||||
* 'generalTime' DTYP for ai, bo, longin and stringin records
|
||||
* Accessor routines for internal status values.
|
||||
*/
|
||||
|
||||
epicsShareFunc int generalTimeGetCurrentDouble(double * pseconds) /* for ai record, seconds from 01/01/1990 */
|
||||
{
|
||||
epicsTimeStamp ts;
|
||||
if(epicsTimeERROR!=epicsTimeGetCurrent(&ts))
|
||||
{
|
||||
*pseconds=ts.secPastEpoch+((double)(ts.nsec))*1e-9;
|
||||
return epicsTimeOK;
|
||||
}
|
||||
else
|
||||
return epicsTimeERROR;
|
||||
}
|
||||
|
||||
epicsShareFunc void generalTimeResetErrorCounts() /* for bo record */
|
||||
epicsShareFunc void generalTimeResetErrorCounts()
|
||||
{
|
||||
generalTime_Init();
|
||||
pgeneralTimePvt->ErrorCounts=0;
|
||||
pgeneralTimePvt->ErrorCounts = 0;
|
||||
}
|
||||
|
||||
int generalTimeGetErrorCounts() /* for longin record */
|
||||
epicsShareFunc int generalTimeGetErrorCounts()
|
||||
{
|
||||
generalTime_Init();
|
||||
return pgeneralTimePvt->ErrorCounts;
|
||||
}
|
||||
|
||||
epicsShareFunc void generalTimeGetBestTcp(char * desc) /* for stringin record */
|
||||
epicsShareFunc void generalTimeGetBestTcp(char * desc)
|
||||
{/* the assignment to pLastKnownBestTcp is atomic and desc is never changed after registeration */
|
||||
generalTime_Init();
|
||||
if(pgeneralTimePvt->pLastKnownBestTcp)
|
||||
@@ -497,7 +482,7 @@ epicsShareFunc void generalTimeGetBestTcp(char * desc) /* for stringin recor
|
||||
}
|
||||
}
|
||||
|
||||
epicsShareFunc void generalTimeGetBestTep(char * desc) /* for stringin record */
|
||||
epicsShareFunc void generalTimeGetBestTep(char * desc)
|
||||
{/* the assignment to pLastKnownBestTep is atomic and desc is never changed after registeration */
|
||||
generalTime_Init();
|
||||
if(pgeneralTimePvt->pLastKnownBestTep)
|
||||
|
||||
@@ -30,11 +30,10 @@ extern "C" {
|
||||
|
||||
epicsShareFunc void generalTime_Init(void); /* this is the init routine you can call explicitly in st.cmd */
|
||||
epicsShareFunc int lastResortEventProviderInstall(void);
|
||||
epicsShareFunc int generalTimeGetCurrentDouble(double * pseconds); /* for ai record, seconds from 01/01/1990 */
|
||||
epicsShareFunc void generalTimeResetErrorCounts(); /* for bo record */
|
||||
epicsShareFunc int generalTimeGetErrorCounts(); /* for longin record */
|
||||
epicsShareFunc void generalTimeGetBestTcp(char * desc); /* for stringin record */
|
||||
epicsShareFunc void generalTimeGetBestTep(char * desc); /* for stringin record */
|
||||
epicsShareFunc void generalTimeResetErrorCounts();
|
||||
epicsShareFunc int generalTimeGetErrorCounts();
|
||||
epicsShareFunc void generalTimeGetBestTcp(char *desc);
|
||||
epicsShareFunc void generalTimeGetBestTep(char *desc);
|
||||
|
||||
epicsShareFunc long generalTimeReport(int interest);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user