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
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
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
00046 char line[2000];
00047 char *tok;
00048
00049 while ( fgets( line, 2000, f ) != NULL ) {
00050
00051
00052 tok = strtok( line, " " );
00053 if (tok[0] == '#') continue;
00054
00055
00056 (*sigs)[ievt].ns = atoi(tok);
00057
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 }