/////////////////////////////////////////////////////////////////////////////////
//
// PURPOSE:  DropWeight Log Class.
// AUTHOR:   Rob McEwen.
// DATE:     01/3/9
// COMMENTS: 
//
////////////////////////////////////////////////////////////////////////////////
//

#ifndef TERRAINAIDLOG_H
#define TERRAINAIDLOG_H

#define TerrainAidLogName "TerrainAid"

#include "DataLogWriter.h"
#include "IntegerData.h"
#include "CharData.h"
#include "DoubleData.h"
#include "TimeTag.h"

class TerrainAid;

class TerrainAidLog: public DataLogWriter {

public:

  ///////////////////////////////////////////////////////////////////
  // Constructor
  // [input] fileFormat: Specifies either DataLog::AsciiFormat or 
  //         DataLog::BinaryFormat.
  TerrainAidLog(TerrainAid *terrainAid, 
		     DataLog::FileFormat fileFormat);

  ~TerrainAidLog();

protected:
  TerrainAid *_terrainAid;
  DoubleData *_navE, *_navN, *_depth, *_roll, *_pitch, *_yaw;
  DoubleData *_beam[4], *_dvlVelocity[3], *_omega[3];
  DoubleData *_mleN, *_mleE, *_mleZ,  *_mlePhi,  *_mleTheta, *_mlePsi, *_mleVarN, *_mleVarE, *_mleVarNE, *_mleVarZ, *_mleTime;
  DoubleData *_mmseN, *_mmseE, *_mmseZ, *_mmsePhi, *_mmseTheta, *_mmsePsi;
  DoubleData *_mmseVarN, *_mmseVarE, *_mmseVarNE, *_mmseVarZ, *_mmseVarPhi, *_mmseVarTheta, *_mmseVarPsi, *_mmseTime;
  IntegerData *_navTimeS, *_navTimeN, *_dvlTimeS, *_dvlTimeN, *_dvlStatus[4];
  IntegerData *_dvlValid, *_gpsValid, *_bottomLock;
  IntegerData *_numReinits, *_filterState;
  DoubleData *_navTime, *_navTimeInit, *_dvlTime; 

  char strName[64];


  ///////////////////////////////////////////////////////////////////
  // Set values in record array elements. This virtual method is called
  // by DataLogWriter::write()
  virtual void setFields();
};

#endif
