//-------------------------------------------------------------------------------------------
// Ejercicio 5: Tareas
//
// Comportamiento: choca gira, que dura 20 segundos
// Posible Mejora: Cambiar semaforo_falso por un semáforo de tipo sem_t
//
//-------------------------------------------------------------------------------------------

#include <conio.h>
#include <unistd.h>
#include <tm.h>
#include <sys/tm.h>

#include <dmotor.h>
#include <dsensor.h>


/* int semaforo_falso; */
tid_t pid_avanzar, pid_evitar;


int avanzar(int argc, char *argv[]){
  while(1){
    
/*     if (semaforo_falso){ */
      motor_a_dir(fwd);
      motor_c_dir(fwd);
/*     } */
  }

  return 0;

}

int evitar(int argc, char *argv[]){

  while(1){

    if (SENSOR_1 < 0xf000){

/*       semaforo_falso = 0; */
/*       msleep(100); */
      kill(pid_avanzar);
      motor_c_dir(rev);
      msleep(500);
      pid_avanzar = execi(&avanzar, 0, NULL, 0, DEFAULT_STACK_SIZE);
 /*      semaforo_falso =1; */
      
    };

    if (SENSOR_2 < 0xf000){

/*       semaforo_falso = 0; */
/*       msleep(100); */
      kill(pid_avanzar);
      motor_a_dir(rev);
      msleep(500);
      pid_avanzar = execi(&avanzar, 0, NULL, 0, DEFAULT_STACK_SIZE);
 /*      semaforo_falso =1; */

    };
  }

  return 0;

}


int main(int arg, char *argv[]){



 /*  semaforo_falso =1; */
  msleep(100);

  //Encendemos los motores
  motor_a_dir(fwd);
  motor_c_dir(fwd);

  pid_avanzar = execi(&avanzar, 0, NULL, 0, DEFAULT_STACK_SIZE);
  pid_evitar = execi(&evitar, 0, NULL, 0, DEFAULT_STACK_SIZE);
  
  sleep(20);
  
  kill(pid_avanzar);
  kill(pid_evitar);
  
  return 0;
}
    
    

