#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "asynDriver.h" #include "asynDrvUser.h" #include "asynOctet.h" #include "asynInt32.h" #include "asynFloat64.h" #include "asynEpicsUtils.h" typedef struct devPvt { dbCommon *precord; asynUser *pasynUser; char *portName; int addr; asynOctet *poctet; asynInt32 *pint32; asynFloat64 *pfloat64; void *interfacePvt; int canBlock; char *userParam; char *buffer; size_t bufSize; size_t bufLen; DBADDR dbAddr; CALLBACK callback; IOSCANPVT ioScanPvt; void *registrarPvt; int gotValue; interruptCallbackOctet octetCallback; interruptCallbackInt32 int32Callback; interruptCallbackFloat64 float64Callback; } devPvt; typedef struct commonDset { long number; DEVSUPFUN dev_report; DEVSUPFUN init; DEVSUPFUN init_record; DEVSUPFUN get_ioint_info; DEVSUPFUN processCommon; DEVSUPFUN special_linconv; } commonDset; long initCommon(dbCommon *precord, DBLINK *plink, userCallback callback, const char *interfaceType); void initDrvUser(devPvt *pdevPvt); void initCmdBuffer(devPvt *pdevPvt); void initDbAddr(devPvt *pdevPvt); long processCommon(dbCommon *precord); asynStatus parseLink(asynUser *pasynUser, DBLINK *plink, char **port, int *addr, char **userParam);