Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 1407 → Rev 1406

/demos/trunk/chimera/chimera.c
11,7 → 11,12
*/
 
#include "chimera.h"
#include <FTrace_chunk.h>
#include <FTrace_udp.h>
#include <tracer.h>
 
int a;
 
void program_key_end(KEY_EVT* e)
{
 
20,6 → 25,12
 
end_send();
 
FTrace_disable();
 
FTrace_OSD_init_udp(1, "192.168.82.43", "192.168.82.20");
 
FTrace_send_chunk(a, 0, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_CYC);
 
for (i=3; i<MAX_PROC; i++){
if (!jet_getstat(i, NULL, &tmp, NULL, NULL))
kern_printf("Task Name : %s - Max Time : %d\n", proc_table[i].name, (int)tmp);
76,6 → 87,12
k.ascii = 'c';
keyb_hook(k,program_key_end);
 
a = FTrace_chunk_create(20000000, 10, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_CYC);
 
FTrace_actual_chunk_select(a);
 
FTrace_enable();
 
clear();
 
init_send(); /* Comunication */
/demos/trunk/chimera/send.c
39,10 → 39,6
 
HEXAPOD_STATE status;
 
void *start_tracer;
void *end_tracer;
void *trace_pointer;
 
extern struct leg_calibration calibration_table[];
 
void print_status(int n){
163,68 → 159,6
 
}
 
int trace_init(int buffer_size)
{
 
start_tracer = trace_pointer = (void *)malloc(buffer_size);
end_tracer = start_tracer + buffer_size;
memset(trace_pointer,0,buffer_size);
 
if (trace_pointer == NULL) return -1;
 
return 0;
}
 
int trace_consumption(int sensor, int value)
{
 
struct timespec t;
SYS_FLAGS f;
 
if (trace_pointer == NULL) return -1;
 
if (trace_pointer >= (end_tracer-16)) return -1;
 
f = kern_fsave();
 
sys_gettime(&t);
 
*(unsigned int *)trace_pointer = (sensor & 0xFF) | 0xAABBFF00;
*(unsigned int *)(trace_pointer + 4) = value;
*(unsigned int *)(trace_pointer + 8) = t.tv_sec;
*(unsigned int *)(trace_pointer + 12) = t.tv_nsec;
 
trace_pointer += 16;
 
kern_frestore(f);
 
return 0;
 
}
 
int tracer_send() {
 
static char pkg_buffer[1100];
int actual = 0;
 
trace_pointer = start_tracer;
 
while(((*(int *)(trace_pointer) >> 8) & 0xAABBFF) == 0xAABBFF) {
 
memcpy(&(pkg_buffer[actual]),trace_pointer,16);
 
actual += 16;
 
if (actual > 1000) {
pkg_buffer[actual] = 0;
udp_sendto(socket, pkg_buffer, strlen(pkg_buffer), &target);
usleep(10000);
}
 
}
 
}
 
TASK servo_send()
{
HEXAPOD_STATE old_status;
316,7 → 250,7
#ifdef SERIAL_ON
task_nopreempt();
status.cfg[actual_leg].adc_in = servo_get_analog(COM1, actual_leg);
trace_consumption(actual_leg,status.cfg[actual_leg].adc_in);
TRACER_LOGEVENT(FTrace_EVT_ipoint,actual_leg,status.cfg[actual_leg].adc_in);
task_preempt();
#endif
 
/demos/trunk/chimera/chimera.h
23,7 → 23,6
#include <drivers/keyb.h>
 
#include <servo.h>
#include <drivers/udpip.h>
 
/* COM Port Constants */
#define COM_PORT COM1
107,9 → 106,3
int delete_action_event(int event);
struct action_event * get_first_old_event(struct timespec *time);
 
/* Tracer */
 
int trace_init(int buffer_size);
int trace_consumption(int sensor, int value);
int tracer_send();