source: trunk/src/seismic_processing/rayloc_ew/rayloc_ew_config.c @ 7399

Revision 7399, 11.3 KB checked in by baker, 8 months ago (diff)

silence warning: using the result of an assignment as a condition without parentheses

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1/***************************************************************************
2 *  This code is a part of rayloc_ew / USGS EarthWorm module               *
3 *                                                                         *
4 *  It is written by ISTI (Instrumental Software Technologies, Inc.)       *
5 *          as a part of a contract with CERI USGS.                        *
6 * For support contact info@isti.com                                       *
7 *   Ilya Dricker (i.dricker@isti.com)                                     *
8 *                                                   Aug 2004              *
9 ***************************************************************************/
10
11/*
12 *   THIS FILE IS UNDER RCS - DO NOT MODIFY UNLESS YOU HAVE
13 *   CHECKED IT OUT USING THE COMMAND CHECKOUT.
14 *
15 *    $Id$
16 *
17 *    Revision history:
18 *     $Log$
19 *     Revision 1.1  2004/08/05 04:15:11  friberg
20 *     First commit of rayloc_ew in EW-CENTRAL CVS
21 *
22 *     Revision 1.7  2004/08/04 19:27:54  ilya
23 *     Towards version 1.0
24 *
25 *     Revision 1.6  2004/07/29 21:32:03  ilya
26 *     New logging; tests; fixes
27 *
28 *     Revision 1.5  2004/06/25 14:22:17  ilya
29 *     Working version: no output
30 *
31 *     Revision 1.4  2004/06/24 18:34:20  ilya
32 *     Fixed numbering
33 *
34 *     Revision 1.3  2004/06/24 16:47:05  ilya
35 *     Version compiles
36 *
37 *     Revision 1.2  2004/06/24 16:15:07  ilya
38 *     Integration phase started
39 *
40 *     Revision 1.1.1.1  2004/06/22 21:12:06  ilya
41 *     initial import into CVS
42 *
43 *
44 */
45
46#include <stdio.h>
47#include <string.h>
48
49#include "earthworm.h"
50#include "kom.h"
51#include "transport.h"
52#include "rayloc_ew.h"
53
54#define ncommand 7          /* Number of commands in the config file */
55
56
57 /***********************************************************************
58  *                              GetConfig()                            *
59  *             Processes command file using kom.c functions.           *
60  *               Returns -1 if any errors are encountered.             *
61  ***********************************************************************/
62
63int rayloc_ew_GetConfig( char *config_file, GPARM *Gparm,  RAYLOC_PROC_FLAGS *flags)
64{
65   char     init[ncommand];     /* Flags, one for each command */
66   int      nmiss;              /* Number of commands that were missed */
67   int      nfiles;
68   int      i;
69
70   /* Set flags defaults */
71   memset(flags, 0, sizeof(RAYLOC_PROC_FLAGS));
72   memset(Gparm, 0, sizeof(GPARM));
73   flags->fix_depth = 1;
74   flags->use_PKP = 1;
75   flags->use_depth_ph = 1;
76   flags->use_S_ph = 1;
77   flags->Dmax1 = 180;
78   flags->Dmax2 = 180;
79   flags->Dmax3 = 180;
80   flags->Dmax4 = 180;
81   flags->Dmax5 = 180;
82
83/* Set to zero one init flag for each required command
84   ***************************************************/
85   for ( i = 0; i < ncommand; i++ )
86      init[i] = 0;
87
88/* Open the main configuration file
89   ********************************/
90   nfiles = k_open( config_file );
91   if ( nfiles == 0 )
92   {
93      logit( "pt", "rayloc_ew: Error opening configuration file <%s>\n",
94               config_file );
95      return -1;
96   }
97
98/* Process all nested configuration files
99   **************************************/
100   while ( nfiles > 0 )          /* While there are config files open */
101   {
102      while ( k_rd() )           /* Read next line from active file  */
103      {
104         int  success;
105         char *com;
106         char *str;
107
108         com = k_str();          /* Get the first token from line */
109
110         if ( com == NULL )   continue;    /* Ignore blank lines */
111         if ( com[0] == '#' ) continue;    /* Ignore comments */
112
113/* Open another configuration file
114   *******************************/
115         if ( com[0] == '@' )
116         {
117            success = nfiles + 1;
118            nfiles  = k_open( &com[1] );
119            if ( nfiles != success )
120            {
121               logit( "pt", "pick_ew: Error opening command file <%s>.\n",
122                        &com[1] );
123               return -1;
124            }
125            continue;
126         }
127
128/* Read configuration parameters
129   *****************************/
130         else if ( k_its( "StaFile" ) )
131         {
132            str = k_str();
133            if ( str != NULL )
134           {
135              strcpy( Gparm->StaFile, str );
136              init[0] = 1;
137           }
138           else
139           {
140              logit( "pt", "rayloc_ew: Invalid station list name file <%s>. Exiting.\n", str );
141              return -1;
142           }
143         }
144
145         else if ( k_its( "WorkDir" ) )
146         {
147            str = k_str();
148            if ( str != NULL )
149            {
150               strcpy( Gparm->workDirName, str );
151               init[1] = 1;
152            }
153            else
154            {
155               logit( "pt", "rayloc_ew: Invalid work directory <%s>. Exiting.\n", str );
156               return -1;
157            }
158         }
159
160         else if ( k_its( "InRing" ) )
161         {
162            str = k_str();
163            if ( str != NULL )
164            {
165               if( (Gparm->InKey = GetKey(str)) == -1 )
166               {
167                 logit( "pt", "rayloc_ew: Invalid InRing name <%s>. Exiting.\n", str );
168                  return -1;
169               }
170            }
171            init[2] = 1;
172         }
173
174         else if ( k_its( "OutRing" ) )
175         {
176            str = k_str();
177            if ( str != NULL )
178            {
179               if ( (Gparm->OutKey = GetKey(str)) == -1 )
180               {
181                  logit( "pt", "rayloc_ew: Invalid OutRing name <%s>. Exiting.\n", str );
182                  return -1;
183               }
184            }
185            init[3] = 1;
186         }
187
188         else if ( k_its( "HeartbeatInt" ) )
189         {
190            Gparm->HeartbeatInt = k_int();
191            init[4] = 1;
192         }
193
194         else if ( k_its( "Debug" ) )
195         {
196            Gparm->Debug = k_int();
197            init[5] = 1;
198         }
199
200         else if ( k_its( "MyModId" ) )
201         {
202            str = k_str();
203            if ( str != NULL )
204            {
205               if ( GetModId(str, &Gparm->MyModId) == -1 )
206               {
207                  logit( "pt", "rayloc_ew: Invalid MyModId <%s>.\n", str );
208                  return -1;
209               }
210            }
211            init[6] = 1;
212         }
213
214         else if ( k_its( "hold_params" ) )
215            flags->hold_params = k_int();
216
217         else if ( k_its( "fix_depth" ) )
218            flags->fix_depth = k_int();
219
220         else if ( k_its( "use_PKP" ) )
221            flags->use_PKP = k_int();
222
223         else if ( k_its( "use_depth_ph" ) )
224            flags->use_depth_ph = k_int();
225
226         else if ( k_its( "use_S_ph" ) )
227            flags->use_S_ph = k_int();
228
229         else if ( k_its( "pick_weight_interval" ) )
230            flags->pick_weight_interval = k_int();
231
232         else if ( k_its( "Rmin" ) )
233            flags->Rmin = k_int();
234
235         else if ( k_its( "Rmax" ) )
236            flags->Rmax = k_int();
237
238         else if ( k_its( "D1" ) )
239            flags->D1 = k_int();
240
241         else if ( k_its( "Dmin1" ) )
242            flags->Dmin1 = k_int();
243
244         else if ( k_its( "Dmax1" ) )
245            flags->Dmax2 = k_int();
246
247         else if ( k_its( "D2" ) )
248            flags->D2 = k_int();
249
250         else if ( k_its( "Dmin2" ) )
251            flags->Dmin2 = k_int();
252
253         else if ( k_its( "Dmax2" ) )
254            flags->Dmax2 = k_int();
255
256         else if ( k_its( "D3" ) )
257            flags->D3 = k_int();
258
259         else if ( k_its( "Dmin3" ) )
260            flags->Dmin3 = k_int();
261
262         else if ( k_its( "Dmax3" ) )
263            flags->Dmax3 = k_int();
264
265         else if ( k_its( "D4" ) )
266            flags->D4 = k_int();
267
268         else if ( k_its( "Dmin4" ) )
269            flags->Dmin4 = k_int();
270
271         else if ( k_its( "Dmax4" ) )
272            flags->Dmax4 = k_int();
273
274         else if ( k_its( "D5" ) )
275            flags->D5 = k_int();
276
277         else if ( k_its( "Dmin5" ) )
278            flags->Dmin5 = k_int();
279
280         else if ( k_its( "Dmax5" ) )
281            flags->Dmax5 = k_int();
282
283/* An unknown parameter was encountered
284   ************************************/
285         else
286         {
287            logit( "pt", "rayloc_ew: <%s> unknown parameter in <%s>\n",
288                    com, config_file );
289            continue;
290         }
291
292/* See if there were any errors processing the command
293   ***************************************************/
294         if ( k_err() )
295         {
296            logit( "pt", "rayloc_ew: Bad <%s> command in <%s>.\n", com,
297                     config_file );
298            return -1;
299         }
300      }
301      nfiles = k_close();
302   }
303
304/* After all files are closed, check flags for missed commands
305   ***********************************************************/
306   nmiss = 0;
307   for ( i = 0; i < ncommand; i++ )
308      if ( !init[i] )
309         nmiss++;
310
311   if ( nmiss > 0 )
312   {
313      logit( "pt", "rayloc_ew: ERROR, no " );
314      if ( !init[0] ) logit( "pt", "<InRing> " );
315      if ( !init[1] ) logit( "pt", "<OutRing> " );
316      if ( !init[2] ) logit( "pt", "<HeartbeatInt> " );
317      if ( !init[3] ) logit( "pt", "<Debug> " );
318      if ( !init[4] ) logit( "pt", "<MyModId> " );
319      logit( "pt", "command(s) in <%s>. Exiting.\n", config_file );
320      return -1;
321   }
322   return 0;
323}
324
325
326 /***********************************************************************
327  *                              LogConfig()                            *
328  *                                                                     *
329  *                   Log the configuration parameters                  *
330  ***********************************************************************/
331
332void rayloc_ew_LogConfig( GPARM *Gparm )
333{
334   logit( "", "\n" );
335   logit( "pt", "InKey:           %6ld\n",  Gparm->InKey );
336   logit( "pt", "OutKey:          %6ld\n",  Gparm->OutKey );
337   logit( "pt", "HeartbeatInt:    %6d\n",   Gparm->HeartbeatInt );
338   logit( "pt", "MyModId:         %6u\n\n", Gparm->MyModId );
339   return;
340}
341
342      /*******************************************************
343       *                      GetEwh()                       *
344       *                                                     *
345       *      Get parameters from the earthworm.h file.      *
346       *******************************************************/
347
348int rayloc_ew_GetEwh( EWH *Ewh )
349{
350   if ( GetLocalInst( &Ewh->MyInstId ) != 0 )
351   {
352      fprintf( stderr, "pick_ew: Error getting MyInstId.\n" );
353      return -1;
354   }
355   if ( GetInst( "INST_WILDCARD", &Ewh->GetThisInstId ) != 0 )
356   {
357      fprintf( stderr, "pick_ew: Error getting GetThisInstId.\n" );
358      return -2;
359   }
360   if ( GetModId( "MOD_WILDCARD", &Ewh->GetThisModId ) != 0 )
361   {
362      fprintf( stderr, "pick_ew: Error getting GetThisModId.\n" );
363      return -3;
364   }
365   if ( GetType( "TYPE_HEARTBEAT", &Ewh->TypeHeartBeat ) != 0 )
366   {
367      fprintf( stderr, "pick_ew: Error getting TypeHeartbeat.\n" );
368      return -4;
369   }
370   if ( GetType( "TYPE_ERROR", &Ewh->TypeError ) != 0 )
371   {
372      fprintf( stderr, "pick_ew: Error getting TypeError.\n" );
373      return -5;
374   }
375   if ( GetType( "TYPE_PICK2K", &Ewh->TypePick2k ) != 0 )
376   {
377      fprintf( stderr, "pick_ew: Error getting TypePick2k.\n" );
378      return -6;
379   }
380   if ( GetType( "TYPE_CODA2K", &Ewh->TypeCoda2k ) != 0 )
381   {
382      fprintf( stderr, "pick_ew: Error getting TypeCoda2k.\n" );
383      return -7;
384   }
385   if ( GetType( "TYPE_TRACEBUF", &Ewh->TypeWaveform ) != 0 )
386   {
387      fprintf( stderr, "pick_ew: Error getting TYPE_TRACEBUF.\n" );
388      return -8;
389   }
390   return 0;
391}
Note: See TracBrowser for help on using the repository browser.