lvDCOM
An EPICS support module to export LabVIEW values as process variables
lvDCOMDriver.h
Go to the documentation of this file.
1 /*************************************************************************\
2 * Copyright (c) 2013 Science and Technology Facilities Council (STFC), GB.
3 * All rights reverved.
4 * This file is distributed subject to a Software License Agreement found
5 * in the file LICENSE.txt that is included with this distribution.
6 \*************************************************************************/
7 
10 
11 #ifndef LVDCOMDRIVER_H
12 #define LVDCOMDRIVER_H
13 
14 #include "asynPortDriver.h"
15 
16 class lvDCOMInterface;
17 
19 class lvDCOMDriver : public asynPortDriver
20 {
21 public:
22  lvDCOMDriver(lvDCOMInterface* dcomint, const char *portName);
23 
24  // These are the methods that we override from asynPortDriver
25  virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value);
26  virtual asynStatus readInt32(asynUser *pasynUser, epicsInt32 *value);
27  virtual asynStatus writeFloat64(asynUser *pasynUser, epicsFloat64 value);
28  virtual asynStatus readFloat64(asynUser *pasynUser, epicsFloat64 *value);
29  virtual asynStatus readOctet(asynUser *pasynUser, char *value, size_t maxChars, size_t *nActual, int *eomReason);
30  virtual asynStatus writeOctet(asynUser *pasynUser, const char *value, size_t maxChars, size_t *nActual);
31  virtual asynStatus readFloat64Array(asynUser *pasynUser, epicsFloat64 *value, size_t nElements, size_t *nIn);
32  virtual asynStatus readInt32Array(asynUser *pasynUser, epicsInt32 *value, size_t nElements, size_t *nIn);
33  virtual void report(FILE* fp, int details);
34 
35 private:
37 
38  template<typename T> asynStatus writeValue(asynUser *pasynUser, const char* functionName, T value);
39  template<typename T> asynStatus readValue(asynUser *pasynUser, const char* functionName, T* value);
40  template<typename T> asynStatus readArray(asynUser *pasynUser, const char* functionName, T *value, size_t nElements, size_t *nIn);
41 
42  static void lvDCOMTask(void* arg);
43 };
44 
45 #endif /* LVDCOMDRIVER_H */
virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value)
EPICS Asyn port driver class.
Definition: lvDCOMDriver.h:19
virtual void report(FILE *fp, int details)
EPICS driver report function for iocsh dbior command.
virtual asynStatus readFloat64Array(asynUser *pasynUser, epicsFloat64 *value, size_t nElements, size_t *nIn)
virtual asynStatus writeFloat64(asynUser *pasynUser, epicsFloat64 value)
asynStatus readArray(asynUser *pasynUser, const char *functionName, T *value, size_t nElements, size_t *nIn)
virtual asynStatus readInt32Array(asynUser *pasynUser, epicsInt32 *value, size_t nElements, size_t *nIn)
virtual asynStatus readInt32(asynUser *pasynUser, epicsInt32 *value)
asynStatus readValue(asynUser *pasynUser, const char *functionName, T *value)
lvDCOMInterface * m_lvdcom
Definition: lvDCOMDriver.h:36
virtual asynStatus readFloat64(asynUser *pasynUser, epicsFloat64 *value)
static void lvDCOMTask(void *arg)
asynStatus writeValue(asynUser *pasynUser, const char *functionName, T value)
virtual asynStatus readOctet(asynUser *pasynUser, char *value, size_t maxChars, size_t *nActual, int *eomReason)
Manager class for LabVIEW DCOM Interaction. Parses an lvinput.xml file and provides access to the Lab...
virtual asynStatus writeOctet(asynUser *pasynUser, const char *value, size_t maxChars, size_t *nActual)
lvDCOMDriver(lvDCOMInterface *dcomint, const char *portName)
Constructor for the lvDCOMDriver class.