41,6 → 41,8 |
#include <tracer.h> |
#include <unistd.h> |
|
#include <kernel/kern.h> |
|
#include <drivers/udpip.h> |
|
#define TRACER_UDP_DEBUG |
56,6 → 58,8 |
char local_ip[20],target_ip[20]; |
int socket; |
|
PID udp_task; |
|
extern int TracerOutputType; |
|
struct tracer_udp_header { |
65,7 → 69,8 |
unsigned int total_size; |
}; |
|
int init_udp_tracer(char *l_ip, char *t_ip) { |
//Init UDP, if flag = 1 init the network driver |
int tracer_init_udp(int flag, char *l_ip, char *t_ip) { |
|
SYS_FLAGS f; |
|
76,6 → 81,8 |
strcpy(local_ip,l_ip); |
strcpy(target_ip,t_ip); |
|
if (flag) { |
|
net_setmode(m, TXTASK); |
net_setudpip(m, local_ip, "255.255.255.255"); |
|
86,6 → 93,8 |
|
sleep(1); |
|
} |
|
ip_str2addr(local_ip,&(local.s_addr)); |
local.s_port = TRACER_PORT+1; |
socket = udp_bind(&local, NULL); |
175,3 → 184,56 |
} |
|
} |
|
//Sender Task |
TASK udp_sender(void *arg) |
{ |
|
int number = (int)(arg); |
|
while(1) { |
|
tracer_send_logged_events(number); |
tracer_flush_sent_events(); |
|
task_endcycle(); |
|
} |
|
} |
|
int tracer_create_udp_task(TASK_MODEL *m, int EventsForPeriod) |
{ |
|
if (m == NULL) { |
|
SOFT_TASK_MODEL st; |
|
soft_task_default_model(st); |
soft_task_def_arg(st,(void *)(EventsForPeriod)); |
soft_task_def_period(st,500000); |
soft_task_def_met(st,10000); |
|
udp_task = task_create("UDP_Sender",udp_sender,&st,NULL); |
if (udp_task == NIL) { |
cprintf("Error creating UDP Sender\n"); |
sys_end(); |
} |
|
task_activate(udp_task); |
|
} else { |
|
udp_task = task_create("UDP_Sender",udp_sender,&m,NULL); |
if (udp_task == NIL) { |
cprintf("Error creating UDP Sender\n"); |
sys_end(); |
} |
|
task_activate(udp_task); |
|
} |
|
return 0; |
|
} |