#ifndef RAW2SAC_H
#define RAW2SAC_H

#include <stdint.h>

typedef struct {
  float dt;		/* RF time increment, sec     */
  float depmin;		/*    minimum amplitude       */
  float depmax;		/*    maximum amplitude       */
  float sens;		/*    amplitude scale factor  */
  float odelta;		/*    observed time inc       */
  
  float start_sec;	/* RD initial value, ampl.    */
  float end_sec;	/* RD final value, amplitude  */
  float o;		/*    event start, sec > 0    */
  float a;		/*    1st arrival time        */
  float internal1;	/*    internal use            */
  
  float t0;		/*    user-defined time pick  */
  float t1;		/*    user-defined time pick  */
  float t2;		/*    user-defined time pick  */
  float t3;		/*    user-defined time pick  */
  float t4;		/*    user-defined time pick  */
  
  float t5;		/*    user-defined time pick  */
  float t6;		/*    user-defined time pick  */
  float t7;		/*    user-defined time pick  */
  float t8;		/*    user-defined time pick  */
  float t9;		/*    user-defined time pick  */
  
  float f;		/*    event end, sec > 0      */
  float resp0;		/*    instrument respnse parm */
  float resp1;		/*    instrument respnse parm */
  float resp2;		/*    instrument respnse parm */
  float resp3;		/*    instrument respnse parm */
  
  float resp4;		/*    instrument respnse parm */
  float resp5;		/*    instrument respnse parm */
  float resp6;		/*    instrument respnse parm */
  float resp7;		/*    instrument respnse parm */
  float resp8;		/*    instrument respnse parm */
  
  float resp9;		/*    instrument respnse parm */
  float lat;		/*  T station latititude      */
  float lon;		/*  T station longitude       */
  float el;		/*  T station elevation, m    */
  float stdp;		/*  T station depth,delow surf, m */
  
  float evla;		/*    event latitude          */
  float evlo;		/*    event longitude         */
  float evel;		/*    event elevation         */
  float evdp;		/*    event depth             */
  float unused1;	/*    reserved for future use */
  
  float user0;		/*    available to user       */
  float user1;		/*    available to user       */
  float user2;		/*    available to user       */
  float user3;		/*    available to user       */
  float user4;		/*    available to user       */
  
  float user5;		/*    available to user       */
  float user6;		/*    available to user       */
  float user7;		/*    available to user       */
  float user8;		/*    available to user       */
  float user9;		/*    available to user       */
  
  float dist;		/*    stn-event distance, km  */
  float az;		/*    event-stn azimuth       */
  float baz;		/*    stn-event azimuth       */
  float gcarc;		/*    stn-event dist, degrees */
  float internal2;	/*    internal use            */
  
  float internal3;	/*    internal use            */
  float depmen;		/*    mean value, amplitude   */
  float cmpaz;		/*    station component azimuth */
  float cmpinc;		/*    station  component inclination */
  float xmin;		/*    min val of X spectra    */
  
  float xmax;		/*    max val of X spectre    */
  float ymin;		/*    min val of Y spectre    */
  float ymax;		/*    max val of Y spectre    */
  float adjtm;		/*    ??                      */
  float unused7;	/*    reserved for future use */
  
  float unused8;	/*    reserved for future use */
  float unused9;	/*    reserved for future use */
  float unused10;	/*    reserved for future use */
  float unused11;	/*    reserved for future use */
  float unused12;	/*    reserved for future use */
  
  uint32_t year;	/*  F zero time of file, yr   */
  uint32_t jj;		/*  F zero time of file, day  */
  uint32_t hh;		/*  F zero time of file, hr   */
  uint32_t mm;		/*  F zero time of file, min  */
  uint32_t ss;		/*  F zero time of file, sec  */
  
  uint32_t milli;	/*  F zero time of file, msec */
  uint32_t internal4;	/*    internal use            */
  uint32_t internal5;	/*    internal use            */
  uint32_t internal6;	/*    internal use            */
  uint32_t lNpt;	/* RF number of samples       */
  
  uint32_t internal7;	/*    internal use            */
  uint32_t internal8;	/*    internal use            */
  uint32_t unused13;	/*    reserved for future use */
  uint32_t unused14;	/*    reserved for future use */
  uint32_t unused15;	/*    reserved for future use */
  
  uint32_t iftype;	/* RA type of file            */
  uint32_t idep;	/*    type of amplitude       */
  uint32_t iztype;	/*    zero time equivalence   */
  uint32_t unused16;	/*    reserved for future use */
  uint32_t iinst;	/*    recording instrument    */
  
  uint32_t istreg;	/*    stn geographic region   */
  uint32_t ievreg;	/*    event geographic region */
  uint32_t ievtyp;	/*    event type              */
  uint32_t iqual;	/*    quality of data         */
  uint32_t isynth;	/*    synthetic data flag     */
  
  uint32_t unused17;	/*    reserved for future use */
  uint32_t unused18;	/*    reserved for future use */
  uint32_t unused19;	/*    reserved for future use */
  uint32_t unused20;	/*    reserved for future use */
  uint32_t unused21;	/*    reserved for future use */
  
  uint32_t unused22;	/*    reserved for future use */
  uint32_t unused23;	/*    reserved for future use */
  uint32_t unused24;	/*    reserved for future use */
  uint32_t unused25;	/*    reserved for future use */
  
  uint32_t unused26;	/*    reserved for future use */
  uint32_t leven;	/* RA data-evenly-spaced flag */
  uint32_t lpspol;	/*    station polarity flag   */
  uint32_t lovrok;	/*    overwrite permission    */
  uint32_t lcalda;	/*    calc distance, azimuth  */
  uint32_t unused27;	/*    reserved for future use */
  
  char staname[8];	/*  F station name            */
  char kevnm[16];	/*    event name              */
  
  char khole[8];	/*    man-made event name     */
  char ko[8];		/*    event origin time id    */
  char ka[8];		/*    1st arrival time ident  */
  
  char kt0[8];		/*    time pick 0 ident       */
  char kt1[8];		/*    time pick 1 ident       */
  char kt2[8];		/*    time pick 2 ident       */
  
  char kt3[8];		/*    time pick 3 ident       */
  char kt4[8];		/*    time pick 4 ident       */
  char kt5[8];		/*    time pick 5 ident       */
  
  char kt6[8];		/*    time pick 6 ident       */
  
  char kt7[8];		/*    time pick 7 ident       */
  char kt8[8];		/*    time pick 8 ident       */
  
  char kt9[8];		/*    time pick 9 ident       */
  char kf[8];		/*    end of event ident      */
  char kuser0[8];	/*    available to user       */
  
  char kuser1[8];	/*    available to user       */
  char kuser2[8];	/*    available to user       */
  char ax[8];		/*  F component name          */
  
  char knetwk[8];	/*    network name            */
  char kdatrd[8];	/*    date data read on a computer */
  char kinst[8];	/*    instrument name         */
} sac_header;

/* a XSAC structure containing all null values */

static sac_header sac_default = {
  -12345.0, -12345.0, -12345.0, -12345.0, -12345.0,
  -12345.0, -12345.0, -12345.0, -12345.0, -12345.0,
  -12345.0, -12345.0, -12345.0, -12345.0, -12345.0,
  -12345.0, -12345.0, -12345.0, -12345.0, -12345.0,
  -12345.0, -12345.0, -12345.0, -12345.0, -12345.0,
  -12345.0, -12345.0, -12345.0, -12345.0, -12345.0,
  -12345.0, -12345.0, -12345.0, -12345.0, -12345.0,
  -12345.0, -12345.0, -12345.0, -12345.0, -12345.0,
  -12345.0, -12345.0, -12345.0, -12345.0, -12345.0,
  -12345.0, -12345.0, -12345.0, -12345.0, -12345.0,
  -12345.0, -12345.0, -12345.0, -12345.0, -12345.0,
  -12345.0, -12345.0, -12345.0, -12345.0, -12345.0,
  -12345.0, -12345.0, -12345.0, -12345.0, -12345.0,
  -12345.0, -12345.0, -12345.0, -12345.0, -12345.0,
  -12345, -12345, -12345, -12345, -12345,
  -12345, -12345, -12345, -12345, -12345,
  -12345, -12345, -12345, -12345, -12345,
  -12345, -12345, -12345, -12345, -12345,
  -12345, -12345, -12345, -12345, -12345,
  -12345, -12345, -12345, -12345, -12345,
  -12345, -12345, -12345, -12345, -12345,
  -12345, -12345, -12345, -12345, -12345,
  { '3','2','1','-',0,0,'5','4' },
  { '3','2','1','-',0,0,'5','4',0,0,0,0,0,0,0,0 },
  { '3','2','1','-',0,0,'5','4' }, { '3','2','1','-',0,0,'5','4' },
  { '3','2','1','-',0,0,'5','4' }, { '3','2','1','-',0,0,'5','4' },
  { '3','2','1','-',0,0,'5','4' }, { '3','2','1','-',0,0,'5','4' },
  { '3','2','1','-',0,0,'5','4' }, { '3','2','1','-',0,0,'5','4' },
  { '3','2','1','-',0,0,'5','4' }, { '3','2','1','-',0,0,'5','4' },
  { '3','2','1','-',0,0,'5','4' }, { '3','2','1','-',0,0,'5','4' },
  { '3','2','1','-',0,0,'5','4' }, { '3','2','1','-',0,0,'5','4' },
  { '3','2','1','-',0,0,'5','4' }, { '3','2','1','-',0,0,'5','4' },
  { '3','2','1','-',0,0,'5','4' }, { '3','2','1','-',0,0,'5','4' },
  { '3','2','1','-',0,0,'5','4' }, { '3','2','1','-',0,0,'5','4' },
  { '3','2','1','-',0,0,'5','4' }
};



/* definitions of constants for XSAC enumerated data values */
/* undocumented == couldn't find a definition for it (denio, 07/15/88) */
#define IREAL   0             /* undocumented               */
#define ITIME   1             /* file: time series data     */
#define IRLIM   2             /* file: real&imag spectrum   */
#define IAMPH   3             /* file: ampl&phas spectrum   */
#define IXY     4             /* file: gen'l x vs y data    */
#define IUNKN   5             /* x data: unknown type       */
                              /* zero time: unknown         */
                              /* event type: unknown        */
#define IDISP   6             /* x data: displacement (nm)  */
#define IVEL    7             /* x data: velocity (nm/sec)  */
#define IACC    8             /* x data: accel (cm/sec/sec) */
#define IB      9             /* zero time: start of file   */
#define IDAY   10             /* zero time: 0000 of GMT day */
#define IO     11             /* zero time: event origin    */
#define IA     12             /* zero time: 1st arrival     */
#define IT0    13             /* zero time: user timepick 0 */
#define IT1    14             /* zero time: user timepick 1 */
#define IT2    15             /* zero time: user timepick 2 */
#define IT3    16             /* zero time: user timepick 3 */
#define IT4    17             /* zero time: user timepick 4 */
#define IT5    18             /* zero time: user timepick 5 */
#define IT6    19             /* zero time: user timepick 6 */
#define IT7    20             /* zero time: user timepick 7 */
#define IT8    21             /* zero time: user timepick 8 */
#define IT9    22             /* zero time: user timepick 9 */
#define IRADNV 23             /* undocumented               */
#define ITANNV 24             /* undocumented               */
#define IRADEV 25             /* undocumented               */
#define ITANEV 26             /* undocumented               */
#define INORTH 27             /* undocumented               */
#define IEAST  28             /* undocumented               */
#define IHORZA 29             /* undocumented               */
#define IDOWN  30             /* undocumented               */
#define IUP    31             /* undocumented               */
#define ILLLBB 32             /* undocumented               */
#define IWWSN1 33             /* undocumented               */
#define IWWSN2 34             /* undocumented               */
#define IHGLP  35             /* undocumented               */
#define ISRO   36             /* undocumented               */
#define INUCL  37             /* event type: nuclear shot   */
#define IPREN  38             /* event type: nuke pre-shot  */
#define IPOSTN 39             /* event type: nuke post-shot */
#define IQUAKE 40             /* event type: earthquake     */
#define IPREQ  41             /* event type: foreshock      */
#define IPOSTQ 42             /* event type: aftershock     */
#define ICHEM  43             /* event type: chemical expl  */
#define IOTHER 44             /* event type: other source   */
                              /* data quality: other problm */
#define IGOOD  45             /* data quality: good         */
#define IGLCH  46             /* data quality: has glitches */
#define IDROP  47             /* data quality: has dropouts */
#define ILOWSN 48             /* data quality: low s/n      */
#define IRLDTA 49             /* data is real data          */
#define IVOLTS 50             /* file: velocity (volts)     */
#define INIV51 51             /* undocumented               */
#define INIV52 52             /* undocumented               */
#define INIV53 53             /* undocumented               */
#define INIV54 54             /* undocumented               */
#define INIV55 55             /* undocumented               */
#define INIV56 56             /* undocumented               */
#define INIV57 57             /* undocumented               */
#define INIV58 58             /* undocumented               */
#define INIV59 59             /* undocumented               */
#define INIV60 60             /* undocumented               */

#endif
