/****************************************************************************/
/* Copyright (c) 2012 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : MultibeamerLog.cc                                             */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 09/17/2012                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
#include "DataLogWriter.h"
#include "MultibeamerLog.h"
#include "MultibeamerServer.h"
#include "ShortData.h"
#include "FloatData.h"
#include "TimeP.h"
#include "Syslog.h"

class Multibeamer;

MultibeamerLog::MultibeamerLog(MultibeamerServer *mbs, 
			     DataLog::FileFormat fileFormat) 
  : DataLogWriter(MultibeamerLogName, fileFormat, AutoTimeStamp) 
{
  setMnemonic("multibeamer.data");

  _mbs = mbs;

  // Create the data fields for the beam data
  //
  char dname[60];
  for (int i = 0; i < 512; i++) {
    sprintf(dname, "BeamRange%d", i+1);
    addField((_ranges[i] = new FloatData(dname)));
  }
}


MultibeamerLog::~MultibeamerLog()
{
  for (int i = 0; i < 512; i++) if (_ranges[i]) delete _ranges[i];
}


void MultibeamerLog::setFields()
{
   if (_mbs)
   {
      _mbs->_output->read();
      _pingNum->setValue(_mbs->_output->data.mb_data.pingNum);
      int nbeams = _mbs->_output->data.mb_data.nbeams;
      _nbeams->setValue(nbeams);

      for (int i = 0; i < nbeams && i < 512; i++)
         _ranges[i]->setValue(_mbs->_output->data.mb_data.ranges[i]);
   }
}



