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

  DESCRIPTION: Logging object for the Crossbow

  $Id: CrossbowLog.cc,v 1.5 2000/05/12 15:27:18 oreilly Exp $
  *-----------------------------------------------------------------------*/

#include "CrossbowLog.h"
#include "Crossbow.h"

CrossbowLog::CrossbowLog( Crossbow *crossbow,
			  DataLog::FileFormat format )
  : DataLogWriter( CrossbowLogName, format, AutoTimeStamp )
{
  setMnemonic("dataCB");

  addField( (_roll       = new AngleData("mRollCB")) );
  addField( (_rollRate   = new AngleData("mOmega_xCB")) );
  addField( (_pitch      = new AngleData("mPitchCB")) );
  addField( (_pitchRate  = new AngleData("mOmega_yCB")) );
  addField( (_yaw        = new AngleData("mYawCB")) );
  addField( (_yawRate    = new AngleData("mOmega_zCB")) );

  addField( (_accelX     = new DoubleData("mAccel_xCB")) );
  addField( (_accelY     = new DoubleData("mAccel_yCB")) );
  addField( (_accelZ     = new DoubleData("mAccel_zCB")) );

  addField( (_magX       = new DoubleData("mMag_xCB")) );
  addField( (_magY       = new DoubleData("mMag_yCB")) );
  addField( (_magZ       = new DoubleData("mMag_zCB")) );

  addField( (_temp       = new DoubleData("mTempCB")) );

  _crossbow = crossbow;
}  

CrossbowLog::~CrossbowLog()
{
  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 CrossbowLog::setFields()
{
  _roll->setValue( _crossbow->_output.data.roll );
  _rollRate->setValue( _crossbow->_output.data.rollRate );
  _pitch->setValue( _crossbow->_output.data.pitch);
  _pitchRate->setValue( _crossbow->_output.data.pitchRate );
  _yaw->setValue( _crossbow->_output.data.yaw );
  _yawRate->setValue( _crossbow->_output.data.yawRate );

  _accelX->setValue( _crossbow->_output.data.accelX );
  _accelY->setValue( _crossbow->_output.data.accelY );
  _accelZ->setValue( _crossbow->_output.data.accelZ );
  
  _magX->setValue( _crossbow->_output.data.magX );
  _magY->setValue( _crossbow->_output.data.magY );
  _magZ->setValue( _crossbow->_output.data.magZ );
  
  _temp->setValue( _crossbow->_output.data.temperature );

}
