Earthworm Release Notes V4.1

(January 20, 2000)
NEW MODULES:
***********

sac2hypo:  This program works only under Solaris. It reads the headers
   of all the SAC files in the current directory and creates a 
   Hypoinverse archive file. This archive file can be used to relocate 
   the event. This program was written some time ago by someone else 
   (I presume Lynn Dietz). It has now been made into an earthworm
   utility program.   LV 8/12/1999

tide2ew:  This program works only under NT. It listens to
   serial line communication from the pucks which collect tide
   data. It connects to a COM port (given the serial communication
   parameters from the config file) and asks each puck for its
   reading every WaitTime seconds. After NumSamples for an SCN
   have been collected, a new TYPE_TRACEBUF message is created
   and written to the OutRing stamped with the SCN code given
   in the configuration file.
   Besides creating earthworm messages, this module can write
   tide readings to the screen and to files. The format of the
   output files is taken from ATWC.  This program is part of the 
   ATWC contributed software.   LV 8/2/1999

fir: This module implements a general-purpose FIR filter for
   trace data. Low-pass, high-pass, multi-band-pass and notch filters
   can be specified using simple commands in the configuration file.
   Filter coefficients are computed using the Remez Exchange 
   algorithm to give an optimal equiripple filter. The filter
   zeroes are logged on startup. Using the "TestMode" command in
   the config file, the module will compute coefficients, log the
   zeroes and then quit. Uses many of the components in the revised
   decimate module.   PNL 10/27/1999 

wave_serverV/Tools: Three tools: inspect_tank, read_index and read_struct.
   These three tools are to help with problems in wave_serverV tank,
   index and structure files. These are primarily for development work.
   PNL, 1/12/2000

ring2sac: Writes continuous sac files given a list of Station, Component,
   Network names.  This software is contributed by University of Utah 
   Seismograph Station.  


MODIFICATIONS/BUG FIXES TO EXISTING MODULES:
*******************************************

compress_UA/decompress_UA:  Renamed compression/decompression 
   routines supplied by Boulder Real Time Technologies to 
   brtt_gencompress and brtt_genuncompress. By suggestion from 
   Kent Lindquist -- apparently the official releases of these
   routines are part of the Antelope software, so using their
   generic names causes compilation problems whenever Antelope
   libraries have to be linked in. LV 12/27/1999

trig2disk/waveman2disk:  Modified the sac putaway routine to 
   enable correct creation of SAC files on NT. Since there are
   (I think) no SAC tools for NT, the OutputFormat should be set
   to sparc. Care should be taken when transferring files between
   NT and Solaris (ASCII mode in ftp works best). LV 12/20/1999.
   Modified to correctly create PCSUDS format files under NT.

carlsubtrig:  Added the "MaxTrigMsgLen" command to set the size of the
   buffer used to write TYPE_TRIGLIST2K messages to.  This buffer is
   allocated at startup (previously, a minimal buffer was allocated
   on startup, then was realloc'd in 1024 byte increments as necessary).
   If a triglist message would overflow this buffer, carlsubtrig will
   stop writing to the buffer, but will continue to write the complete
   triglist message to its log. It will also send this error message
   to statmgr:  "incomplete triglist msg sent for eventid:%d".
   Also, if the event triggered enough subnets such that a wildcard
   would be added to the triglist message, the wildcard is now written
   at the beginning of the message instead of the end (just in case
   that big triglist message would overflow the buffer, the wildcard
   will always be included!).  LDD 8/6/1999

export_generic
export_scn    :  Fixed a memory leak in export.c.  Previously, each
   thread allocated its own working buffer(s).  But when export did a
   internal restart, it would kill the threads, never freeing
   the memory. The threads would be restarted, malloc another working
   buffer...  Enough internal restarts and export would suck up all
   available memory.  Changed so that all working buffers are allocated
   in the main thread, before any other threads are started.  All
   buffers are freed when the program exits.  LDD 9/7/1999  

decimate:  Major revision. Decimate is now a multi-stage filter-decimator.
   The filter coefficients are computed based on the decimation rate, using
   the Remez Exchange algorithm. Since each channel requires several buffers
   to be allocated at startup, channels must be explicitly listed in the
   config file (no wildcards.) Thus it didn't seem convenient to keep Lucky's
   cool rewrite rules: Now output SCNs get listed explicitly with the input
   SCNs. PNL 10/18/1999

read_arc.c: (part of libsrc/util) Corrected the reading for coda length (was reading 
   the raw coda; now reads the eqcoda-corrected coda) and added the reading of
   coda weight. Added codawt to Hpck structure in read_arc.h. PNL, 10/20/1999
     Added reading of preferred magnitude fields from the summary line.
   Added labelpref,Mpref,wtpref to the Hsum structure in read_arc.h. LDD 11/08/1999

wave_serverV: Removed "fix4_3.3" from the default target of the makefile. 
   No one should need this program any more; it was only for converting tank 
   structures from an old format to a new one provided by v3.3. 
   PNL, 10/28/1999

getmenu: Fixed bug that prevented hostname lookup from working on NT. The
   problem was that SocketSysInit() was not being called before the
   hostname lookup occurred. Now you can give getmenu a hostname or and
   IP address (followed by ":portnumber") on NT as well as Unix.
   PNL, 11/19/1999

export: It was such that if the connection to import broke while a
   message was being sent, that that message would be lost. Fix is
   to save the message until it was sent ok (as per socket return value),
   and re-send the message after closing and re-opening the connection.
   Alex 11/20/99

arc2trig: Added two optional parameters:
	 PrePickTime (default=15)
	 PostCodaTime (default=10)
   which specify how much data to save preceding the p-pick, and 
   following
   coda cutoff.
   Alex 11/24/99

statmgr: Changed logit message about "Descriptor file of statmgr not loaded".
   This error is also generated when the EW_INSTALLATION environment variable
   doesn't match instId in statmgr.desc. PNL, 11/24/99

heli_standalone: Changed GIF file names so they would be the same on local
   and (optional) remote machines, as well as in the HTML file. HTML file
   will now list separate GIFs when less than 24 hours is plotted on one
   GIF. Fixed bug that caused core-dumps when socket debugging was turned on.
   Added optional command to name the HTML file.  PNL, 11/29/99

carlstatrig: Added LTAtime as a configurable parameter, as requested by
   Tom Murray. Previously this was hardwired to 8 seconds. This is an
   optional parameter, defaults to 8 seconds. PNL, 1/10/00

hyp2000: New version grabbed from Fred Klein 1/11/00.
     Fixes a bug which had caused a core dump or crash with an error about
   writing to unit 5.  Symptom was known to occur on startup when a
   crustal velocity model file (CRH command) contained a blank line at 
   the end.  Now hyp2000 writes an error message an exits.
     Also fixes bugs that are related to shadow cards. Used to write Pmag
   information to summary shadow whether the mag was being calculated or
   not, and wrote Pmag info to phase shadows sometimes when not necessary.
     Also has a new command, FIL, which determines the format of the 
   input file set with the PHS command.  It discriminates between hypo71 
   phase, *.cod and *.arc files (with and without shadow cards, both old 
   and y2000 formats).  It also warns you if you are reading a pre-y2000
   file in y2000 mode, and vice versa.  It sets the correct formats with 
   the COP and CAR commands.  The FIL code also senses the 4 different 
   summary formats and tells you what the file is, but of course warns you 
   that you should not be trying to locate a summary file.  The FIL command
   should be useful interactively, but it is not necessary for real-time
   use.  LDD, 1/11/00

hyp2000_mgr: Edited makefiles to work with the newest version of 
   hyp2000 (new command in new source file).  LDD, 1/11/00

socket_ew_common.c (in libsrc/utils): accept_ew now sets the new socket
   to nonblocking mode as required for sockets used by socket_ew_common;
   previously it was assumed that this property was inherited from the
   original socket. Most functions now properly react to select() errors;
   previously they were ignored. Most function comments have been updated
   to be more meaningful. Fixed bug in accept_ew where it would close the
   old socket if no connection was accepted without the timeout interval.
   PNL, 1/12/2000

export: (scn and generic) Export no longer quits when SocketTimeoutLength
   is less than RcvAliveInt; now it sets SocketTimeoutLength to 1500 times
   RcvAliveInt and logs it. (RcvAliveInt is in seconds, SocketTimeoutLength
   is in milliseconds.) Removed some unneeded if's from binEscape() to 
   improve efficiency. Moved start of MessageStacker to after successful
   accept_ew call, to reduce number of lapped messages in queue. Removed
   flush of internal queue. Export now uses a timeout for the accept_ew
   call. The interval is the internal heartbeat interval, so statmgr doesn't
   complain when export isn't connected. If a connection is not made in 
   the timeout interval, export sends a complaint but otherwise keeps
   listening and beating its heart. When a connection is made, export
   sends a "connected" message only if it complained earlier. This adds
   two new error messages to the descriptor file. 
   When export has a problem sending or receiving, it kills the socket
   threads, closes and reopens the socket and tries another connection.
   The MessageStacker does not get killed in the recycling.
   Fixed a bug where BinSize was not being set to zero after a message
   was successfully sent. This bug resulted in one message being resent
   when the SocketSender restarted. PNL 1/13/2000

wave_serverV: Added optional parameter "ClientTimeout", used in
   serverThread. When no traffic is heard from a connected client in
   this timeout interval, the socket is closed and the serverThread exits.
   Previously, wave_serverV.d stated that this was the function of
   SocketTimeout, which it was not. Fixed bug in shutdown sequence
   where KillThread was being called with uninitialized values. Sometimes
   this would kill the main thread, aborting the shutdown sequence. This
   may have been the cause of Menlo's wave_serverV hanging on shutdown.
   Cleaned up settings of ServverThreadInfo.Status in server_thread.c
   and wave_serverV.h. Small change to index_util.c to add some detail
   to logit error entry in BuildLIndex(). Reformatted comments at head of
   wave_serverV to make them easier to read.  PNL, 1/12/2000

rcv_ew and vdl_ew:  Both modules have been updated to the newest version of 
   rcv and vdl from Dave Ketchum.  BB 1/16/2000


CHANGES TO CONFIGURATION FILES and DESCRIPTOR FILES:
**************************************************** 
carlsubtrig.d: Added "MaxTrigMsgLen nbytes" command to control the size
   of the output buffer.

carlstatrig.d:
   Added "LTAtime" command to set nominal time of LTA average. This is an
   optional parameter, defaults to 8 seconds.

carlsubtrig.desc:  Added a new error code for the case when the triglist
   message would overflow the output buffer:
    err: 23  nerr: 1  tsec: 0  page: 10  mail: 20
    text: "Incomplete triglist message sent."

adsend.desc: Added a new error code:
    err: 7  nerr: 1  tsec: 0  page: 0  mail: 10
    text: "Fewer samples were obtained than requested."

decimate.d and decimate.desc: Several new commands due to the extensive
    changes in the module.

heli_standalone: Added optional command to name the HTML file; default name
is "index.html". Added description of optional "Target" command to conf file.
This option was always available, but left out of the working config file.

export_*.desc: two new error messages to report slow connections.

wave_serverV.d: optional command ClientTimeout; corrected comments for
  SocketTimeout

KNOWN BUGS or DEFICIENCIES:
**************************
In Windows NT, the time resolution of sleep_ew() is about 16 msec (one clock
tick).  On Solaris, the resolution is about 10 msec.  This is a problem for 
ringtocoax, since packet delays need to be set to a few milliseconds.

Automatic restarts of adsend (using the "restartMe" line in the descriptor
file) can cause an NT system to hang. Therefore, you should never
use the autorestart feature with adsend, but you should bring down
the entire Earthworm system if adsend needs to be restarted.

carlsubtrig: Occasionally (once every few months in Menlo Park), the
event id gets reset to zero.  This smacks of a memory clobber, but we
haven't tracked it down yet. This has been observed in v4.0 carlsubtrig
on x86 Solaris. LDD 9/28/1999

threads functions: The KillThread function on WindowsNT and Solaris
terminate the thread without ensuring that no mutexes are held. If a thread
holds a mutex when it dies, no other thread can get that mutex. PNL 1/12/2000

The Solaris version of SendMail calls popen to invoke the Mail program.
If the mail program can't be found, Solaris prints the message:
               sh: /usr/ucb/Mail: not found
The SendMail function returns 0 (no error), instead of -1 (error), so the
calling program can't tell that an error occurred.