Thingy dispatcher loop.
+14Feb05=======================================================================
+1. Move version no to 2.01
+2. Add more of the new Thingy infrastructure.
+3. allow authenticated HELLO commands
+4. port DX broadcasts for all flavours of interface.
08Feb05=======================================================================
1. possibly fixed the multiple condition problems on sh/dx
2. added some FAQs.
push @out, VE7CC::dx_spot($self, @$ref);
} else {
if ($real) {
- push @out, $self->format_dx_spot(@$ref);
+ push @out, $self->format_dx_spot($ref);
} else {
push @out, Spot::formatl(@$ref);
}
$self->local_send('C', $buf);
}
-sub format_dx_spot
-{
- my $self = shift;
- my $spot = ref $_[0] ? shift : \@_;
-
- my $t = ztime($spot->[2]);
- my $loc = '';
- my $clth = $self->{consort} eq 'local' ? 29 : 30;
- my $comment = substr $spot->[3], 0, $clth;
- $comment .= ' ' x ($clth - length($comment));
- if ($self->{user}->wantgrid) {
- my $ref = DXUser->get_current($spot->[4]);
- if ($ref) {
- $loc = $ref->qra || '';
- $loc = ' ' . substr($loc, 0, 4) if $loc;
- }
- }
-
- if ($self->{user}->wantdxitu) {
- $loc = ' ' . sprintf("%2d", $spot->[10]) if defined $spot->[10];
- $comment = substr($comment, 0, $self->{consort} eq 'local' ? 26 : 27) . ' ' . sprintf("%2d", $spot->[8]) if defined $spot->[8];
- } elsif ($self->{user}->wantdxcq) {
- $loc = ' ' . sprintf("%2d", $spot->[11]) if defined $spot->[11];
- $comment = substr($comment, 0, $self->{consort} eq 'local' ? 26 : 27) . ' ' . sprintf("%2d", $spot->[9]) if defined $spot->[9];
- } elsif ($self->{user}->wantusstate) {
- $loc = ' ' . $spot->[13] if $spot->[13];
- $comment = substr($comment, 0, $self->{consort} eq 'local' ? 26 : 27) . ' ' . $spot->[12] if $spot->[12];
- }
-
- return sprintf "DX de %-7.7s%11.1f %-12.12s %-s $t$loc", "$spot->[4]:", $spot->[0], $spot->[1], $comment;
-}
-
-# send a dx spot
-sub dx_spot
-{
- my $self = shift;
- my $line = shift;
- my $isolate = shift;
- return unless $self->{dx};
-
- my ($filter, $hops);
-
- if ($self->{spotsfilter}) {
- ($filter, $hops) = $self->{spotsfilter}->it(@_ );
- return unless $filter;
- }
-
- dbg('spot: "' . join('","', @_) . '"') if isdbg('dxspot');
-
- my $buf;
- if ($self->{ve7cc}) {
- $buf = VE7CC::dx_spot($self, @_);
- } else {
- $buf = $self->format_dx_spot(@_);
- $buf .= "\a\a" if $self->{beep};
- $buf =~ s/\%5E/^/g;
- }
-
- $self->local_send('X', $buf);
-}
sub wwv
{
#
-sub send_dx_spot
-{
- my $self = shift;
- my $line = shift;
- my @dxchan = DXChannel->get_all();
- my $dxchan;
-
- # send it if it isn't the except list and isn't isolated and still has a hop count
- # taking into account filtering and so on
- foreach $dxchan (@dxchan) {
- next if $dxchan == $main::me;
- next if $dxchan == $self && $self->is_node;
- $dxchan->dx_spot($line, $self->{isolate}, @_, $self->{call});
- }
-}
-
-sub dx_spot
-{
- my $self = shift;
- my $line = shift;
- my $isolate = shift;
- my ($filter, $hops);
-
- if ($self->{spotsfilter}) {
- ($filter, $hops) = $self->{spotsfilter}->it(@_);
- return unless $filter;
- }
- send_prot_line($self, $filter, $hops, $isolate, $line);
-}
-
sub send_prot_line
{
my ($self, $filter, $hops, $isolate, $line) = @_;
# format a spot for user output in list mode
sub formatl
{
- my $t = ztime($_[2]);
- my $d = cldate($_[2]);
- return sprintf "%8.1f %-11s %s %s %-28.28s%7s>", $_[0], $_[1], $d, $t, $_[3], "<$_[4]" ;
+ my $spot = ref $_[0] ? shift : \@_;
+
+ my $t = ztime($spot->[2]);
+ my $d = cldate($spot->[2]);
+ return sprintf "%8.1f %-11s %s %s %-28.28s%7s>", $spot->[0], $spot->[1], $d, $t, $spot->[3], "<$spot->[4]" ;
+}
+
+# format a spot for normal output
+sub format_dx_spot
+{
+ my $dxchan = shift;
+ my $spot = ref $_[0] ? shift : \@_;
+
+ my $t = ztime($spot->[2]);
+ my $loc = '';
+ my $clth = $dxchan->{consort} eq 'local' ? 29 : 30;
+ my $comment = substr $spot->[3], 0, $clth;
+ $comment .= ' ' x ($clth - length($comment));
+ if ($dxchan->{user}->wantgrid) {
+ my $ref = DXUser->get_current($spot->[4]);
+ if ($ref) {
+ $loc = $ref->qra || '';
+ $loc = ' ' . substr($loc, 0, 4) if $loc;
+ }
+ }
+
+ if ($dxchan->{user}->wantdxitu) {
+ $loc = ' ' . sprintf("%2d", $spot->[10]) if defined $spot->[10];
+ $comment = substr($comment, 0, $dxchan->{consort} eq 'local' ? 26 : 27) . ' ' . sprintf("%2d", $spot->[8]) if defined $spot->[8];
+ } elsif ($dxchan->{user}->wantdxcq) {
+ $loc = ' ' . sprintf("%2d", $spot->[11]) if defined $spot->[11];
+ $comment = substr($comment, 0, $dxchan->{consort} eq 'local' ? 26 : 27) . ' ' . sprintf("%2d", $spot->[9]) if defined $spot->[9];
+ } elsif ($dxchan->{user}->wantusstate) {
+ $loc = ' ' . $spot->[13] if $spot->[13];
+ $comment = substr($comment, 0, $dxchan->{consort} eq 'local' ? 26 : 27) . ' ' . $spot->[12] if $spot->[12];
+ }
+
+ return sprintf "DX de %-7.7s%11.1f %-12.12s %-s $t$loc", "$spot->[4]:", $spot->[0], $spot->[1], $comment;
}
#
if ($dxchan->{ve7cc}) {
$buf = VE7CC::dx_spot($dxchan, $thing->{spotdata});
} else {
- $buf = $dxchan->format_dx_spot($thing->{spotdata});
+ $buf = Spot::format_dx_spot($dxchan, $thing->{spotdata});
$buf .= "\a\a" if $dxchan->{beep};
$buf =~ s/\%5E/^/g;
}
sub dx_spot
{
my $self = shift; # this may be useful some day
- my $freq = shift;
- my $spotted = shift;
- my $t = shift;
+ my $spot = ref $_[0] ? shift : \@_;
+ my $freq = $spot->[0];
+ my $spotted = $spot->[1];
+ my $t = $spot->[2];
my $loc_spotted = '';
my $loc_spotter = '';
my $ref = DXUser->get_current($spotted);
}
# remove any items above the top of the max spot data
- pop while @_ > 11;
+ pop while @_ > 14;
# make sure both US states are defined
- $_[9] ||= '';
- $_[10] ||= '';
+ $_[12] ||= '';
+ $_[13] ||= '';
my $spotted_cc = (Prefix::cty_data($spotted))[5];
- my $spotter_cc = (Prefix::cty_data($_[1]))[5];
- $ref = DXUser->get_current($_[1]);
+ my $spotter_cc = (Prefix::cty_data($_[4]))[5];
+ $ref = DXUser->get_current($_[4]);
if ($ref) {
my $loc = $ref->qra || '';
$loc_spotter = substr($loc, 0, 4) if $loc;
}
- return sprintf("CC11^%0.1f^%s^", $freq, $spotted) . join('^', cldate($t), ztime($t), @_, $spotted_cc, $spotter_cc, $loc_spotted, $loc_spotter);
+ return sprintf("CC11^%0.1f^%s^", $freq, $spotted) . join('^', cldate($t), ztime($t), @$spot[3..-1], $spotted_cc, $spotter_cc, $loc_spotted, $loc_spotter);
}
1;