#include <rtl.h>
#include <rtl_sched.h>
#include "../include/udp.h"

int s;

void *run_thread(void *args) {
  struct sockaddr_in sin, fsin;
  int type, len;
  char ip_string[] = "192.168.4.1", buff2 [1024];
  struct in_addr ipad;
  
  memset((char*)&sin,0,sizeof(sin));
  sin.sin_family = AF_INET;
  inet_aton (ip_string, &ipad);
  sin.sin_addr.s_addr = ipad.s_addr;//INADDR_ANY;
  sin.sin_port = htons(3059);
  type = SOCK_DGRAM;
  
  s = socket(AF_INET,type, 0);
  if (s < 0) {
    rtl_printf ("Error creating socket\n");
    return 0;
  }
  
  bind(s, (struct sockaddr *)&sin, sizeof(sin));
  
  memset((char*)&fsin,0,sizeof(fsin));
  /*
  fsin.sin_family=AF_INET;
  inet_aton (ip_string, &ipad);
  fsin.sin_addr.s_addr = ipad.s_addr;
  fsin.sin_port = htons(3059);
*/
  //  rtl_printf ("Recibidos: %d bytes\n", 
  while (recvfrom(s, &buff2, 10, S_ASYNC, 
		  (struct sockaddr *)&fsin, &len) == -1) {
   rtl_printf ("None message yet\n");
   usleep (1000000);
    
  }
  rtl_printf ("Ha llegado el mensaje %s\n", buff2); 
  return 0;
}

pthread_t pthread;

int init_module (void) {
  pthread_create (&pthread, NULL, run_thread, 0);
  return 0;
}

void cleanup_module (void) {
  close_socket_np (s);
  pthread_delete_np (pthread);
}
     
