static asynStatus readUInt32(void* ppvt,asynUser* pasynUser,epicsUInt32* value,epicsUInt32 mask) { asynStatus sts; Port* pport = (Port*)ppvt; Inst* pinst = (Inst*)pasynUser->drvUser; asynPrint(pasynUser,ASYN_TRACE_FLOW,"drvLove::readUInt32\n"); if( pinst->pcmd->read ) sprintf(pport->outMsg,"%s",pinst->pcmd->read); else { epicsSnprintf(pasynUser->errorMessage,pasynUser->errorMessageSize,"%s error %s",pport->name,pport->pasynUser->errorMessage); return( asynError ); } lockPort(pport,pasynUser); sts = executeCommand(pport,pasynUser); unlockPort(pport,pasynUser); if( ISNOTOK(sts) ) { epicsSnprintf(pasynUser->errorMessage,pasynUser->errorMessageSize,"%s error %s",pport->name,pport->pasynUser->errorMessage); return( sts ); } sts = pinst->read(pinst,(epicsInt32*)value); if( ISNOTOK(sts) ) { epicsSnprintf(pasynUser->errorMessage,pasynUser->errorMessageSize,"%s error %s",pport->name,pport->pasynUser->errorMessage); return( sts ); } if( ISOK(sts) ) asynPrint(pasynUser,ASYN_TRACEIO_FILTER,"drvLove::readUInt32 readback from %s is 0x%X,mask=0x%X\n",pport->name,*value,mask); return( asynSuccess ); }