first cut at multi-threading version
This commit is contained in:
75
src/ca/test_event.cpp
Normal file
75
src/ca/test_event.cpp
Normal file
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
*
|
||||
* T E S T _ E V E N T . C
|
||||
* Author: Jeffrey O. Hill
|
||||
* simple stub for testing monitors
|
||||
*
|
||||
*
|
||||
* History
|
||||
* joh 031891 printed type in decimal instead of hex
|
||||
* joh 072792 better messages
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#include "iocinf.h"
|
||||
|
||||
|
||||
void epicsShareAPI ca_test_event(struct event_handler_args args)
|
||||
{
|
||||
printf ("CAC: ~~~### in test event for [%s] ###~~~\n", ca_name(args.chid));
|
||||
printf ("CAC: User argument\t%p\n", args.usr);
|
||||
printf ("CAC: Native channel data type\t%d\n", ca_field_type(args.chid));
|
||||
printf ("CAC: Monitor data type\t%ld\n", args.type);
|
||||
printf ("CAC: CA Status \"%s\"\n", ca_message(args.status));
|
||||
|
||||
if(!args.dbr || !(CA_M_SUCCESS&args.status)){
|
||||
return;
|
||||
}
|
||||
|
||||
switch(args.type){
|
||||
case DBR_STRING:
|
||||
printf ("CAC: Value:\t<%s>\n", (const char *)args.dbr);
|
||||
break;
|
||||
case DBR_CHAR:
|
||||
printf ("CAC: Value:\t<%d>\n",*(char *)args.dbr);
|
||||
break;
|
||||
#if DBR_INT != DBR_SHORT
|
||||
case DBR_INT:
|
||||
#endif
|
||||
case DBR_SHORT:
|
||||
case DBR_ENUM:
|
||||
printf ("CAC: Value:\t<%d>\n",*(short *)args.dbr);
|
||||
break;
|
||||
case DBR_LONG:
|
||||
printf ("CAC: Value:\t<%ld>\n",*(long *)args.dbr);
|
||||
break;
|
||||
case DBR_FLOAT:
|
||||
printf ("CAC: Value:\t<%f>\n",*(float *)args.dbr);
|
||||
break;
|
||||
case DBR_DOUBLE:
|
||||
printf ("CAC: Value:\t<%f>\n",*(double *)args.dbr);
|
||||
break;
|
||||
case DBR_STS_STRING:
|
||||
printf ("CAC: Value:\t<%s>\n",((struct dbr_sts_string *)args.dbr)->value);
|
||||
break;
|
||||
case DBR_STS_INT:
|
||||
printf ("CAC: Value:\t<%d>\n",((struct dbr_sts_int *)args.dbr)->value);
|
||||
break;
|
||||
case DBR_STS_FLOAT:
|
||||
printf ("CAC: Value:\t<%f>\n",((struct dbr_sts_float *)args.dbr)->value);
|
||||
break;
|
||||
case DBR_STS_ENUM:
|
||||
printf ("CAC: Value:\t<%d>\n",((struct dbr_sts_enum *)args.dbr)->value);
|
||||
break;
|
||||
case DBR_GR_FLOAT:
|
||||
printf ("CAC: Value:\t<%f>\n",((struct dbr_gr_float *)args.dbr)->value);
|
||||
break;
|
||||
default:
|
||||
printf ( "CAC: Sorry test_event does not handle data type %ld yet\n",
|
||||
args.type);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user