/************************************************************************/
/* Copyright 1998 MBARI							*/
/************************************************************************/
#ifndef _HEARTBEAT_H
#define _HEARTBEAT_H
#include "DmGuiObject.h"

// Minimum seconds to reboot vehicle/console
#define MinRebootTime 15
#define HeartBeatSkipTolerance 1

/*
CLASS 
HeartBeat

DESCRIPTION
Display heartbeat signal

AUTHOR
Tom O'Reilly
*/
class HeartBeat : public DmGuiObject
{
  public:
  
  HeartBeat(const char *name, Widget parent, const char *dmItem, int period);
  ~HeartBeat();

  const char *className()
  {
    return "HeartBeat";
  }
  
  virtual void updateGui(DM_Item handle = 0);
  

  protected:
  Widget _statusLight;
  Widget _ackButton;
  int _pixmapWidth, _pixmapHeight;
  Pixmap _okPixmap, _okPixmap2, _errorPixmap;
  int _phase;
  DmNat32Object *_dmHeartBeat;
  Nat32 _prevCount;
  time_t _prevOkTime;
  double _prevSecs;
  float _beatsPerSec;
  Boolean _inError;
  Boolean _first;
  void ackButtonReset();
  
  private:
  
  static void exposeCallback(Widget w, XtPointer clientData, XEvent *event);
  
  static void ackButtonCallback(Widget w, XtPointer clientData,
				XtPointer callData);
};


#endif
