/* ---------------------------------------------------------------------- */ 
/* SASDefs.h                                                              */ 
/* ---------------------------------------------------------------------- */ 
/*                                                                        */ 
/* (c) Copyright 2003, 2007  EdgeTech,                                    */ 
/*                                                                        */ 
/* This file contains proprietary information, and trade secrets of       */ 
/* EdgeTech, and may not be disclosed or reproduced without the prior     */ 
/* written consent of EdgeTech.                                           */ 
/*                                                                        */ 
/* EdgeTech is not responsible for the consequences of the use or misuse  */ 
/* of this software, even if they result from defects in it.              */ 
/*                                                                        */ 
/* ---------------------------------------------------------------------- */ 
/*                                                                        */ 
/* SAS output data format description.                                    */ 
/*                                                                        */ 
/* ---------------------------------------------------------------------- */ 

#ifndef __SASDEFS_H__
#define __SASDEFS_H__


/* ---------------------------------------------------------------------- */ 

#pragma pack(push, enterSASDefs)
#pragma pack(4)


/* ---------------------------------------------------------------------- */ 
/* Each record of has a 152 byte header, the content of which is defined  */ 
/* below.  Unused fields should be set to 0                               */ 
/* ---------------------------------------------------------------------- */ 

typedef struct 
{
  /*   0 -   3 : range line counter                                       */ 
  int    rangeLineCounter; 

  /*   4 -   7 : year                                                     */ 
  int    year; 

  /*   8 -  11 : month,  1 - 12                                           */ 
  int    month; 

  /*  12 -  15 : day,    1 - 31                                           */ 
  int    day; 

  /*  16 -  19 : hour,   0 - 23                                           */ 
  int    hour; 

  /*  20 -  23 : minute, 0 - 59                                           */ 
  int    minute; 

  /*  24 -  27 : second, 0.0 - 59.999                                     */ 
  float  second; 

  /*  28 -  35 : latitude in degrees                                      */ 
  double latitude; 

  /*  36 -  43 : longitude in degrees                                     */ 
  double longitude; 

  /*  44 -  47 : heading in degrees                                       */ 
  float  heading; 

  /*  48 -  51 : pitch in degrees - bow up is positive                    */ 
  float  pitch; 

  /*  52 -  55 : roll in degrees  - port up is positive                   */ 
  float  roll; 

  /*  56 -  59 : speed over bottom in meters per second                   */ 
  float  speed; 

  /*  60 -  63 : depth in meters                                          */ 
  float  depth; 

  /*  64 -  67 : altitude in meters                                       */ 
  float  altitude; 

  /*  68 -  71 : sound speed in meters per second                         */ 
  float  waterSoundSpeed; 

  /*  72 -  75 : beam number  0 - #                                       */ 
  int    beamNumber;

  /*  76 -  79 : Data format                                              */ 
  /*   7 = 2 floats per sample  - stored as real(1), imag(1),             */ 
  /*   8 = 1 float  per sample  - envelope data                           */ 
  int    dataFormat;

  /*  80 -  83 : port data available  0 = No, all bits set = Yes          */ 
  int    portDataAvailable; 

  /*  84 -  87 : port carrier frequency in Hertz                          */ 
  int    portCarrierFrequency; 

  /*  88 -  91 : port waveform ID                                         */ 
  int    portWaveformID; 

  /*  92 -  95 : port long track sample size in meters                    */ 
  float  portLongTrackSize; 

  /*  96 -  99 : port long track resolution in meters                     */ 
  float  portLongTrackResolution; 

  /* 100 - 103 : port cross track sample size in meters                   */ 
  float  portCrossTrackSize; 

  /* 104 - 107 : port cross track resolution in meters                    */ 
  float  portCrossTrackResolution; 

  /* 108 - 111 : port starting range in meters                            */ 
  float  portStartRange; 

  /* 112 - 115 : port number of samples                                   */ 
  int    portSamples; 

  /* 116 - 119 : starboard data available  0 = No, all bits set = Yes     */ 
  int    starboardDataAvailable; 

  /* 120 - 123 : starboard carrier frequency in Hertz                     */ 
  int    starboardCarrierFrequency; 

  /* 124 - 127 : starboard waveform ID                                    */ 
  int    starboardWaveformID; 

  /* 128 - 131 : starboard long track sample size in meters               */ 
  float  starboardLongTrackSize; 

  /* 132 - 135 : starboard long track resolution in meters                */ 
  float  starboardLongTrackResolution; 

  /* 136 - 139 : starboard cross track sample size in meters              */ 
  float  starboardCrossTrackSize; 

  /* 140 - 143 : starboard cross track resolution in meters               */ 
  float  starboardCrossTrackResolution; 

  /* 144 - 147 : starboard starting range in meters                       */ 
  float  starboardStartRange; 

  /* 148 - 151 : starboard number of samples                              */ 
  int    starboardSamples; 

  /* -------------------------------------------------------------------- */ 
  /* Data area begins here                                                */ 
  /* -------------------------------------------------------------------- */ 
  /* Port data begins at byte 152, and has this.portSamples points in it. */ 
  /* Starboard data follows the port data and has this.starboardSamples   */ 
  /* points in it                                                         */ 
  /* -------------------------------------------------------------------- */ 

} SASDataType;


/* ---------------------------------------------------------------------- */ 

#pragma pack(pop, enterSASDefs)


/* ---------------------------------------------------------------------- */ 

#endif  /* end Not __SASDEFS_H__ */ 


/* ---------------------------------------------------------------------- */ 
/*                           end SASDefs.h                                */ 
/* ---------------------------------------------------------------------- */ 

