00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef CAFE_H
00010 #define CAFE_H
00011
00012 #include <connect.h>
00013 #include <conduitEventHandlerArgs.h>
00014 #include <instant.h>
00015 #include <cafeDataType.h>
00016 #include <global.h>
00017 #if HAVE_PYTHON_H
00018 #include <unicodeobject.h>
00019 #endif
00020
00021 #if HAVE_ZEROMQ
00022 #include <zbsDataHolders.h>
00023 using namespace CAFEBS;
00024 #endif
00025
00030 class CAFE : public Connect
00031 {
00032
00033 private:
00034 Instant<dbr_string_t> cafeSoluble;
00035 Instant<dbr_float_t> cafeFrappuccino;
00036 Instant<dbr_short_t> cafeSchale;
00037 Instant<dbr_enum_t> cafeEspresso;
00038 Instant<dbr_char_t> cafeCappuccino;
00039 Instant<dbr_long_t> cafeLatte;
00040 Instant<dbr_double_t> cafeDoppio;
00041
00042 Transpose<dbr_string_t> renderString;
00043 Transpose<dbr_short_t> renderShort;
00044 Transpose<dbr_float_t> renderFloat;
00045 Transpose<dbr_enum_t> renderEnum;
00046 Transpose<dbr_char_t> renderChar;
00047 Transpose<dbr_long_t> renderLong;
00048 Transpose<dbr_double_t> renderDouble;
00049
00050 Granules cafeGranules;
00051
00052 ChannelGetCacheWaitPolicy channelGetCacheWaitPolicy;
00053
00054 ChannelRequestStatus channelRequestStatusGet;
00055 ChannelRequestStatus channelRequestStatusGetCtrl;
00056
00057 ChannelRequestMetaDataClient channelRequestMetaDataClient;
00058 ChannelRequestMetaDataClient channelRequestMetaCtrlClient;
00059
00060 CAFENUM::DBR_TYPE vectorDbrType;
00061
00062
00063 ChannelTimeoutPolicy channelTimeoutPolicySGGet;
00064 ChannelTimeoutPolicy channelTimeoutPolicySGPut;
00065
00066
00067 public:
00068
00069 CAFE(){vectorDbrType=CAFENUM::DBR_NONE;
00070
00071
00072
00073 channelRequestPolicyMasterPut.setPolicy(CAFENUM::FLUSH_AFTER_EACH_MESSAGE,
00074 CAFENUM::NO_WAIT, CAFENUM::WITH_CALLBACK_DEFAULT);
00075
00076
00077
00078
00079
00080
00081
00082
00083 };
00084
00085
00086
00087 CAFE( ChannelRequestPolicy _channelRequestPolicyMasterPut,
00088 ChannelRequestPolicy _channelRequestPolicyMasterGet,
00089 ChannelGetActionWhenMonitorPolicy _channelGetActionWhenMonitorPolicyMaster) {
00090 channelRequestPolicyMasterPut = _channelRequestPolicyMasterPut;
00091 channelRequestPolicyMasterGet = _channelRequestPolicyMasterGet;
00092 channelRequestPolicyMasterGetCtrl = _channelRequestPolicyMasterGet;
00093 channelGetActionWhenMonitorPolicyMaster = _channelGetActionWhenMonitorPolicyMaster;
00094
00095 vectorDbrType=CAFENUM::DBR_NONE;
00096 }
00097
00098
00099 CAFE(ChannelRequestPolicy _channelRequestPolicyMasterPut, ChannelRequestPolicy _channelRequestPolicyMasterGet) {
00100 channelRequestPolicyMasterPut = _channelRequestPolicyMasterPut;
00101 channelRequestPolicyMasterGet = _channelRequestPolicyMasterGet;
00102 channelRequestPolicyMasterGetCtrl = _channelRequestPolicyMasterGet;
00103 vectorDbrType=CAFENUM::DBR_NONE;
00104 }
00105
00106
00107 CAFE(ChannelRequestPolicy _channelRequestPolicyMasterPut) {
00108 channelRequestPolicyMasterPut = _channelRequestPolicyMasterPut;
00109
00110
00111
00112
00113
00114
00115
00116 vectorDbrType=CAFENUM::DBR_NONE;
00117 }
00118
00119
00120
00121 #include "cafeCache.h"
00122 #include "cafeVectors.h"
00123 #include "cafeRoast.h"
00124
00125
00126 #include "cafeXML.h"
00127
00128
00129
00130
00131
00132 int getNonBlocking(const unsigned int handle){return get(handle);};
00133
00134 int get (const unsigned int handle);
00135 int get (const unsigned int *handleArray, unsigned int nelem, int *statusArray);
00136 int get (const unsigned int *handleArray, unsigned int nHandles, std::vector<int> &statusV);
00137
00138 int getCtrl (const unsigned int handle);
00139
00140
00141 int get (const unsigned int handle, PVDataHolder & pvd);
00142 int get (const unsigned int *handleArray, unsigned int nelem, PVDataHolder * pvd);
00143
00144 int waitForBundledEvents(std::vector<unsigned int> handleV, std::vector<int> &vRB);
00145 int waitForBundledEvents(unsigned int *handleArray, unsigned int nHandles, std::vector<int> &vRB);
00146
00147 int waitForGetEvent(unsigned int handle);
00148
00149
00150 int getCtrl (const unsigned int handle, PVCtrlHolder & pvc);
00151 int getCtrl (const unsigned int *handleArray, unsigned int nelem, PVCtrlHolder * pvc);
00152
00153
00154
00155 int get (const char * pv);
00156 int getCtrl (const char * pv);
00157
00158
00159 int get (const char * pv, PVDataHolder & pvd);
00160 int getCtrl(const char * pv, PVCtrlHolder & pvc);
00161
00162
00163 int getWFAsString(unsigned int handle, std::string & message);
00164 int getWFAsString(const char * pv, std::string & message){
00165 unsigned int handle; status=ICAFE_NORMAL;
00166 try {status = open(pv, handle);}
00167 catch (CAFEException_open & e) { return e.pvEx.statusCode;}
00168 if (status == ICAFE_NORMAL) {status=getWFAsString(handle, message);}
00169 return status;
00170 }
00171
00172 int getWFAsStringCache(unsigned int handle, std::string & message);
00173 int getWFAsStringCache(const char * pv, std::string & message){
00174 unsigned int handle; status=ICAFE_NORMAL;
00175 try {status = open(pv, handle);}
00176 catch (CAFEException_open & e) { return e.pvEx.statusCode;}
00177 if (status == ICAFE_NORMAL) {status=getWFAsStringCache(handle, message);}
00178 return status;
00179 }
00180
00181 std::string getChannelIDAsString(chid _chid) {
00182 std::stringstream ss;
00183 ss << _chid;
00184 return ss.str();
00185 }
00186
00187 #if HAVE_ZEROMQ
00188
00189 int calcDBPMStatus(int, int, std::string);
00190 int setBS2CA(CAFEBS::BSDataHolder &bsd);
00191
00192 int setBS(CAFEBS::BSDataHolder &bsd, bool closeCA);
00193 int getBS(CAFEBS::BSDataHolder &bsd);
00194 int closeBS(CAFEBS::BSDataHolder &bsd);
00195
00196 int setPulseIDBufferSize(unsigned int _handle, unsigned short _bsize) {
00197 return handleHelper.setMapPulseIDBufferSize(_handle, _bsize);
00198 }
00199 int setPulseIDBufferSize(const char * _pv, unsigned short _bsize) {
00200 unsigned int _handle=handleHelper.getHandleFromPV(_pv);
00201 return handleHelper.setMapPulseIDBufferSize(_handle, _bsize);
00202 }
00203
00204 int setPulseIDBufferSizeAll(unsigned short _bsize) {
00205 return handleHelper.setMapPulseIDBufferSizeAll(_bsize);
00206 }
00207
00208 int getDBPM(DBPMKeeper &dbpm);
00209 int readDBPMOffsets(DBPMKeeper &dbpm);
00210
00211 int prepareDBPM(std::vector<std::string> &_glist, std::vector<unsigned int> &_hV, std::vector<std::string> &dev, std::vector<float> &pos) ;
00212 int prepareDBPM(std::vector<std::string> &_glist, std::vector<unsigned int> &_hV, std::map<float, std::string> &posDev) ;
00213 #endif
00214
00215
00216
00217
00218 int get(const unsigned int handle, std::string * valStr, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts) {
00219
00220 unsigned int nn=handleHelper.getNelemClient(handle);
00221 if (nn==0) {return ECAFE_INVALID_HANDLE;}
00222
00223 dbr_string_t * _val = new dbr_string_t[nn];
00224 status=cafeSoluble.get(handle, DBR_TIME_STRING, _val, alarmStatus, alarmSeverity, ts);
00225 for (unsigned int i=0; i< handleHelper.getNelemRequest(handle); ++i) { valStr[i]=_val[i]; }
00226 delete [] _val; return status;
00227 };
00228 int get(const unsigned int handle, std::string * valStr, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity) {
00229 unsigned int nn=handleHelper.getNelemClient(handle);
00230 if (nn==0) {return ECAFE_INVALID_HANDLE;}
00231 dbr_string_t * _val = new dbr_string_t[nn];
00232 status=cafeSoluble.get(handle, DBR_STS_STRING, _val, alarmStatus, alarmSeverity);
00233 for (unsigned int i=0; i< handleHelper.getNelemRequest(handle); ++i) { valStr[i]=_val[i]; }
00234 delete [] _val; return status;
00235 };
00236 int get(const unsigned int handle, std::string * valStr){
00237 unsigned int nn=handleHelper.getNelemClient(handle);
00238 if (nn==0) {return ECAFE_INVALID_HANDLE;}
00239 dbr_string_t * _val = new dbr_string_t[nn];
00240 status=cafeSoluble.get(handle, DBR_STRING, _val);
00241 for (unsigned int i=0; i< handleHelper.getNelemRequest(handle); ++i) {valStr[i]=_val[i];}
00242 delete [] _val; return status;
00243 };
00244
00245
00246 int get(const unsigned int handle, dbr_string_t * _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts) {
00247 return cafeSoluble.get(handle, DBR_TIME_STRING, _val, alarmStatus, alarmSeverity, ts);
00248 };
00249 int get(const unsigned int handle, dbr_string_t * _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity) {
00250 return cafeSoluble.get(handle, DBR_STS_STRING, _val, alarmStatus, alarmSeverity);
00251 };
00252 int get(const unsigned int handle, dbr_string_t * _val){
00253 return cafeSoluble.get(handle, DBR_STRING, _val);
00254 };
00255
00256 int get(const unsigned int handle, dbr_short_t * _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts) {
00257 return cafeSchale.get (handle, DBR_TIME_SHORT, _val, alarmStatus, alarmSeverity, ts);
00258 };
00259 int get(const unsigned int handle, dbr_short_t * _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity) {
00260 return cafeSchale.get (handle, DBR_STS_SHORT, _val, alarmStatus, alarmSeverity);
00261 };
00262 int get(const unsigned int handle, dbr_short_t * _val){
00263 return cafeSchale.get (handle, DBR_SHORT, _val);
00264 };
00265
00266 int get(const unsigned int handle, dbr_float_t * _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts) {
00267 return cafeFrappuccino.get(handle, DBR_TIME_FLOAT, _val, alarmStatus, alarmSeverity, ts);
00268 };
00269 int get(const unsigned int handle, dbr_float_t * _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity) {
00270 return cafeFrappuccino.get(handle, DBR_STS_FLOAT, _val, alarmStatus, alarmSeverity);
00271 };
00272 int get(const unsigned int handle, dbr_float_t * _val){
00273 return cafeFrappuccino.get (handle, DBR_FLOAT, _val);
00274 };
00275
00276 int get(const unsigned int handle, dbr_ushort_t * _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts) {
00277 return cafeEspresso.get (handle, DBR_TIME_ENUM, _val, alarmStatus, alarmSeverity, ts);
00278 };
00279 int get(const unsigned int handle, dbr_ushort_t * _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity) {
00280 return cafeEspresso.get (handle, DBR_STS_ENUM, _val, alarmStatus, alarmSeverity);
00281 };
00282 int get(const unsigned int handle, dbr_ushort_t * _val){
00283 return cafeEspresso.get (handle, DBR_ENUM, _val);
00284 };
00285
00286
00287
00288 int get(const unsigned int handle, dbr_char_t * _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts) {
00289 return cafeCappuccino.get (handle, DBR_TIME_CHAR, _val, alarmStatus, alarmSeverity, ts);
00290 };
00291 int get(const unsigned int handle, dbr_char_t * _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity) {
00292 return cafeCappuccino.get (handle, DBR_STS_CHAR, _val, alarmStatus, alarmSeverity);
00293 };
00294 int get(const unsigned int handle, dbr_char_t * _val){
00295 return cafeCappuccino.get (handle, DBR_CHAR, _val);
00296 };
00297
00298 int get(const unsigned int handle, dbr_long_t * _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts) {
00299 return cafeLatte.get (handle, DBR_TIME_LONG, _val, alarmStatus, alarmSeverity, ts);
00300 };
00301 int get(const unsigned int handle, dbr_long_t * _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity) {
00302 return cafeLatte.get (handle, DBR_STS_LONG, _val, alarmStatus, alarmSeverity);
00303 };
00304 int get(const unsigned int handle, dbr_long_t * _val){
00305 return cafeLatte.get (handle, DBR_LONG, _val);
00306 };
00307
00308 int get(const unsigned int handle, long long * _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, \
00309 epicsTimeStamp &ts);
00310 int get(const unsigned int handle, long long * _val, \
00311 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);
00312 int get(const unsigned int handle, long long * _val);
00313
00314
00315 int get(const unsigned int handle, dbr_double_t * _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts) {
00316 return cafeDoppio.get (handle, DBR_TIME_DOUBLE, _val, alarmStatus, alarmSeverity, ts);
00317 };
00318 int get(const unsigned int handle, dbr_double_t * _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity) {
00319 return cafeDoppio.get (handle, DBR_STS_DOUBLE, _val, alarmStatus, alarmSeverity);
00320 };
00321 int get(const unsigned int handle, dbr_double_t * _val){
00322 return cafeDoppio.get (handle, DBR_DOUBLE, _val);
00323 };
00324
00325
00326 int getCharArray(const unsigned int handle, dbr_char_t * _val){
00327 return cafeCappuccino.get (handle, DBR_CHAR, _val);
00328 };
00329 int getShortArray(const unsigned int handle, dbr_short_t * _val){
00330 return cafeSchale.get (handle, DBR_SHORT, _val);
00331 };
00332 int getUShortArray(const unsigned int handle, dbr_ushort_t * _val){
00333 return cafeEspresso.get (handle, DBR_ENUM, _val);
00334 };
00335 int getDoubleArray(const unsigned int handle, dbr_double_t * _val){
00336 return cafeDoppio.get (handle, DBR_DOUBLE, _val);
00337 };
00338 int getFloatArray(const unsigned int handle, dbr_float_t * _val){
00339 return cafeFrappuccino.get (handle, DBR_FLOAT, _val);
00340 };
00341 int getLongArray(const unsigned int handle, dbr_long_t * _val){
00342 return cafeLatte.get (handle, DBR_LONG, _val);
00343 };
00344 int getLongLongArray(const unsigned int handle, long long * _val){
00345 return get (handle, _val);
00346 };
00347 int getStringArray(const unsigned int handle, std::string * valStr){
00348 return get(handle, valStr);
00349 };
00350 int getDbrStringArray(const unsigned int handle, dbr_string_t * _val){
00351 return cafeSoluble.get(handle, DBR_STRING, _val);
00352 };
00353
00354
00355
00356
00357 int getString(const unsigned int handle, std::string & valStr) {
00358 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00359 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00360 dbr_string_t val[1]={""};
00361 status=cafeSoluble.get(handle, DBR_STRING, val);
00362 if (status==ICAFE_NORMAL) {valStr=val[0];}
00363 CAFE::setNelemToPrevious(handle, nelemPrevious);
00364 return status;
00365 }
00366 int get(const unsigned int handle, std::string & valStr) {
00367 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00368 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00369 dbr_string_t val[1]={""};
00370 status=cafeSoluble.get(handle, DBR_STRING, val);
00371 if (status==ICAFE_NORMAL) {valStr=val[0];}
00372 CAFE::setNelemToPrevious(handle, nelemPrevious);
00373 return status;
00374 }
00375
00376 int get(const unsigned int handle, std::string & valStr, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity) {
00377 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00378 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00379 dbr_string_t val[1]={""};
00380 status=cafeSoluble.get(handle, DBR_STS_STRING, val, alarmStatus, alarmSeverity);
00381 if (status==ICAFE_NORMAL) {valStr=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00382 return status;
00383 }
00384
00385 int getStringTS(const unsigned int handle, std::string & valStr,
00386 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts){
00387 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00388 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00389 dbr_string_t val[1]={""};
00390 status=cafeSoluble.get(handle, DBR_TIME_STRING, val, alarmStatus, alarmSeverity, ts);
00391 if (status==ICAFE_NORMAL) {valStr=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00392 return status;
00393 }
00394
00395 int get(const unsigned int handle, std::string & valStr,
00396 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts){
00397 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00398 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00399 dbr_string_t val[1]={""};
00400 status=cafeSoluble.get(handle, DBR_TIME_STRING, val, alarmStatus, alarmSeverity, ts);
00401 if (status==ICAFE_NORMAL) {valStr=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00402 return status;
00403 }
00404
00405
00406 int get(const unsigned int handle, dbr_string_t & _val) {
00407 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00408 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00409 dbr_string_t val[1]={""};
00410 status=cafeSoluble.get(handle, DBR_STRING, val);
00411 if (status==ICAFE_NORMAL) {sprintf(_val, val[0]);}
00412 CAFE::setNelemToPrevious(handle, nelemPrevious);
00413 return status;
00414 }
00415 int get(const unsigned int handle, dbr_string_t & _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity) {
00416 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00417 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00418 dbr_string_t val[1]={""};
00419 status=cafeSoluble.get(handle, DBR_STS_STRING, val, alarmStatus, alarmSeverity);
00420 if (status==ICAFE_NORMAL) {sprintf(_val, val[0]);} CAFE::setNelemToPrevious(handle, nelemPrevious);
00421 return status;
00422 }
00423 int get(const unsigned int handle, dbr_string_t & _val,
00424 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts){
00425 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00426 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00427 dbr_string_t val[1]={""};
00428 status=cafeSoluble.get(handle, DBR_TIME_STRING, val, alarmStatus, alarmSeverity, ts);
00429 if (status==ICAFE_NORMAL) {sprintf(_val, val[0]);} CAFE::setNelemToPrevious(handle, nelemPrevious);
00430 return status;
00431 }
00432 int get(const unsigned int handle, dbr_short_t & _val){
00433 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00434 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00435 dbr_short_t val[1]={0};
00436 status=cafeSchale.get(handle, DBR_SHORT, val);
00437 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00438 return status;
00439 }
00440 int get(const unsigned int handle, dbr_short_t & _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity){
00441 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00442 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00443 dbr_short_t val[1]={0};
00444 status=cafeSchale.get(handle, DBR_STS_SHORT, val, alarmStatus, alarmSeverity);
00445 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00446 return status;
00447 }
00448 int get(const unsigned int handle, dbr_short_t & _val,
00449 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts){
00450 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00451 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00452 dbr_short_t val[1]={0};
00453 status=cafeSchale.get(handle, DBR_TIME_SHORT, val, alarmStatus, alarmSeverity, ts);
00454 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00455 return status;
00456 }
00457 int get(const unsigned int handle, dbr_float_t &_val){
00458 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00459 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00460 dbr_float_t val[1]={0};
00461 status=cafeFrappuccino.get(handle, DBR_FLOAT, val);
00462 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00463 return status;
00464 }
00465 int get(const unsigned int handle, dbr_float_t &_val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity){
00466 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00467 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00468 dbr_float_t val[1]={0};
00469 status=cafeFrappuccino.get(handle, DBR_STS_FLOAT, val, alarmStatus, alarmSeverity);
00470 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00471 return status;
00472 }
00473 int get(const unsigned int handle, dbr_float_t & _val,
00474 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts){
00475 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00476 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00477 dbr_float_t val[1]={0};
00478 status=cafeFrappuccino.get(handle, DBR_TIME_FLOAT, val, alarmStatus, alarmSeverity, ts);
00479 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00480 return status;
00481 }
00482 int get(const unsigned int handle, dbr_enum_t & _val){
00483 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00484 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00485 dbr_enum_t val[1]={0};
00486 status=cafeEspresso.get(handle, DBR_ENUM, val);
00487 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00488 return status;
00489 }
00490 int get(const unsigned int handle, dbr_enum_t & _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity){
00491 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00492 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00493 dbr_enum_t val[1]={0};
00494 status=cafeEspresso.get(handle, DBR_STS_ENUM, val, alarmStatus, alarmSeverity);
00495 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00496 return status;
00497 }
00498 int get(const unsigned int handle, dbr_enum_t & _val,
00499 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts){
00500 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00501 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00502 dbr_enum_t val[1]={0};
00503 status=cafeEspresso.get(handle, DBR_TIME_ENUM, val, alarmStatus, alarmSeverity, ts);
00504 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00505 return status;
00506 }
00507 int get(const unsigned int handle, dbr_char_t & _val){
00508 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00509 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00510 dbr_char_t val[1]={0};
00511 status=cafeCappuccino.get(handle, DBR_CHAR, val);
00512 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00513 return status;
00514 }
00515 int get(const unsigned int handle, dbr_char_t & _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity){
00516 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00517 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00518 dbr_char_t val[1]={0};
00519 status=cafeCappuccino.get(handle, DBR_STS_CHAR, val, alarmStatus, alarmSeverity);
00520 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00521 return status;
00522 }
00523 int get(const unsigned int handle, dbr_char_t & _val,
00524 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts){
00525 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00526 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00527 dbr_char_t val[1]={0};
00528 status=cafeCappuccino.get(handle, DBR_TIME_CHAR, val, alarmStatus, alarmSeverity, ts);
00529 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00530 return status;
00531 }
00532 int getLong(const unsigned int handle, dbr_long_t & _val){
00533 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00534 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00535 dbr_long_t val[1]={0};
00536 status=cafeLatte.get(handle, DBR_LONG, val);
00537 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00538 return status;
00539 }
00540 int get(const unsigned int handle, dbr_long_t & _val){
00541 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00542 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00543 dbr_long_t val[1]={0};
00544 status=cafeLatte.get(handle, DBR_LONG, val);
00545 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00546 return status;
00547 }
00548 int get(const unsigned int handle, dbr_long_t & _val,
00549 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity){
00550 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00551 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00552 dbr_long_t val[1]={0};
00553 status=cafeLatte.get(handle, DBR_STS_LONG, val, alarmStatus, alarmSeverity);
00554 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00555 return status;
00556 }
00557 int get(const unsigned int handle, dbr_long_t & _val,
00558 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts){
00559 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00560 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00561 dbr_long_t val[1]={0};
00562 status=cafeLatte.get(handle, DBR_TIME_LONG, val, alarmStatus, alarmSeverity, ts);
00563 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00564 return status;
00565 }
00566
00567 int get(const unsigned int handle, long long & _val){
00568 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00569 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00570 long long val[1]={0};
00571 status=CAFE::get(handle, val);
00572 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00573 return status;
00574 }
00575 int get(const unsigned int handle, long long & _val,
00576 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity){
00577 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00578 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00579 long long val[1]={0};
00580 status=CAFE::get(handle, val, alarmStatus, alarmSeverity);
00581 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00582 return status;
00583 }
00584 int get(const unsigned int handle, long long & _val,
00585 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts){
00586 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00587 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00588 long long val[1]={0};
00589 status=CAFE::get(handle, val, alarmStatus, alarmSeverity, ts);
00590 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00591 return status;
00592 }
00593
00594 int getDouble(const unsigned int handle, dbr_double_t & _val){
00595 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00596 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00597 dbr_double_t val[1]={0};
00598 status=cafeDoppio.get(handle, DBR_DOUBLE, val);
00599 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00600 return status;
00601 }
00602 int get(const unsigned int handle, dbr_double_t & _val){
00603 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00604 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00605 dbr_double_t val[1]={0};
00606 status=cafeDoppio.get(handle, DBR_DOUBLE, val);
00607 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00608 return status;
00609 }
00610 int get(const unsigned int handle, dbr_double_t & _val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity){
00611 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00612 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00613 dbr_double_t val[1]={0};
00614 status=cafeDoppio.get(handle, DBR_STS_DOUBLE, val, alarmStatus, alarmSeverity);
00615 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00616 return status;
00617 }
00618 int get(const unsigned int handle, dbr_double_t & _val,
00619 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts){
00620 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00621 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00622 dbr_double_t val[1]={0};
00623 status=cafeDoppio.get(handle, DBR_TIME_DOUBLE, val, alarmStatus, alarmSeverity, ts);
00624 if (status==ICAFE_NORMAL) {_val=val[0];} CAFE::setNelemToPrevious(handle, nelemPrevious);
00625 return status;
00626 }
00627
00628
00629
00630
00632
00633 int get(const char * pv, std::string * valStr);
00634 int get(const char * pv, std::string * valStr, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);
00635 int get(const char * pv, std::string * valStr,
00636 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts);
00637
00638 int get(const char * pv, dbr_string_t * val);
00639 int get(const char * pv, dbr_string_t * val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);
00640 int get(const char * pv, dbr_string_t * val,
00641 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts);
00642 int get(const char * pv, dbr_short_t * val);
00643 int get(const char * pv, dbr_short_t * val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);
00644 int get(const char * pv, dbr_short_t * val,
00645 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts);
00646 int get(const char * pv, dbr_float_t * val);
00647 int get(const char * pv, dbr_float_t * val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);
00648 int get(const char * pv, dbr_float_t * val,
00649 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts);
00650 int get(const char * pv, dbr_enum_t * val);
00651 int get(const char * pv, dbr_enum_t * val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);
00652 int get(const char * pv, dbr_enum_t * val,
00653 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts);
00654 int get(const char * pv, dbr_char_t * val);
00655 int get(const char * pv, dbr_char_t * val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);
00656 int get(const char * pv, dbr_char_t * val,
00657 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts);
00658 int get(const char * pv, dbr_long_t * val);
00659 int get(const char * pv, dbr_long_t * val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);
00660 int get(const char * pv, dbr_long_t * val,
00661 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts);
00662
00663 int get(const char * pv, long long * val);
00664 int get(const char * pv, long long * val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);
00665 int get(const char * pv, long long * val,
00666 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts);
00667
00668 int get(const char * pv, dbr_double_t * val);
00669 int get(const char * pv, dbr_double_t * val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);
00670 int get(const char * pv, dbr_double_t * val,
00671 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts);
00672
00673
00674 int get(const char * pv, std::string & valStr);
00675 int get(const char * pv, std::string & valStr, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);
00676 int get(const char * pv, std::string & valStr,
00677 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts);
00678
00679 int get(const char * pv, dbr_string_t & val);
00680 int get(const char * pv, dbr_string_t & val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);
00681 int get(const char * pv, dbr_string_t & val,
00682 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts);
00683 int get(const char * pv, dbr_short_t & val);
00684 int get(const char * pv, dbr_short_t & val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);
00685 int get(const char * pv, dbr_short_t & val,
00686 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts);
00687 int get(const char * pv, dbr_float_t & val);
00688 int get(const char * pv, dbr_float_t & val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);
00689 int get(const char * pv, dbr_float_t & val,
00690 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts);
00691 int get(const char * pv, dbr_enum_t & val);
00692 int get(const char * pv, dbr_enum_t & val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);
00693 int get(const char * pv, dbr_enum_t & val,
00694 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts);
00695 int get(const char * pv, dbr_char_t & val);
00696 int get(const char * pv, dbr_char_t & val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);
00697 int get(const char * pv, dbr_char_t & val,
00698 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts);
00699
00700 int get(const char * pv, dbr_long_t & val);
00701 int get(const char * pv, dbr_long_t & val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);
00702 int get(const char * pv, dbr_long_t & val,
00703 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts);
00704
00705 int get(const char * pv, long long & val);
00706 int get(const char * pv, long long & val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);
00707 int get(const char * pv, long long & val,
00708 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts);
00709
00710 int get(const char * pv, dbr_double_t & val);
00711 int get(const char * pv, dbr_double_t & val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);
00712 int get(const char * pv, dbr_double_t & val,
00713 dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts);
00714
00715
00716
00718
00719 int waitForPut (const unsigned int *h, const unsigned int nelem);
00720
00722
00723
00724 int set(const unsigned int handle, PVDataHolder & pvd);
00725 int set(const unsigned int * handleArray, const unsigned int nelem, PVDataHolder * pvd);
00726 int set(const char *, PVDataHolder & pvd);
00727
00728
00729 int set(const unsigned int handle, const dbr_string_t * _val){
00730 return cafeSoluble.set (handle, DBR_STRING, _val);
00731 };
00732
00733 int set(const unsigned int handle, const dbr_short_t * _val){
00734 return cafeSchale.set (handle, DBR_SHORT, _val);
00735 };
00736
00737 int set(const unsigned int handle, const dbr_float_t * _val){
00738 return cafeFrappuccino.set (handle, DBR_FLOAT, _val);
00739 };
00740
00741 int set(const unsigned int handle, const dbr_enum_t * _val){
00742 return cafeEspresso.set (handle, DBR_ENUM, _val);
00743 };
00744
00745 int set(const unsigned int handle, const dbr_char_t * _val){
00746 return cafeCappuccino.set (handle, DBR_CHAR, _val);
00747 };
00748
00749 int set(const unsigned int handle, const dbr_long_t * _val){
00750 return cafeLatte.set (handle, DBR_LONG, _val);
00751 };
00752
00753 int set(const unsigned int handle, const long long * _val);
00754
00755 int set(const unsigned int handle, const dbr_double_t * _val){
00756 return cafeDoppio.set (handle, DBR_DOUBLE, _val);
00757 };
00758
00759
00760
00761
00762 int setStringArray(const unsigned int handle, const dbr_string_t * _val){
00763 return cafeSoluble.set (handle, DBR_STRING, _val);
00764 };
00765
00766
00767 int setCharArray(const unsigned int handle, const dbr_char_t * _val){
00768 return cafeCappuccino.set (handle, DBR_CHAR, _val);
00769 };
00770
00771 int setLongArray(const unsigned int handle, const dbr_long_t * _val){
00772 return cafeLatte.set (handle, DBR_LONG, _val);
00773 };
00774
00775 int setDoubleArray(const unsigned int handle, const dbr_double_t * _val){
00776 return cafeDoppio.set (handle, DBR_DOUBLE, _val);
00777 };
00778
00779
00780 int setString(const unsigned int handle, const std::string _val){
00781 return set (handle, _val);
00782 };
00783
00784 int setShort(const unsigned int handle, const dbr_short_t _val){
00785 return set (handle, _val);
00786 };
00787
00788 int setFloat(const unsigned int handle, const dbr_float_t _val){
00789 return set (handle, _val);
00790 };
00791
00792 int setUShort(const unsigned int handle, const dbr_enum_t _val){
00793 return set (handle, _val);
00794 };
00795
00796 int setChar(const unsigned int handle, const dbr_char_t _val){
00797 return set (handle, _val);
00798 };
00799
00800 int setLong(const unsigned int handle, const dbr_long_t _val){
00801 return set (handle, _val);
00802 };
00803
00804 int setLongLong(const unsigned int handle, const long long _val){
00805 return set (handle, _val);
00806 };
00807
00808 int setDouble(const unsigned int handle, const dbr_double_t _val){
00809 return set (handle, _val);
00810 };
00811
00812
00813
00814 int set(const unsigned int handle, std::string _val) {
00815 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00816 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00817 dbr_string_t val[1];
00818
00819 char mess[MAX_STRING_SIZE];
00820 handleHelper.removeLeadingAndTrailingSpacesDbrString((char *) _val.c_str(),mess);
00821 sprintf(val[0],"%s",mess);
00822
00823 status=cafeSoluble.set(handle, DBR_STRING, val);
00824 CAFE::setNelemToPrevious(handle, nelemPrevious); return status;
00825 }
00826
00827 int set(const unsigned int handle, const dbr_string_t _val) {
00828 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00829 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00830 dbr_string_t val[1];
00831 sprintf(val[0],"%s",_val); status=cafeSoluble.set(handle, DBR_STRING, val);
00832 CAFE::setNelemToPrevious(handle, nelemPrevious); return status;
00833 }
00834
00835 int set(const unsigned int handle, const dbr_short_t _val) {
00836 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00837 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00838 dbr_short_t val[1];
00839 val[0]=_val; status=cafeSchale.set(handle, DBR_SHORT, val);
00840 CAFE::setNelemToPrevious(handle, nelemPrevious); return status;
00841 }
00842
00843 int set(const unsigned int handle, const dbr_float_t _val) {
00844 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00845 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00846 dbr_float_t val[1];
00847 val[0]=_val; status=cafeFrappuccino.set(handle, DBR_FLOAT, val);
00848 CAFE::setNelemToPrevious(handle, nelemPrevious); return status;
00849 }
00850
00851 int set(const unsigned int handle, const dbr_enum_t _val) {
00852 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00853 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00854 dbr_enum_t val[1];
00855 val[0]=_val; status=cafeEspresso.set(handle, DBR_ENUM, val);
00856 CAFE::setNelemToPrevious(handle, nelemPrevious); return status;
00857 }
00858
00859 int set(const unsigned int handle, const dbr_char_t _val) {
00860 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00861 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00862 dbr_char_t val[1];
00863 val[0]=_val; status=cafeCappuccino.set(handle, DBR_CHAR, val);
00864 CAFE::setNelemToPrevious(handle, nelemPrevious); return status;
00865 }
00866
00867 int set(const unsigned int handle, const dbr_long_t _val) {
00868 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00869 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00870 dbr_long_t val[1];
00871 val[0]=_val; status=cafeLatte.set(handle, DBR_LONG, val);
00872 CAFE::setNelemToPrevious(handle, nelemPrevious); return status;
00873 }
00874
00875 int set(const unsigned int handle, const long long _val) {
00876 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00877 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00878 if (_val <= LONG_MAX) {
00879 dbr_long_t val[1];
00880 val[0]=_val;
00881 status=CAFE::set(handle, val);
00882 }
00883 else {
00884 dbr_double_t val[1];
00885 val[0]=_val;
00886 status=CAFE::set(handle, val);
00887 }
00888 CAFE::setNelemToPrevious(handle, nelemPrevious); return status;
00889 }
00890
00891 int set(const unsigned int handle, const dbr_double_t _val) {
00892 unsigned int nelemPrevious=CAFE::setNelemToOne(handle);
00893 if (nelemPrevious==0) { return ECAFE_INVALID_HANDLE;}
00894 dbr_double_t val[1];
00895 val[0]=_val; status=cafeDoppio.set(handle, DBR_DOUBLE, val);
00896 CAFE::setNelemToPrevious(handle, nelemPrevious);
00897 return status;
00898 }
00899
00900
00901
00902 int set(const unsigned int *handleArray, const unsigned int nelem, const dbr_string_t * _val, int *statusArray) {
00903 return cafeSoluble.set (handleArray, nelem, DBR_STRING, _val, statusArray);
00904 }
00905
00906 int set(const unsigned int *handleArray, const unsigned int nelem, const dbr_short_t * _val, int *statusArray) {
00907 return cafeSchale.set (handleArray, nelem, DBR_SHORT, _val, statusArray);
00908 }
00909
00910 int set(const unsigned int *handleArray, const unsigned int nelem, const dbr_float_t * _val, int *statusArray) {
00911 return cafeFrappuccino.set (handleArray, nelem, DBR_FLOAT, _val, statusArray);
00912 }
00913
00914 int set(const unsigned int *handleArray, const unsigned int nelem, const dbr_enum_t * _val, int *statusArray) {
00915 return cafeEspresso.set (handleArray, nelem, DBR_ENUM, _val, statusArray);
00916 }
00917
00918 int set(const unsigned int *handleArray, const unsigned int nelem, const dbr_char_t * _val, int *statusArray) {
00919 return cafeCappuccino.set (handleArray, nelem, DBR_CHAR, _val, statusArray);
00920 }
00921
00922 int set(const unsigned int *handleArray, const unsigned int nelem, const dbr_long_t * _val, int *statusArray) {
00923 return cafeLatte.set (handleArray, nelem, DBR_LONG, _val, statusArray);
00924 }
00925
00926 int set(const unsigned int *handleArray, const unsigned int nelem, const long long * _val, int *statusArray);
00927
00928
00929 int set(const unsigned int *handleArray, const unsigned int nelem, const dbr_double_t * _val, int *statusArray) {
00930 return cafeDoppio.set (handleArray, nelem, DBR_DOUBLE, _val, statusArray);
00931 }
00932
00933
00934
00935
00936 int set(const char *, const dbr_string_t * _val);
00937
00938 int set(const char *, const dbr_short_t * _val);
00939
00940 int set(const char *, const dbr_float_t * _val);
00941
00942 int set(const char *, const dbr_enum_t * _val);
00943
00944 int set(const char *, const dbr_char_t * _val);
00945
00946 int set(const char *, const dbr_long_t * _val);
00947
00948 int set(const char *, const long long * _val);
00949
00950 int set(const char *, const dbr_double_t * _val);
00951
00952
00953 int set(const char * pv, const std::string _val);
00954
00955 int set(const char *, const dbr_string_t _val);
00956
00957 int set(const char *, const dbr_short_t _val);
00958
00959 int set(const char *, const dbr_float_t _val);
00960
00961 int set(const char *, const dbr_enum_t _val);
00962
00963 int set(const char *, const dbr_char_t _val);
00964
00965 int set(const char *, const dbr_long_t _val);
00966
00967 int set(const char *, const long long _val);
00968
00969 int set(const char *, const dbr_double_t _val);
00970
00971
00972
00973 unsigned int setNelemToOne(const unsigned int handle);
00974 unsigned int setNelemToPrevious(const unsigned int handle, unsigned int nelemPrevious);
00975
00976 unsigned int setNelemToRetrieveFromCacheToOne(const unsigned int handle);
00977 unsigned int setNelemToRetrieveFromCacheToPrevious(const unsigned int handle, unsigned int nelemPrevious);
00978
00979
00980 int groupAttach (const unsigned int groupHandle, PVGroup &pvgroup);
00981 int groupFetch(const unsigned int groupHandle, PVGroup &pvgroup);
00982
00983 int groupGet(PVGroup &pvgroup);
00984 int groupGet(const unsigned int groupHandle, PVGroup &pvgroup);
00985
00986 int groupGetScalar(const unsigned int groupHandle, std::vector<std::string> &valV, std::vector<int> &statusV);
00987 int groupGetScalar(const unsigned int groupHandle, std::vector<double> &valV, std::vector<int> &statusV);
00988 int groupGetScalar(const unsigned int groupHandle, std::vector<float> &valV, std::vector<int> &statusV);
00989 int groupGetScalar(const unsigned int groupHandle, std::vector<short> &valV, std::vector<int> &statusV);
00990 int groupGetScalar(const unsigned int groupHandle, std::vector<long> &valV, std::vector<int> &statusV);
00991 int groupGetScalar(const unsigned int groupHandle, std::vector<long long> &valV, std::vector<int> &statusV);
00992 int groupGetScalar(const unsigned int groupHandle, std::vector<unsigned short> &valV, std::vector<int> &statusV);
00993 int groupGetScalar(const unsigned int groupHandle, std::vector<unsigned char> &valV, std::vector<int> &statusV);
00994 int groupGetScalar(const unsigned int groupHandle, std::vector<char> &valV, std::vector<int> &statusV);
00995
00996 int groupGetScalar(const unsigned int groupHandle, std::string * val,int * statusArray );
00997 int groupGetScalar(const unsigned int groupHandle, double * val, int * statusArray);
00998 int groupGetScalar(const unsigned int groupHandle, float * val, int * statusArray);
00999 int groupGetScalar(const unsigned int groupHandle, short * val, int * statusArray);
01000 int groupGetScalar(const unsigned int groupHandle, long * val,int * statusArray );
01001 int groupGetScalar(const unsigned int groupHandle, long long * val, int * statusArray);
01002 int groupGetScalar(const unsigned int groupHandle, unsigned short * val, int * statusArray );
01003 int groupGetScalar(const unsigned int groupHandle, unsigned char * val,int * statusArray );
01004 int groupGetScalar(const unsigned int groupHandle, char * val,int * statusArray );
01005
01006 int groupGetCache(const unsigned int groupHandle, PVGroup &pvgroup) {
01007 const unsigned int * handleArray = handleHelper.getHandlesFromWithinGroup(groupHandle);
01008 status=getCache (handleArray, pvgroup.getNPV(), pvgroup.pvdata);
01009 pvgroup.statusGroup=status;
01010 return status;
01011 }
01012
01013
01014 std::vector<unsigned int> closeDisconnectedChannelsFromWithinGroupV(const unsigned int groupHandle) {
01015 std::vector<unsigned int> dhV=handleHelper.getDisconnectedHandlesFromWithinGroupV(groupHandle);
01016 if (dhV.size() >0) {closeChannelsKeepHandles(dhV);}
01017 return dhV;
01018 }
01019
01020 std::vector<unsigned int> getDisconnectedHandlesFromWithinGroupV(const unsigned int groupHandle) {
01021 return handleHelper.getDisconnectedHandlesFromWithinGroupV(groupHandle);
01022 }
01023
01024 std::vector<unsigned int> getHandlesFromWithinGroupV(const unsigned int groupHandle) {
01025 return handleHelper.getHandlesFromWithinGroupV(groupHandle);
01026 }
01027
01028
01029 unsigned int * getHandlesFromWithinGroup(const unsigned int groupHandle) {
01030 return handleHelper.getHandlesFromWithinGroup(groupHandle);
01031 }
01032
01033 int groupSet(PVGroup &pvgroup);
01034 int groupSet(const unsigned int groupHandle, PVGroup &pvgroup);
01035
01036 int groupMonitorStart(const unsigned int groupHandle, std::vector<int> &statusV) {
01037 std::vector<unsigned int> monitorIDV;
01038 return groupMonitorStart(groupHandle, statusV, monitorIDV);
01039 }
01040
01041 int groupMonitorStart(const unsigned int groupHandle, std::vector<int> &statusV,
01042 std::vector<MonitorPolicy> &mpV);
01043 int groupMonitorStart(const unsigned int groupHandle, std::vector<int> &statusV,
01044 std::vector<unsigned int> &monitorIDV);
01045 int groupMonitorStop (const unsigned int groupHandle, std::vector<int> &statusV);
01046
01047
01048 unsigned int groupGetNPV(unsigned int _gHandle) {
01049 return handleHelper.getGroupNPV(_gHandle);
01050 }
01051 unsigned int groupGetNPV(const char * _gName) {
01052 return handleHelper.getGroupNPV(_gName);
01053 }
01054 unsigned int groupGetNPV(const char * _gName, ca_client_context * ccc) {
01055 return handleHelper.getGroupNPV(_gName, ccc);
01056 }
01057
01058
01059 #if HAVE_PYTHON_H
01060 void loadSFGroups(std::string suff);
01061 #endif
01062
01063 };
01064
01065 #endif // CAFE_H
01066