1 #ifndef asynPortDriver_H     2 #define asynPortDriver_H     7 #include <epicsTypes.h>     8 #include <epicsMutex.h>     9 #include <epicsThread.h>    11 #include <asynStandardInterfaces.h>    12 #include <asynParamSet.h>    24 #define asynCommonMask          0x00000001    25 #define asynDrvUserMask         0x00000002    26 #define asynOptionMask          0x00000004    27 #define asynInt32Mask           0x00000008    28 #define asynUInt32DigitalMask   0x00000010    29 #define asynFloat64Mask         0x00000020    30 #define asynOctetMask           0x00000040    31 #define asynInt8ArrayMask       0x00000080    32 #define asynInt16ArrayMask      0x00000100    33 #define asynInt32ArrayMask      0x00000200    34 #define asynFloat32ArrayMask    0x00000400    35 #define asynFloat64ArrayMask    0x00000800    36 #define asynGenericPointerMask  0x00001000    37 #define asynEnumMask            0x00002000    38 #define asynInt64Mask           0x00004000    39 #define asynInt64ArrayMask      0x00008000    48                    const char *portName, 
int maxAddr, 
int interfaceMask, 
int interruptMask,
    49                    int asynFlags, 
int autoConnect, 
int priority, 
int stackSize);
    50     asynPortDriver(
const char *portName, 
int maxAddr, 
int interfaceMask, 
int interruptMask,
    51                    int asynFlags, 
int autoConnect, 
int priority, 
int stackSize);
    52     asynPortDriver(
const char *portName, 
int maxAddr, 
int paramTableSize, 
int interfaceMask, 
int interruptMask,
    53                    int asynFlags, 
int autoConnect, 
int priority, 
int stackSize) EPICS_DEPRECATED;
    55     virtual asynStatus lock();
    56     virtual asynStatus unlock();
    57     virtual asynStatus getAddress(asynUser *pasynUser, 
int *address);
    58     virtual asynStatus parseAsynUser(asynUser *pasynUser, 
int *reason, 
int *address, 
const char **paramName);
    59     virtual asynStatus readInt32(asynUser *pasynUser, epicsInt32 *value);
    60     virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value);
    61     virtual asynStatus readInt64(asynUser *pasynUser, epicsInt64 *value);
    62     virtual asynStatus writeInt64(asynUser *pasynUser, epicsInt64 value);
    63     virtual asynStatus readUInt32Digital(asynUser *pasynUser, epicsUInt32 *value, epicsUInt32 mask);
    64     virtual asynStatus writeUInt32Digital(asynUser *pasynUser, epicsUInt32 value, epicsUInt32 mask);
    65     virtual asynStatus setInterruptUInt32Digital(asynUser *pasynUser, epicsUInt32 mask, interruptReason reason);
    66     virtual asynStatus clearInterruptUInt32Digital(asynUser *pasynUser, epicsUInt32 mask);
    67     virtual asynStatus getInterruptUInt32Digital(asynUser *pasynUser, epicsUInt32 *mask, interruptReason reason);
    68     virtual asynStatus getBounds(asynUser *pasynUser, epicsInt32 *low, epicsInt32 *high);
    69     virtual asynStatus getBounds64(asynUser *pasynUser, epicsInt64 *low, epicsInt64 *high);
    70     virtual asynStatus readFloat64(asynUser *pasynUser, epicsFloat64 *value);
    71     virtual asynStatus writeFloat64(asynUser *pasynUser, epicsFloat64 value);
    72     virtual asynStatus readOctet(asynUser *pasynUser, 
char *value, 
size_t maxChars,
    73                                         size_t *nActual, 
int *eomReason);
    74     virtual asynStatus writeOctet(asynUser *pasynUser, 
const char *value, 
size_t maxChars,
    76     virtual asynStatus flushOctet(asynUser *pasynUser);
    77     virtual asynStatus setInputEosOctet(asynUser *pasynUser, 
const char *eos, 
int eosLen);
    78     virtual asynStatus getInputEosOctet(asynUser *pasynUser, 
char *eos, 
int eosSize, 
int *eosLen);
    79     virtual asynStatus setOutputEosOctet(asynUser *pasynUser, 
const char *eos, 
int eosLen);
    80     virtual asynStatus getOutputEosOctet(asynUser *pasynUser, 
char *eos, 
int eosSize, 
int *eosLen);
    81     virtual asynStatus readInt8Array(asynUser *pasynUser, epicsInt8 *value,
    82                                         size_t nElements, 
size_t *nIn);
    83     virtual asynStatus writeInt8Array(asynUser *pasynUser, epicsInt8 *value,
    85     virtual asynStatus doCallbacksInt8Array(epicsInt8 *value,
    86                                         size_t nElements, 
int reason, 
int addr);
    87     virtual asynStatus readInt16Array(asynUser *pasynUser, epicsInt16 *value,
    88                                         size_t nElements, 
size_t *nIn);
    89     virtual asynStatus writeInt16Array(asynUser *pasynUser, epicsInt16 *value,
    91     virtual asynStatus doCallbacksInt16Array(epicsInt16 *value,
    92                                         size_t nElements, 
int reason, 
int addr);
    93     virtual asynStatus readInt32Array(asynUser *pasynUser, epicsInt32 *value,
    94                                         size_t nElements, 
size_t *nIn);
    95     virtual asynStatus writeInt32Array(asynUser *pasynUser, epicsInt32 *value,
    97     virtual asynStatus doCallbacksInt32Array(epicsInt32 *value,
    98                                         size_t nElements, 
int reason, 
int addr);
    99     virtual asynStatus readInt64Array(asynUser *pasynUser, epicsInt64 *value,
   100                                         size_t nElements, 
size_t *nIn);
   101     virtual asynStatus writeInt64Array(asynUser *pasynUser, epicsInt64 *value,
   103     virtual asynStatus doCallbacksInt64Array(epicsInt64 *value,
   104                                         size_t nElements, 
int reason, 
int addr);
   105     virtual asynStatus readFloat32Array(asynUser *pasynUser, epicsFloat32 *value,
   106                                         size_t nElements, 
size_t *nIn);
   107     virtual asynStatus writeFloat32Array(asynUser *pasynUser, epicsFloat32 *value,
   109     virtual asynStatus doCallbacksFloat32Array(epicsFloat32 *value,
   110                                         size_t nElements, 
int reason, 
int addr);
   111     virtual asynStatus readFloat64Array(asynUser *pasynUser, epicsFloat64 *value,
   112                                         size_t nElements, 
size_t *nIn);
   113     virtual asynStatus writeFloat64Array(asynUser *pasynUser, epicsFloat64 *value,
   115     virtual asynStatus doCallbacksFloat64Array(epicsFloat64 *value,
   116                                         size_t nElements, 
int reason, 
int addr);
   117     virtual asynStatus readGenericPointer(asynUser *pasynUser, 
void *pointer);
   118     virtual asynStatus writeGenericPointer(asynUser *pasynUser, 
void *pointer);
   119     virtual asynStatus doCallbacksGenericPointer(
void *pointer, 
int reason, 
int addr);
   120     virtual asynStatus readOption(asynUser *pasynUser, 
const char *key, 
char *value, 
int maxChars);
   121     virtual asynStatus writeOption(asynUser *pasynUser, 
const char *key, 
const char *value);
   122     virtual asynStatus readEnum(asynUser *pasynUser, 
char *strings[], 
int values[], 
int severities[], 
size_t nElements, 
size_t *nIn);
   123     virtual asynStatus writeEnum(asynUser *pasynUser, 
char *strings[], 
int values[], 
int severities[], 
size_t nElements);
   124     virtual asynStatus doCallbacksEnum(
char *strings[], 
int values[], 
int severities[], 
size_t nElements, 
int reason, 
int addr);
   125     virtual asynStatus drvUserCreate(asynUser *pasynUser, 
const char *drvInfo,
   126                                      const char **pptypeName, 
size_t *psize);
   127     virtual asynStatus drvUserGetType(asynUser *pasynUser,
   128                                         const char **pptypeName, 
size_t *psize);
   129     virtual asynStatus drvUserDestroy(asynUser *pasynUser);
   130     virtual void report(FILE *fp, 
int details);
   131     virtual asynStatus connect(asynUser *pasynUser);
   132     virtual asynStatus disconnect(asynUser *pasynUser);
   134     virtual asynStatus createParam(          
const char *name, 
asynParamType type, 
int *index);
   135     virtual asynStatus createParam(
int list, 
const char *name, 
asynParamType type, 
int *index);
   136     virtual asynStatus createParams();
   137     virtual asynStatus getNumParams(          
int *numParams);
   138     virtual asynStatus getNumParams(
int list, 
int *numParams);
   139     virtual asynStatus findParam(          
const char *name, 
int *index);
   140     virtual asynStatus findParam(
int list, 
const char *name, 
int *index);
   141     virtual asynStatus getParamName(          
int index, 
const char **name);
   142     virtual asynStatus getParamName(
int list, 
int index, 
const char **name);
   143     virtual asynStatus getParamType(          
int index, 
asynParamType *type);
   144     virtual asynStatus getParamType(
int list, 
int index, 
asynParamType *type);
   145     virtual asynStatus setParamStatus(          
int index, asynStatus status);
   146     virtual asynStatus setParamStatus(
int list, 
int index, asynStatus status);
   147     virtual asynStatus getParamStatus(          
int index, asynStatus *status);
   148     virtual asynStatus getParamStatus(
int list, 
int index, asynStatus *status);
   149     virtual asynStatus setParamAlarmStatus(          
int index, 
int status);
   150     virtual asynStatus setParamAlarmStatus(
int list, 
int index, 
int status);
   151     virtual asynStatus getParamAlarmStatus(          
int index, 
int *status);
   152     virtual asynStatus getParamAlarmStatus(
int list, 
int index, 
int *status);
   153     virtual asynStatus setParamAlarmSeverity(          
int index, 
int severity);
   154     virtual asynStatus setParamAlarmSeverity(
int list, 
int index, 
int severity);
   155     virtual asynStatus getParamAlarmSeverity(          
int index, 
int *severity);
   156     virtual asynStatus getParamAlarmSeverity(
int list, 
int index, 
int *severity);
   157     virtual void       reportSetParamErrors(asynStatus status, 
int index, 
int list, 
const char *functionName);
   158     virtual void       reportGetParamErrors(asynStatus status, 
int index, 
int list, 
const char *functionName);
   159     virtual asynStatus setIntegerParam(          
int index, 
int value);
   160     virtual asynStatus setIntegerParam(
int list, 
int index, 
int value);
   161     virtual asynStatus setInteger64Param(          
int index, epicsInt64 value);
   162     virtual asynStatus setInteger64Param(
int list, 
int index, epicsInt64 value);
   163     virtual asynStatus setUIntDigitalParam(          
int index, epicsUInt32 value, epicsUInt32 valueMask);
   164     virtual asynStatus setUIntDigitalParam(
int list, 
int index, epicsUInt32 value, epicsUInt32 valueMask);
   165     virtual asynStatus setUIntDigitalParam(          
int index, epicsUInt32 value, epicsUInt32 valueMask, epicsUInt32 interruptMask);
   166     virtual asynStatus setUIntDigitalParam(
int list, 
int index, epicsUInt32 value, epicsUInt32 valueMask, epicsUInt32 interruptMask);
   167     virtual asynStatus setUInt32DigitalInterrupt(          
int index, epicsUInt32 mask, interruptReason reason);
   168     virtual asynStatus setUInt32DigitalInterrupt(
int list, 
int index, epicsUInt32 mask, interruptReason reason);
   169     virtual asynStatus clearUInt32DigitalInterrupt(         
int index, epicsUInt32 mask);
   170     virtual asynStatus clearUInt32DigitalInterrupt(
int list, 
int index, epicsUInt32 mask);
   171     virtual asynStatus getUInt32DigitalInterrupt(          
int index, epicsUInt32 *mask, interruptReason reason);
   172     virtual asynStatus getUInt32DigitalInterrupt(
int list, 
int index, epicsUInt32 *mask, interruptReason reason);
   173     virtual asynStatus setDoubleParam(          
int index, 
double value);
   174     virtual asynStatus setDoubleParam(
int list, 
int index, 
double value);
   175     virtual asynStatus setStringParam(          
int index, 
const char *value);
   176     virtual asynStatus setStringParam(
int list, 
int index, 
const char *value);
   177     virtual asynStatus setStringParam(          
int index, 
const std::string& value);
   178     virtual asynStatus setStringParam(
int list, 
int index, 
const std::string& value);
   179     virtual asynStatus getIntegerParam(          
int index, epicsInt32 * value);
   180     virtual asynStatus getIntegerParam(
int list, 
int index, epicsInt32 * value);
   181     virtual asynStatus getInteger64Param(          
int index, epicsInt64 * value);
   182     virtual asynStatus getInteger64Param(
int list, 
int index, epicsInt64 * value);
   183     virtual asynStatus getUIntDigitalParam(          
int index, epicsUInt32 *value, epicsUInt32 mask);
   184     virtual asynStatus getUIntDigitalParam(
int list, 
int index, epicsUInt32 *value, epicsUInt32 mask);
   185     virtual asynStatus getDoubleParam(          
int index, 
double * value);
   186     virtual asynStatus getDoubleParam(
int list, 
int index, 
double * value);
   187     virtual asynStatus getStringParam(          
int index, 
int maxChars, 
char *value);
   188     virtual asynStatus getStringParam(
int list, 
int index, 
int maxChars, 
char *value);
   189     virtual asynStatus getStringParam(          
int index, std::string& value);
   190     virtual asynStatus getStringParam(
int list, 
int index, std::string& value);
   191     virtual asynStatus callParamCallbacks();
   192     virtual asynStatus callParamCallbacks(          
int addr);
   193     virtual asynStatus callParamCallbacks(
int list, 
int addr);
   194     virtual asynStatus updateTimeStamp();
   195     virtual asynStatus updateTimeStamp(epicsTimeStamp *pTimeStamp);
   196     virtual asynStatus getTimeStamp(epicsTimeStamp *pTimeStamp);
   197     virtual asynStatus setTimeStamp(
const epicsTimeStamp *pTimeStamp);
   198     asynStandardInterfaces *getAsynStdInterfaces();
   199     virtual void reportParams(FILE *fp, 
int details);
   208     void initialize(
const char *portNameIn, 
int maxAddrIn, 
int interfaceMask, 
int interruptMask, 
int asynFlags,
   209                     int autoConnect, 
int priority, 
int stackSize);
   214     std::vector<paramList*> params;
   215     epicsMutexId mutexId;
   217     int inputEosLenOctet;
   218     char *outputEosOctet;
   219     int outputEosLenOctet;
   221     template <
typename epicsType, 
typename interruptType>
   222         asynStatus doCallbacksArray(epicsType *value, 
size_t nElements,
   223                                     int reason, 
int address, 
void *interruptPvt);
   235     epicsThread *pThread;
   238     epicsEvent doneEvent;
   246   if (!apd) 
return NULL;
   249   T* pC = dynamic_cast<T*>(apd);
 epicsShareFunc void * findAsynPortDriver(const char *portName)
Utility function that returns a pointer to an asynPortDriver object from its name.
Definition: asynPortDriver.cpp:3834
Class to support parameter library (also called parameter list); set and get values indexed by parame...
Definition: asynPortDriver.cpp:47
void(* userTimeStampFunction)(void *userPvt, epicsTimeStamp *pTimeStamp)
Definition: asynPortDriver.h:19
Definition: asynPortDriver.h:229
asynParamType
Parameter data types for the parameter library.
Definition: asynParamType.h:12
Base class for asyn port drivers; handles most of the bookkeeping for writing an asyn port driver wit...
Definition: asynPortDriver.h:45
T * findDerivedAsynPortDriver(const char *portName)
Utility function that returns a pointer to an asynPortDriver derived class object from its name.
Definition: asynPortDriver.h:242
asynParamSet * paramSet
Definition: asynPortDriver.h:207
char * portName
The name of this asyn port.
Definition: asynPortDriver.h:201
void run()
Definition: asynPortDriver.cpp:926
callbackThread(asynPortDriver *portDriver)
Definition: asynPortDriver.cpp:909
asynStandardInterfaces asynStdInterfaces
The asyn interfaces this driver implements.
Definition: asynPortDriver.h:211
~callbackThread()
Definition: asynPortDriver.cpp:916
asynUser * pasynUserSelf
asynUser connected to ourselves for asynTrace
Definition: asynPortDriver.h:210
int maxAddr
The maximum asyn address (addr) supported by this driver.
Definition: asynPortDriver.h:203