X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=cmd%2Fshow%2Fsatellite.pl;h=bede7a89dfd75859adfdf386f385332251f49e32;hb=e0e8331285f425949d9a6717e39707c4310e9ccd;hp=a6c07448c421c4de1d4ffbafeb15c48dceaee830;hpb=9cac31473878fc88778cb13d843fa77c5fd33d65;p=spider.git diff --git a/cmd/show/satellite.pl b/cmd/show/satellite.pl index a6c07448..bede7a89 100644 --- a/cmd/show/satellite.pl +++ b/cmd/show/satellite.pl @@ -4,20 +4,29 @@ # # copyright (c) 1999 Steve Franke K9AN # -# $Id$ +# # +# 2001/12/16 added age of keps in the sh/sat output list. +# Note - there is the potential for problems when satellite name +# is longer than 20 characters. The list shows only the +# first 20 chars, so user won't know the full name. +# So far, it seems that only the GPS sats even come close... my ($self, $line) = @_; my @out; my @f = split /\s+/, $line; -my $satname = uc shift @f; -my $numhours = shift @f; # the number of hours ahead to print -my $step = shift @f; # tracking table resolution in minutes +my $satname = uc shift @f if @f; +my $numhours = shift @f if @f; # the number of hours ahead to print +my $step = shift @f if @f; # tracking table resolution in minutes # default hours and step size $numhours = 3 unless $numhours && $numhours =~ /^\d+$/; +$numhours = 3 if $numhours < 0; +$numhours = 24 if $numhours > 24; $step = 5 unless $step && $step =~ /^\d+$/; +$step = 5 if $step < 0; +$step = 30 if $step > 30; # get nearest lat and long (I can see we will need the altitude here soon as well :-) my $lat = $self->user->lat; @@ -30,16 +39,18 @@ unless ($lon || $lat) { $call = $main::mycall; } -if ($satname && $Sun::keps{$satname}) { - my $jtime; # lats and longs in radians - my ($sec, $min, $hr, $day, $mon, $yr) = (gmtime($main::systime))[0,1,2,3,4,5]; - #printf("%2.2d %2.2d %2.2d %2.2d %2.2d\n",$min,$hr,$day,$mon,$yr); +my $jtime; # lats and longs in radians +my ($sec, $min, $hr, $day, $mon, $yr) = (gmtime($main::systime))[0,1,2,3,4,5]; +#printf("%2.2d %2.2d %2.2d %2.2d %2.2d\n",$min,$hr,$day,$mon,$yr); - $mon++; - $yr += 1900; - $alt=0.0; +$mon++; +$yr += 1900; + +$jtime=Sun::Julian_Day($yr,$mon,$day)+$hr/24+$min/60/24; + +#$DB::single=1; +if ($satname && $Sun::keps{$satname}) { - $jtime=Sun::Julian_Day($yr,$mon,$day)+$hr/24+$min/60/24; ($yr,$mon,$day,$hr,$min)=Sun::Calendar_date_and_time_from_JD($jtime); #printf("%2.2d %2.2d %2.2d %2.2d %2.2d\n",$min,$hr,$day,$mon,$yr); push @out, $self->msg("pos", $call, slat($lat), slong($lon)); @@ -81,15 +92,18 @@ if ($satname && $Sun::keps{$satname}) { my $i = 0; my $sat; foreach $sat (sort keys %Sun::keps) { - if ($i >= 6) { - push @out, join ' + ', @l; + if ($i >= 2) { + push @out,join ' ', @l; @l = (); $i = 0; } - push @l, $sat; + my $epoch=$Sun::keps{$sat}->{epoch}; + my $jt_epoch=Sun::Julian_Date_of_Epoch($epoch); + my $keps_age=int($jtime-$jt_epoch); + push @l, sprintf("%20s: %4s",$sat,$keps_age); $i++; } - push @out, join ' + ', @l; + push @out, join ' ', @l; } return (1,@out);