summaryrefslogtreecommitdiff
path: root/packaging/rpm/httpd/skyview.cgi
blob: a3f640617ab3acb04490eaf2f2da6c2ae29013b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/perl
use warnings;
use strict;
use GD::Graph::Polar;
use Net::GPSD3 0.14;
use CGI;

=head1 NAME

skyview.cgi - Builds a Skyview PNG image from a POLL request to a GPSD server

=head1 COPYRIGHT

Copyright (c) 2011 - Michael R. Davis

This program is free software licensed under The BSD License.

=cut

my $cgi=CGI->new;

my $host=$cgi->param("host") || undef;
my $port=$cgi->param("port") || undef;
my $gpsd=Net::GPSD3->new(host=>$host, port=>$port);

my $size=$cgi->param("size") || 380;
my $gd=GD::Graph::Polar->new(size=>$size, radius=>90, border=>3, ticks=>9);

my $poll;
eval '$poll=$gpsd->poll';
my $error=$@;
if ($error) {
  chomp $error;
  $gd->color([248,8,8]);   #red
  $gd->addString(127=>134.5, $error);
} else {
  foreach my $sat ($poll->sky->Satellites) {
    if ($sat->ss > 34) {
      $gd->color([16,240,16]);   #green
    } elsif ($sat->ss >= 30) {
      $gd->color([240,240,16]);  #yellow
    } elsif ($sat->ss >= 10) {
      $gd->color([240,16,16]);   #red
    } else {
      $gd->color([128,128,128]); #gray
    }
    $gd->addGeoPoint(90-$sat->el => $sat->az);
    $gd->color([16,16,16]); 
    $gd->addGeoString(90-$sat->el => $sat->az, $sat->prn);
  }
}
$gd->color([210,210,210]); #gray
$gd->addGeoString(122 => 227.0, "Copyright (c) 2011                            Michael R. Davis");

print "Content-type: image/png\n\n", $gd->draw;