EPICS Base  7.0.8.1
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
dbBase.h
1 /*************************************************************************\
2 * Copyright (c) 2009 UChicago Argonne LLC, as Operator of Argonne
3 * National Laboratory.
4 * Copyright (c) 2002 The Regents of the University of California, as
5 * Operator of Los Alamos National Laboratory.
6 * SPDX-License-Identifier: EPICS
7 * EPICS BASE is distributed subject to a Software License Agreement found
8 * in file LICENSE that is included with this distribution.
9 \*************************************************************************/
10 /*
11  * Current Author: Marty Kraimer
12  * Date: 03-19-92
13  */
14 
15 #ifndef INCdbBaseh
16 #define INCdbBaseh 1
17 
18 #include "epicsTypes.h"
19 #include "dbFldTypes.h"
20 #include "ellLib.h"
21 #include "dbDefs.h"
22 #include "recSup.h"
23 #include "devSup.h"
24 
25 typedef struct dbMenu {
26  ELLNODE node;
27  char *name;
28  int nChoice;
29  char **papChoiceName;
30  char **papChoiceValue;
31 }dbMenu;
32 
33 typedef struct drvSup {
34  ELLNODE node;
35  char *name;
36  struct drvet *pdrvet;
37 }drvSup;
38 
39 typedef struct devSup {
40  ELLNODE node;
41  char *name;
42  char *choice;
43  int link_type;
44  /*Following only available on run time system*/
45  dset *pdset;
46  struct dsxt *pdsxt; /* Extended device support */
47 }devSup;
48 
49 typedef struct linkSup {
50  ELLNODE node;
51  char *name;
52  char *jlif_name;
53  struct jlif *pjlif;
54 } linkSup;
55 
56 typedef struct dbDeviceMenu {
57  int nChoice;
58  char **papChoice;
60 
61 /* conversion types*/
62 typedef enum {CT_DECIMAL,CT_HEX} ctType;
63 /* access level types */
64 typedef enum {ASL0,ASL1} asLevel;
65 
66 /*Breakpoint Tables */
67 typedef struct brkInt{ /* breakpoint interval */
68  double raw; /*raw value for beginning of interval */
69  double slope; /*slope for interval */
70  double eng; /*converted value for beginning of interval*/
71 }brkInt;
72 
73 typedef struct brkTable { /* breakpoint table */
74  ELLNODE node;
75  char *name; /*breakpoint table name */
76  long number; /*number of brkInt in this table */
77  struct brkInt *paBrkInt; /* ptr to array of brkInts */
78 }brkTable;
79 
80 typedef struct dbFldDes{ /* field description */
81  char *prompt; /*Prompt string for DCT */
82  char *name; /*Field name */
83  char *extra; /*C def for DBF_NOACCESS */
84  struct dbRecordType *pdbRecordType;
85  short indRecordType; /*within dbRecordType.papFldDes */
86  short special; /*Special processing requirements */
87  dbfType field_type; /*Field type as defined in dbFldTypes.h */
88  unsigned int process_passive:1;/*should dbPutField process passive */
89  unsigned int prop:1; /*field is a metadata, post DBE_PROPERTY on change*/
90  unsigned int isDevLink:1; /* true for INP/OUT fields */
91  ctType base; /*base for integer to string conversions*/
92  short promptgroup; /*prompt, i.e. gui group */
93  short interest; /*interest level */
94  asLevel as_level; /*access security level */
95  char *initial; /*initial value */
96  /*If (DBF_MENU,DBF_DEVICE) ftPvt is (pdbMenu,pdbDeviceMenu) */
97  void *ftPvt;
98  /*On no runtime following only set for STRING */
99  short size; /*length in bytes of a field element */
100  /*The following are only available on run time system*/
101  unsigned short offset; /*Offset in bytes from beginning of record*/
102 }dbFldDes;
103 
104 typedef struct dbInfoNode { /*non-field per-record information*/
105  ELLNODE node;
106  char *name;
107  char *string;
108  void *pointer;
109 }dbInfoNode;
110 
111 #define DBRN_FLAGS_VISIBLE 1
112 #define DBRN_FLAGS_ISALIAS 2
113 #define DBRN_FLAGS_HASALIAS 4
114 
115 typedef struct dbRecordNode {
116  ELLNODE node;
117  void *precord;
118  char *recordname;
119  ELLLIST infoList; /*LIST head of info nodes*/
120  int flags;
124  unsigned order;
125  struct dbRecordNode *aliasedRecnode; /* NULL unless flags|DBRN_FLAGS_ISALIAS */
126 }dbRecordNode;
127 
128 /*dbRecordAttribute is for "psuedo" fields */
129 /*pdbFldDes is so that other access routines work correctly*/
130 /*Until base supports char * value MUST be fixed length string*/
131 typedef struct dbRecordAttribute {
132  ELLNODE node;
133  char *name;
134  dbFldDes *pdbFldDes;
135  char value[MAX_STRING_SIZE];
137 
138 typedef struct dbText {
139  ELLNODE node;
140  char *text;
141 }dbText;
142 
143 typedef struct dbVariableDef {
144  ELLNODE node;
145  char *name;
146  char *type;
147 
149 
150 typedef struct dbRecordType {
151  ELLNODE node;
152  ELLLIST attributeList; /*LIST head of attributes*/
153  ELLLIST recList; /*LIST head of sorted dbRecordNodes*/
154  ELLLIST devList; /*List of associated device support*/
155  ELLLIST cdefList; /*LIST of Cdef text items*/
156  char *name;
157  short no_fields; /* number of fields defined */
158  short no_prompt; /* number of fields to configure*/
159  short no_links; /* number of links */
160  short no_aliases; /* number of aliases in recList */
161  short *link_ind; /* addr of array of ind in papFldDes*/
162  char **papsortFldName;/* ptr to array of ptr to fld names*/
163  short *sortFldInd; /* addr of array of ind in papFldDes*/
164  dbFldDes *pvalFldDes; /*pointer dbFldDes for VAL field*/
165  short indvalFlddes; /*ind in papFldDes*/
166  dbFldDes **papFldDes; /* ptr to array of ptr to fldDes*/
167  /*The following are only available on run time system*/
168  rset *prset;
169  int rec_size; /*record size in bytes */
170 }dbRecordType;
171 
172 struct dbPvd; /* Contents private to dbPvdLib code */
173 struct gphPvt; /* Contents private to gpHashLib code */
174 
175 typedef struct dbBase {
176  ELLLIST menuList;
177  ELLLIST recordTypeList;
178  ELLLIST drvList;
179  ELLLIST linkList;
180  ELLLIST registrarList;
181  ELLLIST functionList;
182  ELLLIST variableList;
183  ELLLIST bptList;
184  ELLLIST filterList;
185  ELLLIST guiGroupList;
186  void *pathPvt;
187  struct dbPvd *ppvd;
188  struct gphPvt *pgpHash;
189  short ignoreMissingMenus;
190  short loadCdefs;
194  unsigned no_records;
195 }dbBase;
196 #endif
Definition: devSup.h:118
Definition: link.h:175
unsigned no_records
Definition: dbBase.h:194
List node type.
Definition: ellLib.h:46
The core data types used by epics.
Definition: dbBase.h:25
Definition: drvSup.h:46
unsigned order
Definition: dbBase.h:124
Definition: dbBase.h:33
Definition: devSup.h:141
A doubly-linked list library.
Definition: dbBase.h:39
List header type.
Definition: ellLib.h:57
Definition: dbBase.h:138
Device support routines.
Definition: dbBase.h:175
Definition: dbBase.h:67
Definition: dbJLink.h:49
Definition: recSup.h:68
Miscellaneous macro definitions.