ISIS Logo
NetShrVar
An EPICS support module to export National Instruments Network Shared Variables as process variables
NetShrVarDriver.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 NETSHRVARDRIVER_H
12 #define NETSHRVARDRIVER_H
13 
14 #include "asynPortDriver.h"
15 
16 class NetShrVarInterface;
17 
19 class NetShrVarDriver : public asynPortDriver
20 {
21 public:
22  NetShrVarDriver(NetShrVarInterface* netvarint, int poll_ms, 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 writeFloat64(asynUser *pasynUser, epicsFloat64 value);
27  virtual asynStatus writeOctet(asynUser *pasynUser, const char *value, size_t maxChars, size_t *nActual);
28  virtual asynStatus writeInt8Array(asynUser *pasynUser, epicsInt8 *value, size_t nElements);
29  virtual asynStatus writeInt16Array(asynUser *pasynUser, epicsInt16 *value, size_t nElements);
30  virtual asynStatus writeInt32Array(asynUser *pasynUser, epicsInt32 *value, size_t nElements);
31  virtual asynStatus writeFloat32Array(asynUser *pasynUser, epicsFloat32 *value, size_t nElements);
32  virtual asynStatus writeFloat64Array(asynUser *pasynUser, epicsFloat64 *value, size_t nElements);
33  virtual asynStatus readInt32(asynUser *pasynUser, epicsInt32 *value);
34  virtual asynStatus readFloat64(asynUser *pasynUser, epicsFloat64 *value);
35  virtual asynStatus readOctet(asynUser *pasynUser, char *value, size_t maxChars, size_t *nActual, int *eomReason);
36  virtual asynStatus readFloat32Array(asynUser *pasynUser, epicsFloat32 *value, size_t nElements, size_t *nIn);
37  virtual asynStatus readFloat64Array(asynUser *pasynUser, epicsFloat64 *value, size_t nElements, size_t *nIn);
38  virtual asynStatus readInt8Array(asynUser *pasynUser, epicsInt8 *value, size_t nElements, size_t *nIn);
39  virtual asynStatus readInt16Array(asynUser *pasynUser, epicsInt16 *value, size_t nElements, size_t *nIn);
40  virtual asynStatus readInt32Array(asynUser *pasynUser, epicsInt32 *value, size_t nElements, size_t *nIn);
41  virtual void report(FILE* fp, int details);
42  int pollTime() { return m_poll_ms; }
43  void updateValues()
44  {
46  }
47  static void epicsExitFunc(void* arg);
48  void shuttingDown(bool state) { m_shutting_down = state; }
49  bool shuttingDown() { return m_shutting_down; }
50 
51 private:
53  int m_poll_ms;
55 
56  asynStatus readValue(asynUser *pasynUser, const char* functionName);
57  template<typename T> asynStatus writeValue(asynUser *pasynUser, const char* functionName, T value);
58  template<typename T> asynStatus writeArrayValue(asynUser *pasynUser, const char* functionName, T* value, size_t nElements);
59  template<typename T> asynStatus readArrayValue(asynUser *pasynUser, const char* functionName, T *value, size_t nElements, size_t *nIn);
60 
61  static void NetShrVarTask(void* arg);
62 };
63 
64 #endif /* NETSHRVARDRIVER_H */
virtual asynStatus writeFloat64Array(asynUser *pasynUser, epicsFloat64 *value, size_t nElements)
static void epicsExitFunc(void *arg)
virtual asynStatus writeInt8Array(asynUser *pasynUser, epicsInt8 *value, size_t nElements)
virtual asynStatus readOctet(asynUser *pasynUser, char *value, size_t maxChars, size_t *nActual, int *eomReason)
void shuttingDown(bool state)
NetShrVarInterface * m_netvarint
virtual asynStatus writeFloat32Array(asynUser *pasynUser, epicsFloat32 *value, size_t nElements)
virtual asynStatus readInt32(asynUser *pasynUser, epicsInt32 *value)
virtual asynStatus readFloat64Array(asynUser *pasynUser, epicsFloat64 *value, size_t nElements, size_t *nIn)
static void NetShrVarTask(void *arg)
asynStatus readArrayValue(asynUser *pasynUser, const char *functionName, T *value, size_t nElements, size_t *nIn)
virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value)
Manager class for the NetVar Interaction. Parses an netvarconfig.xml file and provides access to the ...
virtual void report(FILE *fp, int details)
EPICS driver report function for iocsh dbior command.
virtual asynStatus readInt16Array(asynUser *pasynUser, epicsInt16 *value, size_t nElements, size_t *nIn)
virtual asynStatus readInt32Array(asynUser *pasynUser, epicsInt32 *value, size_t nElements, size_t *nIn)
asynStatus readValue(asynUser *pasynUser, const char *functionName)
EPICS Asyn port driver class.
asynStatus writeArrayValue(asynUser *pasynUser, const char *functionName, T *value, size_t nElements)
write an array to the driver
asynStatus writeValue(asynUser *pasynUser, const char *functionName, T value)
write a value to the driver
virtual asynStatus readFloat64(asynUser *pasynUser, epicsFloat64 *value)
NetShrVarDriver(NetShrVarInterface *netvarint, int poll_ms, const char *portName)
Constructor for the NetShrVarDriver class.
virtual asynStatus writeOctet(asynUser *pasynUser, const char *value, size_t maxChars, size_t *nActual)
void updateValues()
This is called from a polling loop in the driver to update values from buffered subscribers.
virtual asynStatus readFloat32Array(asynUser *pasynUser, epicsFloat32 *value, size_t nElements, size_t *nIn)
virtual asynStatus writeInt32Array(asynUser *pasynUser, epicsInt32 *value, size_t nElements)
virtual asynStatus writeInt16Array(asynUser *pasynUser, epicsInt16 *value, size_t nElements)
virtual asynStatus writeFloat64(asynUser *pasynUser, epicsFloat64 value)
write a float to the driver
virtual asynStatus readInt8Array(asynUser *pasynUser, epicsInt8 *value, size_t nElements, size_t *nIn)
Copyright © 2013 Science and Technology Facilities Council | Generated by   doxygen 1.8.5