mirror of https://github.com/wb2osz/direwolf.git
More comments.
This commit is contained in:
parent
cac83f2506
commit
dbb4777ba7
|
@ -164,7 +164,34 @@ void digipeater (int from_chan, packet_t pp)
|
||||||
/*
|
/*
|
||||||
* First pass: Look at packets being digipeated to same channel.
|
* First pass: Look at packets being digipeated to same channel.
|
||||||
*
|
*
|
||||||
* We want these to get out quickly.
|
* We want these to get out quickly, bypassing the usual random wait time.
|
||||||
|
*
|
||||||
|
* Some may disagree but I followed what WB4APR had to say about it.
|
||||||
|
*
|
||||||
|
* http://www.aprs.org/balloons.html
|
||||||
|
*
|
||||||
|
* APRS NETWORK FRATRICIDE: Generally, all APRS digipeaters are supposed to transmit
|
||||||
|
* immediately and all at the same time. They should NOT wait long enough for each
|
||||||
|
* one to QRM the channel with the same copy of each packet. NO, APRS digipeaters
|
||||||
|
* are all supposed to STEP ON EACH OTHER with every packet. This makes sure that
|
||||||
|
* everyone in range of a digi will hear one and only one copy of each packet.
|
||||||
|
* and that the packet will digipeat OUTWARD and not backward. The goal is that a
|
||||||
|
* digipeated packet is cleared out of the local area in ONE packet time and not
|
||||||
|
* N packet times for every N digipeaters that heard the packet. This means no
|
||||||
|
* PERSIST times, no DWAIT times and no UIDWAIT times. Notice, this is contrary
|
||||||
|
* to other packet systems that might want to guarantee delivery (but at the
|
||||||
|
* expense of throughput). APRS wants to clear the channel quickly to maximize throughput.
|
||||||
|
*
|
||||||
|
* http://www.aprs.org/kpc3/kpc3+WIDEn.txt
|
||||||
|
*
|
||||||
|
* THIRD: Eliminate the settings that are detrimental to the network.
|
||||||
|
*
|
||||||
|
* * UIDWAIT should be OFF. (the default). With it on, your digi is not doing the
|
||||||
|
* fundamental APRS fratricide that is the primary mechanism for minimizing channel
|
||||||
|
* loading. All digis that hear the same packet are supposed to DIGI it at the SAME
|
||||||
|
* time so that all those copies only take up one additional time slot. (but outward
|
||||||
|
* located digs will hear it without collision (and continue outward propagation)
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
for (to_chan=0; to_chan<MAX_CHANS; to_chan++) {
|
for (to_chan=0; to_chan<MAX_CHANS; to_chan++) {
|
||||||
|
@ -180,7 +207,7 @@ void digipeater (int from_chan, packet_t pp)
|
||||||
save_digi_config_p->filter_str[from_chan][to_chan]);
|
save_digi_config_p->filter_str[from_chan][to_chan]);
|
||||||
if (result != NULL) {
|
if (result != NULL) {
|
||||||
dedupe_remember (pp, to_chan);
|
dedupe_remember (pp, to_chan);
|
||||||
tq_append (to_chan, TQ_PRIO_0_HI, result);
|
tq_append (to_chan, TQ_PRIO_0_HI, result); // High priority queue.
|
||||||
digi_count[from_chan][to_chan]++;
|
digi_count[from_chan][to_chan]++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -207,7 +234,7 @@ void digipeater (int from_chan, packet_t pp)
|
||||||
save_digi_config_p->filter_str[from_chan][to_chan]);
|
save_digi_config_p->filter_str[from_chan][to_chan]);
|
||||||
if (result != NULL) {
|
if (result != NULL) {
|
||||||
dedupe_remember (pp, to_chan);
|
dedupe_remember (pp, to_chan);
|
||||||
tq_append (to_chan, TQ_PRIO_1_LO, result);
|
tq_append (to_chan, TQ_PRIO_1_LO, result); // Low priority queue.
|
||||||
digi_count[from_chan][to_chan]++;
|
digi_count[from_chan][to_chan]++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue