
#ifndef LOGICA_ROBOT_H
#define LOGICA_ROBOT_H

#include <ptime.h>
#include <pasync.h>

USING_PTYPES

typedef struct Tipus_Posicio 
{
   int x;
   int y;
   int z;
   int angle_orientacio;
   int angle_altura;
}TPosicio;

class Logica_Robot
{
   private:
      // Dades i / o classes de la logica del robot.
      // Dades del robot incorporades en camps o en una classe apart:
      // (nivell bateria; x,y,z,angleOrientacio i angleAltura actuals;
      // i altres dades que siguin necessaries (p. ex. distancia total
      // recorreguda, si s'escau)
      int robot_en_moviment;
      
      // Afegides
      TPosicio posicio_actual;
      int angle_cameres;
      int nivell_bateria;
   public:
      int get_moviment();
      void activar_moviment();
      void desactivar_moviment();

      // AFEGIDES:
      Logica_Robot();
      TPosicio *get_posicio_actual();
      int get_nivell_bateria();
      void girar_robot(int graus);
      void girar_cameres(int graus);
      int get_angle_cameres();  // Metode accedit pel visualitzador (lŽangle del robot el treu de get_posicio_actual)
      ~Logica_Robot() {};
};

class Thread_Moviment_Robot : public thread
{
   protected:
      virtual void execute();
   public:
      Thread_Moviment_Robot() : thread(true) {}
      ~Thread_Moviment_Robot() {}
};

class Thread_Control_Termic : public thread
{
   protected:
      virtual void execute();
   public:
      Thread_Control_Termic() : thread(true) {}
      ~Thread_Control_Termic() {}
};

#endif


