// $Header: https://oberon.oapd.inaf.it/shins/trunk/shins/test/tcs_iif/iifApp.h 394 2018-01-19 10:25:10Z depa $

#pragma once


#include <config.h>
#include <Nice/App/Application.h>
#include <Nice/App/ConfigClient.h>
//#include <Nice/Map/NPoint.h>
#include <Basda/Mocca/Constant.h>
#include <Ltcs/Iif/PropertyName.h>
#include <Ltcs/Iif/ServiceWorkerInterface.h>
#include <LbtoIIFInterface.h>

#include <fstream>
#include <iostream>
#include <iomanip>
#include <boost/typeof/typeof.hpp> // BOOST_AUTO

class iifApp : public Nice::Application
{
 public:
  /**
   * @brief That method introduce the user how to start the application. It will be shown every time when the user called the application on a wrong way.
   */
  virtual int usage ( int );

  /**
   * @brief The run method will be started through the main method. It keeps the motor control implementation.
   */
  virtual int run ( int argc, char* argv[] );


  /**
   * @brief A call back method in order to terminate the application.
   */
  virtual void interruptCallback ( int _sig );

  int writeTrajOnFile(const Nice::SeqSeqDouble & _traj);
private:
  Ltcs::IifServiceWorkerInterfacePtr m_iif;
};
