12,6 → 12,7 |
|
#include "chimera.h" |
#include "tracer.h" |
#include "unistd.h" |
|
//#define DEBUG_SEND /* Print Sent Values */ |
#define SERIAL_ON /* Send Data using Serial Port */ |
39,9 → 40,9 |
|
HEXAPOD_STATE status; |
|
void *start_tracer; |
void *end_tracer; |
void *trace_pointer; |
void *start_tracer = NULL; |
void *end_tracer = NULL; |
void *trace_pointer = NULL; |
|
extern struct leg_calibration calibration_table[]; |
|
175,6 → 176,23 |
return 0; |
} |
|
/* Init the network stack */ |
int init_network(char *local_ip) |
{ |
|
struct net_model m = net_base; |
|
net_setudpip(m, local_ip, "255.255.255.255"); |
|
if (net_init(&m) != 1) { |
cprintf("Network: Init Error.\n"); |
return -1; |
} |
|
return 0; |
|
} |
|
int trace_consumption(int sensor, int value) |
{ |
|
202,27 → 220,63 |
|
} |
|
int tracer_send() { |
int trace_send() { |
|
static char pkg_buffer[1100]; |
int actual = 0; |
|
UDP_ADDR target, local; |
char local_ip[20], target_ip[20]; |
int socket; |
IP_ADDR bindlist[5]; |
|
strcpy(local_ip, "192.168.1.10"); |
strcpy(target_ip, "192.168.1.1"); |
|
if (init_network(local_ip)) sys_end(); |
|
/* local IP string to addr */ |
ip_str2addr(local_ip,&(local.s_addr)); |
/* set the source port */ |
local.s_port = 20000; |
|
/* target IP string to addr */ |
ip_str2addr(target_ip,&(bindlist[0])); |
memset(&(bindlist[1]), 0, sizeof(IP_ADDR)); |
/* bind */ |
socket = udp_bind(&local, NULL); |
|
/* target IP string to addr */ |
ip_str2addr(target_ip,&(target.s_addr)); |
/* target port */ |
target.s_port = 20000; |
|
trace_pointer = start_tracer; |
actual = 0; |
|
while(((*(int *)(trace_pointer) >> 8) & 0xAABBFF) == 0xAABBFF) { |
while(trace_pointer < end_tracer) { |
|
memcpy(&(pkg_buffer[actual]),trace_pointer,16); |
if (((*(int *)(trace_pointer) >> 8) & 0xAABBFF) == 0xAABBFF) { |
|
actual += 16; |
memcpy(&(pkg_buffer[actual]),trace_pointer,16); |
|
if (actual > 1000) { |
pkg_buffer[actual] = 0; |
udp_sendto(socket, pkg_buffer, strlen(pkg_buffer), &target); |
usleep(10000); |
actual += 16; |
|
if (actual > 1000) { |
pkg_buffer[actual] = 0; |
udp_sendto(socket, pkg_buffer, strlen(pkg_buffer), &target); |
usleep(10000); |
actual = 0; |
} |
|
} |
|
trace_pointer += 16; |
|
} |
|
return 0; |
|
} |
|
TASK servo_send() |