Changeset 7932


Ignore:
Timestamp:
03/14/19 15:59:44 (9 days ago)
Author:
chad
Message:

ew2ringserver: add new default data encoding that tries Steim-2 and falls back to Steim-1

Location:
trunk/src/data_exchange/ew2ringserver
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/data_exchange/ew2ringserver/ew2ringserver.c

    r7787 r7932  
    3939 
    4040#define PACKAGE "ew2ringserver" 
    41 #define PROGRAM_VERSION "2.1 2019-01-25" 
     41#define PROGRAM_VERSION "2.2 2019-03-14 DEVELOPMENT" 
    4242 
    4343static thr_ret MessageStacker (void *); /* Read messages and add to queue */ 
     
    122122static unsigned char TypeTracebuf2; 
    123123 
     124/* A non-official data encoding for "Steim-2 then Steim1" logic */ 
     125#define DYNAMIC_STEIM21 -11 
     126 
    124127/* Error messages used by export */ 
    125128#define  ERR_MISSMSG     0     /* message missed in transport ring        */ 
     
    133136static int flushlatency = 300;     /* Flush data buffers if not updated for latency in seconds */ 
    134137static int reconnectinterval = 10; /* Interval to wait between reconnection attempts in seconds */ 
    135 static int int32encoding = DE_STEIM2; /* Interval to wait between reconnection attempts in seconds */ 
     138static int int32encoding = DYNAMIC_STEIM21; /* Data sample encoding for 32-bit integer data */ 
    136139 
    137140static char *rsaddr    = 0;        /* DataLink/ringserver receiver address in IP:port format */ 
     
    309312          MyLastBeat = now; 
    310313        } 
    311       /* Check if idle data streams need flusing */ 
     314      /* Check if idle data streams need flushing */ 
    312315      if ( difftime(now,MyLastFlush) > (double)flushlatency ) 
    313316        { 
     
    678681                  else if ( ! strcmp (str, "STEIM2") ) 
    679682                    int32encoding = DE_STEIM2; 
     683                  else if ( ! strcmp (str, "STEIM21") ) 
     684                    int32encoding = DYNAMIC_STEIM21; 
    680685                  else if ( ! strcmp (str, "INT32") ) 
    681686                    int32encoding = DE_INT32; 
     
    10791084    return; 
    10801085 
    1081   /* Parse Mini-SEED header */ 
     1086  /* Parse miniSEED header */ 
    10821087  if ( (rv = msr_unpack (record, reclen, &msr, 0, 0)) != MS_NOERROR ) 
    10831088    { 
     
    11951200      strcpy (mstemplate->channel, mst->channel); 
    11961201 
     1202      /* Try Steim-2 first if using dynamic encoding, Steim-2 falling back to Steim-1 */ 
     1203      if (encoding == DYNAMIC_STEIM21) 
     1204        encoding = DE_STEIM2; 
     1205 
    11971206      trpackedrecords = mst_pack (mst, sendrecord, handlerdata, 512, 
    11981207                                  encoding, 1, NULL, flushflag, 
    11991208                                  0, mstemplate); 
     1209 
     1210      /* Retry with Steim-1 if failed and using dynamic encoding, Steim-2 falling back to Steim-1 */ 
     1211      if ( trpackedrecords == -1 && 
     1212           encoding == DE_STEIM2 && 
     1213           int32encoding == DYNAMIC_STEIM21) 
     1214      { 
     1215        trpackedrecords = mst_pack (mst, sendrecord, handlerdata, 512, 
     1216                                    DE_STEIM1, 1, NULL, flushflag, 
     1217                                    0, mstemplate); 
     1218      } 
    12001219 
    12011220      if ( trpackedrecords == -1 ) 
     
    12341253              strcpy (mstemplate->channel, mst->channel); 
    12351254 
     1255              /* Try Steim-2 first if using dynamic encoding, Steim-2 falling back to Steim-1 */ 
     1256              if (encoding == DYNAMIC_STEIM21) 
     1257                encoding = DE_STEIM2; 
     1258 
    12361259              trpackedrecords = mst_pack (mst, sendrecord, handlerdata, 512, 
    12371260                                          encoding, 1, NULL, flushflag, 
    12381261                                          0, mstemplate); 
     1262 
     1263              /* Retry with Steim-1 if failed and using dynamic encoding, Steim-2 falling back to Steim-1 */ 
     1264              if ( trpackedrecords == -1 && 
     1265                   encoding == DE_STEIM2 && 
     1266                   int32encoding == DYNAMIC_STEIM21) 
     1267              { 
     1268                trpackedrecords = mst_pack (mst, sendrecord, handlerdata, 512, 
     1269                                            DE_STEIM1, 1, NULL, flushflag, 
     1270                                            0, mstemplate); 
     1271              } 
    12391272 
    12401273              if ( trpackedrecords == -1 ) 
  • trunk/src/data_exchange/ew2ringserver/ew2ringserver.d

    r5984 r7932  
    99 HeartBeatInt   30                  # EW internal heartbeat interval (sec) 
    1010 LogFile        1                   # If 0, don't write logfile; if 1, do 
    11                                     # if 2, write to module log but not to  
     11                                    # if 2, write to module log but not to 
    1212                                    # stderr/stdout 
    1313# 
     
    1717#GetMsgLogo    INST_WILDCARD   MOD_WILDCARD    TYPE_MSEED 
    1818# For TYPE_MSEED the miniSEED message must be 512-byte records, otherwise ignored. 
    19   
     19 
    2020 MaxMsgSize     4096          # maximum size (bytes) for input/output msgs 
    2121 QueueSize      1000          # max# messages in internal circular msg buffer 
     
    2727#FlushLatency 300             # flush any buffered data streams idle for this many seconds 
    2828#ReconnectInterval 10         # reconnect to ringserver at this interval in seconds 
    29 #Int32Encoding STEIM2         # specify miniSEED encoding for 32-bit integers, default STEIM2 
    30                               #   possible values are STEIM2, STEIM1 or INT32 (no compression) 
     29#Int32Encoding STEIM21        # specify miniSEED encoding for 32-bit integers, default STEIM21 
     30                              #   possible values are STEIM21, STEIM2, STEIM1 or INT32 (no compression) 
     31                              #   The default STEIM21 is means dyanmic encoding, it first tries Steim-2 
     32                              #   and if that fails tries Steim-1.  This is useful in scenarios where 
     33                              #   the time series includes large signals, with > 30-bit differences, 
     34                              #   cannot, easily, be represented in Steim-2. 
    3135 
    3236# List of station/channel/network/loc codes to process. 
Note: See TracChangeset for help on using the changeset viewer.