Fixes for Cygwin build.

This commit is contained in:
Andrew Johnson
2008-08-19 19:34:13 +00:00
parent 2a9842083c
commit 3b6065f55e
3 changed files with 48 additions and 33 deletions

View File

@@ -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)

View File

@@ -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)

View File

@@ -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);