/****************************************************************************/
/* Copyright (c) 2003 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : FastCatLog.cc                                                 */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 09/16/2003                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
#include "DataLogWriter.h"
#include "FastCatLog.h"
#include "FastCat.h"
#include "TimeP.h"
#include "Syslog.h"

FastCatLog::FastCatLog(FastCat *fastcat, DataLog::FileFormat fileFormat)
  : DataLogWriter("fastcatlog", fileFormat, AutoTimeStamp) 
{
  Syslog::write("FastCatLog.cc -- beginning constructor...\n");
  setMnemonic(name());

  addField((_cond = new DoubleData("conductivity")));
  addField((_temp = new DoubleData("temperature")));
  addField((_pressure = new DoubleData("pressure")));
  addField((_salinity = new DoubleData("calculated_salinity")));
  addField((_cfreq = new DoubleData("cond_frequency")));
  addField((_tcounts = new DoubleData("temp_counts")));
  addField((_pcounts = new DoubleData("pressure_counts")));
  addField((_pvolts = new DoubleData("pressure_temp_comp_voltage_reading")));
  addField((_sound_velocity = new DoubleData("calculated_sound_velocity")));

  // Set preferred format for ascii printing
  //
  _cond->setAsciiFormat("%8.8e");
  _temp->setAsciiFormat("%8.8e");
  _pressure->setAsciiFormat("%8.8e");
  _salinity->setAsciiFormat("%8.8e");

  _cfreq->setAsciiFormat("%8.8e");
  _tcounts->setAsciiFormat("%8.8e");
  _pcounts->setAsciiFormat("%8.8e");
  _pvolts->setAsciiFormat("%8.8e");
  _sound_velocity->setAsciiFormat("%8.8e");

  _fastcat = fastcat;

  // Set metadata fields
  //
  _cond->setLongName("Calculated conductivity");
  _temp->setLongName("Calculated temperature");
  _pressure->setLongName("Calculated pressure");
  _salinity->setLongName("Calculated salinity");
  _cfreq->setLongName("Raw Conductivity frequency");
  _tcounts->setLongName("Raw Temperature A/D counts");
  _tcounts->setLongName("Raw Pressure A/D counts");
  _pvolts->setLongName("Raw pressure temp compensation voltage reading");
  _sound_velocity->setLongName("Calculated sound velocity");
  
  _cond->setUnits("Siemens/meter");
  _temp->setUnits("Celsius");
  _pressure->setUnits("Decibars");
  _salinity->setUnits("Volts");
  _cfreq->setUnits("Hertz");
  _tcounts->setUnits("Unitless");
  _pcounts->setUnits("Unitless");
  _pvolts->setUnits("Volts");
  _sound_velocity->setUnits("M/s");
  
  Syslog::write("FastCatLog.cc -- constructor succeeded\n");
}


FastCatLog::~FastCatLog()
{
  delete _cond;
  delete _temp;
  delete _pressure;
  delete _salinity;
  delete _cfreq;
  delete _tcounts;
  delete _pcounts;
  delete _pvolts;
  delete _sound_velocity;
}


void FastCatLog::setFields()
{

  // Set range value
  //
  _cond->setValue(_fastcat->_output->data.conductivity);
  _temp->setValue(_fastcat->_output->data.temperature);
  _pressure->setValue(_fastcat->_output->data.pressure);
  _salinity->setValue(_fastcat->_output->data.salinity);
  _cfreq->setValue(_fastcat->_output->data.cfreq);
  _tcounts->setValue(_fastcat->_output->data.tcounts);
  _pcounts->setValue(_fastcat->_output->data.pcounts);
  _pvolts->setValue(_fastcat->_output->data.pvolts);
  _sound_velocity->setValue(_fastcat->_output->data.sound_velocity);
}
