/****************************************************************************/
/* Copyright (c) 2000 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : reson.h                                                       */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 03/19/2004                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
#ifndef _RESON_H
#define _RESON_H

#include "Behavior.h"
#include "Reson6046IF.h"

#define ResonBehaviorName "reson"

#define NullLegDuration -1.0

class FloatAttribute;
class AngleAttribute;
class StringAttribute;

/*
CLASS 
Reson

DESCRIPTION
This behavior sets sonars states controlled by the Reson PLC.

Attribute       Type               Meaning
---------       ----               -------
SBP_Mode        Integer            Sub-bottom profiler switch 1=ON, 0=OFF

AUTHOR
Henthorn
*/
class reson : public Behavior {

public:

  reson();

  virtual ~reson();

  virtual void execute();
  Boolean shouldBehaviorStart( void );
  virtual Boolean validInput();

protected:

  // Pulse filename attributes
  Boolean _pulseDone;
  char*   _subsys;
  char*   _filename;

  // Sub-bottom mode switch from mission script
  Boolean _sbpDone;
  long    _sbpMode;
  double  _sbpPower;
  double  _sbpGain;
  double  _sbpDuration;
  
  // Low-freq sidescan mode switch from mission script
  Boolean _lossDone;
  long    _lossMode;
  double  _lossPower;
  double  _lossRange;
  double  _lossRate;

  // High-freq sidescan mode switch from mission script
  Boolean _hissDone;
  long    _hissMode;
  double  _hissPower;
  double  _hissRange;
  double  _hissRate;

  // Multibeam settings from mission script
  Boolean _mbDone;
  long    _mbMode;
  double  _mbPower;
  double  _mbRange;
  double  _mbRate;
  double  _mbGain;
  double  _mbWidth;
  double  _mbSoundVelocity;
  double  _mbBtmMinRange;
  double  _mbBtmMaxRange;
  double  _mbBtmMinDepth;
  double  _mbBtmMaxDepth;
  long    _mbBtmRecalc;
  long    _mbBtmRecalcInt;
  long    _rangeMode, _depthMode;
  long    _snippetMode, _windowSize;
    
  // Data logging switch from mission script
  Boolean _logDone;
  long    _logMode;

  // Initialize flag
  Boolean _init;

  // ResonIF server
  Reson6046IF *_server;
};



#endif
