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