IOCstatsApp/devTimestampWorkaround.c
author Heinz Junkes <junkes@fhi-berlin.mpg.de>
Tue, 02 Nov 2021 13:19:46 +0100
changeset 5 85c191e174df
parent 0 50cbed80af1a
permissions -rw-r--r--
Add Mpdbus pressure Reading
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
     1
/*
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
     2
 * Stringin device support for EPICS time stamps
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
     3
 *
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
     4
 * devTimestampSI.c,v 1.1.2.1 2004/01/08 21:08:56 norume Exp
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
     5
 *
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
     6
 * fixed for vxWorks 5.4.2 bfr
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
     7
 */
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
     8
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
     9
#include <string.h>
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    10
#include <epicsStdio.h>
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    11
#include <epicsTime.h>
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    12
#include <stringinRecord.h>
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    13
#include <alarm.h>
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    14
#include <devSup.h>
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    15
#include <recGbl.h>
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    16
#include <epicsExport.h>
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    17
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    18
static long
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    19
read_stringin (struct stringinRecord *psi)
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    20
{
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    21
    int l;
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    22
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    23
    recGblGetTimeStamp(psi);
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    24
    if (strcmp(psi->inp.value.instio.string,"%s")==0) {
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    25
        l = epicsSnprintf(psi->val, sizeof psi->val, "%u", psi->time.secPastEpoch);
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    26
    } else {
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    27
        l = epicsTimeToStrftime(psi->val, sizeof psi->val, psi->inp.value.instio.string, &psi->time);
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    28
    }
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    29
    if (l >= sizeof psi->val) {
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    30
        psi->udf = 1;
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    31
        recGblSetSevr(psi,UDF_ALARM,INVALID_ALARM);
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    32
        return -1;
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    33
    }
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    34
    psi->udf = 0;
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    35
    return 0;
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    36
}
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    37
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    38
struct {
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    39
    long        number;
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    40
    DEVSUPFUN   dev_report;
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    41
    DEVSUPFUN   init;
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    42
    DEVSUPFUN   init_record; /*returns: (0,2)=>(success,success no convert)*/
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    43
    DEVSUPFUN   get_ioint_info;
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    44
    DEVSUPFUN   read_stringin;/*(0)=>(success ) */
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    45
} devSiTimestampWorkaround = {
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    46
    6,
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    47
    NULL,
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    48
    NULL,
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    49
    NULL,
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    50
    NULL,
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    51
    read_stringin
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    52
};
50cbed80af1a Add IOCDOSE to repository
Heinz Junkes <junkes@fhi-berlin.mpg.de>
parents:
diff changeset
    53
epicsExportAddress(dset,devSiTimestampWorkaround);