*** empty log message ***

This commit is contained in:
Antoine Drouin
2006-02-07 08:17:56 +00:00
parent 88abf054c8
commit 59076c3db4
6 changed files with 274 additions and 11 deletions
+2
View File
@@ -84,6 +84,8 @@ ap.CFLAGS += -DACTUATORS=\"servos_direct_hw.h\"
ap.EXTRA_SRCS += $(SRC_ARCH)/servos_direct_hw.c
ap.CFLAGS += -DCONTROL -DAUTOPILOT
ap.EXTRA_SRCS += $(ACINCLUDE)/ap/control.c autopilot_fbw.c
ap.CFLAGS += -DADC
ap.EXTRA_SRCS += $(SRC_ARCH)/adc_hw.c
ap.CFLAGS += -DTRACES -DWAVECARD_ON_GPS
ap.EXTRA_SRCS += $(SRC_ARCH)/traces.c $(SRC_ARCH)/uart_ap.c
#ap.CFLAGS += -DDATALINK
+1 -1
View File
@@ -217,7 +217,7 @@ CGIPath /bin:/usr/bin:/usr/local/bin
# Example: AddType type extension [extension ...]
# Uncomment the next line if you want .cgi files to execute from anywhere
#AddType application/x-httpd-cgi cgi
AddType application/x-httpd-cgi cgi
# Redirect, Alias, and ScriptAlias all have the same semantics -- they
# match the beginning of a request and take appropriate action. Use
+3
View File
@@ -23,6 +23,9 @@ void init_ap( void ) {
gps_init();
gps_configure();
#endif
#ifdef ADC
#endif ADC
/* if AP is running in a separate MCU */
#ifndef FBW
int_enable();
+10 -10
View File
@@ -14,14 +14,14 @@ if (defined $ENV{PAPARAZZI_SRC}) {
$paparazzi_home = $ENV{PAPARAZZI_SRC};
}
$paparazzi_home = $ENV{PAPARAZZI_HOME} if (defined $ENV{PAPARAZZI_HOME});
print "\nEnvironment : ";
if (defined $paparazzi_src) {
print "source directory mode\n paparazzi_src $paparazzi_src\n";
}
else {
print "system mode\n inst_prefix INST_PREFIX";
}
print " paparazzi_home $paparazzi_home\n\n";
#print "\nEnvironment : ";
#if (defined $paparazzi_src) {
# print "source directory mode\n paparazzi_src $paparazzi_src\n";
#}
#else {
# print "system mode\n inst_prefix INST_PREFIX";
#}
#print " paparazzi_home $paparazzi_home\n\n";
sub parse_command_line {
my ($options) = @_;
@@ -66,7 +66,7 @@ sub read_config {
my $aircrafts = $conf->getElementsByTagName("aircraft");;
foreach my $aircraft (@{$aircrafts}){
my $name = $aircraft->getAttribute('name');
print ("name $name\n");
# print ("name $name\n");
}
}
@@ -95,7 +95,7 @@ sub get_default_map {
my $map_conf = $doc->getElementsByTagName("map")->[0];
my $calib_file = $map_conf->getAttribute('location');
$calib_file = get_data($calib_file);
print "in Paparazzi::Environment::get_default_map $calib_file\n";
# print "in Paparazzi::Environment::get_default_map $calib_file\n";
return $calib_file;
}
+69
View File
@@ -0,0 +1,69 @@
package Paparazzi::Log;
use strict;
use XML::Parser;
use XML::DOM;
my $PAPARAZZI_HOME = "/home/poine/work/paparazzi_savannah/paparazzi3";
sub get_available {
my $log_dir = $PAPARAZZI_HOME."/var/logs";
opendir(DIR, $log_dir) || print "can't opendir $log_dir: $!\n";
my @logs = grep { /^.*\.log/ && -f "$log_dir/$_" } readdir(DIR);
closedir DIR;
return @logs;
}
sub read_infos {
my ($filename) = @_;
$filename = $PAPARAZZI_HOME."/var/logs"."/".$filename;
my $parser = XML::DOM::Parser->new();
my $doc = $parser->parsefile($filename);
my $configuration = $doc->getElementsByTagName('configuration')->[0];
my $timeofday = $configuration->getAttribute('time_of_day');
my $data_file = $configuration->getAttribute('data_file');
my $conf = $doc->getElementsByTagName('conf');
my $aircrafts = parse_configuration($conf->[0]);
my $protocol = $doc->getElementsByTagName('protocol');
return { date => $timeofday, data_file => $data_file , aircrafts => $aircrafts };
}
sub read_data {
my ($filename) = @_;
$filename = $PAPARAZZI_HOME."/var/logs"."/".$filename;
my @data = ();
open(INFILE, $filename) or print STDOUT "Cant open $filename: $!";
while (my $line = <INFILE>) {
if ($line =~ /(^\d+\.\d+) (\d+) (\w+) (.+)/) {
push @data, {time => $1, sender => $2, msg_id => $3, args => $4};
}
}
close INFILE;
my $duration = @data[$#data]->{time};
return {nb_messages => $#data, duration => $duration, raw_data => \@data};
}
sub parse_configuration {
my ($conf) = @_;
my @ret = ();
my @aircrafts = $conf->getElementsByTagName('aircraft');
foreach my $aircraft (@aircrafts) {
push @ret, parse_aircraft($aircraft);
}
return \@ret;
}
sub parse_aircraft {
my ($aircraft) = @_;
my $ac_name = $aircraft->getAttribute('name');
# print "aircraft : $ac_name<br>\n";
return $ac_name;
}
1;
+189
View File
@@ -0,0 +1,189 @@
#!/usr/bin/perl
use CGI::Form;
use Expect;
my $paparazzi_lib;
BEGIN {
# $paparazzi_lib = (defined $ENV{PAPARAZZI_SRC}) ?
# $ENV{PAPARAZZI_SRC}."/sw/lib/perl" : "/usr/lib/paparazzi/";
$paparazzi_lib = "/home/poine/work/paparazzi_savannah/paparazzi3/sw/lib/perl";
}
use lib ($paparazzi_lib);
use strict;
use warnings;
#use diagnostics;
#use Paparazzi::Environment;
use Paparazzi::Log;
my $PAPARAZZI_HOME = "/home/poine/work/paparazzi_savannah/paparazzi3";
my $query = new CGI::Form;
print $query->header;
print $query->start_html("Paparazzi plotter");
process_query($query);
print_prompt($query);
print_log_info();
print_tail();
print $query->end_html;
my @logs = ();
my @aircrafts = ();
my @messages = ();
my @fields = ();
my $log_info = undef;
my $log_data = undef;
sub print_prompt {
my($query) = @_;
print "<H1> Paparazzi plotter</H1>\n";
print $query->startform;
print "<TABLE>\n";
print " <TR>\n";
print " <TD>File</TD>";
print " <TD>Aircraft</TD>";
print " <TD>Message</TD>";
print " <TD>Field</TD>";
print " </TR>\n";
print " <TR>\n";
print " <TD>\n";
print $query->popup_menu('file', \@logs, $logs[0]);
print " </TD>\n";
print " <TD>\n";
print $query->popup_menu('aircraft', \@aircrafts, $aircrafts[0]);
print " </TD>\n";
print " <TD>\n";
print $query->popup_menu('message', \@messages, $messages[0]);
print " </TD>\n";
print " <TD>\n";
print $query->popup_menu('field', \@messages, $messages[0]);
print " </TD>\n";
print " <TD>\n";
print $query->submit('Action','Update');
print " </TD>\n";
print " </TR>\n";
print "</TABLE>\n";
print $query->endform;
print "<HR>\n";
}
use POSIX qw(strftime);
sub print_log_info {
if (defined $log_info) {
my $now_string = POSIX::strftime "%a %b %e %H:%M:%S %Y", localtime($log_info->{date});
print "date :".$now_string."\n<br>";
my $url = gen_activity_plot($log_info->{data_file});
my $nb_messages = $log_data->{nb_messages};
print "nb message :".$nb_messages."\n<br>";
my $duration = $log_data->{duration};
print "duration :".$duration."s\n<br>";
print"<img src=\"$url\">\n";
# print "data_file ".$log_info->{data_file}."\n<br>";
}
}
sub gen_activity_plot {
my ($data_file) = @_;
$log_data = Paparazzi::Log::read_data($data_file);
my $raw_data = $log_data->{raw_data};
my @res = ();
my $data_filename = "/tmp/foo.dat";
open(OUTFILE, ">".$data_filename) or die "Can t open $data_filename: $!";
my ($idx, $time, $step) = (0, 0, 2);
my $active_aircrafts;
while ( $time < $log_data->{duration}) {
($idx, $active_aircrafts) = get_active_aircrafts($raw_data, $idx, $step);
print OUTFILE "$time \t";
foreach my $a_ac (@{$active_aircrafts}) {
print OUTFILE $a_ac." ";
}
print OUTFILE "\n";
$time+=$step;
}
close OUTFILE;
my $plot_cmd = "plot \"$data_filename\" using 1:11 w p t \"alalalala\"";
# for (my $i=2; $i < $#{@$active_aircrafts}+1; $i++) {
for (my $i=2; $i < 3; $i++) {
$plot_cmd = $plot_cmd."; replot \"$data_filename\" using 1:$i w p t \"ouou\"";
}
print "$plot_cmd\n<br>";
my $url = gen_plot("png size 640,480", "bar.png", $plot_cmd);
return $url;
}
sub get_active_aircrafts {
my ($raw_data, $idx, $step) = @_;
my @a_ac = ();
my $aircrafts = $log_info->{aircrafts};
for (my $i=0; $i <= $#{@$aircrafts}; $i++) {
$a_ac[$i] = 0;
}
my $start_time = $raw_data->[$idx]->{time};
my $curtime;
do {
$curtime = $raw_data->[$idx]->{time};
$a_ac[$raw_data->[$idx]->{sender}] = $raw_data->[$idx]->{sender};
$idx++;
} while ( $curtime < $start_time + $step and $idx < $#{@$raw_data});
return ($idx, \@a_ac);
}
sub gen_plot {
my ($terminal, $filename, $plot_cmd ) = @_;
my $set_terminal_cmd = "set terminal $terminal";
my $set_output_cmd = "set output \"$PAPARAZZI_HOME/var/plot/$filename\"";
my $print_cmd = "$set_terminal_cmd; $set_output_cmd; $plot_cmd";
my $exp = new Expect();
$exp->raw_pty(1);
$Expect::Debug = 10;
my $pid = $exp->spawn("/usr/bin/gnuplot", ("-geometry", "1x1+0+0")) or printf "Don't find gnuplot";
$pid->log_stdout(0);
print("Printing $print_cmd <br>\n");
$exp->send($print_cmd."\n");
my $timeout = 5;
my $foo = $exp->expect($timeout);
print "foo $foo<br>\n";
$exp->hard_close();
return "http://ornette:8889/var/plot/".$filename;
}
sub process_query {
# print "in process_query<br>\n";
my($query) = @_;
@logs = Paparazzi::Log::get_available();
my @files = $query->param('file');
if ($#files >=0 ) {
my $file = $files[0];
$log_info = Paparazzi::Log::read_infos($file);
@aircrafts = @{$log_info->{aircrafts}};
}
# my(@values,$key);
# foreach $key ($query->param) {
# print "<STRONG>$key</STRONG> -> ";
# @values = $query->param($key);
# print join(", ",@values),"<BR>\n";
# }
# print "leaving process_query\n";
}
sub print_tail {
print "<HR>\n";
print "<ADDRESS>Poine.</ADDRESS><BR>\n";
}