Files
pcas/src/catools/tool_lib.h

100 lines
3.5 KiB
C

/*************************************************************************\
* Copyright (c) 2002 The University of Chicago, as Operator of Argonne
* National Laboratory.
* Copyright (c) 2002 The Regents of the University of California, as
* Operator of Los Alamos National Laboratory.
* Copyright (c) 2002 Berliner Elektronenspeicherringgesellschaft fuer
* Synchrotronstrahlung.
* EPICS BASE Versions 3.13.7
* and higher are distributed subject to a Software License Agreement found
* in file LICENSE that is included with this distribution.
\*************************************************************************/
/*
* Author: Ralph Lange (BESSY)
*
* Modification History
* 2009/03/31 Larry Hoff (BNL)
* Added field separators
*
*/
#ifndef INCLtool_libh
#define INCLtool_libh
#include <epicsTime.h>
/* Convert status and severity to strings */
#define stat_to_str(stat) \
((stat) >= 0 && (stat) <= (signed)lastEpicsAlarmCond) ? \
epicsAlarmConditionStrings[stat] : "??"
#define sevr_to_str(stat) \
((stat) >= 0 && (stat) <= (signed)lastEpicsAlarmSev) ? \
epicsAlarmSeverityStrings[stat] : "??"
#define stat_to_str_unsigned(stat) \
((stat) <= lastEpicsAlarmCond) ? \
epicsAlarmConditionStrings[stat] : "??"
#define sevr_to_str_unsigned(stat) \
((stat) <= lastEpicsAlarmSev) ? \
epicsAlarmSeverityStrings[stat] : "??"
/* The different versions are necessary because stat and sevr are
* defined unsigned in CA's DBR_STSACK structure and signed in all the
* others. Some compilers generate warnings if you check an unsigned
* being >=0 */
#define DEFAULT_CA_PRIORITY 0 /* Default CA priority */
#define DEFAULT_TIMEOUT 1.0 /* Default CA timeout */
/* Type of timestamp */
typedef enum { absolute, relative, incremental, incrementalByChan } TimeT;
/* Output formats for integer data types */
typedef enum { dec, bin, oct, hex } IntFormatT;
/* Structure representing one PV (= channel) */
typedef struct
{
char* name;
chid chid;
long dbfType;
long dbrType;
unsigned long nElems;
unsigned long reqElems;
int status;
void* value;
epicsTimeStamp tsPreviousC;
epicsTimeStamp tsPreviousS;
char firstStampPrinted;
char onceConnected;
} pv;
extern TimeT tsType; /* Timestamp type flag (-t option) */
extern int tsSrcServer; /* Timestamp source flag (-t option) */
extern int tsSrcClient; /* Timestamp source flag (-t option) */
extern IntFormatT outTypeI; /* Flag used for -0.. output format option */
extern IntFormatT outTypeF; /* Flag used for -l.. output format option */
extern int enumAsNr; /* Used for -n option (get DBF_ENUM as number) */
extern int charArrAsStr; /* used for -S option - treat char array as (long) string */
extern double caTimeout; /* Wait time default (see -w option) */
extern char dblFormatStr[]; /* Format string to print doubles (see -e -f option) */
extern char fieldSeparator; /* Output field separator */
extern capri caPriority; /* CA priority */
extern char *val2str (const void *v, unsigned type, int index);
extern char *dbr2str (const void *value, unsigned type);
extern void print_time_val_sts (pv *pv, unsigned long reqElems);
extern int create_pvs (pv *pvs, int nPvs, caCh *pCB );
extern int connect_pvs (pv *pvs, int nPvs );
/*
* no additions below this endif
*/
#endif /* ifndef INCLtool_libh */