bpminterface/load_signals.c

Go to the documentation of this file.
00001 
00006 #include <bpm/bpm_interface.h>
00007 #include <bpm/bpm_messages.h>
00008 #include <bpm/bpm_version.h>
00009 
00010 int load_signals( char *fname, bpmsignal_t **sigs ) {
00011 
00012   if ( ! fname  || ! sigs ) {
00013     bpm_error( "Invalid pointer in load_signals(...)",
00014                __FILE__, __LINE__ );
00015     return BPM_FAILURE;
00016   }
00017 
00018   /*--------------------------------------------------------------------------
00019     Loop over the events and bpms and load the waveforms
00020     --------------------------------------------------------------------------
00021   */
00022   
00023   int ibpm, ievt = 0, s;
00024 
00025   FILE *f = fopen( fname, "r" );
00026   if ( !f ) {
00027     char buf[255];
00028     sprintf(buf, "Unable to open file \"%s\" for reading in load_signals(...)", fname);
00029     bpm_error( buf, __FILE__, __LINE__ );
00030     return BPM_FAILURE;
00031   }
00032 
00033   // Header first - abuse get_header a little
00034   double ver;
00035   int num_evts;
00036   get_header( f, &ver, &num_evts );
00037 
00038   if (ver != BPM_VERSION_VAL) {
00039     bpm_warning("Incorrect version number in load_signals(...)", 
00040                 __FILE__, __LINE__ );
00041   }
00042 
00043   *sigs = (bpmsignal_t*) calloc( num_evts, sizeof(bpmsignal_t) );
00044 
00045   // Now load in the events  
00046   char line[2000];
00047   char *tok;
00048 
00049   while ( fgets( line, 2000, f ) != NULL ) {
00050 
00051     // Check for comments
00052     tok = strtok( line, " " );
00053     if (tok[0] == '#') continue;
00054 
00055     // Assume this is an event - first number is ns
00056     (*sigs)[ievt].ns = atoi(tok);
00057     //    printf("%d %d\n", ievt, (*sigs)[ievt].ns);
00058     (*sigs)[ievt].wf = (int*) calloc( (*sigs)[ievt].ns, sizeof(int) );
00059 
00060     for (s = 0; s < (*sigs)[ievt].ns; s++) {
00061       tok = strtok( NULL, " " );
00062       (*sigs)[ievt].wf[s] = atoi(tok);
00063     }
00064 
00065     ievt++;
00066   }
00067 
00068   fclose(f);
00069   return BPM_SUCCESS;
00070 }

Generated on Thu Jan 10 10:18:04 2008 for libbpm by  doxygen 1.5.1