projects
/
spider.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
force PC39 on ak1a disconnects
[spider.git]
/
cmd
/
show
/
qra.pl
diff --git
a/cmd/show/qra.pl
b/cmd/show/qra.pl
index fe3f08abc59d555918a2dcf826816bb17aa9ac95..2bbb606f6206689fdbf27c4722781c13aed23aa0 100644
(file)
--- a/
cmd/show/qra.pl
+++ b/
cmd/show/qra.pl
@@
-9,8
+9,9
@@
my ($self, $line) = @_;
my @list = split /\s+/, $line; # generate a list of callsigns
my ($self, $line) = @_;
my @list = split /\s+/, $line; # generate a list of callsigns
-my $l;
my @out;
my @out;
+my $fll;
+my $tll;
my $lat = $self->user->lat;
my $long = $self->user->long;
if (!$long && !$lat) {
my $lat = $self->user->lat;
my $long = $self->user->long;
if (!$long && !$lat) {
@@
-19,8
+20,16
@@
if (!$long && !$lat) {
$long = $main::mylongitude;
}
$long = $main::mylongitude;
}
+my $fqra = DXBearing::is_qra($list[0]);
+my $sqra = $list[0] =~ /^[A-Za-z][A-Za-z]\d\d$/;
+my $ll = $line =~ /^\d+\s+\d+\s*[NSns]\s+\d+\s+\d+\s*[EWew]/;
return (1, $self->msg('qrashe1')) unless @list > 0;
return (1, $self->msg('qrashe1')) unless @list > 0;
-return (1, $self->msg('qrae2')) unless (DXBearing::is_qra($list[0]) || $list[0] =~ /^[A-Za-z][A-Za-z]\d\d$/);
+return (1, $self->msg('qrae2', $list[0])) unless $fqra || $sqra || $ll;
+
+if ($ll) {
+ my ($llat, $llong) = DXBearing::stoll($line);
+ return (1, "QRA $line = " . DXBearing::lltoqra($llat, $llong));
+}
#print "$lat $long\n";
#print "$lat $long\n";
@@
-31,9
+40,10
@@
if (@list > 1) {
$f = $l;
$f .= 'MM' if $f =~ /^[A-Z][A-Z]\d\d$/;
($lat, $long) = DXBearing::qratoll($f);
$f = $l;
$f .= 'MM' if $f =~ /^[A-Z][A-Z]\d\d$/;
($lat, $long) = DXBearing::qratoll($f);
+ $fll = DXBearing::lltos($lat, $long);
#print "$lat $long\n";
#print "$lat $long\n";
- return (1, $self->msg('qrae2')) unless (DXBearing::is_qra($list[1]) || $list[1] =~ /^[A-Za-z][A-Za-z]\d\d$/);
+ return (1, $self->msg('qrae2'
, $list[1]
)) unless (DXBearing::is_qra($list[1]) || $list[1] =~ /^[A-Za-z][A-Za-z]\d\d$/);
$l = uc $list[1];
}
$l = uc $list[1];
}
@@
-41,11
+51,18
@@
$l .= 'MM' if $l =~ /^[A-Z][A-Z]\d\d$/;
my ($qlat, $qlong) = DXBearing::qratoll($l);
#print "$qlat $qlong\n";
my ($qlat, $qlong) = DXBearing::qratoll($l);
#print "$qlat $qlong\n";
+$fll = DXBearing::lltos($lat, $long);
+$fll =~ s/\s+([NSEW])/$1/g;
+$tll = DXBearing::lltos($qlat, $qlong);
+$tll =~ s/\s+([NSEW])/$1/g;
+
my ($b, $dx) = DXBearing::bdist($lat, $long, $qlat, $qlong);
my ($r, $rdx) = DXBearing::bdist($qlat, $qlong, $lat, $long);
my ($b, $dx) = DXBearing::bdist($lat, $long, $qlat, $qlong);
my ($r, $rdx) = DXBearing::bdist($qlat, $qlong, $lat, $long);
-my $to = " -> $list[1]" if $f;
-my $from = $list[0];
+my $to = '';
+
+$to = "->\U$list[1]($tll)" if $f;
+my $from = "\U$list[0]($fll)" ;
-push @out, sprintf "$
list[0]$to Bearing: %.0f Deg. Recip: %.0f Deg. %.0fMi. %.0fKm.
", $b, $r, $dx * 0.62133785, $dx;
+push @out, sprintf "$
from$to To: %.0f Fr: %.0f Dst: %.0fMi %.0fKm
", $b, $r, $dx * 0.62133785, $dx;
return (1, @out);
return (1, @out);