/****************************************************************************/
/* Copyright (c) 2000 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : OctansLog.cc                                                */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 02/07/2000                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
/*-----------------------------------------------------------------------*
  CLASS: OctansLog.h

  DESCRIPTION: Logging object for the Octans

  $Id: OctansLog.cc,v 1.6 2001/07/19 06:02:24 hthomas Exp $
  *-----------------------------------------------------------------------*/

#include "OctansLog.h"
#include "Octans.h"

OctansLog::OctansLog( Octans *octans,
			  DataLog::FileFormat format )
  : DataLogWriter( OctansLogName, format, AutoTimeStamp )
{
  setMnemonic("dataO");

  addField( (_roll       = new DoubleData("mRollO")) );
  _roll->setAsciiFormat("%8.5e");
  addField( (_rollRate   = new DoubleData("mOmega_xO")) );
  _rollRate->setAsciiFormat("%8.5e");
  addField( (_pitch      = new DoubleData("mPitchO")) );
  _pitch->setAsciiFormat("%8.5e");
  addField( (_pitchRate  = new DoubleData("mOmega_yO")) );
  _pitchRate->setAsciiFormat("%8.5e");
  addField( (_yaw        = new DoubleData("mYawO")) );
  _yaw->setAsciiFormat("%8.5e");
  addField( (_yawRate    = new DoubleData("mOmega_zO")) );
  _yawRate->setAsciiFormat("%8.5e");

  addField( (_accelX     = new DoubleData("mAccel_xO")) );
  _accelX->setAsciiFormat("%8.5e");
  addField( (_accelY     = new DoubleData("mAccel_yO")) );
  _accelY->setAsciiFormat("%8.5e");
  addField( (_accelZ     = new DoubleData("mAccel_zO")) );
  _accelZ->setAsciiFormat("%8.5e");
  addField( (_octansStatus = new IntegerData("mStatusO")) );
  _octans = octans;
}  

OctansLog::~OctansLog()
{
  delete _roll;
  delete _rollRate;
  delete _pitch;
  delete _pitchRate;
  delete _yaw;
  delete _yawRate;

  delete _magX;
  delete _magY;
  delete _magZ;
  
  delete _accelX;
  delete _accelY;
  delete _accelZ;

  delete _temp;
}

void OctansLog::setFields()
{
  _roll->setValue( _octans->_output.data.roll );
  _rollRate->setValue( _octans->_output.data.rollRate );
  _pitch->setValue( _octans->_output.data.pitch);
  _pitchRate->setValue( _octans->_output.data.pitchRate );
  _yaw->setValue( _octans->_output.data.yaw );
  _yawRate->setValue( _octans->_output.data.yawRate );

  _accelX->setValue( _octans->_output.data.accelX );
  _accelY->setValue( _octans->_output.data.accelY );
  _accelZ->setValue( _octans->_output.data.accelZ );
  _octansStatus->setValue( _octans->_output.data.octansStatus);
}
