Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

nmlbbdtest.cc

Go to the documentation of this file.
00001 
00002 
00003 #include "rcs.hh"               // NML
00004 
00005 extern "C"
00006 {
00007 
00008 #include "bbd.h"
00009 
00010   int NMLInit ();
00011   int NMLReadInit ();
00012   int NMLWriteInit ();
00013   int NMLWrite ();
00014   int NMLRead ();
00015   int NMLExit ();
00016   int NMLReadExit ();
00017   int NMLWriteExit ();
00018   int BBDInit ();
00019   int BBDRead ();
00020   int BBDWrite ();
00021   int BBDExit ();
00022   int NBTest ();
00023 
00024 }
00025 
00026 
00027 struct bbd_struct
00028 {
00029   int i;
00030   double d;
00031   char c;
00032 };
00033 
00034 #define NML_BBD_MSG_TYPE ((NMLTYPE) 101)
00035 
00036 class NML_BBD_MSG:public NMLmsg
00037 {
00038 public:
00039   NML_BBD_MSG ():NMLmsg (NML_BBD_MSG_TYPE, sizeof (NML_BBD_MSG))
00040   {
00041   };
00042 
00043   void update (CMS *);
00044 
00045   bbd_struct internal_bbd;
00046 };
00047 
00048 int
00049 nmlbbdFormat (NMLTYPE type, void *buf, CMS * cms)
00050 {
00051   switch (type)
00052     {
00053     case NML_BBD_MSG_TYPE:
00054       ((NML_BBD_MSG *) buf)->update (cms);
00055       return 1;
00056 
00057     default:
00058       break;
00059     }
00060   return -1;
00061 }
00062 
00063 void
00064 NML_BBD_MSG::update (CMS * cms)
00065 {
00066   cms->update (internal_bbd.i);
00067   cms->update (internal_bbd.d);
00068   cms->update (internal_bbd.c);
00069 };
00070 
00071 
00072 NML *nml_read = NULL;
00073 NML *nml_write = NULL;
00074 BBD bbd_read = NULL;
00075 BBD bbd_write = NULL;
00076 
00077 int
00078 NMLBBDNULL ()
00079 {
00080   nml_read = NULL;
00081   nml_write = NULL;
00082   bbd_read = NULL;
00083   bbd_write = NULL;
00084 }
00085 
00086 
00087 int
00088 NMLInit ()
00089 {
00090   nml_read = NULL;
00091   nml_write = NULL;
00092   NMLWriteInit ();
00093   NMLReadInit ();
00094 }
00095 
00096 int
00097 NMLReadInit ()
00098 {
00099   nml_read = NULL;
00100   rcs_print ("NMLReadInit():\n");
00101 
00102   nml_read =
00103     new NML (nmlbbdFormat, "buf", "reader", "/users/shackle/rcslib/test.nml");
00104 
00105   if (NULL == nml_read)
00106     {
00107       return -1;
00108     }
00109   if (!nml_read->valid ())
00110     {
00111       return -1;
00112     }
00113   return 0;
00114 }
00115 
00116 int
00117 NMLWriteInit ()
00118 {
00119   nml_read = NULL;
00120   nml_write = NULL;
00121 
00122   rcs_print ("NMLWriteInit():\n");
00123   nml_write =
00124     new NML (nmlbbdFormat, "buf", "writer", "/users/shackle/rcslib/test.nml");
00125 
00126   if (NULL == nml_write)
00127     {
00128       return -1;
00129     }
00130   if (!nml_write->valid ())
00131     {
00132       return -1;
00133     }
00134   return 0;
00135 }
00136 
00137 
00138 int
00139 NMLExit ()
00140 {
00141   rcs_print ("NMLExit():\n");
00142   NMLReadExit ();
00143   NMLWriteExit ();
00144   return 0;
00145 }
00146 
00147 int
00148 NMLReadExit ()
00149 {
00150   rcs_print ("NMLReadExit():\n");
00151   if (NULL != nml_read)
00152     {
00153       delete nml_read;
00154       nml_read = NULL;
00155     }
00156   return 0;
00157 }
00158 
00159 int
00160 NMLWriteExit ()
00161 {
00162   rcs_print ("NMLWriteExit():\n");
00163   if (NULL != nml_write)
00164     {
00165       delete nml_write;
00166       nml_write = NULL;
00167     }
00168   return 0;
00169 }
00170 
00171 int
00172 NMLRead ()
00173 {
00174   rcs_print ("NMLRead():\n");
00175   if (NULL == nml_read)
00176     {
00177       rcs_print_error ("nml_read is NULL.\n");
00178       return -1;
00179     }
00180 
00181   NMLTYPE type = nml_read->read ();
00182   NML_BBD_MSG *bbd_msg = (NML_BBD_MSG *) nml_read->get_address ();
00183 
00184   rcs_print ("type = %d\n", type);
00185   if (NULL == bbd_msg)
00186     {
00187       rcs_print_error ("bbd_msg == NULL\n");
00188       return -1;
00189     }
00190   rcs_print ("i = %d\n", bbd_msg->internal_bbd.i);
00191   rcs_print ("d = %lf\n", bbd_msg->internal_bbd.d);
00192   return type;
00193 }
00194 
00195 int
00196 NMLWrite ()
00197 {
00198   rcs_print ("NMLWrite():\n");
00199   if (NULL == nml_write)
00200     {
00201       rcs_print_error ("nml_write is NULL.\n");
00202       return -1;
00203     }
00204 
00205   static int nml_write_count = 0;
00206   nml_write_count++;
00207   NML_BBD_MSG bbd_msg;
00208   bbd_msg.internal_bbd.i = nml_write_count;
00209   bbd_msg.internal_bbd.c = nml_write_count;
00210   bbd_msg.internal_bbd.d = nml_write_count;
00211 
00212   return nml_write->write (&bbd_msg);
00213 
00214 }
00215 
00216 
00217 int
00218 BBDInit ()
00219 {
00220   rcs_print ("BBDInit():\n");
00221   bbd_write = bbdConnect ("buf", BBD_MULT_WRITER, 0x100);
00222 
00223   bbd_read = bbdConnect ("buf", BBD_MULT_READER, 0x100);
00224 
00225   if (NULL == bbd_write)
00226     {
00227       return -1;
00228     }
00229   if (NULL == bbd_read)
00230     {
00231       return -1;
00232     }
00233   return 0;
00234 }
00235 
00236 
00237 int
00238 BBDExit ()
00239 {
00240   rcs_print ("BBDExit():\n");
00241   if (NULL != bbd_read)
00242     {
00243       bbdDelete (bbd_read);
00244       bbd_read = NULL;
00245     }
00246   if (NULL != bbd_write)
00247     {
00248       bbd_write = NULL;
00249     }
00250   return 0;
00251 }
00252 
00253 int
00254 BBDRead ()
00255 {
00256   rcs_print ("BBDRead():\n");
00257   if (NULL == bbd_read)
00258     {
00259       rcs_print_error ("bbd_read is NULL.\n");
00260       return -1;
00261     }
00262 
00263   bbd_struct bbd_msg;
00264 
00265   if (bbdRead (bbd_read, &bbd_msg, BBD_PLAIN_READ, NO_WAIT) != OK)
00266     {
00267       return -1;
00268     }
00269 
00270   rcs_print ("i = %d\n", bbd_msg.i);
00271   rcs_print ("d = %lf\n", bbd_msg.d);
00272   return 0;
00273 }
00274 
00275 int
00276 BBDWrite ()
00277 {
00278   rcs_print ("BBDWrite():\n");
00279   if (NULL == bbd_write)
00280     {
00281       rcs_print_error ("bbd_write is NULL.\n");
00282       return -1;
00283     }
00284 
00285 
00286 
00287   static int bbd_write_count = 0;
00288   bbd_write_count++;
00289   bbd_struct bbd_msg;
00290   bbd_msg.i = bbd_write_count;
00291   bbd_msg.c = bbd_write_count;
00292   bbd_msg.d = bbd_write_count;
00293 
00294   if (bbdWrite (bbd_write, &bbd_msg, BBD_PLAIN_WRITE, NO_WAIT) != OK)
00295     {
00296       return -1;
00297     }
00298 
00299   return 0;
00300 
00301 }

Generated on Sun Dec 2 15:56:50 2001 for rcslib by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001