This is Unofficial EPICS BASE Doxygen Site
devSup.h File Reference

Device support routines. More...

#include "errMdef.h"
#include "shareLib.h"
+ Include dependency graph for devSup.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  typed_dset
 
struct  dsxt
 
struct  dset
 

Macros

#define S_dev_noDevSup   (M_devSup| 1) /*SDR_DEVSUP: Device support missing*/
 
#define S_dev_noDSET   (M_devSup| 3) /*Missing device support entry table*/
 
#define S_dev_missingSup   (M_devSup| 5) /*Missing device support routine*/
 
#define S_dev_badInpType   (M_devSup| 7) /*Bad INP link type*/
 
#define S_dev_badOutType   (M_devSup| 9) /*Bad OUT link type*/
 
#define S_dev_badInitRet   (M_devSup|11) /*Bad init_rec return value */
 
#define S_dev_badBus   (M_devSup|13) /*Illegal bus type*/
 
#define S_dev_badCard   (M_devSup|15) /*Illegal or nonexistant module*/
 
#define S_dev_badSignal   (M_devSup|17) /*Illegal signal*/
 
#define S_dev_NoInit   (M_devSup|19) /*No init*/
 
#define S_dev_Conflict   (M_devSup|21) /*Multiple records accessing same signal*/
 
#define S_dev_noDeviceFound   (M_devSup|23) /*No device found at specified address*/
 

Typedefs

typedef struct ioscan_head * IOSCANPVT
 
typedef struct typed_dset typed_dset
 
typedef struct dsxt dsxt
 
typedef long(* DEVSUPFUN) ()
 
typedef struct dset dset
 
typedef dset unambiguous_dset
 

Functions

epicsShareFunc struct linkdbGetDevLink (struct dbCommon *prec)
 
epicsShareFunc void devExtend (dsxt *pdsxt)
 
epicsShareFunc void dbInitDevSup (struct devSup *pdevSup, dset *pdset)
 

Variables

epicsShareExtern dsxt devSoft_DSXT
 

Detailed Description

Device support routines.

Definition in file devSup.h.

Macro Definition Documentation

#define S_dev_badBus   (M_devSup|13) /*Illegal bus type*/

Definition at line 174 of file devSup.h.

#define S_dev_badCard   (M_devSup|15) /*Illegal or nonexistant module*/

Definition at line 175 of file devSup.h.

#define S_dev_badInitRet   (M_devSup|11) /*Bad init_rec return value */

Definition at line 173 of file devSup.h.

#define S_dev_badInpType   (M_devSup| 7) /*Bad INP link type*/

Definition at line 171 of file devSup.h.

#define S_dev_badOutType   (M_devSup| 9) /*Bad OUT link type*/

Definition at line 172 of file devSup.h.

#define S_dev_badSignal   (M_devSup|17) /*Illegal signal*/

Definition at line 176 of file devSup.h.

#define S_dev_Conflict   (M_devSup|21) /*Multiple records accessing same signal*/

Definition at line 178 of file devSup.h.

#define S_dev_missingSup   (M_devSup| 5) /*Missing device support routine*/

Definition at line 170 of file devSup.h.

#define S_dev_noDeviceFound   (M_devSup|23) /*No device found at specified address*/

Definition at line 179 of file devSup.h.

#define S_dev_noDevSup   (M_devSup| 1) /*SDR_DEVSUP: Device support missing*/

Definition at line 168 of file devSup.h.

#define S_dev_noDSET   (M_devSup| 3) /*Missing device support entry table*/

Definition at line 169 of file devSup.h.

#define S_dev_NoInit   (M_devSup|19) /*No init*/

Definition at line 177 of file devSup.h.

Typedef Documentation

typedef long(* DEVSUPFUN) ()

Definition at line 135 of file devSup.h.

typedef struct dset dset
typedef struct dsxt dsxt

Device support extension table.

Optional routines to allow run-time address modifications to be communicated to device support, which must register a struct dsxt by calling devExtend() from its init() routine.

typedef struct ioscan_head* IOSCANPVT

Definition at line 28 of file devSup.h.

typedef struct typed_dset typed_dset

Type safe version of 'struct dset'

Recommended usage:

In Makefile:

1 USR_CPPFLAGS += -DUSE_TYPED_RSET -DUSE_TYPED_DSET

In C source file:

1 #include <devSup.h>
2 #include <dbScan.h> // For IOCSCANPVT
3 ...
4 #include <epicsExport.h> // defines epicsExportSharedSymbols
5 ...
6 static long init_record(dbCommon *prec);
7 static long get_iointr_info(int detach, dbCommon *prec, IOCSCANPVT* pscan);
8 static long longin_read(longinRecord *prec);
9 
10 longindset devLiDevName = {
11  {
12  5, // 4 from dset + 1 from longinRecord
13  NULL,
14  NULL,
15  &init_record,
16  &get_iointr_info
17  },
18  &longin_read
19 };
20 epicsExportAddress(dset, devLiDevName);

Definition at line 154 of file devSup.h.

Function Documentation

epicsShareFunc struct link* dbGetDevLink ( struct dbCommon *  prec)

Fetch INP or OUT link (or NULL if record type has neither).

Recommended for use in device support init_record()

epicsShareFunc void dbInitDevSup ( struct devSup pdevSup,
dset pdset 
)

Definition at line 47 of file dbStaticRun.c.

48 {
49  pdevSup->pdset = pdset;
50  if (pdevSup->link_type == CONSTANT)
51  pdevSup->pdsxt = &devSoft_DSXT;
52 
53  if (pdset->init) {
54  pthisDevSup = pdevSup;
55  pdset->init(0);
56  pthisDevSup = NULL;
57  }
58 }
#define NULL
Definition: catime.c:38
DEVSUPFUN init
Definition: devSup.h:143
struct dsxt * pdsxt
Definition: dbBase.h:45
struct dsxt devSoft_DSXT
Definition: dbStaticRun.c:40
int link_type
Definition: dbBase.h:42
dset * pdset
Definition: dbBase.h:44
epicsShareFunc void devExtend ( dsxt pdsxt)

Definition at line 60 of file dbStaticRun.c.

61 {
62  if (!pthisDevSup)
63  errlogPrintf("devExtend() called outside of dbInitDevSup()\n");
64  else {
65  pthisDevSup->pdsxt = pdsxt;
66  }
67 }
struct dsxt * pdsxt
Definition: dbBase.h:45
int errlogPrintf(const char *pFormat,...)
Definition: errlog.c:105

Variable Documentation

epicsShareExtern dsxt devSoft_DSXT

Definition at line 162 of file devSup.h.