/****************************************************************************/
/* Copyright (c) 2014 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  : behavior to control 6046                                      */
/* Filename : edgetech.h                                                    */
/* Author   : Eric Martin                                                   */
/* Project  : Mapper 2 build // next gen reson upgrades                     */
/* Version  : 1.0                                                           */
/* Created  : 04/09/2014													*/
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
#ifndef _EDGETECH_H
#define _EDGETECH_H

#include "Behavior.h"
#include "EdgetechFSDWIF.h"

#define EdgetechBehaviorName "edgetech"

#define NullLegDuration -1.0

class FloatAttribute;
class AngleAttribute;
class StringAttribute;

/*
CLASS 
edgetech

DESCRIPTION
This behaviour replaces the reson6046 controls 

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

AUTHOR
Eric Martin
*/
class edgetech : public Behavior {

public:

  edgetech();

  virtual ~edgetech();

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

protected:

  // Pulse filename attributes

  

  // Sub-bottom mode switch from mission script
  Boolean _sbpDone;
  long    _sbpMode;
  double  _sbpPower;
  double  _sbpGain;
  double  _sbpDuration;
  char*   _sbpPulseFilename;

  // Low-freq sidescan mode switch from mission script
  Boolean _lossDone;
  long    _lossMode;
  double  _lossPower;
  double  _lossRange;
  double  _lossRate;
  char*   _lossPulseFilename;

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

  // Multibeam settings from mission script


  // Driver logging switch from mission script
  Boolean _logDone;
  long    _logMode;

  // Data Logging switch on edgetech system
  Boolean _storageDone;
  long    _storageMode;

  Boolean _getUpdates;
  long    _getUpdatesMode;

  // Initialize flag
  Boolean _init;

  // EdgetechFSDWIF server
  EdgetechFSDWIF *_server;
};



#endif
