EPICS Base
7.0.8.1
Main Page
Related Pages
Modules
Classes
Files
File List
File Members
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;
59
}
dbDeviceMenu
;
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];
136
}
dbRecordAttribute
;
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
148
}
dbVariableDef
;
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
dsxt
Definition:
devSup.h:118
value
Definition:
link.h:175
dbBase::no_records
unsigned no_records
Definition:
dbBase.h:194
ELLNODE
List node type.
Definition:
ellLib.h:46
epicsTypes.h
The core data types used by epics.
dbMenu
Definition:
dbBase.h:25
drvet
Definition:
drvSup.h:46
dbRecordNode::order
unsigned order
Definition:
dbBase.h:124
dbFldDes
Definition:
dbBase.h:80
dbVariableDef
Definition:
dbBase.h:143
drvSup
Definition:
dbBase.h:33
linkSup
Definition:
dbBase.h:49
dset
Definition:
devSup.h:141
ellLib.h
A doubly-linked list library.
devSup
Definition:
dbBase.h:39
ELLLIST
List header type.
Definition:
ellLib.h:57
dbText
Definition:
dbBase.h:138
brkTable
Definition:
dbBase.h:73
devSup.h
Device support routines.
dbBase
Definition:
dbBase.h:175
brkInt
Definition:
dbBase.h:67
jlif
Definition:
dbJLink.h:49
dbRecordType
Definition:
dbBase.h:150
dbInfoNode
Definition:
dbBase.h:104
rset
Definition:
recSup.h:68
dbRecordNode
Definition:
dbBase.h:115
dbDeviceMenu
Definition:
dbBase.h:56
dbRecordAttribute
Definition:
dbBase.h:131
dbDefs.h
Miscellaneous macro definitions.
Generated on Sun Jun 30 2024 13:46:57 for EPICS Base by
1.8.5