OpenBCM V1.13 (Linux)

Packet Radio Mailbox

DB0FHN

[JN59NK Nuernberg]

 Login: GUEST





  
ZL3AI  > APRDIG   04.10.03 11:18l 252 Lines 9877 Bytes #999 (0) @ WW
BID : 2077-ZL3AI
Read: GUEST
Subj: TAPR Digest, Oct 01, 2/11
Path: DB0FHN<DB0RGB<OK0PPL<DB0RES<ON0AR<7M3TJZ<F6CDD<EA5RQ<VK4TUB<ZL2BAU<
      ZL3VML
Sent: 031003/1340Z @:ZL3VML.#80.NZL.OC #:9637 [Chch-NZ] FBB7.00i $:2077-ZL3AI
From: ZL3AI@ZL3VML.#80.NZL.OC
To  : APRDIG@WW

Subject: Re: DigiNed in dedicated flash devices ??
From: tvsjr <tvsjr@sprynet.com>
Date: Wed, 01 Oct 2003 00:58:38 -0500
X-Message-Number: 8

There are several PDAs available (such as the Sharp Zaurus, iPaq, etc.) 
that can run Linux natively. Rather than trying to run a DOS emulator on 
top of an inherently unstable OS, it might be worth looking at running 
something natively in Linux...

73,
Terry/N5RSE

----------------------------------------------------------------------

Subject: Re: Take Control of your DIGI part 4
From: Henk de Groot <henk.de.groot@hetnet.nl>
Date: Wed, 01 Oct 2003 00:12:54 +0200
X-Message-Number: 9

Hello Scott,

At 13:51 30-9-03 -0700, Scott Miller wrote:
>Henk, what are DIGI_NED's requirements for RAM and program space?  Is there
>any chance that it could be squeezed into an embedded platform, like maybe a
>KPC-3?  How much OS-dependent stuff has it got?

This is what Borland C++ 3.1 reports for the DOS compile:

File          Lines     Code     Data
-------------------------------------
MAIN.C          648     1275     1026
CALL.C          479     1239      517
DIGIPEAT.C     1655     6973     2712
GENLIB.C        751     2318      686
KEEP.C          300      814      674
MAC_IF.C       1240     3567      622
MESSAGE.C      3194    13833     4244
OUTPUT.C        757     3552     2039
READ_INI.C      710     3510     1444
SEND.C          780     2979      641
TIMER.C         154      285        0
MHEARD.C        401     1343       43
DISTANCE.C     1275     4874      257
DX.C           1145     4680     2688
PREEMPT.C       628     2569      744
TELEMETR.C     1233     5398     1466
COMMAND.C       488     1615     1106
DIGI_DOS.C      403      794       77
SAT.C           349     1211      128
PREDICT.C      1563    12894     4927
SERIAL.C        690     2887      860
IBMCOM.C        558     1221     4172
WX.C           1036     4932     1340
             -------+ -------+ -------+
Total:        20437    84763    32413

(This is the latest version I had on my DOS computer on which I build for 
DOS with only some very small changes compared to the last distributed
source).

The amount of dynamic storage depends on your configuration. It needs to 
store the rules in expanded form. Furthermore it depends on how long 
packets must be remebered and how many calls to keep in the heard list. I 
know that keeping 400 stations in the heard list does not fill up all 640 
kB DOS memory, never checked where the limit is. When DIGI_NED runs out of 
memory it just skips the action that needed the memory so it keeps on going 
without crashing.

When loaded with the default rule-file the program "mem /c" (shelled out of 
DIGI_NED with ALT-D) reports that DIGI_NED uses 200 kB. Additional the 
mac-layer driver uses 52 kB, but when making a TNC version that needs to be 
rewritten and can be a lot smaller.

DIGI_NED uses very little OS specific stuff. It uses normal C standard I/O 
and time(). For the DOS version software interrupts are used to communicate 
with the mac-lay TSR, but you do not need that. The telemetry and remote 
control stuff uses direct I/O to the serial and parallel port. The 
satellite tracker stuff uses math functions.

You can strip the code however. You don't need telemetry, the sat tracker, 
the WX stuff and maybe you also want to get rid of the message functions 
and only keep the core digipeater. You can see in the list above roughly 
what savings that will give. Most of these features are compiled in with a 
compile-flag. When I compile without SATTRACKER, TELEMETRY, OUTPORT 
(=remote control of the bits on the LPT port), SERIAL (raw GPS/ULTIMETER 
serial in) and WX and then load DIGI_NED and let it read the default 
rulefile, "mem /c" reports 151 kB. When instead of the default rulefile the 
rulefile for simple RELAY use is loaded the used space is 124 kB, so 
storage of the default digipeating rules takes roughly 27 kB.

Furthermore reading and interpreting the rulefile could be done off-line by 
a separate program so it can be loaded into the digi in a ready to use 
binary format. This way it should be able to make it small enough for an 
embedded platform (but most likely too much for a Z80). You have to figure 
out a way to load configuration data and what to do about remote control 
since the trick used for DOS to load NetCHL or something similar to do the 
upload doesn't work for an embedded system... What should be feasible is to 
make a Palm version out of this...

There are also oportunities to optimize the code for space. I didn't worry 
too much since 640 kB provides more than enough space for any application
:-).

I hope this answers your question. Maybe further discussions about this 
should be off SIG, I think this is too detailed and too specific for most 
SIG readers...

Kind regards,

Henk.

----------------------------------------------------------------------

Subject: Automated User Education
From: "Ev Tupis (W2EV)" <w2ev@arrl.net>
Date: Wed, 01 Oct 2003 07:02:51 -0400
X-Message-Number: 10

OK developers...here's one for you...

APRSniffer (maybe a UI-View plug-in?)
o Monitors traffic
o Analyzes it for "path abuse" (definition of "abuse" can vary by geography!)
o Sends an APRS screen-message to stations, suggesting a change if appropriate

Education is a very strong tool.  Automating it can help.

RELAY,TRACE2-2 means more fun for everyone.

Ev, W2EV

----------------------------------------------------------------------

Subject: RE:  Random backoff
From: Henk de Groot <henk.de.groot@hetnet.nl>
Date: Wed, 01 Oct 2003 11:52:47 +0200
X-Message-Number: 11

Hello Bob,

At 18:00 30-9-03 -0400, Bob Bruninga wrote:
>Hold on.  SLOT TIME and PERSIST only work in a connnected envrionment with
>retries. (IE, regular packet)  APRS is a UI system that has no retries,
>thus no PERSIST.  Yes we can assign SLOTS based on GPS timing, but NONE of

No, thats RESP and FRACK. SLOTTIME and PERSIST are used to find an empty 
channel. It works this way:

A) The TNC listens to the RF channel
B) If the channel is busy the TNC waits SLOTTIME, then goto A in this sequence
C) If the channel is empty get a random number between 0 and 255
    If the number is bigger than PERSIST then wait SLOTTIME and goto A in 
this sequence
D) If the random number is lower or equal to PERSIST access is granted, 
start transmision

So the channel needs to be empty, if not then wait SLOTTIME (usually 100 
ms) and retry. This avoids that the station jumps in immediatly after the 
carrier vanishes and causes collisions with other TNCs that do the same. 
Since TNCs are not time synchronized, they attempt to jump in at slightly 
different moments avoiding collisions due polling of the channel at 
SLOTTIME interval.

If the channel is empty then there is a gamble which of the TNCs is allowed 
to transmit. With PERSIST set to 64 there is a chance of 1 out of 4 (in 
fact 64 out of 256) that your station is granted access to the channel. The 
other TNCs will have an equal chance and this lowers the probability of two 
TNC be granted access at the same time (1 out of 16 with 2 TNCs). When the 
TNC is not granted access it has to wait SLOTTIME and then if the channel 
is still empty take another random number and match it again with PERSIST, 
until access is granted.

As you see this has purely to do with channel access and is independent of 
connected or unconnected packet mode. This collision avoidance system only 
works well if you can hear if the channel is busy. Also important is that 
if the TNC is granted access that the channel is claimed immediately, in 
our radio environment TXDelay of the transmitter gets in the way here.

For ethernet for example this mechanism works very well (but they also have 
collision detect, the mechanism here is CSMA, ethernet is CSMACD). In APRS 
a station often cannot see if the channel is busy, so the effect of this 
mechanism is far from optimal. APRS is not like CSMA but more like Aloha 
where you transmit at will without listening.

To get a TNC to respond immediately the SLOTTIME must be set to 0 (if that 
means infinite set it to 1) and PERSIST set to 255 (so the random number 
will never be higher and you are always granted access at the first try). 
Note! Kenwood has PERSIST the wrong way arround, there you have to set it 
to zero, with 255 a Kenwood will never transmit (may also apply to other 
TASCO TNC implementations, e.g. Alinco).

I hope this clears this part up. Kind regards,

Henk.

----------------------------------------------------------------------

Subject: PERL APRS Stream SPLIT
From: "Andrew Rich" <vk4tec@hotmail.com>
Date: Wed, 01 Oct 2003 21:31:27 +1000
X-Message-Number: 12

For those interested in learning more about APRS, here is my latest code in 
PERL.
Splits the APRS stream up into relevant bits, callsign, dest, digis, 
payload, email, webpage.

#!/usr/bin/perl
use Net::Telnet;
my $host = "aprs.net.au";
my (@data, $line);
my $t = new Net::Telnet(Timeout=> '5', port => '10153');
$t->errmode('return');
$t->Net::Telnet::open($host);
sleep 5;
print $t "user VK4TEC pass <pass> vers XASTIR \n";
while (<$t>)
{
chop;
$email="";
$webpg="";
if (m/.*\s+([a-zA-Z0-9\+_.-]+)\@([a-zA-Z0-9.-]+)\s+/)
{
$email = $1."@".$2;
}
if (m/http:\/\/([a-zA-Z0-9.-]+)\s+/)
{
$webpg = $1;
}
($callsign, $rest) = split(/>/,$_,2);
($dest, $rest) = split(/,/,$rest,2);
($digis, $payload) = split(/:/,$rest,2);
$payload =~ s/'/\\'/g,$payload;
print 
"-------------------------------------------------------------------------------
-------------------------\n";
print "data :  $_";
print "calls:  $callsign\n";
print "dest :  $dest\n";
print "digis:  $digis\n";
print "payld:  $payload\n";
print "email:  $email\n";
print "webpg:  $webpg\n";
}

----------------------------------------------------------------------



Read previous mail | Read next mail


 28.10.2026 14:43:11lGo back Go up