Changeset 1391


Ignore:
Timestamp:
04/13/04 18:57:32 (14 years ago)
Author:
dietz
Message:

modified to work with TYPE_TRACEBUF2 and TYPE_TRACE2_COMP_UA msgs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/diagnostic_tools/sniffwave/sniffwave.c

    r1288 r1391  
    88 *    Revision history: 
    99 *     $Log$ 
     10 *     Revision 1.11  2004/04/13 22:57:32  dietz 
     11 *     modified to work with TYPE_TRACEBUF2 and TYPE_TRACE2_COMP_UA msgs 
     12 * 
    1013 *     Revision 1.10  2003/10/31 17:20:43  dietz 
    1114 *     Will now sniff both TYPE_TRACEBUF and TYPE_TRACE_COMP_UA msg headers. 
     
    5760   *                                                               * 
    5861   *                                                               * 
    59    * Usage: sniffwave  <Ring> <Sta> <Comp> <Net> <Data y/n>        * 
     62   * Usage: sniffwave  <Ring> <Sta> <Comp> <Net> <Loc> <Data y/n>  * 
    6063   *                                                               * 
    6164   *****************************************************************/ 
     
    7174#include <earthworm.h> 
    7275 
    73 main( int argc, char *argv[] ) 
     76#define NLOGO 4 
     77 
     78int IsWild( char *str ) 
    7479{ 
    75    SHM_INFO region; 
    76    long     RingKey;         /* Key to the transport ring to read from */ 
    77    MSG_LOGO getlogo[2], logo; 
    78    long     gotsize; 
    79    char     msg[MAX_TRACEBUF_SIZ]; 
    80    char    *getSta, *getComp, *getNet, *inRing; 
    81    char     wildSta, wildComp, wildNet; 
    82    unsigned char Type_Tracebuf; 
    83    short   *short_data; 
    84    long    *long_data; 
    85    TRACE_HEADER *trh; 
    86    char     stime[256]; 
    87    char     etime[256]; 
    88    int      dataflag; 
    89    int      i; 
    90    int      rc; 
     80  if( (strcmp(str,"wild")==0)  ) return 1; 
     81  if( (strcmp(str,"WILD")==0)  ) return 1; 
     82  if( (strcmp(str,"*")   ==0)  ) return 1; 
     83  return 0; 
     84} 
     85 
     86int main( int argc, char **argv ) 
     87{ 
     88   SHM_INFO        region; 
     89   long            RingKey;         /* Key to the transport ring to read from */ 
     90   MSG_LOGO        getlogo[NLOGO], logo; 
     91   long            gotsize; 
     92   char            msg[MAX_TRACEBUF_SIZ]; 
     93   char           *getSta, *getComp, *getNet, *getLoc, *inRing; 
     94   char            wildSta, wildComp, wildNet, wildLoc; 
     95   unsigned char   Type_TraceBuf,Type_TraceBuf2; 
     96   unsigned char   Type_TraceComp, Type_TraceComp2; 
     97   unsigned char   InstWildcard, ModWildcard; 
     98   short          *short_data; 
     99   long           *long_data; 
     100   TRACE2_HEADER  *trh; 
     101   char            stime[256]; 
     102   char            etime[256]; 
     103   int             dataflag; 
     104   int             i; 
     105   int             rc; 
    91106 
    92107  /* Initialize pointers 
    93108  **********************/ 
    94   trh  = (TRACE_HEADER *) msg; 
    95   long_data  =  (long *)( msg + sizeof(TRACE_HEADER) );  
    96   short_data = (short *)( msg + sizeof(TRACE_HEADER) ); 
     109  trh  = (TRACE2_HEADER *) msg; 
     110  long_data  =  (long *)( msg + sizeof(TRACE2_HEADER) );  
     111  short_data = (short *)( msg + sizeof(TRACE2_HEADER) ); 
    97112 
    98113  /* Check command line argument  
    99114  *****************************/ 
    100   if ( argc != 6 ) 
    101   { 
    102      fprintf(stderr,"Usage: %s <ring name> <station> <component> <network> <data flag y/n>\n", argv[0]); 
     115  if ( argc != 7 ) 
     116  { 
     117     fprintf(stderr,"Usage:   %s <ring name> <station> <component> <network> <loc> <data flag y/n>\n", argv[0]); 
     118     fprintf(stderr,"Example: %s WAVE_RING PHOB wild NC wild n\n", argv[0] ); 
    103119     exit( 1 ); 
    104120  } 
    105   inRing = argv[1]; 
    106   getSta = argv[2]; 
     121  inRing  = argv[1]; 
     122  getSta  = argv[2]; 
    107123  getComp = argv[3]; 
    108   getNet = argv[4]; 
    109  
    110   wildSta = wildComp = wildNet = 0; 
    111   if( (strcmp(getSta,"wild")==0)  ) wildSta = 1; 
    112   if( (strcmp(getSta,"WILD")==0)  ) wildSta = 1; 
    113   if( (strcmp(getSta,"*")   ==0)  ) wildSta = 1; 
    114  
    115   if( (strcmp(getComp,"wild")==0) ) wildComp = 1; 
    116   if( (strcmp(getComp,"WILD")==0) ) wildComp = 1; 
    117   if( (strcmp(getComp,"*")   ==0) ) wildComp = 1; 
    118  
    119   if( (strcmp(getNet,"wild")==0)  ) wildNet = 1; 
    120   if( (strcmp(getNet,"WILD")==0)  ) wildNet = 1; 
    121   if( (strcmp(getNet,"*")   ==0)  ) wildNet = 1; 
    122  
    123   if(strcmp (argv[5], "y") == 0) 
     124  getNet  = argv[4]; 
     125  getLoc  = argv[5]; 
     126 
     127  wildSta  = IsWild( getSta  ); 
     128  wildComp = IsWild( getComp ); 
     129  wildNet  = IsWild( getNet  ); 
     130  wildLoc  = IsWild( getLoc  ); 
     131 
     132  if(strcmp (argv[6], "y") == 0) 
    124133     dataflag = 1; 
    125   else if(strcmp (argv[5], "n") == 0) 
     134  else if(strcmp (argv[6], "n") == 0) 
    126135     dataflag = 0; 
    127136  else 
     
    131140  } 
    132141 
    133   fprintf(stdout, "Sniffing %s for %s.%s.%s\n",  
    134           inRing, getSta, getComp, getNet); 
     142  fprintf(stdout, "Sniffing %s for %s.%s.%s.%s\n",  
     143          inRing, getSta, getComp, getNet, getLoc); 
    135144   
    136145  /* Open log file 
     
    149158  /* Specify logos to get 
    150159  ***********************/ 
    151   GetType(  "TYPE_TRACEBUF", &Type_Tracebuf     ); 
    152   GetType(  "TYPE_TRACEBUF", &getlogo[0].type   ); 
    153   GetModId( "MOD_WILDCARD",  &getlogo[0].mod    ); 
    154   GetInst(  "INST_WILDCARD", &getlogo[0].instid ); 
    155  
    156   GetType(  "TYPE_TRACE_COMP_UA", &getlogo[1].type   ); 
    157   GetModId( "MOD_WILDCARD",       &getlogo[1].mod    ); 
    158   GetInst(  "INST_WILDCARD",      &getlogo[1].instid ); 
     160  if ( GetType( "TYPE_TRACEBUF", &Type_TraceBuf ) != 0 ) {   
     161     logit("e","%s: Invalid message type <TYPE_TRACEBUF>!\n", argv[0] ); 
     162     exit( -1 ); 
     163  } 
     164  if ( GetType( "TYPE_TRACEBUF2", &Type_TraceBuf2 ) != 0 ) {   
     165     logit("e","%s: Invalid message type <TYPE_TRACEBUF2>!\n", argv[0] ); 
     166     exit( -1 ); 
     167  } 
     168  if ( GetType( "TYPE_TRACE_COMP_UA", &Type_TraceComp ) != 0 ) {   
     169     logit("e","%s: Invalid message type <TYPE_TRACE_COMP_UA>!\n", argv[0] ); 
     170     exit( -1 ); 
     171  } 
     172  if ( GetType( "TYPE_TRACE2_COMP_UA", &Type_TraceComp2 ) != 0 ) {   
     173     logit("e","%s: Invalid message type <TYPE_TRACE2_COMP_UA>!\n", argv[0] ); 
     174     exit( -1 ); 
     175  } 
     176  if ( GetModId( "MOD_WILDCARD", &ModWildcard ) != 0 ) {   
     177     logit("e","%s: Invalid moduleid <MOD_WILDCARD>!\n", argv[0] ); 
     178     exit( -1 ); 
     179  } 
     180  if ( GetInst( "INST_WILDCARD", &InstWildcard ) != 0 ) {   
     181     logit("e","%s: Invalid instid <INST_WILDCARD>!\n", argv[0] ); 
     182     exit( -1 ); 
     183  }  
     184 
     185  for( i=0; i<NLOGO; i++ ) { 
     186      getlogo[i].instid = InstWildcard; 
     187      getlogo[i].mod    = ModWildcard; 
     188  } 
     189  getlogo[0].type = Type_TraceBuf2; 
     190  getlogo[1].type = Type_TraceComp2; 
     191  getlogo[2].type = Type_TraceBuf; 
     192  getlogo[3].type = Type_TraceComp; 
    159193 
    160194  /* Flush the ring 
    161195  *****************/ 
    162   while ( tport_getmsg( &region, getlogo, (short)2, &logo, &gotsize, 
     196  while ( tport_getmsg( &region, getlogo, NLOGO, &logo, &gotsize, 
    163197                        (char *)&msg, MAX_TRACEBUF_SIZ ) != GET_NONE ); 
    164198  logit( "et", "sniffwave: inRing flushed.\n"); 
     
    166200  while ( tport_getflag( &region ) != TERMINATE ) 
    167201  { 
    168     rc = tport_getmsg( &region, getlogo, (short)2, 
     202    rc = tport_getmsg( &region, getlogo, NLOGO, 
    169203                       &logo, &gotsize, msg, MAX_TRACEBUF_SIZ ); 
    170204 
     
    194228      logit( "et", "sniffwave: Missed messages\n"); 
    195229 
    196     /* Check SCN of the retrieved message */ 
     230    /* Check SCNL of the retrieved message */ 
    197231         
    198232    if ( (wildSta  || (strcmp(getSta,trh->sta)  ==0)) && 
    199233         (wildComp || (strcmp(getComp,trh->chan)==0)) && 
    200          (wildNet  || (strcmp(getNet,trh->net)  ==0))  )  
     234         (wildNet  || (strcmp(getNet,trh->net)  ==0)) &&  
     235         (wildLoc  || (strcmp(getLoc,trh->loc)  ==0)   
     236                   || logo.type == Type_TraceBuf   
     237                   || logo.type == Type_TraceComp   )    )  
    201238    { 
    202       WaveMsgMakeLocal( trh ); 
     239      WaveMsg2MakeLocal( trh ); 
    203240 
    204241      datestr23 (trh->starttime, stime, 256); 
    205       datestr23 (trh->endtime, etime, 256); 
    206  
    207       fprintf( stdout, "%s.%s.%s %d %s %d %.1f %s (%.6f) %s(%.6f) i%d m%d len%d\n", 
    208                trh->sta, trh->chan, trh->net, trh->pinno, trh->datatype,  
    209                trh->nsamp, trh->samprate, 
     242      datestr23 (trh->endtime,   etime, 256); 
     243 
     244      if( logo.type == Type_TraceBuf2  ||  
     245          logo.type == Type_TraceComp2    ) { 
     246          fprintf( stdout, "%s.%s.%s.%s ", 
     247                   trh->sta, trh->chan, trh->net, trh->loc ); 
     248      } else { 
     249          fprintf( stdout, "%s.%s.%s ", 
     250                   trh->sta, trh->chan, trh->net ); 
     251      } 
     252      fprintf( stdout, "%d %s %d %.1f %s (%.3f) %s (%.3f) i%d m%d t%d len%d\n", 
     253               trh->pinno, trh->datatype, trh->nsamp, trh->samprate, 
    210254               stime, trh->starttime, 
    211255               etime, trh->endtime, 
    212                (int)logo.instid, (int)logo.mod, gotsize ); 
     256               (int)logo.instid, (int)logo.mod, (int)logo.type, gotsize ); 
    213257 
    214258      if (dataflag == 1) 
    215259      { 
    216         if( logo.type == Type_Tracebuf )  
     260        if( logo.type == Type_TraceBuf2 || 
     261            logo.type == Type_TraceBuf     )  
    217262        { 
    218263          if ( (strcmp (trh->datatype, "s2")==0) ||  
     
    241286        fprintf (stdout, "\n"); 
    242287        fflush (stdout); 
    243        
    244288      } 
    245289  
     
    249293  exit (0); 
    250294} 
     295 
Note: See TracChangeset for help on using the changeset viewer.