[aprssig] Question about 'H-bit' handling and WIDEn-N paths
Curt Mills
archer at eskimo.com
Fri Jan 28 01:19:25 EST 2005
On Thu, 27 Jan 2005, James Washer wrote:
> You say the "first wide" will have the H-bit set. My (possibly
> mistaken) understanding of WIDE3-3 path is that there is only ONE
> path "slot" taken up, and each subsequent wide digi will just
> re-write that one entry with a WIDE3-2, WIDE3-1 etc. So there's
> only the one H-bit to play with.
>
> That's where my concern is.. If you set the H-bit of that one,
> subsequent digi's will just ignore the remaining "hops".
>
> Where am I headed? I'm writing my own digi stack for a small
> microcontroller to make an inexpensive digi, and I want to get the
> "details" correct.
The correct answer is that the AX.25 spec doesn't have anything to
do specifically with the WIDEn-N APRS additions.
When the last number of the WIDEn-N gets decremented down to 1, you
set the "has-been-digipeated" bit for that digipeater field so that
it is ignored. You check the H-bits starting at the first one on
reception, and ignore any that already have the H-bit set. This
causes the digipeaters to walk through the repeater fields
one-by-one. APRS tweaked it a bit so that you can get more than one
digipeat for each repeater field, but the digi has to be smart
enough to decrement that second number each time it digipeaters.
Only a few have the smarts to do that.
Along with the WIDEn-N/TRACEn-N stuff, the KPC-3+ digis have a dupe
queue and they refuse to digi a packet that's already been digi'd by
them. Unfortunately they only do that for the n-N stuff and not for
RELAY or WIDE digipeats.
Digi_ned has the capability to do pre-emptive digipeating, where it
can skip over unused calls and set the previous H-bits if it finds
a later digipeater call that it matches. That way you can send to
something like RELAY,WIDE, and if it has WIDE in it as an alias but
not RELAY, it will digipeat it out as RELAY*,WIDE* whether it heard
it as "RELAY,WIDE" or "RELAY*,WIDE". Very cool stuff.
The dupe queue is one of the nicest things about the
WIDEn-N/TRACEn-N system. Consider implementing that if you have
enough RAM in your microcontroller. Just saving a CRC-16 for each
heard one, for 30 seconds or so, might be enough. You wouldn't have
to save each packet for 30 seconds.
If you don't mind my asking, what uP are you using?
--
Curt, WE7U. archer at eskimo dot com
http://www.eskimo.com/~archer
Lotto: A tax on people who are bad at math. - unknown
Windows: Microsoft's tax on computer illiterates. - WE7U.
The world DOES revolve around me: I picked the coordinate system!"
More information about the aprssig
mailing list