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

#include "DvlLog.h"
#include "SimulatedDvl.h"


DvlLog::DvlLog(SimulatedDvl *dvl, DataLog::FileFormat fileFormat)
  : DataLogWriter(DvlLogName, fileFormat, AutoTimeStamp)
{
  m_dvl = dvl;
  setMnemonic("dataDvl");

  addField(m_dvlBotVel_x   = new DoubleData("dvlBotVelx") );
  addField(m_dvlBotVel_y   = new DoubleData("dvlBotVely") );
  addField(m_dvlBotVel_z   = new DoubleData("dvlBotVelz") );
  addField(m_dvlBotVel_e   = new DoubleData("dvlBotVele") );
  addField(m_dvlBotVelStat = new ShortData ("dvlBotVelStat") );

  addField(m_dvlWatVel_x   = new DoubleData("dvlWatVelx") );
  addField(m_dvlWatVel_y   = new DoubleData("dvlWatVely") );
  addField(m_dvlWatVel_z   = new DoubleData("dvlWatVelz") );
  addField(m_dvlWatVel_e   = new DoubleData("dvlWatVele") );
  addField(m_dvlWatVelStat = new ShortData ("dvlWatVelStat") );

  addField(m_dvlTemp    = new DoubleData("dvlTemp") );
  addField(m_dvlPitch   = new DoubleData("dvlPitch") );
  addField(m_dvlRoll    = new DoubleData("dvlRoll") );
  addField(m_dvlHeading = new DoubleData("dvlHeading") );
  addField(m_dvlRange   = new DoubleData("dvlRange") );
}


DvlLog::~DvlLog()
{
  delete m_dvlBotVel_x;
  delete m_dvlBotVel_y;
  delete m_dvlBotVel_z;
  delete m_dvlBotVel_e;
  delete m_dvlBotVelStat;

  delete m_dvlWatVel_x;
  delete m_dvlWatVel_y;
  delete m_dvlWatVel_z;
  delete m_dvlWatVel_e;
  delete m_dvlWatVelStat;

  delete m_dvlTemp;
  delete m_dvlPitch;
  delete m_dvlRoll;
  delete m_dvlHeading;
  delete m_dvlRange;
}


void DvlLog::setFields()
{
  m_dvlBotVel_x->setValue( m_dvl->bottomTrackVelocity[0] );
  m_dvlBotVel_y->setValue( m_dvl->bottomTrackVelocity[1] );
  m_dvlBotVel_z->setValue( m_dvl->bottomTrackVelocity[2] );
  m_dvlBotVel_e->setValue( m_dvl->bottomTrackVelocity[3] );
  m_dvlBotVelStat->setValue( (short) *(m_dvl->bottomStatus) );

  m_dvlWatVel_x->setValue( m_dvl->waterMassVelocity[0] );
  m_dvlWatVel_y->setValue( m_dvl->waterMassVelocity[1] );
  m_dvlWatVel_z->setValue( m_dvl->waterMassVelocity[2] );
  m_dvlWatVel_e->setValue( m_dvl->waterMassVelocity[3] );
  m_dvlWatVelStat->setValue( (short) *(m_dvl->waterStatus) );

  m_dvlTemp->   setValue( *(m_dvl->dvlTemp) );
  m_dvlPitch->  setValue( *(m_dvl->dvlPitch) );
  m_dvlRoll->   setValue( *(m_dvl->dvlRoll) );
  m_dvlHeading->setValue( *(m_dvl->dvlHeading) );
  m_dvlRange->  setValue( *(m_dvl->dvlRange) );
}

