+ ++$want unless $want; # send everything if nothing is selected.
+
+
+ $self->dx_spot($dxchan, $sref) if $want;
+ }
+}
+
+sub dx_spot
+{
+ my $self = shift;
+ my $dxchan = shift;
+ my $sref = shift;
+
+# return unless $dxchan->{rbn};
+
+ my ($filter, $hops);
+
+ if ($dxchan->{rbnfilter}) {
+ ($filter, $hops) = $dxchan->{rbnfilter}->it($sref);
+ return unless $filter;
+ } elsif ($self->{rbnfilter}) {
+ ($filter, $hops) = $self->{rbnfilter}->it($sref);
+ return unless $filter;
+ }
+
+# dbg('RBN::dx_spot spot: "' . join('","', @$sref) . '"') if isdbg('rbn');
+
+ my $buf;
+ if ($self->{ve7cc}) {
+ $buf = VE7CC::dx_spot($dxchan, @$sref);
+ } else {
+ $buf = $self->format_dx_spot(@$sref);
+ $buf =~ s/\%5E/^/g;
+ }
+ $dxchan->local_send('N', $buf);
+}
+
+sub format_dx_spot
+{
+ my $self = shift;
+
+ my $t = ztime($_[2]);
+ my $clth = $self->{consort} eq 'local' ? 29 : 30;
+ my $comment = $_[3] || '';
+ my $loc = '';
+ my $ref = DXUser::get_current($_[1]);
+ if ($ref && $ref->qra) {
+ $loc = ' ' . substr($ref->qra, 0, 4);
+ }
+ $comment .= ' ' x ($clth - (length($comment)+length($loc)+1));
+ $comment .= $loc;
+ $loc = '';
+ my $ref = DXUser::get_current($_[4]);
+ if ($ref && $ref->qra) {
+ $loc = ' ' . substr($ref->qra, 0, 4);
+ }
+ return sprintf "RB de %-7.7s%11.1f %-12.12s %-s $t$loc", "$_[4]:", $_[0], $_[1], $comment;
+}