#ifndef _INDI_MOTION_HPP
#define _INDI_MOTION_HPP

#include <math.h>
#include <stdlib.h>

/* INDI header files */
#include "SystemSocket.hpp"
#include "Logger.hpp"
#include "Config.hpp"

#include "IndiDriver.hpp"  // base class for INDI drivers
#include "IndiElement.hpp"

#include "wheelNiceApp.hpp"

class INDIMotion : public pcf::IndiDriver
{
private:
  // 
  pcf::IndiProperty m_status;
  pcf::IndiProperty m_cmdPos;
  pcf::IndiProperty m_actualPos;

  pcf::Logger m_log;

  wheelNiceApp* m_wheelApp;
  
public:
  // Override constructor
  INDIMotion(const std::string &szName,
	     const std::string &szDriverVersion,
	     const std::string &szProtocolVersion,
	     const std::string &svcPath,
  	     int argc, char* argv[]);

  virtual ~INDIMotion();

  virtual void handleGetProperties(const pcf::IndiProperty &ipRecv);
  //  virtual void handleGetProperty(const pcf::IndiProperty &ipRecv);
  virtual void handleNewProperty(const pcf::IndiProperty &ipRecv);
  virtual void execute(void);
  std::string getSvcPath();
};

#endif // _INDI_MOTION_HPP
