struct epicsPV_s { chid channel; union { void* data; struct dbr_time_char* CHAR; struct dbr_time_short* SHORT; struct dbr_time_long* LONG; struct dbr_time_float* FLOAT; struct dbr_time_double* DOUBLE; struct dbr_time_enum* ENUM; struct dbr_time_string* STRING; }; union { void* info; struct dbr_ctrl_char* info_CHAR; struct dbr_ctrl_short* info_SHORT; struct dbr_ctrl_long* info_LONG; struct dbr_ctrl_float* info_FLOAT; struct dbr_ctrl_double* info_DOUBLE; struct dbr_ctrl_enum* info_ENUM; }; const char* units; int precision; caDatatype usedDatatype; caDatatype requestedDatatype; int status; char stringrep[40]; PVconnectionCallback connectionCallback; void* userarg; }; /* don't use cagetList directly, use caget */ int cagetList(double timeoutSec, epicsPV pv1, ...); extern const char* PVdataTypeStrings[9]; extern const char* PVconnectionStateStrings [4]; #define PV_WITHUNITS 1