Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

/ps/src/dsc/co/mw/mwfwk/cmwfwDeviceAdapter.cc

Go to the documentation of this file.
00001 #include "cmwfw_defs.h"
00002 #include "cmwfwTime.h"
00003 #include "cmwfwIOPMapper.h"
00004 #include "cmwfwDeviceServer.h"
00005 #include "cmwfwDeviceAdapter.h"
00006 #include "cmwfwPoller.h"
00007 #include "cmwfwForwarder.h"
00008 #include "cmwfwIOValue.h"
00009 #ifndef CMWFW_WINDOWSNT
00010 #include <tgm/tgm.h>
00011 #include <gm/gm_def.h>
00012 extern"C"{
00013 TgmMachine gm_getmachine();                //To get default machine for this DSC
00014 }
00015 #endif
00016 
00017 
00018 extern cmwfwIOPMapper framework_iop_mapper;
00019 
00020 
00021 #define FILE "source file:cmwfwDeviceAdapter.cc"
00022 #define ID "Contact Steen JENSEN, PS/CO"
00023 #define PROGRAM "Middleware server framework"
00024 #define T(a,b,c,d,e) TRACE(a,"%s(%s): %s %s %s %s\n",myname,FILE,b,c,d,e)
00025 #define E(a,b,c,d) ERROR("%s:%s(%s):ERROR: %s %s %s %s - %s\n",PROGRAM,myname,FILE,a,b,c,d,ID)
00026 //T(CMWFW_TRACE_,"","","","");
00027 //E("","","","");
00028 
00029 
00030 
00041 cmwfwDeviceAdapter::cmwfwDeviceAdapter(){
00042 
00043   char* myname = "cmwfwDeviceAdapter::cmwfwDeviceAdapter";
00044   T(CMWFW_TRACE_CALLS,"Entering","","","");
00045   T(CMWFW_TRACE_SERVER,"Registering adapter","","","");
00046 
00047   framework_iop_mapper.reg(*this);
00048 
00049   T(CMWFW_TRACE_CALLS,"Returning","","","");
00050 };
00051 
00052 
00062 cmwfwDeviceAdapter::~cmwfwDeviceAdapter(){
00063   char* myname = "cmwfwDeviceAdapter::~cmwfwDeviceAdapter";
00064   T(CMWFW_TRACE_CALLS,"Entering","","","");
00065   T(CMWFW_TRACE_SERVER,"Unregistering adapter","","","");
00066 
00067   framework_iop_mapper.unreg(*this);
00068 
00069   T(CMWFW_TRACE_CALLS,"Returning","","","");
00070 };
00071 
00072 
00082 cmwfwData* cmwfwDeviceAdapter::cmwfw_get(const cmwfwIOPoint& iop,
00083                                                                                  const cmwfwData& ctx){
00084   char* myname = "cmwfwDeviceAdapter::cmwfw_get";
00085   T(CMWFW_TRACE_CALLS,"Entering","","","");
00086   cmwfwData* value = this->get(iop,ctx);
00087   if(!value){
00088     T(CMWFW_TRACE_CALLS,"Returning - no value from get","","","");
00089         return value;
00090   };
00091 
00092   if(!value->contains(CYCLESTAMP_TAG))
00093     value->insert(CYCLESTAMP_TAG,cmwfwGetCurrentTime());
00094 
00095   T(CMWFW_TRACE_CALLS,"Returning - all ok","","","");
00096   return value;
00097 };
00098 
00099 
00100 
00110 void cmwfwDeviceAdapter::cmwfw_poll(const cmwfwIOPoint& iop,
00111                                                                         cmwfwData& value_to_fill,
00112                                                                         cmwfwValueQualifier& vq_to_set){
00113   char* myname = "cmwfwDeviceAdapter::cmwfw_poll";
00114   T(CMWFW_TRACE_CALLS,"Entering","","","");
00115 
00116   this->poll(iop,value_to_fill,vq_to_set);
00117 
00118   if(!value_to_fill.contains(CYCLESTAMP_TAG))
00119     value_to_fill.insert(CYCLESTAMP_TAG,cmwfwGetCurrentTime());
00120 
00121   T(CMWFW_TRACE_CALLS,"Returning - all ok","","","");
00122 };
00123 
00124 
00125 
00126 
00127 
00128 char* cmwfwDeviceAdapter::generateIOPString(const cmwfwIOPoint& iop){
00129   char* myname = "cmwfwDeviceAdapter::generateIOPString";
00130   T(CMWFW_TRACE_CALLS,"Entering","","","");
00131 
00132   char* cn = iop.getClassName();
00133   char* dn = iop.getDeviceName();
00134   char* pn = iop.getPropertyName();
00135   char* cs = iop.getCycleSelector();
00136   int cnl = strlen(cn);
00137   int dnl = strlen(dn);
00138   int pnl = strlen(pn);
00139   int csl = 0;
00140   if(cs)
00141         csl = strlen(cs);
00142 
00143   char* m = new char[cnl+dnl+pnl+csl+2+5];
00144   if(!m)heaperr(1928);
00145   m[0] = 0;
00146   strcat(m,cn);
00147   strcat(m,":");
00148   strcat(m,dn);
00149   strcat(m,":");
00150   strcat(m,pn);
00151   if(cs){
00152     strcat(m,":");
00153         strcat(m,cs);
00154   };
00155   T(CMWFW_TRACE_CALLS,"Returning - all ok","","","");
00156   return m;
00157 };
00158 
00159 
00160 
00161 
00162 
00163 
00164 void cmwfwDeviceAdapter::heaperr(int line){
00165   char* myname = "cmwfwDeviceServer";
00166   T(CMWFW_TRACE_CALLS,"Entering","","","");
00167 
00168   char l[30];
00169   itoa(line,l);
00170   E("Out of heap in line ",l,"","");
00171   throw cmwfwInternalError(FILE,line,"Out of heap memory");
00172 
00173   T(CMWFW_TRACE_CALLS,"Exiting","","","");
00174   exit(-1);
00175 };
00176 
00177 

Generated at Thu May 10 11:28:57 2001 for C.E.R.N.-PSControlsMiddlewareFramework by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001