/*-------------------------------ROBOT.C-------------------------------

	

---------------------------------------------------------------------*/

#include <rtl_debug.h>
#include <time.h>
#include <pthread.h>
#include <rtl_fifo.h>
#include <rtl_sched.h>
#include <rtl_mutex.h>
//#include <rtl_printf.h>
#include "control.h"
#include "gen_tray.h"
#include "glob_var.h"

pthread_t thread_control;
pthread_attr_t attr_control;


//GLOBAL VARIABLES

struct generacion_tray gt_io_box;//change information box 
struct w_params gt_param_inbox;//input box for walking parameters
char next_robot_st;//input box for robot state
extern struct joint_val gt_joint_val;//input box for Reference Interpretation Thread
extern char gt_ok;

//MUTEX
pthread_mutex_t gt_io_box_vmtx,gt_param_inbox_vmtx;
extern pthread_mutex_t gt_joint_val_vmtx,gt_fmtx ;



int robot_init_module(void)
{
struct sched_param p_control;



        pthread_mutex_init(&gt_io_box_vmtx,0);
	pthread_mutex_init(&gt_param_inbox_vmtx,0);
	

	pthread_mutex_unlock(&gt_io_box_vmtx);
	pthread_mutex_unlock(&gt_param_inbox_vmtx);


	pthread_attr_init(&attr_control);
	pthread_attr_setfp_np(&attr_control,1);
	p_control.sched_priority=7;
	pthread_attr_setschedparam(&attr_control,&p_control);
//	rtl_printf("LANZANDO GT THREAD \n");
	pthread_create(&thread_control, &attr_control, &control_thread, (void *)5);
	gt_ok=1;	//modul gt inside system

	
	return 0;
}


void robot_cleanup_module(void)
{
//	pthread_delete_np(thread_control);
//	printk("cancelada control \n");
//	gt_ok=0;	//modul gt outside system

}
