20 #include <dbCoreAPI.h>
23 #include <dbChannel.h>
103 void * (* allocPvt) (void);
171 chPostEventFunc **cb_out,
void **arg_out,
198 chPostEventFunc **cb_out,
void **arg_out,
222 typedef enum chfPluginArg {
223 chfPluginArgInvalid=0,
238 chfPluginArg optType;
239 unsigned int required:1;
240 unsigned int convert:1;
241 unsigned int tagged:1;
242 epicsUInt32 tagOffset;
244 epicsUInt32 dataOffset;
251 #define chfInt32(Struct, Member, Name, Req, Conv) \
252 {Name, chfPluginArgInt32, Req, Conv, 0, 0, 0, \
253 OFFSET(Struct, Member), sizeof( ((Struct*)0)->Member ), NULL}
255 #define chfBoolean(Struct, Member, Name, Req, Conv) \
256 {Name, chfPluginArgBoolean, Req, Conv, 0, 0, 0, \
257 OFFSET(Struct, Member), sizeof( ((Struct*)0)->Member ), NULL}
259 #define chfDouble(Struct, Member, Name, Req, Conv) \
260 {Name, chfPluginArgDouble, Req, Conv, 0, 0, 0, \
261 OFFSET(Struct, Member), sizeof( ((Struct*)0)->Member ), NULL}
263 #define chfString(Struct, Member, Name, Req, Conv) \
264 {Name, chfPluginArgString, Req, Conv, 0, 0, 0, \
265 OFFSET(Struct, Member), sizeof( ((Struct*)0)->Member ), NULL}
267 #define chfEnum(Struct, Member, Name, Req, Conv, Enums) \
268 {Name, chfPluginArgEnum, Req, Conv, 0, 0, 0, \
269 OFFSET(Struct, Member), sizeof( ((Struct*)0)->Member ), Enums}
273 #define chfTagInt32(Struct, Member, Name, Tag, Choice, Req, Conv) \
274 {Name, chfPluginArgInt32, Req, Conv, 1, OFFSET(Struct, Tag), Choice, \
275 OFFSET(Struct, Member), sizeof( ((Struct*)0)->Member ), NULL}
277 #define chfTagBoolean(Struct, Member, Name, Tag, Choice, Req, Conv) \
278 {Name, chfPluginArgBoolean, Req, Conv, 1, OFFSET(Struct, Tag), Choice, \
279 OFFSET(Struct, Member), sizeof( ((Struct*)0)->Member ), NULL}
281 #define chfTagDouble(Struct, Member, Name, Tag, Choice, Req, Conv) \
282 {Name, chfPluginArgDouble, Req, Conv, 1, OFFSET(Struct, Tag), Choice, \
283 OFFSET(Struct, Member), sizeof( ((Struct*)0)->Member ), NULL}
285 #define chfTagString(Struct, Member, Name, Tag, Choice, Req, Conv) \
286 {Name, chfPluginArgString, Req, Conv, 1, OFFSET(Struct, Tag), Choice, \
287 OFFSET(Struct, Member), sizeof( ((Struct*)0)->Member ), NULL}
289 #define chfTagEnum(Struct, Member, Name, Tag, Choice, Req, Conv, Enums) \
290 {Name, chfPluginArgEnum, Req, Conv, 1, OFFSET(Struct, Tag), Choice, \
291 OFFSET(Struct, Member), sizeof( ((Struct*)0)->Member ), Enums}
293 #define chfPluginArgEnd {0}
296 #define CHFPLUGINDEBUG 1
319 #endif // CHFPLUGIN_H
DBCORE_API const char * chfPluginEnumString(const chfPluginEnumType *Enums, int i, const char *def)
Return the string associated with Enum index 'i'.
The core data types used by epics.
void(* channelRegisterPost)(dbChannel *chan, void *pvt, chPostEventFunc **cb_out, void **arg_out, db_field_log *probe)
Register callbacks for post-event-queue operation.
long(* channel_open)(dbChannel *chan, void *pvt)
Open channel.
void(* parse_error)(void *pvt)
A parsing error occurred.
void(* freePvt)(void *pvt)
Free private resources.
void(* channel_close)(dbChannel *chan, void *pvt)
Channel close request.
int(* parse_ok)(void *pvt)
Configuration has been parsed successfully.
void(* channelRegisterPre)(dbChannel *chan, void *pvt, chPostEventFunc **cb_out, void **arg_out, db_field_log *probe)
Register callbacks for pre-event-queue operation.
DBCORE_API int chfPluginRegister(const char *key, const chfPluginIf *pif, const chfPluginArgDef *opts)
Register a plugin.
Channel filter simplified plugin interface.
void(* channel_report)(dbChannel *chan, void *pvt, int level, const unsigned short indent)
Channel report request.
Miscellaneous macro definitions.