/****************************************************************************/
/* Copyright (c) 2001 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : BuoyLauncherLog.cc                                            */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 04/09/2001                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
#include "DataLogWriter.h"
#include "CharData.h"
#include "ShortData.h"
#include "DoubleData.h"
#include "StringData.h"
#include "BuoyLauncherLog.h"
#include "BuoyLauncherDriver.h"
#include "BuoyLauncherMsgs.h"
#include "TimeP.h"
#include "Syslog.h"

BuoyLauncherLog::BuoyLauncherLog(BuoyLauncherDriver *bld,
				 DataLog::FileFormat format)
  : _bld(bld), DataLogWriter(BuoyLauncherLogName, format, AutoTimeStamp) 
{
  Syslog::write("BuoyLauncherLog.cc -- beginning constructor...\n");
  setMnemonic("buoylauncherlog");

  addField(_launcherCommand = new CharData("launcherCommand"));

  addField(_launcherError = new ShortData("launcherError"));
  addField(_launcherErrorMsg = new StringData("launcherErrorMsg"));
  addField(_lastLaunchOK = new ShortData("lastLaunchOK"));
  addField(_buoyResponsive = new ShortData("buoyResponsive"));
  addField(_nextBuoyReady = new ShortData("nextBuoyReady"));
  addField(_currentBuoyNumber = new ShortData("currentBuoyNumber"));
  addField(_totalNumBuoys = new ShortData("totalNumBuoys"));
  addField(_numBuoysLaunched = new ShortData("numBuoysLaunched"));
  addField(_timeSec = new DoubleData("timeSec"));
  addField(_argosBytesL = new DoubleData("argosBytesL"));
  addField(_archiveBytesL = new DoubleData("archiveBytesL"));
  addField(_picoBytesL = new DoubleData("picosBytesL"));
  addField(_dataMemoryL = new DoubleData("dataMemoryL"));

  addField(_buoyNumber = new ShortData("buoyNumber"));
  addField(_mainBattVolts = new ShortData("mainBattVolts"));
  addField(_auxBattVolts = new ShortData("auxBattVolts"));
  addField(_tempDegC = new ShortData("tempDegC"));
  addField(_argosBytesB = new DoubleData("argosBytesB"));
  addField(_archiveBytesB = new DoubleData("archiveBytesB"));
  addField(_picoBytesB = new DoubleData("picosBytesB"));
  addField(_dataMemoryB = new DoubleData("dataMemoryB"));

  Syslog::write("BuoyLauncherLog.cc -- constructor succeeded\n");
}


BuoyLauncherLog::~BuoyLauncherLog()
{
  delete _launcherCommand;

  delete _launcherError;
  delete _launcherErrorMsg;
  delete _lastLaunchOK;
  delete _buoyResponsive;
  delete _nextBuoyReady;
  delete _currentBuoyNumber;
  delete _totalNumBuoys;
  delete _numBuoysLaunched;
  delete _timeSec;
  delete _argosBytesL;
  delete _archiveBytesL;
  delete _picoBytesL;
  delete _dataMemoryL;

  delete _buoyNumber;
  delete _mainBattVolts;
  delete _auxBattVolts;
  delete _tempDegC;
  delete _argosBytesB;
  delete _archiveBytesB;
  delete _picoBytesB;
  delete _dataMemoryB;
}


void BuoyLauncherLog::setFields()
{
  _launcherCommand->setValue(_bld->_input->data._command);

  _launcherError->setValue(_bld->_output->data._launcherError);

  _launcherErrorMsg->setValue(error_msgs[
       max(0,min(LAST_LAUNCHER_ERROR,_bld->_output->data._launcherError))]);

  _lastLaunchOK->setValue(_bld->_output->data._lastLaunchOK);
  _buoyResponsive->setValue(_bld->_output->data._buoyResponsive);
  _nextBuoyReady->setValue(_bld->_output->data._nextBuoyReady);
  _currentBuoyNumber->setValue(_bld->_output->data._currentBuoyNumber);
  _totalNumBuoys->setValue(_bld->_output->data._totalNumBuoys);
  _numBuoysLaunched->setValue(_bld->_output->data._numBuoysLaunched);
  _timeSec->setValue((double)_bld->_output->data._timeSec);
  _argosBytesL->setValue((double)_bld->_output->data._argosBytesL);
  _archiveBytesL->setValue((double)_bld->_output->data._archiveBytesL);
  _picoBytesL->setValue((double)_bld->_output->data._picoBytesL);
  _dataMemoryL->setValue((double)_bld->_output->data._dataMemoryL);

  _buoyNumber->setValue(_bld->_output->data._buoyNumber);
  _mainBattVolts->setValue(_bld->_output->data._mainBattVolts);
  _auxBattVolts->setValue(_bld->_output->data._auxBattVolts);
  _tempDegC->setValue(_bld->_output->data._tempDegC);
  _argosBytesB->setValue((double)_bld->_output->data._argosBytesB);
  _archiveBytesB->setValue((double)_bld->_output->data._archiveBytesB);
  _picoBytesB->setValue((double)_bld->_output->data._picoBytesB);
  _dataMemoryB->setValue((double)_bld->_output->data._dataMemoryB);
}



