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

  DESCRIPTION: LogginaddField( (_ = new IntegerData("")));g object for the FuelCell

  $Id: FuelCellLog.cc,v 1.2 2001/04/08 23:49:17 rob Exp $
  *-----------------------------------------------------------------------*/

#include "FuelCellLog.h"
#include "FuelCell.h"

FuelCellLog::FuelCellLog( FuelCell *fuelcell,
			  DataLog::FileFormat format )
  : DataLogWriter( FuelCellLogName, format, AutoTimeStamp )
{
  setMnemonic("dataFC");

  addField( (_health     = new DoubleData("FCC_health")) );

  addField( (_FC_control_state     = new IntegerData("fc_ctrl_state")) );
  addField( (_elapsed_time = new IntegerData("elapsed_time")));
  addField( (_anolyte_pump_a_current = 
	     new IntegerData("anolyte_pump_a_current")));
  addField( (_anolyte_pump_b_current = 
	     new IntegerData("anolyte_pump_b_current")));
  addField( (_catholyte_pump_current = 
	     new IntegerData("catholyte_pump_current")));
  addField( (_peroxide_pump_current = new IntegerData("peroxide_pump_current")));
  addField( (_anolyte_temp = new IntegerData("anolyte_temp")));
  addField( (_catholyte_temp = new IntegerData("catholyte_temp")));
  addField( (_fwd_peroxide_temp = new IntegerData("fwd_peroxide_temp")));
  addField( (_aft_peroxide_temp = new IntegerData("aft_peroxide_temp")));
  addField( (_stack_voltage = new IntegerData("stack_voltage")));
  addField( (_stack_current = new IntegerData("stack_current")));
  addField( (_battery_voltage = new IntegerData("battery_voltage")));
  addField( (_battery_current = new IntegerData("battery_current")));
  addField( (_peroxide_used = new IntegerData("peroxide_used")));
  addField( (_v_setpoint = new IntegerData("v_setpoint")));
  addField( (_makeup_injection_count = 
	     new IntegerData("makeup_injection_count")));
  addField( (_base_injection_duration = 
	     new IntegerData("base_injection_duration")));


  _fuelcell = fuelcell;
}  

FuelCellLog::~FuelCellLog()
{
  delete _health;
  delete _FC_control_state;
  delete _elapsed_time;
  delete _anolyte_pump_a_current;
  delete _anolyte_pump_b_current;
  delete _catholyte_pump_current;
  delete _peroxide_pump_current;
  delete _anolyte_temp;
  delete _catholyte_temp;
  delete _fwd_peroxide_temp;
  delete _aft_peroxide_temp;
  delete _stack_voltage;
  delete _stack_current;
  delete _battery_voltage;
  delete _battery_current;
  delete _peroxide_used;
  delete _v_setpoint;
  delete _makeup_injection_count;
  delete _base_injection_duration;
}

void FuelCellLog::setFields()
{
  _health->setValue(_fuelcell->_output->data.fcc_status.health);
  _FC_control_state->setValue((int)_fuelcell->_output->data.fcc_status.fc_control_state);
  _elapsed_time->setValue(_fuelcell->_output->data.fcc_data.elapsed_time);
  _anolyte_pump_a_current->setValue(_fuelcell->_output->data.fcc_data.anolyte_pump_a_current);
  _anolyte_pump_b_current->setValue(_fuelcell->_output->data.fcc_data.anolyte_pump_b_current);
  _catholyte_pump_current->setValue(_fuelcell->_output->data.fcc_data.catholyte_pump_current);
  _peroxide_pump_current->setValue(_fuelcell->_output->data.fcc_data.peroxide_pump_current );
  _anolyte_temp->setValue(_fuelcell->_output->data.fcc_data.anolyte_temp );
  _catholyte_temp->setValue(_fuelcell->_output->data.fcc_data.catholyte_temp );
  _fwd_peroxide_temp->setValue(_fuelcell->_output->data.fcc_data.fwd_peroxide_temp); 
  _aft_peroxide_temp->setValue(_fuelcell->_output->data.fcc_data.aft_peroxide_temp );
  _stack_voltage->setValue(_fuelcell->_output->data.fcc_data.stack_voltage );
  _stack_current->setValue(_fuelcell->_output->data.fcc_data.stack_current );
  _battery_voltage->setValue(_fuelcell->_output->data.fcc_data.battery_voltage );
  _battery_current->setValue(_fuelcell->_output->data.fcc_data.battery_current );
  _peroxide_used->setValue(_fuelcell->_output->data.fcc_data.peroxide_used);
  _v_setpoint->setValue(_fuelcell->_output->data.fcc_data.v_setpoint);
  _makeup_injection_count->setValue(_fuelcell->_output->data.fcc_data.makeup_injection_count);
  _base_injection_duration->setValue(_fuelcell->_output->data.fcc_data.base_injection_duration);
}
