/****************************************************************************/
/* Copyright (c) 2000 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : CTDLog.cc                                                     */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 02/07/2000                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
#include "DataLogWriter.h"
#include "SeabirdLog.h"
#include "Seabird.h"
#include "TimeP.h"
#include "Syslog.h"

SeabirdLog::SeabirdLog(Seabird *seabird, const char *sbname)
  : DataLogWriter(sbname, DataLog::BinaryFormat, AutoTimeStamp) 
{
  Syslog::write("CTDLog.cc -- beginning constructor...\n");
  char *mnem = (char*)malloc(strlen(name())+strlen("ctdlog")+1);
  strcpy(mnem, name());
  strcat(mnem, "ctdlog");
  setMnemonic(mnem);
  free(mnem);

  addField((_cond = new DoubleData("conductivity")));
  addField((_temp = new DoubleData("temperature")));
  addField((_cfreq = new DoubleData("cond_frequency")));
  addField((_tfreq = new DoubleData("temp_frequency")));

  // static names for now, to be changed as soon as a "setname" method
  // is added to the Data class.

  addField((_v1 = new DoubleData("v1")));
  addField((_v2 = new DoubleData("v2")));
  addField((_v3 = new DoubleData("v3")));
  addField((_v4 = new DoubleData("v4")));
  addField((_v5 = new DoubleData("v5")));
  addField((_v6 = new DoubleData("v6")));

  // Set preferred format for ascii printing
  _cond->setAsciiFormat("%8.8e");
  _temp->setAsciiFormat("%8.8e");
  _cfreq->setAsciiFormat("%8.8e");
  _tfreq->setAsciiFormat("%8.8e");
  _v1->setAsciiFormat("%8.8e");
  _v2->setAsciiFormat("%8.8e");
  _v3->setAsciiFormat("%8.8e");
  _v4->setAsciiFormat("%8.8e");
  _v5->setAsciiFormat("%8.8e");
  _v6->setAsciiFormat("%8.8e");

  _seabird = seabird;
  
  _v1->setName(_seabird->_output->data.v1name);
  _v2->setName(_seabird->_output->data.v2name);
  _v3->setName(_seabird->_output->data.v3name);
  _v4->setName(_seabird->_output->data.v4name);
  _v5->setName(_seabird->_output->data.v5name);
  _v6->setName(_seabird->_output->data.v6name);
  
  Syslog::write("CTDLog.cc -- constructor succeeded\n");
}


SeabirdLog::~SeabirdLog()
{
  delete _cond;
  delete _temp;
  delete _cfreq;
  delete _tfreq;
  delete _v1;
  delete _v2;
  delete _v3;
  delete _v4;
  delete _v5;
  delete _v6;
}


void SeabirdLog::setFields()
{

  // Set range value
  _cond->setValue(_seabird->read_cond);
  _temp->setValue(_seabird->read_temp);
  _cfreq->setValue(_seabird->read_cfreq);
  _tfreq->setValue(_seabird->read_tfreq);
  
  if (_seabird->NUMVOLTAGES > 0)
    _v1->setValue(_seabird->voltages[0]);
  if (_seabird->NUMVOLTAGES > 1)
    _v2->setValue(_seabird->voltages[1]);
  if (_seabird->NUMVOLTAGES > 2)
    _v3->setValue(_seabird->voltages[2]);
  if (_seabird->NUMVOLTAGES > 3)
    _v4->setValue(_seabird->voltages[3]);
  if (_seabird->NUMVOLTAGES > 4)
    _v5->setValue(_seabird->voltages[4]);
  if (_seabird->NUMVOLTAGES > 5)
    _v6->setValue(_seabird->voltages[5]);
    
}



