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);
131 const chFilterIf *fif;
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);
225 DBCORE_API db_field_log* dbChannelRunPreChain(
dbChannel *chan, db_field_log *pLogIn);
226 DBCORE_API db_field_log* dbChannelRunPostChain(
dbChannel *chan, db_field_log *pLogIn);
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.