17 #ifndef INC_dbChannel_H
18 #define INC_dbChannel_H
25 #include "db_field_log.h"
27 #include "dbCoreAPI.h"
41 struct event_que *ev_que;
44 unsigned long nreplace;
47 char callBackInProgress;
57 long final_no_elements;
58 short final_field_size;
79 parse_stop, parse_continue
87 void (* priv_free)(
void *puser);
89 parse_result (* parse_start)(
chFilter *filter);
94 void (* parse_abort)(
chFilter *filter);
98 parse_result (* parse_end)(
chFilter *filter);
104 parse_result (* parse_null)(
chFilter *filter);
105 parse_result (* parse_boolean)(
chFilter *filter,
int boolVal);
106 parse_result (* parse_integer)(
chFilter *filter,
long integerVal);
107 parse_result (* parse_double)(
chFilter *filter,
double doubleVal);
108 parse_result (* parse_string)(
chFilter *filter,
const char *stringVal,
111 parse_result (* parse_start_map)(
chFilter *filter);
112 parse_result (* parse_map_key)(
chFilter *filter,
const char *key,
114 parse_result (* parse_end_map)(
chFilter *filter);
116 parse_result (* parse_start_array)(
chFilter *filter);
117 parse_result (* parse_end_array)(
chFilter *filter);
120 long (* channel_open)(
chFilter *filter);
121 void (* channel_register_pre) (
chFilter *filter, chPostEventFunc **cb_out,
void **arg_out,
db_field_log *probe);
122 void (* channel_register_post)(
chFilter *filter, chPostEventFunc **cb_out,
void **arg_out,
db_field_log *probe);
123 void (* channel_report)(
chFilter *filter,
int level,
const unsigned short indent);
124 void (* channel_close)(
chFilter *filter);
142 chPostEventFunc *pre_func;
144 chPostEventFunc *post_func;
152 DBCORE_API
void dbChannelInit (
void);
153 DBCORE_API
void dbChannelExit(
void);
154 DBCORE_API
long dbChannelTest(
const char *name);
155 DBCORE_API
dbChannel * dbChannelCreate(
const char *name);
156 DBCORE_API
long dbChannelOpen(
dbChannel *chan);
159 DBCORE_API
extern unsigned short dbDBRnewToDBRold[];
164 #define dbChannelName(pChan) ((pChan)->name)
167 #define dbChannelRecord(pChan) ((pChan)->addr.precord)
170 #define dbChannelFldDes(pChan) ((pChan)->addr.pfldDes)
173 #define dbChannelElements(pChan) ((pChan)->addr.no_elements)
176 #define dbChannelFieldType(pChan) ((pChan)->addr.field_type)
179 #define dbChannelExportType(pChan) ((pChan)->addr.dbr_field_type)
182 #define dbChannelExportCAType(pChan) (dbDBRnewToDBRold[dbChannelExportType(pChan)])
185 #define dbChannelFieldSize(pChan) ((pChan)->addr.field_size)
188 #define dbChannelFinalElements(pChan) ((pChan)->final_no_elements)
191 #define dbChannelFinalFieldType(pChan) ((pChan)->final_type)
194 #define dbChannelFinalCAType(pChan) (dbDBRnewToDBRold[(pChan)->final_type])
197 #define dbChannelFinalFieldSize(pChan) ((pChan)->final_field_size)
200 #define dbChannelSpecial(pChan) ((pChan)->addr.special)
207 #define dbChannelField(pChan) ((pChan)->addr.pfield)
210 DBCORE_API
long dbChannelGet(
dbChannel *chan,
short type,
211 void *pbuffer,
long *options,
long *nRequest,
void *pfl);
212 DBCORE_API
long dbChannelGetField(
dbChannel *chan,
short type,
213 void *pbuffer,
long *options,
long *nRequest,
void *pfl);
214 DBCORE_API
long dbChannelPut(
dbChannel *chan,
short type,
215 const void *pbuffer,
long nRequest);
216 DBCORE_API
long dbChannelPutField(
dbChannel *chan,
short type,
217 const void *pbuffer,
long nRequest);
218 DBCORE_API
void dbChannelShow(
dbChannel *chan,
int level,
219 const unsigned short indent);
220 DBCORE_API
void dbChannelFilterShow(
dbChannel *chan,
int level,
221 const unsigned short indent);
222 DBCORE_API
void dbChannelDelete(
dbChannel *chan);
224 DBCORE_API
void dbRegisterFilter(
const char *key,
const chFilterIf *fif,
void *puser);
227 DBCORE_API
const chFilterPlugin * dbFindFilter(
const char *key,
size_t len);
228 DBCORE_API
void dbChannelGetArrayInfo(
dbChannel *chan,
229 void **pfield,
long *no_elements,
long *offset);
The core data types used by epics.
A doubly-linked list library.
Miscellaneous macro definitions.