
#ifndef COMUNICACIO_ROBOT_H
#define COMUNICACIO_ROBOT_H

#include "Logica_Robot.h"
#include "Client_Xmlrpc_Mart.h"
#include "Servidor_Xmlrpc_Mart.h"
#include "Simulador_Mart.h"

class Comunicacio_Robot
{
   private:
      Logica_Robot *logica; 
      int robot_en_funcionament;
      char *ip_terra;
      int port_terra;
      Thread_Client_Mart *client_mart[2];
      Thread_Moviment_Robot *thread_moviment;
      Thread_Control_Termic *thread_termic;      
      Thread_Control_Bateries *thread_bateria;
      Thread_Servidor_Informes *thread_informes;
   public:
      Comunicacio_Robot(Logica_Robot *);
      void establir_dades_inicials(char *ip_terra, int port_terra);
      void tractar_Emergencia(char *motiu);
      Logica_Robot *get_Logica_Robot();
      ~Comunicacio_Robot();
      
      void activar_robot();
      void desactivar_robot();
      void iniciar_moviment();
      void finalitzar_moviment();
      void girar_robot(int graus);
      void girar_cameres(int graus);
      void canviar_camara_activa(int num_camara);
      //void *realitzar_fotografia(int camera, unsigned char *imatge);
      void capturar_fotografia(int actiu, int num_camera, unsigned char *imatge);
      
      void get_posicio_actual(struct TPosicio *posicio_actual);
      int analitzar_material();
      float analitzar_ferro();
      float get_nivell_llum_actual();
      float get_temperatura_actual();
      int get_carrega_bateria();
      float analitzar_xray();
      void *capturar_pantalla(int camera);
      
      int get_Funcionament();
      int get_moviment();
      
      int get_amplada_imatge();
      int get_altura_imatge();
      
      void get_ip_terra(int *ip);
      int get_port_terra();
      
      void conversio_a_cadena(int amplada, char *ampladaStr);
      
};

#endif

