cafe.h

Go to the documentation of this file.
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; // 0
00037     Transpose<dbr_short_t>  renderShort;  // 1
00038     Transpose<dbr_float_t>  renderFloat;  // 2
00039     Transpose<dbr_enum_t>   renderEnum;   // 3
00040     Transpose<dbr_char_t>   renderChar;   // 4
00041     Transpose<dbr_long_t>   renderLong;   // 5
00042     Transpose<dbr_double_t> renderDouble; // 6
00043 
00044     Granules cafeGranules;
00045 
00046     ChannelGetCacheWaitPolicy channelGetCacheWaitPolicy;
00047 
00048     ChannelRequestStatus  channelRequestStatusGet;
00049     ChannelRequestStatus  channelRequestStatusGetCtrl;
00050 
00051     ChannelRequestMetaDataClient channelRequestMetaDataClient; //used for PVDataHolder
00052     ChannelRequestMetaDataClient channelRequestMetaCtrlClient; //used for PVCtrlHolder
00053 
00054     CAFENUM::DBR_TYPE vectorDbrType;
00055 
00056     //Groups
00057     ChannelTimeoutPolicy channelTimeoutPolicySGGet;
00058     ChannelTimeoutPolicy channelTimeoutPolicySGPut;
00059 
00060 public:
00061 
00062     CAFE(){vectorDbrType=CAFENUM::DBR_NONE;}; //cafeVectors.h
00063 
00064     #include "cafeCache.h"
00065     #include "cafeVectors.h"
00066     #include "cafeRoast.h"
00067 //if HAVE_LIBQTXML
00068     //only if qt xml activated
00069     #include "cafeXML.h" 
00070                 // if HAVE_LIBQTXML moved to within header file
00071 //endif
00072 
00073 
00074     //get NON_BLOCKING
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     //get BLOCKING
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     //pvName
00096     //NON_BLOCKING
00097     int  get      (const char * pv);
00098     int  getCtrl  (const char * pv);
00099 
00100     //BLOCKING
00101     int  get    (const char * pv, PVDataHolder & pvd);
00102     int  getCtrl(const char * pv, PVCtrlHolder & pvc);
00103 
00104     //Standard BLOCKING get
00105 
00106 
00107 
00108     //0+
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         //check on handle number before proceeding!
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     //0
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     //1
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     //2
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     //3
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     //4
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     //5
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     //5+ long long
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     //6
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     //Arrays
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         //0
00246 
00247     //single values
00248     int getString(const unsigned int handle, string  & valStr) { //0+
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) { //0+
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) {//0
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){ //0
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){ //0
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) { //0
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) {//0
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){ //0
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){ //1
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){ //1
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){ //1
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){ //2
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){ //2
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){ //2
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){ //3
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){ //3
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){ //3
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){ //4
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){ //4
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){ //4
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){ //5
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){ //5
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){ //5
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){ //5
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){ //5+ long long
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){ //5+ long long
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){ //5+ long long
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){  //6
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){  //6
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){  //6
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){ //6
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); //0+
00525     int  get(const char * pv, string  * valStr, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);//0+
00526     int  get(const char * pv, string  * valStr,
00527              dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts); //0+
00528 
00529     int  get(const char * pv, dbr_string_t  * val); //0
00530     int  get(const char * pv, dbr_string_t  * val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity); //0
00531     int  get(const char * pv, dbr_string_t  * val,
00532              dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts); //0
00533     int  get(const char * pv, dbr_short_t  * val);//1
00534     int  get(const char * pv, dbr_short_t  * val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity); //1
00535     int  get(const char * pv, dbr_short_t  * val,
00536              dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts); //1
00537     int  get(const char * pv, dbr_float_t  * val);//2
00538     int  get(const char * pv, dbr_float_t  * val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity); //2
00539     int  get(const char * pv, dbr_float_t  * val,
00540              dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts); //2
00541     int  get(const char * pv, dbr_enum_t  * val); //3
00542     int  get(const char * pv, dbr_enum_t  * val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);  //3
00543     int  get(const char * pv, dbr_enum_t  * val,
00544              dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts); //3
00545     int  get(const char * pv, dbr_char_t  * val); //4
00546     int  get(const char * pv, dbr_char_t  * val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity); //4
00547     int  get(const char * pv, dbr_char_t  * val,
00548              dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts); //4
00549     int  get(const char * pv, dbr_long_t  * val); //5
00550     int  get(const char * pv, dbr_long_t  * val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity); //5
00551     int  get(const char * pv, dbr_long_t  * val,
00552              dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts); //5
00553 
00554     int  get(const char * pv, long long  * val);  //5+ long long
00555     int  get(const char * pv, long long  * val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity); //5+ long long
00556     int  get(const char * pv, long long  * val,
00557              dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts); //5+ long long
00558 
00559     int  get(const char * pv, dbr_double_t  * val);//6
00560     int  get(const char * pv, dbr_double_t  * val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);  //6
00561     int  get(const char * pv, dbr_double_t  * val,
00562              dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts); //6
00563 
00564 
00565     int  get(const char * pv, string  & valStr); //0+
00566     int  get(const char * pv, string  & valStr, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity); //0
00567     int  get(const char * pv, string  & valStr,
00568              dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts); //0
00569 
00570     int  get(const char * pv, dbr_string_t  & val); //0
00571     int  get(const char * pv, dbr_string_t  & val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity); //0
00572     int  get(const char * pv, dbr_string_t  & val,
00573              dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts); //0
00574     int  get(const char * pv, dbr_short_t  & val); //1
00575     int  get(const char * pv, dbr_short_t  & val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity); //1
00576     int  get(const char * pv, dbr_short_t  & val,
00577              dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts); //1
00578     int  get(const char * pv, dbr_float_t  & val); //2
00579     int  get(const char * pv, dbr_float_t  & val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity); //2
00580     int  get(const char * pv, dbr_float_t  & val,
00581              dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts); //2
00582     int  get(const char * pv, dbr_enum_t  & val); //3
00583     int  get(const char * pv, dbr_enum_t  & val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity); //3
00584     int  get(const char * pv, dbr_enum_t  & val,
00585              dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts); //3
00586     int  get(const char * pv, dbr_char_t  & val); //4
00587     int  get(const char * pv, dbr_char_t  & val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity); //4
00588     int  get(const char * pv, dbr_char_t  & val,
00589              dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts); //4
00590 
00591     int  get(const char * pv, dbr_long_t  & val); //5
00592     int  get(const char * pv, dbr_long_t  & val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity); //5
00593     int  get(const char * pv, dbr_long_t  & val,
00594              dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts); //5
00595 
00596     int  get(const char * pv, long long  & val); //5+ long long
00597     int  get(const char * pv, long long  & val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity); //5+ long long
00598     int  get(const char * pv, long long  & val,
00599              dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts); //5+ long long
00600 
00601     int  get(const char * pv, dbr_double_t  & val);  //6
00602     int  get(const char * pv, dbr_double_t  & val, dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity);  //6
00603     int  get(const char * pv, dbr_double_t  & val,
00604              dbr_short_t &alarmStatus, dbr_short_t &alarmSeverity, epicsTimeStamp &ts); //6
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); //Yes
00616     int  set(const unsigned int  * handleArray, const unsigned int  nelem, PVDataHolder * pvd);
00617     int  set(const char *, PVDataHolder & pvd);
00618 
00619     //0
00620     int  set(const unsigned int  handle, const dbr_string_t * _val){
00621        return cafeSoluble.set (handle, DBR_STRING, _val);
00622     };
00623     //1
00624     int  set(const unsigned int  handle, const dbr_short_t * _val){
00625         return cafeSchale.set (handle, DBR_SHORT, _val);
00626     };
00627     //2
00628     int  set(const unsigned int  handle, const dbr_float_t * _val){
00629         return cafeFrappuccino.set (handle, DBR_FLOAT, _val);
00630     };
00631     //3
00632     int  set(const unsigned int  handle, const dbr_enum_t * _val){
00633         return cafeEspresso.set (handle, DBR_ENUM, _val);
00634     };
00635     //4
00636     int  set(const unsigned int  handle, const dbr_char_t * _val){
00637         return cafeCappuccino.set (handle, DBR_CHAR, _val);
00638     };
00639     //5
00640     int  set(const unsigned int  handle, const dbr_long_t * _val){
00641         return cafeLatte.set (handle, DBR_LONG, _val);
00642     };
00643     //5+ long long
00644     int  set(const unsigned int  handle, const long long * _val);
00645     //6
00646     int  set(const unsigned int  handle, const dbr_double_t * _val){
00647         return cafeDoppio.set (handle, DBR_DOUBLE, _val);
00648     };
00649 
00650 
00651     //set for PythonTypes
00652     //0
00653     int  setStringArray(const unsigned int handle, const dbr_string_t * _val){
00654        return cafeSoluble.set (handle, DBR_STRING, _val);
00655     };
00656                 
00657     //4
00658     int  setCharArray(const unsigned int handle, const dbr_char_t *  _val){
00659         return cafeCappuccino.set (handle, DBR_CHAR, _val);
00660     };
00661     //5
00662     int  setLongArray(const unsigned int handle, const dbr_long_t * _val){
00663         return cafeLatte.set (handle, DBR_LONG, _val);
00664     };          
00665     //6
00666     int  setDoubleArray(const unsigned int handle, const dbr_double_t * _val){
00667         return cafeDoppio.set (handle, DBR_DOUBLE, _val);
00668     };
00669 
00670     //0
00671     int  setString(const unsigned int handle, const string  _val){
00672        return set (handle, _val);
00673     };
00674                 //1
00675     int  setShort(const unsigned int  handle, const dbr_short_t  _val){
00676         return set (handle, _val);
00677     };
00678     //2
00679     int  setFloat(const unsigned int  handle, const dbr_float_t  _val){
00680         return set (handle, _val);
00681     };
00682     //3
00683     int  setUShort(const unsigned int  handle, const dbr_enum_t  _val){
00684         return set (handle, _val);
00685     };
00686     //4
00687     int  setChar(const unsigned int handle, const dbr_char_t   _val){
00688         return set (handle,  _val);
00689     };
00690     //5
00691     int   setLong(const unsigned int handle, const dbr_long_t  _val){
00692         return set (handle, _val);
00693     };
00694                 //5+
00695     int setLongLong(const unsigned int handle, const long long  _val){
00696         return set (handle, _val);
00697     };          
00698     //6
00699     int  setDouble(const unsigned int handle, const dbr_double_t  _val){
00700         return set (handle, _val);
00701     };
00702 
00703 
00704     //0
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         //remove leading and trailing blanks;      
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     //0
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     //1
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     //2
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     //3
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     //4
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     //5
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     //5+ long long
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     //6
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     //0  non-blocking, flush at end
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     //1  non-blocking, flush at end
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     //2  non-blocking, flush at end
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     //3  non-blocking, flush at end
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     //4  non-blocking, flush at end
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     //5  non-blocking, flush at end
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     //5+ long long  non-blocking, flush at end
00817     int  set(const unsigned int  *handleArray, const unsigned int  nelem, const long long * _val,  int  *statusArray);
00818 
00819     //6  non-blocking, flush at end
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     //0
00825     int  set(const char *, const dbr_string_t * _val);
00826     //1
00827     int  set(const char *, const dbr_short_t * _val);
00828     //2
00829     int  set(const char *, const dbr_float_t * _val);
00830     //3
00831     int  set(const char *, const dbr_enum_t * _val);
00832     //4
00833     int  set(const char *, const dbr_char_t * _val);
00834     //5
00835     int  set(const char *, const dbr_long_t * _val);    
00836     //5+ long long
00837     int  set(const char *, const long long * _val);
00838     //6
00839     int  set(const char *, const dbr_double_t * _val);
00840     //0
00841     int  set(const char *, const dbr_string_t _val);
00842     //1
00843     int  set(const char *, const dbr_short_t  _val);
00844     //2
00845     int  set(const char *, const dbr_float_t  _val);
00846     //3
00847     int  set(const char *, const dbr_enum_t   _val);
00848     //4
00849     int  set(const char *, const dbr_char_t   _val);
00850     //5
00851     int  set(const char *, const dbr_long_t   _val);
00852     //5+ long long
00853     int  set(const char *, const long long   _val);
00854     //6
00855     int  set(const char *, const dbr_double_t _val);
00856 
00857 
00858 
00859 
00860     //helper functions for &val methods
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     //      group functions
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 

Generated on 3 May 2017 for CAFE by  doxygen 1.6.1