/////////////////////////////////////////////////////////////////////////////////
//
// PURPOSE:  DropWeight Log Class.
// AUTHOR:   Rob McEwen.
// DATE:     01/3/9
// COMMENTS: 
//
////////////////////////////////////////////////////////////////////////////////
//

#ifndef TERRAINAIDLOG_H
#define TERRAINAIDLOG_H

#define TerrainAidLogName "TerrainAid"

#define NUM_MEAS 4

#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, *_mleVarZ, *_mleTime;
  DoubleData *_mmseN, *_mmseE, *_mmseZ, *_mmsePhi, *_mmseTheta, *_mmsePsi;
  DoubleData *_mmseVarN, *_mmseVarE, *_mmseVarZ, *_mmseVarPhi, *_mmseVarTheta, *_mmseVarPsi, *_mmseTime;
  IntegerData *_navTimeS, *_navTimeN, *_dvlTimeS, *_dvlTimeN, *_dvlStatus[4];
  IntegerData *_dvlValid, *_gpsValid, *_bottomLock;
  IntegerData *_numReinits, *_filterState, *_reinitFilter;
  DoubleData *_navTime, *_navTimeInit, *_dvlTime; 
  //
  // 4 beams hardcoded here.  To do:  make this use _terrainAid->_measData->numMeas.
  DoubleData *_alpha[NUM_MEAS];

  
  char strName[64];


  ///////////////////////////////////////////////////////////////////
  // Set values in record array elements. This virtual method is called
  // by DataLogWriter::write()
  virtual void setFields();
};

#endif
