/****************************************************************************/
/* Copyright (c) 2000 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : TailConeLog.cc                                         */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 02/07/2000                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
#include <stdlib.h>
#include "TailConeLog.h"
#include "TailConeDriver.h"
#include "Syslog.h"
#include "TimeP.h"

TailConeLog::TailConeLog(TailConeDriver *tailCone, 
			 DataLog::FileFormat fileFormat) 
  : DataLogWriter(TailConeLogName, fileFormat, AutoTimeStamp) 
{
  setMnemonic("dataTC");

  addField((_status = new IntegerData("status")));
  addField((_elevatorCurrent = new IntegerData("elevatorCurrent")));
  addField((_rudderCurrent = new IntegerData("rudderCurrent")));
  addField((_propCurrent1 = new FloatData("propCurrent1")));
  addField((_propCurrent2 = new IntegerData("propCurrent2")));
  addField((_propRpm = new IntegerData("propRpm")));
  addField((_elevatorAngle = new FloatData("elevatorAngle")));
  addField((_rudderAngle = new FloatData("rudderAngle")));
  addField((_propPwm = new IntegerData("propPwm")));
  addField((_propTemp = new IntegerData("propTemp")));
  _tailCone = tailCone;
}


TailConeLog::~TailConeLog()
{
  delete _status;
  delete _elevatorCurrent;
  delete _rudderCurrent;
  delete _propCurrent1;
  delete _propCurrent2;
  delete _propRpm;
  delete _elevatorAngle;
  delete _rudderAngle;
  delete _propPwm;
}


void TailConeLog::setFields()
{
  // All of the TailCone telemetry values should have been set at this point
  // by TailConeServer.

  // Timestamp the data with telemetry sample time
  // Set field values here

  /*
  struct timespec t;
  t.tv_sec = _tailCone->_sampleTime.seconds;
  t.tv_nsec = _tailCone->_sampleTime.nanoSeconds;
  timeStamp()->setValue(Time::seconds(&t));
  */

 
  _status->setValue(_tailCone->propStatus());
  _propRpm->setValue((long )(_tailCone->currentSpeed()));
  _elevatorAngle->setValue((float)_tailCone->elevatorActualAngle());
  _rudderAngle->setValue((float)_tailCone->rudderActualAngle());
  _elevatorCurrent->setValue((long )0);
  _rudderCurrent->setValue((long )0);
  _propCurrent1->setValue(_tailCone->propCurrent());
  _propCurrent2->setValue((long )0);
  _propPwm->setValue((long)_tailCone->throttlePosition());
  _propTemp->setValue((long)_tailCone->propTemp());
}

