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

#ifndef DVLLOG_H
#define DVLLOG_H

#define DvlLogName "dvl"

#include "DataLogWriter.h"
#include "IntegerData.h"
#include "DoubleData.h"
#include "ShortData.h"
#include "AngleData.h"
#include "TimeTag.h"

class SimulatedDvl;

class DvlLog : public DataLogWriter {

public:

  ///////////////////////////////////////////////////////////////////
  // Constructor
  // [input] fileFormat: Specifies either DataLog::AsciiFormat or 
  //         DataLog::BinaryFormat.
  DvlLog(SimulatedDvl *dvl, DataLog::FileFormat fileFormat);

  ~DvlLog();

protected:
  SimulatedDvl *m_dvl;

  DoubleData *m_dvlBotVel_x;
  DoubleData *m_dvlBotVel_y;
  DoubleData *m_dvlBotVel_z;
  DoubleData *m_dvlBotVel_e;
  ShortData  *m_dvlBotVelStat;

  DoubleData *m_dvlWatVel_x;
  DoubleData *m_dvlWatVel_y;
  DoubleData *m_dvlWatVel_z;
  DoubleData *m_dvlWatVel_e;
  ShortData  *m_dvlWatVelStat;

  DoubleData *m_dvlTemp;
  DoubleData *m_dvlPitch;
  DoubleData *m_dvlRoll;
  DoubleData *m_dvlHeading;
  DoubleData *m_dvlRange;

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

#endif
