From 30f24d531cb88b4f1dedcb4ee9ad6eaf54685991 Mon Sep 17 00:00:00 2001 From: MarkRivers Date: Tue, 17 Apr 2007 21:08:44 +0000 Subject: [PATCH] Added status argument in callbacks --- motorApp/MotorSrc/asynMotorStatus.h | 2 +- motorApp/NewportSrc/drvXPSAsynAux.c | 7 +++++-- motorApp/OmsSrc/drvOmsPC68.cc | 8 ++++---- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/motorApp/MotorSrc/asynMotorStatus.h b/motorApp/MotorSrc/asynMotorStatus.h index 8f6a378d..97fde31a 100644 --- a/motorApp/MotorSrc/asynMotorStatus.h +++ b/motorApp/MotorSrc/asynMotorStatus.h @@ -36,7 +36,7 @@ typedef struct MotorStatus { typedef void (*interruptCallbackMotorStatus)( void *userPvt, asynUser *pasynUser, - struct MotorStatus *value); + struct MotorStatus *value, asynStatus status); typedef struct asynMotorStatusInterrupt { asynUser *pasynUser; int addr; diff --git a/motorApp/NewportSrc/drvXPSAsynAux.c b/motorApp/NewportSrc/drvXPSAsynAux.c index 4e314415..84be929d 100644 --- a/motorApp/NewportSrc/drvXPSAsynAux.c +++ b/motorApp/NewportSrc/drvXPSAsynAux.c @@ -473,6 +473,7 @@ static void XPSAuxPoller(drvXPSAsynAuxPvt *pPvt) int firstTime = 1; int i; int status; + asynStatus ioStatus = asynSuccess; asynUser *pasynUser; int addr, reason, mask, changedBits; @@ -488,12 +489,14 @@ static void XPSAuxPoller(drvXPSAsynAuxPvt *pPvt) if (status) { asynPrint(pPvt->pasynUser, ASYN_TRACE_ERROR, "drvXPSAsynAux::XPSAuxPoller error calling GPIOAnalogGet=%d\n", status); + ioStatus = asynError; } for (i=0; isocketID, digitalInputNames[i], &digitalValues[i]); if (status) { asynPrint(pPvt->pasynUser, ASYN_TRACE_ERROR, "drvXPSAsynAux::XPSAuxPoller error calling GPIODigitalGet=%d\n", status); + ioStatus = asynError; } } @@ -510,7 +513,7 @@ static void XPSAuxPoller(drvXPSAsynAuxPvt *pPvt) if (firstTime) changedBits = 0xffff; if ((mask & changedBits) && (reason == binaryInput)) { pUInt32DigitalInterrupt->callback(pUInt32DigitalInterrupt->userPvt, pasynUser, - mask & digitalValues[addr]); + mask & digitalValues[addr], ioStatus); } pnode = (interruptNode *)ellNext(&pnode->node); } @@ -529,7 +532,7 @@ static void XPSAuxPoller(drvXPSAsynAuxPvt *pPvt) if (reason == analogInput) { pfloat64Interrupt->callback(pfloat64Interrupt->userPvt, pfloat64Interrupt->pasynUser, - analogValues[addr]); + analogValues[addr], ioStatus); } pnode = (interruptNode *)ellNext(&pnode->node); } diff --git a/motorApp/OmsSrc/drvOmsPC68.cc b/motorApp/OmsSrc/drvOmsPC68.cc index c3c46eea..81d2c73e 100644 --- a/motorApp/OmsSrc/drvOmsPC68.cc +++ b/motorApp/OmsSrc/drvOmsPC68.cc @@ -2,9 +2,9 @@ FILENAME... drvOmsPC68.cc USAGE... Motor record driver level support for OMS PC68 serial device. -Version: $Revision: 1.4 $ -Modified By: $Author: dkline $ -Last Modified: $Date: 2007-02-13 13:22:28 $ +Version: $Revision: 1.5 $ +Modified By: $Author: rivers $ +Last Modified: $Date: 2007-04-17 21:08:44 $ */ /* @@ -651,7 +651,7 @@ static int omsGet(int card, char *pchar) return(nread); } -static void asynCallback(void *drvPvt,asynUser *pasynUser,char *data,size_t len, int eomReason) +static void asynCallback(void *drvPvt,asynUser *pasynUser,char *data,size_t len, int eomReason, asynStatus status) { int d,cnt,stat,done; OmsPC68controller* pcntrl;