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