conduitEventHandlerArgs.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef CONDUITEVENTHANDLERARGS_H
00009 #define CONDUITEVENTHANDLERARGS_H
00010
00011 #include <cadef.h>
00012 #include <conduit.h>
00013 #include <helper.h>
00014
00015
00020 struct change_eventHandlerArgs
00021 {
00022 #define __METHOD__ "change_eventHandlerArgs"
00023 change_eventHandlerArgs (const struct event_handler_args & new_eventHandlerArgs) :
00024 new_eventHandlerArgs(new_eventHandlerArgs){}
00025
00026 void operator() (Conduit& c) {
00027
00028
00029
00030 c.status= new_eventHandlerArgs.status;
00031 if(c.status!=ECA_NORMAL) return;
00032
00033 Helper helper;
00034
00035 chtype requestedT= new_eventHandlerArgs.type%DBR_STS_STRING;
00036 chtype bufferType= new_eventHandlerArgs.type;
00037
00038
00039 CAFENUM::DBR_TYPE dbrTypeClass=helper.convertToCAFEDbrTypeClass(new_eventHandlerArgs.type);
00040
00041
00042
00043 c.usrArgs = new_eventHandlerArgs.usr;
00044 c.dataType= requestedT;
00045 c.dbrDataType= bufferType;
00046 c.cafeDbrType= dbrTypeClass;
00047
00048 c.hasNewData=true;
00049
00050
00051 if (new_eventHandlerArgs.type < DBR_GR_STRING) {
00052 bufferType = dbf_type_to_DBR_TIME(requestedT);
00053 }
00054 else if (new_eventHandlerArgs.type < DBR_PUT_ACKT) {
00055 bufferType = dbf_type_to_DBR_CTRL(requestedT);
00056 }
00057 else if (new_eventHandlerArgs.type < (LAST_BUFFER_TYPE+1)) {
00058
00059 }
00060 else {
00061 std::cout << __FILE__ << "/" << __LINE__ << "/" << __METHOD__ << std::endl;
00062 std::cout << "CAFE INTERNAL FUNNY: UNKNOWN event_handler_args.type= "
00063 << new_eventHandlerArgs.type << std::endl;
00064 }
00065
00066
00067
00068 unsigned int nrequired = dbr_size_n(bufferType, new_eventHandlerArgs.count);
00069 unsigned int navailable = nrequired;
00070
00071
00072
00073 switch(dbrTypeClass)
00074 {
00075 case CAFENUM::DBR_STSACK:
00076 navailable = c.channelRequestMetaSTSACK.byteSize;
00077 c.channelRequestMetaSTSACK.nelem = new_eventHandlerArgs.count;
00078 c.channelRequestMetaSTSACK.dataType = requestedT;
00079 c.channelRequestMetaSTSACK.dbrDataType = new_eventHandlerArgs.type;
00080 c.channelRequestMetaSTSACK.cafeDbrType = dbrTypeClass;
00081 c.channelRequestMetaSTSACK.usrArg = new_eventHandlerArgs.usr;
00082 break;
00083 case CAFENUM::DBR_PRIMITIVE:
00084 case CAFENUM::DBR_STS:
00085 case CAFENUM::DBR_TIME:
00086 navailable = c.channelRequestMetaData.byteSize;
00087
00088
00089
00090 c.channelRequestMetaData.nelem = new_eventHandlerArgs.count;
00091 c.channelRequestMetaData.dataType = requestedT;
00092 c.channelRequestMetaData.dbrDataType = new_eventHandlerArgs.type;
00093 c.channelRequestMetaData.cafeDbrType = dbrTypeClass;
00094 c.channelRequestMetaData.usrArg = new_eventHandlerArgs.usr;
00095
00096
00097 if (nrequired > navailable) {
00098 c.channelRequestMetaData.byteSize = nrequired;
00099
00100 }
00101 break;
00102 case CAFENUM::DBR_GR:
00103 case CAFENUM::DBR_CTRL:
00104 navailable = c.channelRequestMetaCtrl.byteSize;
00105 c.channelRequestMetaCtrl.nelem = new_eventHandlerArgs.count;
00106 c.channelRequestMetaCtrl.dataType = requestedT;
00107 c.channelRequestMetaCtrl.dbrDataType = new_eventHandlerArgs.type;
00108 c.channelRequestMetaCtrl.cafeDbrType = dbrTypeClass;
00109 c.channelRequestMetaCtrl.usrArg = new_eventHandlerArgs.usr;
00110 if (nrequired > navailable) {
00111 c.channelRequestMetaCtrl.byteSize = nrequired;
00112 }
00113 break;
00114 case CAFENUM::DBR_CLASS:
00115 break;
00116 case CAFENUM::DBR_NONE:
00117 break;
00118 default:
00119 std::cout << __FILE__ << "/" << __LINE__ << "/" << __METHOD__ << std::endl;
00120 std::cout << "CAFE INTERNAL FUNNY: UNKNOWN CAFENUM::DBR_TYPE= " << dbrTypeClass << std::endl;
00121 break;
00122 }
00123
00124
00125
00126
00127 if (nrequired > navailable) {
00128
00129 std::cout << __FILE__ << "/" << __LINE__ << "/" << __METHOD__ << std::endl;
00130 std::cout << "CHANGE OF BUFFER SIZE: FROM " << navailable << " bytes TO " << nrequired << " bytes" << std::endl;
00131 std::cout << "Channel-" << c.pv << " ca-name=" << ca_name(new_eventHandlerArgs.chid)
00132 << " type=" << new_eventHandlerArgs.type
00133 << " type=" << dbr_type_to_text(new_eventHandlerArgs.type) << std::endl;
00134
00135
00136 switch(dbrTypeClass)
00137 {
00138 case CAFENUM::DBR_STSACK:
00139
00140 if (c.stsackBuffer!=NULL) {
00141 free(c.stsackBuffer);
00142 }
00143 else {
00144 std::cout << __FILE__ << "/" << __LINE__ << "/" << __METHOD__ << std::endl;
00145 std::cout << "CAFE INTERNAL FUNNY: HOW CAN stsackBuffer NOT ALREADY EXIST?" << std::endl;
00146 std::cout << "CREATING stsackBuffer " << std::endl;
00147 }
00148
00149 c.stsackBuffer = (db_access_val *) malloc (nrequired);
00150
00151
00152 if (c.stsackBuffer==NULL){
00153 std::cout << __FILE__ << "/" << __LINE__ << "/" << __METHOD__ << std::endl;
00154 printf ("Virtual memory exhausted for channel %s ", ca_name(c.channelID));
00155 printf ("Exiting CAFE");
00156 exit(0);
00157 }
00158
00159 c.channelRequestMetaSTSACK.byteSize=nrequired;
00160
00161
00162
00163 break;
00164
00165 case CAFENUM::DBR_PRIMITIVE:
00166 case CAFENUM::DBR_STS:
00167 case CAFENUM::DBR_TIME:
00168
00169
00170 if (c.dataBuffer != NULL){
00171
00172
00173
00174
00175
00176 free(c.dataBuffer);
00177 }
00178 else {
00179 std::cout << __FILE__ << "/" << __LINE__ << "/" << __METHOD__ << std::endl;
00180 std::cout << "CAFE INTERNAL FUNNY: HOW CAN dataBuffer NOT ALREADY EXIST?" << std::endl;
00181 std::cout << "CREATING dataBuffer " << std::endl;
00182 }
00183
00184 c.dataBuffer = (db_access_val *) malloc (nrequired);
00185
00186 if (c.dataBuffer==NULL){
00187 std::cout << __FILE__ << "/" << __LINE__ << "/" << __METHOD__ << std::endl;
00188 printf ("Virtual memory exhausted for channel %s ", ca_name(c.channelID));
00189 printf ("Exiting CAFE");
00190 exit(0);
00191 }
00192 c.channelRequestMetaData.byteSize=nrequired;
00193
00194
00195 break;
00196
00197 case CAFENUM::DBR_CTRL:
00198
00199
00200 if (c.ctrlBuffer != NULL){
00201
00202
00203
00204
00205
00206 free(c.ctrlBuffer);
00207 }
00208 else {
00209 std::cout << __FILE__ << "/" << __LINE__ << "/" << __METHOD__ << std::endl;
00210 std::cout << "CAFE INTERNAL FUNNY: HOW CAN dataBuffer NOT ALREADY EXIST?" << std::endl;
00211 std::cout << "CREATING dataBuffer " << std::endl;
00212 }
00213
00214 c.ctrlBuffer = (db_access_val *) malloc (nrequired);
00215
00216 if (c.ctrlBuffer==NULL){
00217 std::cout << __FILE__ << "/" << __LINE__ << "/" << __METHOD__ << std::endl;
00218 printf ("Virtual memory exhausted for channel %s ", ca_name(c.channelID));
00219 printf ("Exiting CAFE");
00220 exit(0);
00221 }
00222
00223 c.channelRequestMetaCtrl.byteSize=nrequired;
00224
00225
00226
00227
00228
00229 break;
00230
00231 case CAFENUM::DBR_CLASS:
00232 default:
00233 break;
00234 }
00235 }
00236
00237
00238 if (new_eventHandlerArgs.count > 0) {
00239 if ((unsigned int) new_eventHandlerArgs.count > c.channelRegalia.nelem) {
00240 c.channelRegalia.nelem = (unsigned int) new_eventHandlerArgs.count;
00241 }
00242 }
00243
00244 switch(dbrTypeClass)
00245 {
00246 case CAFENUM::DBR_PRIMITIVE:
00247
00248
00249
00250
00251 c.alarmStatus =-1;
00252 c.alarmSeverity =-1;
00253 c.ts.secPastEpoch =0;
00254 c.ts.nsec =0;
00255 break;
00256 case CAFENUM::DBR_STS:
00257
00258
00259
00260
00261 c.ts.secPastEpoch =0;
00262 c.ts.nsec =0;
00263 break;
00264 case CAFENUM::DBR_TIME:
00265
00266
00267
00268
00269 break;
00270 case CAFENUM::DBR_CTRL:
00271
00272
00273
00274
00275 break;
00276 case CAFENUM::DBR_STSACK:
00277
00278
00279
00280
00281 break;
00282 case CAFENUM::DBR_CLASS:
00283
00284
00285
00286
00287 break;
00288 case CAFENUM::DBR_PUT:
00289 break;
00290 case CAFENUM::DBR_NONE:
00291 default:
00292
00293
00294
00295
00296 std::cout << __FILE__ << "/" << __LINE__ << "/" << __METHOD__ << std::endl;
00297 std::cout << "CAFE INTERNAL ERROR. Datatype not catered for: "
00298 << dbf_type_to_text(new_eventHandlerArgs.type) << std::endl;
00299 std::cout << new_eventHandlerArgs.type << std::endl;
00300 break;
00301 }
00302
00303
00304
00305 switch(new_eventHandlerArgs.type)
00306 {
00307 case DBR_DOUBLE:
00308
00309 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00310 (*(&((c.dataBuffer)->doubleval)+i))
00311 = (*(&( ((union db_access_val *) new_eventHandlerArgs.dbr)->doubleval)+i));
00312 }
00313
00314 break;
00315
00316 case DBR_FLOAT:
00317
00318 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00319 (*(&((c.dataBuffer)->fltval)+i))
00320 = (dbr_float_t) (*(&( ( (union db_access_val *) new_eventHandlerArgs.dbr)->fltval)+i));
00321 }
00322
00323
00324 break;
00325
00326 case DBR_LONG:
00327
00328 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00329 (*(&((c.dataBuffer)->longval)+i))
00330 = (*(&(( (union db_access_val *) new_eventHandlerArgs.dbr)->longval)+i));
00331 }
00332 break;
00333
00334 case DBR_SHORT:
00335
00336 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00337 (*(&((c.dataBuffer)->shrtval)+i))
00338 = (*(&(((union db_access_val *) new_eventHandlerArgs.dbr)->shrtval)+i));
00339 }
00340 break;
00341
00342 case DBR_STRING:
00343
00344 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00345 strcpy ((*(&((c.dataBuffer)->strval)+i)) ,
00346 (*(&(((union db_access_val *) new_eventHandlerArgs.dbr)->strval)+i)) );
00347 }
00348 break;
00349
00350 case DBR_ENUM:
00351
00352 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00353 (*(&((c.dataBuffer)->enmval)+i))
00354 = (*(&(((union db_access_val *) new_eventHandlerArgs.dbr)->enmval)+i));
00355 }
00356 break;
00357
00358 case DBR_CHAR:
00359
00360 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00361 (*(&((c.dataBuffer)->charval)+i))
00362 = (*(&(((union db_access_val *) new_eventHandlerArgs.dbr)->charval)+i));
00363 }
00364 break;
00365
00366
00367 case DBR_STS_DOUBLE:
00368
00369 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00370 (*(&((c.dataBuffer)->sdblval.value)+i))
00371 = (*(&( ((union db_access_val *) new_eventHandlerArgs.dbr)->sdblval.value)+i));
00372 }
00373 (*(&((c.dataBuffer)->sdblval.status))) = ((struct dbr_sts_double *) new_eventHandlerArgs.dbr)->status;
00374 (*(&((c.dataBuffer)->sdblval.severity))) = ((struct dbr_sts_double *) new_eventHandlerArgs.dbr)->severity;
00375
00376 c.alarmStatus =((struct dbr_sts_double *) new_eventHandlerArgs.dbr)->status;
00377 c.alarmSeverity=((struct dbr_sts_double *) new_eventHandlerArgs.dbr)->severity;
00378
00379 break;
00380
00381 case DBR_STS_FLOAT:
00382
00383 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00384 (*(&((c.dataBuffer)->sfltval.value)+i))
00385 = (dbr_float_t) (*(&( ( (union db_access_val *) new_eventHandlerArgs.dbr)->sfltval.value)+i));
00386 }
00387
00388 (*(&((c.dataBuffer)->sfltval.status))) = ((struct dbr_sts_float *) new_eventHandlerArgs.dbr)->status;
00389 (*(&((c.dataBuffer)->sfltval.severity))) = ((struct dbr_sts_float *) new_eventHandlerArgs.dbr)->severity;
00390
00391 c.alarmStatus =((struct dbr_sts_float *) new_eventHandlerArgs.dbr)->status;
00392 c.alarmSeverity=((struct dbr_sts_float *) new_eventHandlerArgs.dbr)->severity;
00393
00394 break;
00395
00396 case DBR_STS_LONG:
00397
00398 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00399 (*(&((c.dataBuffer)->slngval.value)+i))
00400 = (*(&(( (union db_access_val *) new_eventHandlerArgs.dbr)->slngval.value)+i));
00401 }
00402
00403 (*(&((c.dataBuffer)->slngval.status))) = ((struct dbr_sts_long *) new_eventHandlerArgs.dbr)->status;
00404 (*(&((c.dataBuffer)->slngval.severity))) = ((struct dbr_sts_long *) new_eventHandlerArgs.dbr)->severity;
00405
00406 c.alarmStatus =((struct dbr_sts_long *) new_eventHandlerArgs.dbr)->status;
00407 c.alarmSeverity=((struct dbr_sts_long *) new_eventHandlerArgs.dbr)->severity;
00408
00409 break;
00410
00411 case DBR_STS_SHORT:
00412
00413 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00414 (*(&((c.dataBuffer)->sshrtval.value)+i))
00415 = (*(&(((union db_access_val *) new_eventHandlerArgs.dbr)->sshrtval.value)+i));
00416 }
00417 (*(&((c.dataBuffer)->sshrtval.status))) = ((struct dbr_sts_short *) new_eventHandlerArgs.dbr)->status;
00418 (*(&((c.dataBuffer)->sshrtval.severity))) = ((struct dbr_sts_short *) new_eventHandlerArgs.dbr)->severity;
00419
00420 c.alarmStatus =((struct dbr_sts_short *) new_eventHandlerArgs.dbr)->status;
00421 c.alarmSeverity=((struct dbr_sts_short *) new_eventHandlerArgs.dbr)->severity;
00422 break;
00423
00424 case DBR_STS_STRING:
00425
00426 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00427 strcpy ((*(&((c.dataBuffer)->sstrval.value)+i)) ,
00428 (*(&(((union db_access_val *) new_eventHandlerArgs.dbr)->sstrval.value)+i)) );
00429 }
00430 (*(&((c.dataBuffer)->sstrval.status))) = ((struct dbr_sts_string *) new_eventHandlerArgs.dbr)->status;
00431 (*(&((c.dataBuffer)->sstrval.severity))) = ((struct dbr_sts_string *) new_eventHandlerArgs.dbr)->severity;
00432
00433 c.alarmStatus =((struct dbr_sts_string *) new_eventHandlerArgs.dbr)->status;
00434 c.alarmSeverity=((struct dbr_sts_string *) new_eventHandlerArgs.dbr)->severity;
00435
00436 break;
00437
00438 case DBR_STS_ENUM:
00439
00440 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00441 (*(&((c.dataBuffer)->senmval.value)+i))
00442 = (*(&(((union db_access_val *) new_eventHandlerArgs.dbr)->senmval.value)+i));
00443 }
00444 (*(&((c.dataBuffer)->senmval.status))) = ((struct dbr_sts_enum *) new_eventHandlerArgs.dbr)->status;
00445 (*(&((c.dataBuffer)->senmval.severity))) = ((struct dbr_sts_enum *) new_eventHandlerArgs.dbr)->severity;
00446
00447 c.alarmStatus =((struct dbr_sts_enum *) new_eventHandlerArgs.dbr)->status;
00448 c.alarmSeverity=((struct dbr_sts_enum *) new_eventHandlerArgs.dbr)->severity;
00449
00450 break;
00451
00452 case DBR_STS_CHAR:
00453
00454 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00455 (*(&((c.dataBuffer)->schrval.value)+i))
00456 = (*(&(((union db_access_val *) new_eventHandlerArgs.dbr)->schrval.value)+i));
00457 }
00458
00459 (*(&((c.dataBuffer)->schrval.status))) = ((struct dbr_sts_char *) new_eventHandlerArgs.dbr)->status;
00460 (*(&((c.dataBuffer)->schrval.severity))) = ((struct dbr_sts_char *) new_eventHandlerArgs.dbr)->severity;
00461
00462 c.alarmStatus =((struct dbr_sts_char *) new_eventHandlerArgs.dbr)->status;
00463 c.alarmSeverity=((struct dbr_sts_char *) new_eventHandlerArgs.dbr)->severity;
00464
00465 break;
00466
00467 case DBR_TIME_DOUBLE:
00468
00469 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00470 (*(&((c.dataBuffer)->tdblval.value)+i))
00471 = (*(&( ((union db_access_val *) new_eventHandlerArgs.dbr)->tdblval.value)+i));
00472 }
00473
00474 (*(&((c.dataBuffer)->tdblval.status))) = ((struct dbr_time_double *) new_eventHandlerArgs.dbr)->status;
00475 (*(&((c.dataBuffer)->tdblval.severity))) = ((struct dbr_time_double *) new_eventHandlerArgs.dbr)->severity;
00476 (*(&((c.dataBuffer)->tdblval.stamp))) = ((struct dbr_time_double *) new_eventHandlerArgs.dbr)->stamp;
00477
00478 c.alarmStatus =((struct dbr_time_double *) new_eventHandlerArgs.dbr)->status;
00479 c.alarmSeverity=((struct dbr_time_double *) new_eventHandlerArgs.dbr)->severity;
00480 c.ts =((struct dbr_time_double *) new_eventHandlerArgs.dbr)->stamp;
00481
00482 break;
00483
00484 case DBR_TIME_FLOAT:
00485
00486 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00487
00488 (*(&((c.dataBuffer)->tfltval.value)+i))
00489 = (dbr_float_t) (*(&( ( (union db_access_val *) new_eventHandlerArgs.dbr)->tfltval.value)+i));
00490
00491
00492 }
00493
00494 (*(&((c.dataBuffer)->tfltval.status))) = ((struct dbr_time_float *) new_eventHandlerArgs.dbr)->status;
00495 (*(&((c.dataBuffer)->tfltval.severity))) = ((struct dbr_time_float *) new_eventHandlerArgs.dbr)->severity;
00496 (*(&((c.dataBuffer)->tfltval.stamp))) = ((struct dbr_time_float *) new_eventHandlerArgs.dbr)->stamp;
00497
00498 c.alarmStatus =((struct dbr_time_float *) new_eventHandlerArgs.dbr)->status;
00499 c.alarmSeverity=((struct dbr_time_float *) new_eventHandlerArgs.dbr)->severity;
00500 c.ts =((struct dbr_time_float *) new_eventHandlerArgs.dbr)->stamp;
00501
00502 break;
00503
00504 case DBR_TIME_LONG:
00505
00506 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00507 (*(&((c.dataBuffer)->tlngval.value)+i))
00508 = (*(&(( (union db_access_val *) new_eventHandlerArgs.dbr)->tlngval.value)+i));
00509 }
00510
00511 (*(&((c.dataBuffer)->tlngval.status))) = ((struct dbr_time_long *) new_eventHandlerArgs.dbr)->status;
00512 (*(&((c.dataBuffer)->tlngval.severity))) = ((struct dbr_time_long *) new_eventHandlerArgs.dbr)->severity;
00513 (*(&((c.dataBuffer)->tlngval.stamp))) = ((struct dbr_time_long *) new_eventHandlerArgs.dbr)->stamp;
00514
00515 c.alarmStatus =((struct dbr_time_long *) new_eventHandlerArgs.dbr)->status;
00516 c.alarmSeverity=((struct dbr_time_long *) new_eventHandlerArgs.dbr)->severity;
00517 c.ts =((struct dbr_time_long *) new_eventHandlerArgs.dbr)->stamp;
00518 break;
00519
00520 case DBR_TIME_SHORT:
00521 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00522 (*(&((c.dataBuffer)->tshrtval.value)+i))
00523 = (*(&(((union db_access_val *) new_eventHandlerArgs.dbr)->tshrtval.value)+i));
00524 }
00525
00526 (*(&((c.dataBuffer)->tshrtval.status))) = ((struct dbr_time_short *) new_eventHandlerArgs.dbr)->status;
00527 (*(&((c.dataBuffer)->tshrtval.severity))) = ((struct dbr_time_short *) new_eventHandlerArgs.dbr)->severity;
00528 (*(&((c.dataBuffer)->tshrtval.stamp))) = ((struct dbr_time_short *) new_eventHandlerArgs.dbr)->stamp;
00529
00530 c.alarmStatus =((struct dbr_time_short *) new_eventHandlerArgs.dbr)->status;
00531 c.alarmSeverity=((struct dbr_time_short *) new_eventHandlerArgs.dbr)->severity;
00532 c.ts =((struct dbr_time_short *) new_eventHandlerArgs.dbr)->stamp;
00533
00534 break;
00535
00536 case DBR_TIME_STRING:
00537
00538 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00539 strcpy ((*(&((c.dataBuffer)->tstrval.value)+i)) ,
00540 (*(&(((union db_access_val *) new_eventHandlerArgs.dbr)->tstrval.value)+i)) );
00541 }
00542
00543
00544 (*(&((c.dataBuffer)->tstrval.status))) = ((struct dbr_time_string *) new_eventHandlerArgs.dbr)->status;
00545 (*(&((c.dataBuffer)->tstrval.severity))) = ((struct dbr_time_string *) new_eventHandlerArgs.dbr)->severity;
00546 (*(&((c.dataBuffer)->tstrval.stamp))) = ((struct dbr_time_string *) new_eventHandlerArgs.dbr)->stamp;
00547
00548 c.alarmStatus =((struct dbr_time_string *) new_eventHandlerArgs.dbr)->status;
00549 c.alarmSeverity=((struct dbr_time_string *) new_eventHandlerArgs.dbr)->severity;
00550 c.ts =((struct dbr_time_string *) new_eventHandlerArgs.dbr)->stamp;
00551
00552 break;
00553
00554 case DBR_TIME_ENUM:
00555
00556 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00557 (*(&((c.dataBuffer)->tenmval.value)+i))
00558 = (*(&(((union db_access_val *) new_eventHandlerArgs.dbr)->tenmval.value)+i));
00559 }
00560
00561
00562 (*(&((c.dataBuffer)->tenmval.status))) = ((struct dbr_time_enum *) new_eventHandlerArgs.dbr)->status;
00563 (*(&((c.dataBuffer)->tenmval.severity))) = ((struct dbr_time_enum *) new_eventHandlerArgs.dbr)->severity;
00564 (*(&((c.dataBuffer)->tenmval.stamp))) = ((struct dbr_time_enum *) new_eventHandlerArgs.dbr)->stamp;
00565
00566 c.alarmStatus =((struct dbr_time_enum *) new_eventHandlerArgs.dbr)->status;
00567 c.alarmSeverity=((struct dbr_time_enum *) new_eventHandlerArgs.dbr)->severity;
00568 c.ts =((struct dbr_time_enum *) new_eventHandlerArgs.dbr)->stamp;
00569
00570 break;
00571
00572 case DBR_TIME_CHAR:
00573
00574 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00575 (*(&((c.dataBuffer)->tchrval.value)+i))
00576 = (*(&(((union db_access_val *) new_eventHandlerArgs.dbr)->tchrval.value)+i));
00577
00578 }
00579 (*(&((c.dataBuffer)->tchrval.status))) = ((struct dbr_time_char *) new_eventHandlerArgs.dbr)->status;
00580 (*(&((c.dataBuffer)->tchrval.severity))) = ((struct dbr_time_char *) new_eventHandlerArgs.dbr)->severity;
00581 (*(&((c.dataBuffer)->tchrval.stamp))) = ((struct dbr_time_char *) new_eventHandlerArgs.dbr)->stamp;
00582
00583 c.alarmStatus =((struct dbr_time_char *) new_eventHandlerArgs.dbr)->status;
00584 c.alarmSeverity=((struct dbr_time_char *) new_eventHandlerArgs.dbr)->severity;
00585 c.ts =((struct dbr_time_char *) new_eventHandlerArgs.dbr)->stamp;
00586 break;
00587
00588 case DBR_CTRL_DOUBLE:
00589
00590 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00591 (*(&((c.ctrlBuffer)->cdblval.value)+i)) =
00592 (*(&( ((union db_access_val *) new_eventHandlerArgs.dbr)->cdblval.value)+i));
00593 }
00594
00595 (*(&((c.ctrlBuffer)->cdblval.status))) =
00596 ((struct dbr_ctrl_double *) new_eventHandlerArgs.dbr)->status;
00597 (*(&((c.ctrlBuffer)->cdblval.severity))) =
00598 ((struct dbr_ctrl_double *) new_eventHandlerArgs.dbr)->severity;
00599 (*(&((c.ctrlBuffer)->cdblval.precision))) =
00600 ((struct dbr_ctrl_double *) new_eventHandlerArgs.dbr)->precision;
00601 (*(&((c.ctrlBuffer)->cdblval.RISC_pad0))) =
00602 (dbr_short_t) ((struct dbr_ctrl_double *) new_eventHandlerArgs.dbr)->RISC_pad0;
00603 memcpy((*(&((c.ctrlBuffer)->cdblval.units))),
00604 &(((struct dbr_ctrl_double *) new_eventHandlerArgs.dbr)->units),
00605 sizeof(char[MAX_UNITS_SIZE]));
00606 (*(&((c.ctrlBuffer)->cdblval.upper_disp_limit))) =
00607 ((struct dbr_ctrl_double *) new_eventHandlerArgs.dbr)->upper_disp_limit;
00608 (*(&((c.ctrlBuffer)->cdblval.lower_disp_limit))) =
00609 ((struct dbr_ctrl_double *) new_eventHandlerArgs.dbr)->lower_disp_limit;
00610 (*(&((c.ctrlBuffer)->cdblval.upper_alarm_limit))) =
00611 ((struct dbr_ctrl_double *) new_eventHandlerArgs.dbr)->upper_alarm_limit;
00612 (*(&((c.ctrlBuffer)->cdblval.upper_warning_limit))) =
00613 ((struct dbr_ctrl_double *) new_eventHandlerArgs.dbr)->upper_warning_limit;
00614 (*(&((c.ctrlBuffer)->cdblval.lower_warning_limit))) =
00615 ((struct dbr_ctrl_double *) new_eventHandlerArgs.dbr)->lower_warning_limit;
00616 (*(&((c.ctrlBuffer)->cdblval.lower_alarm_limit))) =
00617 ((struct dbr_ctrl_double *) new_eventHandlerArgs.dbr)->lower_alarm_limit;
00618 (*(&((c.ctrlBuffer)->cdblval.upper_ctrl_limit))) =
00619 ((struct dbr_ctrl_double *) new_eventHandlerArgs.dbr)->upper_ctrl_limit;
00620 (*(&((c.ctrlBuffer)->cdblval.lower_ctrl_limit))) =
00621 ((struct dbr_ctrl_double *) new_eventHandlerArgs.dbr)->lower_ctrl_limit;
00622
00623 break;
00624
00625 case DBR_CTRL_LONG:
00626
00627 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00628 (*(&((c.ctrlBuffer)->clngval.value)+i)) =
00629 (*(&( ((union db_access_val *) new_eventHandlerArgs.dbr)->clngval.value)+i));
00630 }
00631
00632 (*(&((c.ctrlBuffer)->clngval.status))) =
00633 ((struct dbr_ctrl_long *) new_eventHandlerArgs.dbr)->status;
00634 (*(&((c.ctrlBuffer)->clngval.severity))) =
00635 ((struct dbr_ctrl_long *) new_eventHandlerArgs.dbr)->severity;
00636
00637
00638
00639 memcpy((*(&((c.ctrlBuffer)->clngval.units))),
00640 &(((struct dbr_ctrl_long *) new_eventHandlerArgs.dbr)->units),
00641 sizeof(char[MAX_UNITS_SIZE]));
00642
00643 (*(&((c.ctrlBuffer)->clngval.upper_disp_limit))) =
00644 ((struct dbr_ctrl_long *) new_eventHandlerArgs.dbr)->upper_disp_limit;
00645 (*(&((c.ctrlBuffer)->clngval.lower_disp_limit))) =
00646 ((struct dbr_ctrl_long *) new_eventHandlerArgs.dbr)->lower_disp_limit;
00647 (*(&((c.ctrlBuffer)->clngval.upper_alarm_limit))) =
00648 ((struct dbr_ctrl_long *) new_eventHandlerArgs.dbr)->upper_alarm_limit;
00649 (*(&((c.ctrlBuffer)->clngval.upper_warning_limit))) =
00650 ((struct dbr_ctrl_long *) new_eventHandlerArgs.dbr)->upper_warning_limit;
00651 (*(&((c.ctrlBuffer)->clngval.lower_warning_limit))) =
00652 ((struct dbr_ctrl_long *) new_eventHandlerArgs.dbr)->lower_warning_limit;
00653 (*(&((c.ctrlBuffer)->clngval.lower_alarm_limit))) =
00654 ((struct dbr_ctrl_long *) new_eventHandlerArgs.dbr)->lower_alarm_limit;
00655 (*(&((c.ctrlBuffer)->clngval.upper_ctrl_limit))) =
00656 ((struct dbr_ctrl_long *) new_eventHandlerArgs.dbr)->upper_ctrl_limit;
00657 (*(&((c.ctrlBuffer)->clngval.lower_ctrl_limit))) =
00658 ((struct dbr_ctrl_long *) new_eventHandlerArgs.dbr)->lower_ctrl_limit;
00659
00660
00661
00662
00663 break;
00664
00665
00666 case DBR_CTRL_CHAR:
00667
00668 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00669 (*(&((c.ctrlBuffer)->gchrval.value)+i)) =
00670 (*(&( ((union db_access_val *) new_eventHandlerArgs.dbr)->cchrval.value)+i));
00671 }
00672
00673 (*(&((c.ctrlBuffer)->cchrval.status))) =
00674 ((struct dbr_ctrl_char *) new_eventHandlerArgs.dbr)->status;
00675 (*(&((c.ctrlBuffer)->cchrval.severity))) =
00676 ((struct dbr_ctrl_char *) new_eventHandlerArgs.dbr)->severity;
00677
00678
00679
00680 memcpy((*(&((c.ctrlBuffer)->cchrval.units))),
00681 &(((struct dbr_ctrl_char *) new_eventHandlerArgs.dbr)->units),
00682 sizeof(char[MAX_UNITS_SIZE]));
00683
00684 (*(&((c.ctrlBuffer)->cchrval.upper_disp_limit))) =
00685 ((struct dbr_ctrl_char *) new_eventHandlerArgs.dbr)->upper_disp_limit;
00686 (*(&((c.ctrlBuffer)->cchrval.lower_disp_limit))) =
00687 ((struct dbr_ctrl_char *) new_eventHandlerArgs.dbr)->lower_disp_limit;
00688 (*(&((c.ctrlBuffer)->cchrval.upper_alarm_limit))) =
00689 ((struct dbr_ctrl_char *) new_eventHandlerArgs.dbr)->upper_alarm_limit;
00690 (*(&((c.ctrlBuffer)->cchrval.upper_warning_limit))) =
00691 ((struct dbr_ctrl_char *) new_eventHandlerArgs.dbr)->upper_warning_limit;
00692 (*(&((c.ctrlBuffer)->cchrval.lower_warning_limit))) =
00693 ((struct dbr_ctrl_char *) new_eventHandlerArgs.dbr)->lower_warning_limit;
00694 (*(&((c.ctrlBuffer)->cchrval.lower_alarm_limit))) =
00695 ((struct dbr_ctrl_char *) new_eventHandlerArgs.dbr)->lower_alarm_limit;
00696 (*(&((c.ctrlBuffer)->cchrval.upper_ctrl_limit))) =
00697 ((struct dbr_ctrl_char *) new_eventHandlerArgs.dbr)->upper_ctrl_limit;
00698 (*(&((c.ctrlBuffer)->cchrval.lower_ctrl_limit))) =
00699 ((struct dbr_ctrl_char *) new_eventHandlerArgs.dbr)->lower_ctrl_limit;
00700
00701
00702
00703
00704 break;
00705
00706
00707 case DBR_CTRL_ENUM:
00708
00709 for (long i=0; i<new_eventHandlerArgs.count; ++i){
00710 (*(&((c.ctrlBuffer)->cenmval.value)+i)) =
00711 (*(&( ((union db_access_val *) new_eventHandlerArgs.dbr)->cenmval.value)+i));
00712 }
00713
00714 (*(&((c.ctrlBuffer)->cenmval.status))) =
00715 ((struct dbr_ctrl_enum *) new_eventHandlerArgs.dbr)->status;
00716 (*(&((c.ctrlBuffer)->cenmval.severity))) =
00717 ((struct dbr_ctrl_enum *) new_eventHandlerArgs.dbr)->severity;
00718
00719
00720
00721
00722
00723 (*(&((c.ctrlBuffer)->cenmval.no_str))) =
00724 ((struct dbr_ctrl_enum *) new_eventHandlerArgs.dbr)->no_str;
00725
00726 memcpy( (*(&((c.ctrlBuffer)->cenmval.strs))),
00727 &(((struct dbr_ctrl_enum *) new_eventHandlerArgs.dbr)->strs),
00728 sizeof(char)*MAX_ENUM_STRING_SIZE*MAX_ENUM_STATES) ;
00729
00730
00731
00732 memcpy(c.channelEnumStrings.options, &(((struct dbr_ctrl_enum *) new_eventHandlerArgs.dbr)->strs),
00733 sizeof(c.channelEnumStrings.options));
00734 c.channelEnumStrings.noOptions=((struct dbr_ctrl_enum *) new_eventHandlerArgs.dbr)->no_str;
00735
00736
00737
00738 break;
00739
00740
00741 case DBR_CTRL_FLOAT:
00742
00743 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00744 (*(&((c.ctrlBuffer)->cfltval.value)+i)) =
00745 (*(&( ((union db_access_val *) new_eventHandlerArgs.dbr)->cfltval.value)+i));
00746 }
00747
00748 (*(&((c.ctrlBuffer)->cfltval.status))) =
00749 ((struct dbr_ctrl_float *) new_eventHandlerArgs.dbr)->status;
00750 (*(&((c.ctrlBuffer)->cfltval.severity))) =
00751 ((struct dbr_ctrl_float *) new_eventHandlerArgs.dbr)->severity;
00752
00753
00754 (*(&((c.ctrlBuffer)->cfltval.precision))) =
00755 ((struct dbr_ctrl_float *) new_eventHandlerArgs.dbr)->precision;
00756 (*(&((c.ctrlBuffer)->cfltval.RISC_pad))) = (dbr_short_t)
00757 ((struct dbr_ctrl_float *) new_eventHandlerArgs.dbr)->RISC_pad;
00758
00759 memcpy((*(&((c.ctrlBuffer)->cfltval.units))),
00760 &(((struct dbr_ctrl_float *) new_eventHandlerArgs.dbr)->units),
00761 sizeof(char[MAX_UNITS_SIZE]));
00762
00763 (*(&((c.ctrlBuffer)->cfltval.upper_disp_limit))) =
00764 ((struct dbr_ctrl_float *) new_eventHandlerArgs.dbr)->upper_disp_limit;
00765 (*(&((c.ctrlBuffer)->cfltval.lower_disp_limit))) =
00766 ((struct dbr_ctrl_float *) new_eventHandlerArgs.dbr)->lower_disp_limit;
00767 (*(&((c.ctrlBuffer)->cfltval.upper_alarm_limit))) =
00768 ((struct dbr_ctrl_float *) new_eventHandlerArgs.dbr)->upper_alarm_limit;
00769 (*(&((c.ctrlBuffer)->cfltval.upper_warning_limit))) =
00770 ((struct dbr_ctrl_float *) new_eventHandlerArgs.dbr)->upper_warning_limit;
00771 (*(&((c.ctrlBuffer)->cfltval.lower_warning_limit))) =
00772 ((struct dbr_ctrl_float *) new_eventHandlerArgs.dbr)->lower_warning_limit;
00773 (*(&((c.ctrlBuffer)->cfltval.lower_alarm_limit))) =
00774 ((struct dbr_ctrl_float *) new_eventHandlerArgs.dbr)->lower_alarm_limit;
00775 (*(&((c.ctrlBuffer)->cfltval.upper_ctrl_limit))) =
00776 ((struct dbr_ctrl_float *) new_eventHandlerArgs.dbr)->upper_ctrl_limit;
00777 (*(&((c.ctrlBuffer)->cfltval.lower_ctrl_limit))) =
00778 ((struct dbr_ctrl_float *) new_eventHandlerArgs.dbr)->lower_ctrl_limit;
00779
00780
00781
00782
00783
00784 break;
00785
00786
00787 case DBR_CTRL_SHORT:
00788
00789 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00790 (*(&((c.ctrlBuffer)->gshrtval.value)+i)) =
00791 (*(&( ((union db_access_val *) new_eventHandlerArgs.dbr)->cshrtval.value)+i));
00792 }
00793
00794 (*(&((c.ctrlBuffer)->cshrtval.status))) =
00795 ((struct dbr_ctrl_short *) new_eventHandlerArgs.dbr)->status;
00796 (*(&((c.ctrlBuffer)->cshrtval.severity))) =
00797 ((struct dbr_ctrl_short *) new_eventHandlerArgs.dbr)->severity;
00798
00799
00800
00801 memcpy((*(&((c.ctrlBuffer)->cshrtval.units))),
00802 &(((struct dbr_ctrl_short *) new_eventHandlerArgs.dbr)->units),
00803 sizeof(char[MAX_UNITS_SIZE]));
00804
00805 (*(&((c.ctrlBuffer)->cshrtval.upper_disp_limit))) =
00806 ((struct dbr_ctrl_short *) new_eventHandlerArgs.dbr)->upper_disp_limit;
00807 (*(&((c.ctrlBuffer)->cshrtval.lower_disp_limit))) =
00808 ((struct dbr_ctrl_short *) new_eventHandlerArgs.dbr)->lower_disp_limit;
00809 (*(&((c.ctrlBuffer)->cshrtval.upper_alarm_limit))) =
00810 ((struct dbr_ctrl_short *) new_eventHandlerArgs.dbr)->upper_alarm_limit;
00811 (*(&((c.ctrlBuffer)->cshrtval.upper_warning_limit))) =
00812 ((struct dbr_ctrl_short *) new_eventHandlerArgs.dbr)->upper_warning_limit;
00813 (*(&((c.ctrlBuffer)->cshrtval.lower_warning_limit))) =
00814 ((struct dbr_ctrl_short *) new_eventHandlerArgs.dbr)->lower_warning_limit;
00815 (*(&((c.ctrlBuffer)->cshrtval.lower_alarm_limit))) =
00816 ((struct dbr_ctrl_short *) new_eventHandlerArgs.dbr)->lower_alarm_limit;
00817 (*(&((c.ctrlBuffer)->cshrtval.upper_ctrl_limit))) =
00818 ((struct dbr_ctrl_short *) new_eventHandlerArgs.dbr)->upper_ctrl_limit;
00819 (*(&((c.ctrlBuffer)->cshrtval.lower_ctrl_limit))) =
00820 ((struct dbr_ctrl_short *) new_eventHandlerArgs.dbr)->lower_ctrl_limit;
00821
00822
00823
00824
00825
00826 break;
00827
00828
00829 case DBR_CTRL_STRING:
00830
00831 for (long i=0; i<new_eventHandlerArgs.count; ++i){
00832 strcpy( (*(&((c.ctrlBuffer)->cstrval.value)+i)),
00833 (*(&( ((union db_access_val *) new_eventHandlerArgs.dbr)->cstrval.value)+i)));
00834 }
00835
00836 (*(&((c.ctrlBuffer)->cstrval.status))) =
00837 ((struct dbr_sts_string *) new_eventHandlerArgs.dbr)->status;
00838 (*(&((c.ctrlBuffer)->cstrval.severity))) =
00839 ((struct dbr_sts_short *) new_eventHandlerArgs.dbr)->severity;
00840
00841
00842
00843
00844 break;
00845
00846 case DBR_GR_DOUBLE:
00847
00848 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00849 (*(&((c.ctrlBuffer)->gdblval.value)+i)) =
00850 (*(&( ((union db_access_val *) new_eventHandlerArgs.dbr)->gdblval.value)+i));
00851 }
00852
00853 (*(&((c.ctrlBuffer)->gdblval.status))) =
00854 ((struct dbr_gr_double *) new_eventHandlerArgs.dbr)->status;
00855 (*(&((c.ctrlBuffer)->gdblval.severity))) =
00856 ((struct dbr_gr_double *) new_eventHandlerArgs.dbr)->severity;
00857
00858 (*(&((c.ctrlBuffer)->gdblval.precision))) =
00859 ((struct dbr_gr_double *) new_eventHandlerArgs.dbr)->precision;
00860
00861 (*(&((c.ctrlBuffer)->gdblval.RISC_pad0))) =
00862 (dbr_short_t) ((struct dbr_gr_double *) new_eventHandlerArgs.dbr)->RISC_pad0;
00863
00864 memcpy((*(&((c.ctrlBuffer)->gdblval.units))),
00865 &(((struct dbr_gr_double *) new_eventHandlerArgs.dbr)->units),
00866 sizeof(char[MAX_UNITS_SIZE]));
00867
00868 (*(&((c.ctrlBuffer)->gdblval.upper_disp_limit))) =
00869 ((struct dbr_gr_double *) new_eventHandlerArgs.dbr)->upper_disp_limit;
00870 (*(&((c.ctrlBuffer)->gdblval.lower_disp_limit))) =
00871 ((struct dbr_gr_double *) new_eventHandlerArgs.dbr)->lower_disp_limit;
00872 (*(&((c.ctrlBuffer)->gdblval.upper_alarm_limit))) =
00873 ((struct dbr_gr_double *) new_eventHandlerArgs.dbr)->upper_alarm_limit;
00874 (*(&((c.ctrlBuffer)->gdblval.upper_warning_limit))) =
00875 ((struct dbr_gr_double *) new_eventHandlerArgs.dbr)->upper_warning_limit;
00876 (*(&((c.ctrlBuffer)->gdblval.lower_warning_limit))) =
00877 ((struct dbr_gr_double *) new_eventHandlerArgs.dbr)->lower_warning_limit;
00878 (*(&((c.ctrlBuffer)->gdblval.lower_alarm_limit))) =
00879 ((struct dbr_gr_double *) new_eventHandlerArgs.dbr)->lower_alarm_limit;
00880
00881
00882
00883
00884 break;
00885
00886 case DBR_GR_LONG:
00887
00888 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00889 (*(&((c.ctrlBuffer)->glngval.value)+i)) =
00890 (*(&( ((union db_access_val *) new_eventHandlerArgs.dbr)->glngval.value)+i));
00891 }
00892
00893 (*(&((c.ctrlBuffer)->glngval.status))) =
00894 ((struct dbr_gr_long *) new_eventHandlerArgs.dbr)->status;
00895 (*(&((c.ctrlBuffer)->glngval.severity))) =
00896 ((struct dbr_gr_long *) new_eventHandlerArgs.dbr)->severity;
00897
00898
00899
00900 memcpy((*(&((c.ctrlBuffer)->glngval.units))),
00901 &(((struct dbr_gr_long *) new_eventHandlerArgs.dbr)->units),
00902 sizeof(char[MAX_UNITS_SIZE]));
00903
00904 (*(&((c.ctrlBuffer)->glngval.upper_disp_limit))) =
00905 ((struct dbr_gr_long *) new_eventHandlerArgs.dbr)->upper_disp_limit;
00906 (*(&((c.ctrlBuffer)->glngval.lower_disp_limit))) =
00907 ((struct dbr_gr_long *) new_eventHandlerArgs.dbr)->lower_disp_limit;
00908 (*(&((c.ctrlBuffer)->glngval.upper_alarm_limit))) =
00909 ((struct dbr_gr_long *) new_eventHandlerArgs.dbr)->upper_alarm_limit;
00910 (*(&((c.ctrlBuffer)->glngval.upper_warning_limit))) =
00911 ((struct dbr_gr_long *) new_eventHandlerArgs.dbr)->upper_warning_limit;
00912 (*(&((c.ctrlBuffer)->glngval.lower_warning_limit))) =
00913 ((struct dbr_gr_long *) new_eventHandlerArgs.dbr)->lower_warning_limit;
00914 (*(&((c.ctrlBuffer)->glngval.lower_alarm_limit))) =
00915 ((struct dbr_gr_long *) new_eventHandlerArgs.dbr)->lower_alarm_limit;
00916
00917
00918
00919
00920 break;
00921
00922
00923 case DBR_GR_CHAR:
00924
00925 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00926 (*(&((c.ctrlBuffer)->gchrval.value)+i)) =
00927 (*(&( ((union db_access_val *) new_eventHandlerArgs.dbr)->gchrval.value)+i));
00928 }
00929
00930 (*(&((c.ctrlBuffer)->gchrval.status))) =
00931 ((struct dbr_gr_char *) new_eventHandlerArgs.dbr)->status;
00932 (*(&((c.ctrlBuffer)->gchrval.severity))) =
00933 ((struct dbr_gr_char *) new_eventHandlerArgs.dbr)->severity;
00934
00935
00936
00937 memcpy((*(&((c.ctrlBuffer)->gchrval.units))),
00938 &(((struct dbr_gr_char *) new_eventHandlerArgs.dbr)->units),
00939 sizeof(char[MAX_UNITS_SIZE]));
00940
00941 (*(&((c.ctrlBuffer)->gchrval.upper_disp_limit))) =
00942 ((struct dbr_gr_char *) new_eventHandlerArgs.dbr)->upper_disp_limit;
00943 (*(&((c.ctrlBuffer)->gchrval.lower_disp_limit))) =
00944 ((struct dbr_gr_char *) new_eventHandlerArgs.dbr)->lower_disp_limit;
00945 (*(&((c.ctrlBuffer)->gchrval.upper_alarm_limit))) =
00946 ((struct dbr_gr_char *) new_eventHandlerArgs.dbr)->upper_alarm_limit;
00947 (*(&((c.ctrlBuffer)->gchrval.upper_warning_limit))) =
00948 ((struct dbr_gr_char *) new_eventHandlerArgs.dbr)->upper_warning_limit;
00949 (*(&((c.ctrlBuffer)->gchrval.lower_warning_limit))) =
00950 ((struct dbr_gr_char *) new_eventHandlerArgs.dbr)->lower_warning_limit;
00951 (*(&((c.ctrlBuffer)->gchrval.lower_alarm_limit))) =
00952 ((struct dbr_gr_char *) new_eventHandlerArgs.dbr)->lower_alarm_limit;
00953
00954
00955
00956
00957 break;
00958
00959
00960 case DBR_GR_ENUM:
00961
00962 for (long i=0; i<new_eventHandlerArgs.count; ++i){
00963 (*(&((c.ctrlBuffer)->genmval.value)+i)) =
00964 (*(&( ((union db_access_val *) new_eventHandlerArgs.dbr)->genmval.value)+i));
00965 }
00966
00967 (*(&((c.ctrlBuffer)->genmval.status))) =
00968 ((struct dbr_gr_enum *) new_eventHandlerArgs.dbr)->status;
00969 (*(&((c.ctrlBuffer)->genmval.severity))) =
00970 ((struct dbr_gr_enum *) new_eventHandlerArgs.dbr)->severity;
00971
00972
00973
00974
00975
00976 (*(&((c.ctrlBuffer)->genmval.no_str))) =
00977 ((struct dbr_gr_enum *) new_eventHandlerArgs.dbr)->no_str;
00978
00979 memcpy( (*(&((c.ctrlBuffer)->genmval.strs))),
00980 &(((struct dbr_gr_enum *) new_eventHandlerArgs.dbr)->strs),
00981 sizeof(char)*MAX_ENUM_STRING_SIZE*MAX_ENUM_STATES) ;
00982
00983
00984
00985
00986 memcpy(c.channelEnumStrings.options, &(((struct dbr_gr_enum *) new_eventHandlerArgs.dbr)->strs),
00987 sizeof(c.channelEnumStrings.options));
00988 c.channelEnumStrings.noOptions=((struct dbr_gr_enum *) new_eventHandlerArgs.dbr)->no_str;
00989
00990
00991
00992 break;
00993
00994
00995 case DBR_GR_FLOAT:
00996
00997 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
00998 (*(&((c.ctrlBuffer)->gfltval.value)+i)) =
00999 (*(&( ((union db_access_val *) new_eventHandlerArgs.dbr)->gfltval.value)+i));
01000 }
01001
01002 (*(&((c.ctrlBuffer)->gfltval.status))) =
01003 ((struct dbr_gr_float *) new_eventHandlerArgs.dbr)->status;
01004 (*(&((c.ctrlBuffer)->gfltval.severity))) =
01005 ((struct dbr_gr_float *) new_eventHandlerArgs.dbr)->severity;
01006
01007
01008 (*(&((c.ctrlBuffer)->gfltval.precision))) =
01009 ((struct dbr_gr_float *) new_eventHandlerArgs.dbr)->precision;
01010 (*(&((c.ctrlBuffer)->gfltval.RISC_pad0))) =
01011 (dbr_short_t) ((struct dbr_gr_float *) new_eventHandlerArgs.dbr)->RISC_pad0;
01012
01013 memcpy((*(&((c.ctrlBuffer)->gfltval.units))),
01014 &(((struct dbr_gr_float *) new_eventHandlerArgs.dbr)->units),
01015 sizeof(char[MAX_UNITS_SIZE]));
01016
01017 (*(&((c.ctrlBuffer)->gfltval.upper_disp_limit))) =
01018 ((struct dbr_gr_float *) new_eventHandlerArgs.dbr)->upper_disp_limit;
01019 (*(&((c.ctrlBuffer)->gfltval.lower_disp_limit))) =
01020 ((struct dbr_gr_float *) new_eventHandlerArgs.dbr)->lower_disp_limit;
01021 (*(&((c.ctrlBuffer)->gfltval.upper_alarm_limit))) =
01022 ((struct dbr_gr_float *) new_eventHandlerArgs.dbr)->upper_alarm_limit;
01023 (*(&((c.ctrlBuffer)->gfltval.upper_warning_limit))) =
01024 ((struct dbr_gr_float *) new_eventHandlerArgs.dbr)->upper_warning_limit;
01025 (*(&((c.ctrlBuffer)->gfltval.lower_warning_limit))) =
01026 ((struct dbr_gr_float *) new_eventHandlerArgs.dbr)->lower_warning_limit;
01027 (*(&((c.ctrlBuffer)->gfltval.lower_alarm_limit))) =
01028 ((struct dbr_gr_float *) new_eventHandlerArgs.dbr)->lower_alarm_limit;
01029
01030
01031
01032
01033
01034 break;
01035
01036
01037 case DBR_GR_SHORT:
01038
01039 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
01040 (*(&((c.ctrlBuffer)->gshrtval.value)+i)) =
01041 (*(&( ((union db_access_val *) new_eventHandlerArgs.dbr)->gshrtval.value)+i));
01042 }
01043
01044 (*(&((c.ctrlBuffer)->gshrtval.status))) =
01045 ((struct dbr_gr_short *) new_eventHandlerArgs.dbr)->status;
01046 (*(&((c.ctrlBuffer)->gshrtval.severity))) =
01047 ((struct dbr_gr_short *) new_eventHandlerArgs.dbr)->severity;
01048
01049
01050
01051 memcpy((*(&((c.ctrlBuffer)->gshrtval.units))),
01052 &(((struct dbr_gr_short *) new_eventHandlerArgs.dbr)->units),
01053 sizeof(char[MAX_UNITS_SIZE]));
01054
01055 (*(&((c.ctrlBuffer)->gshrtval.upper_disp_limit))) =
01056 ((struct dbr_gr_short *) new_eventHandlerArgs.dbr)->upper_disp_limit;
01057 (*(&((c.ctrlBuffer)->gshrtval.lower_disp_limit))) =
01058 ((struct dbr_gr_short *) new_eventHandlerArgs.dbr)->lower_disp_limit;
01059 (*(&((c.ctrlBuffer)->gshrtval.upper_alarm_limit))) =
01060 ((struct dbr_gr_short *) new_eventHandlerArgs.dbr)->upper_alarm_limit;
01061 (*(&((c.ctrlBuffer)->gshrtval.upper_warning_limit))) =
01062 ((struct dbr_gr_short *) new_eventHandlerArgs.dbr)->upper_warning_limit;
01063 (*(&((c.ctrlBuffer)->gshrtval.lower_warning_limit))) =
01064 ((struct dbr_gr_short *) new_eventHandlerArgs.dbr)->lower_warning_limit;
01065 (*(&((c.ctrlBuffer)->gshrtval.lower_alarm_limit))) =
01066 ((struct dbr_gr_short *) new_eventHandlerArgs.dbr)->lower_alarm_limit;
01067
01068
01069
01070
01071 break;
01072
01073
01074 case DBR_GR_STRING:
01075
01076 for (long i=0; i<new_eventHandlerArgs.count; ++i){
01077 strcpy( (*(&((c.ctrlBuffer)->gstrval.value)+i)),
01078 (*(&( ((union db_access_val *) new_eventHandlerArgs.dbr)->gstrval.value)+i)));
01079 }
01080
01081 (*(&((c.ctrlBuffer)->gstrval.status))) =
01082 ((struct dbr_sts_string *) new_eventHandlerArgs.dbr)->status;
01083 (*(&((c.ctrlBuffer)->gstrval.severity))) =
01084 ((struct dbr_sts_short *) new_eventHandlerArgs.dbr)->severity;
01085
01086
01087
01088
01089 break;
01090
01091 case DBR_STSACK_STRING:
01092
01093
01094
01095
01096
01097
01098
01099
01100
01101
01102
01103
01104
01105
01106
01107 for (long i=0; i<new_eventHandlerArgs.count; ++i) {
01108 strcpy ((*(&((c.stsackBuffer)->sastrval.value)+i)) ,
01109 (*(&(((struct dbr_stsack_string *) new_eventHandlerArgs.dbr)->value)+i)) );
01110
01111 }
01112
01113
01114
01115 (*(&((c.stsackBuffer)->sastrval.status))) = (dbr_ushort_t) ((struct dbr_stsack_string *) new_eventHandlerArgs.dbr)->status;
01116 (*(&((c.stsackBuffer)->sastrval.severity))) = (dbr_ushort_t) ((struct dbr_stsack_string *) new_eventHandlerArgs.dbr)->severity;
01117
01118
01119
01120
01121
01122
01123
01124
01125
01126
01127
01128
01129
01130
01131
01132
01133
01134
01135
01136 break;
01137
01138 case DBR_CLASS_NAME:
01139
01140
01141
01142
01143
01144
01145
01146
01147
01148
01149
01150
01151
01153 strcpy( c.channelRegalia.className,
01154 (*(&(((union db_access_val *) new_eventHandlerArgs.dbr)->classname)+0)));
01155
01156
01157
01158 break;
01159
01160
01161 default:
01162 std::cout << "CAFE INTERNAL ERROR: This line should never appear! " << std::endl;
01163 std::cout << __FILE__ << "/" << __LINE__ << "/" << __METHOD__ << std::endl;
01164 std::cout << "Method does not support this DBR_TYPE: "
01165 << dbr_type_to_text(new_eventHandlerArgs.type) << std::endl;
01166
01167
01168
01169 }
01170
01171
01172
01173
01174 if(c.ts.nsec>1000000000) {c.ts.nsec=0;}
01175
01176
01177 }
01178
01179
01180
01181 private:
01182 event_handler_args new_eventHandlerArgs;
01183 #undef __METHOD__
01184 };
01185
01186
01188
01189
01190 #endif // CONDUITEVENTHANDLERARGS_H