101                   const char *portName, 
int maxAddr, 
int interfaceMask, 
int interruptMask,
 
  102                   int asynFlags, 
int autoConnect, 
int priority, 
int stackSize);
 
  103    asynPortDriver(
const char *portName, 
int maxAddr, 
int interfaceMask, 
int interruptMask,
 
  104                   int asynFlags, 
int autoConnect, 
int priority, 
int stackSize);
 
  105    asynPortDriver(
const char *portName, 
int maxAddr, 
int paramTableSize, 
int interfaceMask, 
int interruptMask,
 
  106                   int asynFlags, 
int autoConnect, 
int priority, 
int stackSize) EPICS_DEPRECATED;
 
  108    virtual asynStatus lock();
 
  109    virtual asynStatus unlock();
 
  110    virtual asynStatus getAddress(asynUser *pasynUser, 
int *address);
 
  111    virtual asynStatus parseAsynUser(asynUser *pasynUser, 
int *reason, 
int *address, 
const char **paramName);
 
  112    virtual asynStatus readInt32(asynUser *pasynUser, epicsInt32 *value);
 
  113    virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value);
 
  114    virtual asynStatus readInt64(asynUser *pasynUser, epicsInt64 *value);
 
  115    virtual asynStatus writeInt64(asynUser *pasynUser, epicsInt64 value);
 
  116    virtual asynStatus readUInt32Digital(asynUser *pasynUser, epicsUInt32 *value, epicsUInt32 mask);
 
  117    virtual asynStatus writeUInt32Digital(asynUser *pasynUser, epicsUInt32 value, epicsUInt32 mask);
 
  118    virtual asynStatus setInterruptUInt32Digital(asynUser *pasynUser, epicsUInt32 mask, interruptReason reason);
 
  119    virtual asynStatus clearInterruptUInt32Digital(asynUser *pasynUser, epicsUInt32 mask);
 
  120    virtual asynStatus getInterruptUInt32Digital(asynUser *pasynUser, epicsUInt32 *mask, interruptReason reason);
 
  121    virtual asynStatus getBounds(asynUser *pasynUser, epicsInt32 *low, epicsInt32 *high);
 
  122    virtual asynStatus getBounds64(asynUser *pasynUser, epicsInt64 *low, epicsInt64 *high);
 
  123    virtual asynStatus readFloat64(asynUser *pasynUser, epicsFloat64 *value);
 
  124    virtual asynStatus writeFloat64(asynUser *pasynUser, epicsFloat64 value);
 
  125    virtual asynStatus readOctet(asynUser *pasynUser, 
char *value, 
size_t maxChars,
 
  126                                        size_t *nActual, 
int *eomReason);
 
  127    virtual asynStatus writeOctet(asynUser *pasynUser, 
const char *value, 
size_t maxChars,
 
  129    virtual asynStatus flushOctet(asynUser *pasynUser);
 
  130    virtual asynStatus setInputEosOctet(asynUser *pasynUser, 
const char *eos, 
int eosLen);
 
  131    virtual asynStatus getInputEosOctet(asynUser *pasynUser, 
char *eos, 
int eosSize, 
int *eosLen);
 
  132    virtual asynStatus setOutputEosOctet(asynUser *pasynUser, 
const char *eos, 
int eosLen);
 
  133    virtual asynStatus getOutputEosOctet(asynUser *pasynUser, 
char *eos, 
int eosSize, 
int *eosLen);
 
  134    virtual asynStatus readInt8Array(asynUser *pasynUser, epicsInt8 *value,
 
  135                                        size_t nElements, 
size_t *nIn);
 
  136    virtual asynStatus writeInt8Array(asynUser *pasynUser, epicsInt8 *value,
 
  138    virtual asynStatus doCallbacksInt8Array(epicsInt8 *value,
 
  139                                        size_t nElements, 
int reason, 
int addr);
 
  140    virtual asynStatus readInt16Array(asynUser *pasynUser, epicsInt16 *value,
 
  141                                        size_t nElements, 
size_t *nIn);
 
  142    virtual asynStatus writeInt16Array(asynUser *pasynUser, epicsInt16 *value,
 
  144    virtual asynStatus doCallbacksInt16Array(epicsInt16 *value,
 
  145                                        size_t nElements, 
int reason, 
int addr);
 
  146    virtual asynStatus readInt32Array(asynUser *pasynUser, epicsInt32 *value,
 
  147                                        size_t nElements, 
size_t *nIn);
 
  148    virtual asynStatus writeInt32Array(asynUser *pasynUser, epicsInt32 *value,
 
  150    virtual asynStatus doCallbacksInt32Array(epicsInt32 *value,
 
  151                                        size_t nElements, 
int reason, 
int addr);
 
  152    virtual asynStatus readInt64Array(asynUser *pasynUser, epicsInt64 *value,
 
  153                                        size_t nElements, 
size_t *nIn);
 
  154    virtual asynStatus writeInt64Array(asynUser *pasynUser, epicsInt64 *value,
 
  156    virtual asynStatus doCallbacksInt64Array(epicsInt64 *value,
 
  157                                        size_t nElements, 
int reason, 
int addr);
 
  158    virtual asynStatus readFloat32Array(asynUser *pasynUser, epicsFloat32 *value,
 
  159                                        size_t nElements, 
size_t *nIn);
 
  160    virtual asynStatus writeFloat32Array(asynUser *pasynUser, epicsFloat32 *value,
 
  162    virtual asynStatus doCallbacksFloat32Array(epicsFloat32 *value,
 
  163                                        size_t nElements, 
int reason, 
int addr);
 
  164    virtual asynStatus readFloat64Array(asynUser *pasynUser, epicsFloat64 *value,
 
  165                                        size_t nElements, 
size_t *nIn);
 
  166    virtual asynStatus writeFloat64Array(asynUser *pasynUser, epicsFloat64 *value,
 
  168    virtual asynStatus doCallbacksFloat64Array(epicsFloat64 *value,
 
  169                                        size_t nElements, 
int reason, 
int addr);
 
  170    virtual asynStatus readGenericPointer(asynUser *pasynUser, 
void *pointer);
 
  171    virtual asynStatus writeGenericPointer(asynUser *pasynUser, 
void *pointer);
 
  172    virtual asynStatus doCallbacksGenericPointer(
void *pointer, 
int reason, 
int addr);
 
  173    virtual asynStatus readOption(asynUser *pasynUser, 
const char *key, 
char *value, 
int maxChars);
 
  174    virtual asynStatus writeOption(asynUser *pasynUser, 
const char *key, 
const char *value);
 
  175    virtual asynStatus readEnum(asynUser *pasynUser, 
char *strings[], 
int values[], 
int severities[], 
size_t nElements, 
size_t *nIn);
 
  176    virtual asynStatus writeEnum(asynUser *pasynUser, 
char *strings[], 
int values[], 
int severities[], 
size_t nElements);
 
  177    virtual asynStatus doCallbacksEnum(
char *strings[], 
int values[], 
int severities[], 
size_t nElements, 
int reason, 
int addr);
 
  178    virtual asynStatus drvUserCreate(asynUser *pasynUser, 
const char *drvInfo,
 
  179                                     const char **pptypeName, 
size_t *psize);
 
  180    virtual asynStatus drvUserGetType(asynUser *pasynUser,
 
  181                                        const char **pptypeName, 
size_t *psize);
 
  182    virtual asynStatus drvUserDestroy(asynUser *pasynUser);
 
  183    virtual void report(FILE *fp, 
int details);
 
  184    virtual asynStatus connect(asynUser *pasynUser);
 
  185    virtual asynStatus disconnect(asynUser *pasynUser);
 
  187    virtual asynStatus createParam(          
const char *name, 
asynParamType type, 
int *index);
 
  188    virtual asynStatus createParam(
int list, 
const char *name, 
asynParamType type, 
int *index);
 
  189    virtual asynStatus createParams();
 
  190    virtual asynStatus getNumParams(          
int *numParams);
 
  191    virtual asynStatus getNumParams(
int list, 
int *numParams);
 
  192    virtual asynStatus findParam(          
const char *name, 
int *index);
 
  193    virtual asynStatus findParam(
int list, 
const char *name, 
int *index);
 
  194    virtual asynStatus getParamName(          
int index, 
const char **name);
 
  195    virtual asynStatus getParamName(
int list, 
int index, 
const char **name);
 
  196    virtual asynStatus getParamType(          
int index, 
asynParamType *type);
 
  197    virtual asynStatus getParamType(
int list, 
int index, 
asynParamType *type);
 
  198    virtual asynStatus setParamStatus(          
int index, asynStatus status);
 
  199    virtual asynStatus setParamStatus(
int list, 
int index, asynStatus status);
 
  200    virtual asynStatus getParamStatus(          
int index, asynStatus *status);
 
  201    virtual asynStatus getParamStatus(
int list, 
int index, asynStatus *status);
 
  202    virtual asynStatus setParamAlarmStatus(          
int index, 
int status);
 
  203    virtual asynStatus setParamAlarmStatus(
int list, 
int index, 
int status);
 
  204    virtual asynStatus getParamAlarmStatus(          
int index, 
int *status);
 
  205    virtual asynStatus getParamAlarmStatus(
int list, 
int index, 
int *status);
 
  206    virtual asynStatus setParamAlarmSeverity(          
int index, 
int severity);
 
  207    virtual asynStatus setParamAlarmSeverity(
int list, 
int index, 
int severity);
 
  208    virtual asynStatus getParamAlarmSeverity(          
int index, 
int *severity);
 
  209    virtual asynStatus getParamAlarmSeverity(
int list, 
int index, 
int *severity);
 
  210    virtual void       reportSetParamErrors(asynStatus status, 
int index, 
int list, 
const char *functionName);
 
  211    virtual void       reportGetParamErrors(asynStatus status, 
int index, 
int list, 
const char *functionName);
 
  212    virtual asynStatus setIntegerParam(          
int index, 
int value);
 
  213    virtual asynStatus setIntegerParam(
int list, 
int index, 
int value);
 
  214    virtual asynStatus setInteger64Param(          
int index, epicsInt64 value);
 
  215    virtual asynStatus setInteger64Param(
int list, 
int index, epicsInt64 value);
 
  216    virtual asynStatus setUIntDigitalParam(          
int index, epicsUInt32 value, epicsUInt32 valueMask);
 
  217    virtual asynStatus setUIntDigitalParam(
int list, 
int index, epicsUInt32 value, epicsUInt32 valueMask);
 
  218    virtual asynStatus setUIntDigitalParam(          
int index, epicsUInt32 value, epicsUInt32 valueMask, epicsUInt32 interruptMask);
 
  219    virtual asynStatus setUIntDigitalParam(
int list, 
int index, epicsUInt32 value, epicsUInt32 valueMask, epicsUInt32 interruptMask);
 
  220    virtual asynStatus setUInt32DigitalInterrupt(          
int index, epicsUInt32 mask, interruptReason reason);
 
  221    virtual asynStatus setUInt32DigitalInterrupt(
int list, 
int index, epicsUInt32 mask, interruptReason reason);
 
  222    virtual asynStatus clearUInt32DigitalInterrupt(         
int index, epicsUInt32 mask);
 
  223    virtual asynStatus clearUInt32DigitalInterrupt(
int list, 
int index, epicsUInt32 mask);
 
  224    virtual asynStatus getUInt32DigitalInterrupt(          
int index, epicsUInt32 *mask, interruptReason reason);
 
  225    virtual asynStatus getUInt32DigitalInterrupt(
int list, 
int index, epicsUInt32 *mask, interruptReason reason);
 
  226    virtual asynStatus setDoubleParam(          
int index, 
double value);
 
  227    virtual asynStatus setDoubleParam(
int list, 
int index, 
double value);
 
  228    virtual asynStatus setStringParam(          
int index, 
const char *value);
 
  229    virtual asynStatus setStringParam(
int list, 
int index, 
const char *value);
 
  230    virtual asynStatus setStringParam(          
int index, 
const std::string& value);
 
  231    virtual asynStatus setStringParam(
int list, 
int index, 
const std::string& value);
 
  232    virtual asynStatus getIntegerParam(          
int index, epicsInt32 * value);
 
  233    virtual asynStatus getIntegerParam(
int list, 
int index, epicsInt32 * value);
 
  234    virtual asynStatus getInteger64Param(          
int index, epicsInt64 * value);
 
  235    virtual asynStatus getInteger64Param(
int list, 
int index, epicsInt64 * value);
 
  236    virtual asynStatus getUIntDigitalParam(          
int index, epicsUInt32 *value, epicsUInt32 mask);
 
  237    virtual asynStatus getUIntDigitalParam(
int list, 
int index, epicsUInt32 *value, epicsUInt32 mask);
 
  238    virtual asynStatus getDoubleParam(          
int index, 
double * value);
 
  239    virtual asynStatus getDoubleParam(
int list, 
int index, 
double * value);
 
  240    virtual asynStatus getStringParam(          
int index, 
int maxChars, 
char *value);
 
  241    virtual asynStatus getStringParam(
int list, 
int index, 
int maxChars, 
char *value);
 
  242    virtual asynStatus getStringParam(          
int index, std::string& value);
 
  243    virtual asynStatus getStringParam(
int list, 
int index, std::string& value);
 
  244    virtual asynStatus callParamCallbacks();
 
  245    virtual asynStatus callParamCallbacks(          
int addr);
 
  246    virtual asynStatus callParamCallbacks(
int list, 
int addr);
 
  247    virtual asynStatus updateTimeStamp();
 
  248    virtual asynStatus updateTimeStamp(epicsTimeStamp *pTimeStamp);
 
  249    virtual asynStatus getTimeStamp(epicsTimeStamp *pTimeStamp);
 
  250    virtual asynStatus setTimeStamp(
const epicsTimeStamp *pTimeStamp);
 
  251    asynStandardInterfaces *getAsynStdInterfaces();
 
  252    virtual void reportParams(FILE *fp, 
int details);
 
  253    virtual void shutdownPortDriver();
 
  254    bool needsShutdown();
 
  262    void initialize(
const char *portNameIn, 
int maxAddrIn, 
int interfaceMask, 
int interruptMask, 
int asynFlags,
 
  263                    int autoConnect, 
int priority, 
int stackSize);
 
  271    static void exceptionHandler(asynUser *pasynUser, asynException exception);
 
  273    std::vector<paramList*> params;
 
  275    epicsMutexId mutexId;
 
  277    int inputEosLenOctet;
 
  278    char *outputEosOctet;
 
  279    int outputEosLenOctet;
 
  282    template <
typename epicsType, 
typename interruptType>
 
  283        asynStatus doCallbacksArray(epicsType *value, 
size_t nElements,
 
  284                                    int reason, 
int address, 
void *interruptPvt);