TSP: The Transport Sample Protocol



Main Page | Modules | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

bb_write.c

00001 
00002 #include <stdio.h>
00003 #include <malloc.h>
00004 #include <unistd.h>
00005 #include <stdlib.h>
00006 #include <assert.h>
00007 #include <string.h>
00008 
00009 #include <bb_core.h>
00010 
00011 int 
00012 main (int argc, char ** argv) {
00013 
00014   /* Définitions des variables */
00015   int erreur=0;
00016   void* sym_value;
00017   S_BB_DATADESC_T sym_data_desc;
00018   char*    array_name;
00019   int32_t  array_index; 
00020   S_BB_T*  mybb;
00021 
00022   if (argc<4) {
00023     fprintf(stderr,"%s : argument missing\n",argv[0]);
00024     fprintf(stderr,"Usage: %s <bbname> <symbol_name> <value>\n",argv[0]);
00025     exit(-1);
00026   }
00027   else {
00028     fprintf(stdout,"%s: Trying to write symbol <%s> on blackboard <%s> value <%s>...\n",
00029             argv[0],argv[2],argv[1],argv[3]);
00030     fflush(stdout);
00031   }
00032   
00033   /* Attachement BB */
00034   /******************/
00035   if (bb_attach(&mybb,argv[1]) != E_OK) {
00036     fprintf(stderr,"Cannot attach to blackboard <%s>!!\n",argv[1]);
00037     exit(-1);
00038   }
00039 
00040   /* do we want to write to an array var */
00041   array_name = strstr(argv[2],"[");
00042   if (array_name) {
00043     char* temp = "%d";
00044     char* temp2;
00045     temp2  = strdup(argv[2]);
00046     array_name  = strtok(temp2,"[");
00047     strncpy(sym_data_desc.name,array_name,VARNAME_MAX_SIZE);
00048     array_name = strtok(NULL,"]");
00049     sscanf(array_name,temp,&array_index);
00050     free(temp2);
00051   } else {
00052     array_index = 0;
00053     strncpy(sym_data_desc.name,argv[2],VARNAME_MAX_SIZE);  
00054   }
00055   /* 
00056    * Use low-level subscribe in order to discover the 
00057    * type of the variable
00058    */
00059   sym_value = bb_subscribe(mybb,&sym_data_desc);
00060 
00061   if (NULL==sym_value) {
00062     fprintf(stdout,"%s: symbol <%s> not found in BlackBoard <%s>\n",
00063             argv[0],
00064             sym_data_desc.name,
00065             argv[1]);
00066   } else {
00067     if (array_index>=sym_data_desc.dimension) {
00068       fprintf(stdout,"%s: symbol array index <%d> out of bound (max index of <%s> is <%d>)\n",
00069               argv[0],array_index,sym_data_desc.name,sym_data_desc.dimension-1);
00070     } else {
00071       bb_value_write(mybb,sym_data_desc,argv[3],array_index);
00072     }
00073   }        
00074   /* Detach from BB */
00075   /******************/
00076   bb_detach(&mybb);  
00077   
00078   return (erreur);
00079 }
Framework Home Page.

Beware !! TSP wave is coming...