Giter Club home page Giter Club logo

ka9q-unix's People

Contributors

erikarn avatar jmgurney avatar ke6jjj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

ka9q-unix's Issues

Support XKISS TNCs and enhance stack to use it

Summary

XKISS is a protocol enhancement to TNCs which provides, among other things, notifications when packets have actually been transmitted over the air. This notification feature can be useful for improving the throughput and behavior of the station on the network.

This is a placeholder task for such a feature.

Make this compile/run on linux

This needs a few tweaks to compile/run on linux:

  • no funopen() support on earlier linux's, so need to check for funopen and set HAVE_FUNOPEN appropriately
  • it'll pull in format.c if it's not set (for _format), so conditionally include that
  • need to update the include guards on the include files to not clash with system headers - eg errno.h needs to be KA9Q_ERRNO_H, not just _ERRNO_H
  • srandomdev isn't on linux - need to detect on it and use srandom(time()) instead.

Figure out why the same 7 packets keep being repeated over and over again in transmit

The ka9q (and n0ary-bbs) stack handles back to back RR and REJ's very poorly.

Notably, RNR/REJ can cause inv_rex() to be called, clearing axp->unack, and thus queuing a new set of transmit attempts. If the sender sends a bunch of RR/RNR/REJ's in a burst in response to sent traffic (eg if there's no T2 timer support, or it's too short, or it's broken!) then this results in the stack making some pretty poor decisions about what to send and when.

So, whilst I'm adding T2 support for data/control paths to KA9Q, it may be interesting to track when a full burst was sent and not re-trigger it until T1 expires and/or we receive an S/I frame with an updated sequence number. That way even if T2 expires and we're ready to send some more data, we won't be sending another packet burst if we've already /sent/ a packet burst.

Extend the ax25 timers, maxpacket, etc fields to be per interface

right now a bunch of ax25 configuration parameters are global rather than per interface. This has the unfun side effect of making it less interesting to run a single ka9q instance with multiple TNCs spanning 1200 VHF, 9600 baud UHF and 300 baud HF.

The easiest way to address this would be to move a bunch of configuration to be per interface and configured using ifconfig. it means ifconfig will need to grow some per-linklevel state that gets copied over into the ax25 control block upon creating a connection but i think it's doable.

fix up unproto ax25 socket handling lifecycle - stuff blocks forever on close/shutdown, etc

The ax25 UI socket handling is broken - notably there's only a single UI socket - Axui_sock - used for listening for AX25 ui frames.

The problem is that it's a special case with a special queue (Bcq) with special cases for being woken up (via ksignal). The normal close path (kshutdown, close_s in sock.c) doesn't see this as a "connected" socket, so it doesn't /actually/ close the socket properly and it doesn't signal the owner that it should unblock and start failing things.

Sequence number logic and retransmissions

Here's a fun one.

If maxframes is set to 8, retransmission bursts that SHOULD have been ACKed are .. not treated as ACKed.

Here's an example.

N0ARY-1 audio level = 99(56/40)   [NONE]   _||||||__
[0.3] N0ARY-1>KK6VQK-1:(RR res, n(r)=3, f=0)
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=3, n(r)=0, p=0, pid=0xf0) 3:So, to answer in reverse order.                                                                                                                                                     <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=4, n(r)=0, p=0, pid=0xf0) 4:                                                                                                                                                                                    <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=5, n(r)=0, p=0, pid=0xf0) 5:The sysop these days is KE6JJJ.  I've been working with him on trying to                                                                                                            <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=6, n(r)=0, p=0, pid=0xf0) 6:improve the AX.25 stack in both the n0ary-bbs TNC (which is the AX.25                                                                                                               <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=7, n(r)=0, p=0, pid=0xf0) 7:stack from an older copy of KA9Q) and the more recent (for values of                                                                                                                <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=0, n(r)=0, p=0, pid=0xf0) 8:"recent" !) KA9Q stack Jeremy ported to *NIX.                                                                                                                                       <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=1, n(r)=0, p=0, pid=0xf0) 9:                                                                                                                                                                                    <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=2, n(r)=0, p=0, pid=0xf0)10:The TL;DR is this:                                              /abort<0x0d>

N0ARY-1 audio level = 100(59/39)   [NONE]   _|||||||_
[0.4] N0ARY-1>KK6VQK-1:(RR res, n(r)=3, f=0)
[0L] KK6VQK-1>N0ARY-1:(RR cmd, n(r)=0, p=1)

N0ARY-1 audio level = 99(55/40)   [NONE]   _|||||||_
[0.4] N0ARY-1>KK6VQK-1:(RR res, n(r)=3, f=1)
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=3, n(r)=0, p=0, pid=0xf0) 3:So, to answer in reverse order.                                                                                                                                                     <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=4, n(r)=0, p=0, pid=0xf0) 4:                                                                                                                                                                                    <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=5, n(r)=0, p=0, pid=0xf0) 5:The sysop these days is KE6JJJ.  I've been working with him on trying to                                                                                                            <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=6, n(r)=0, p=0, pid=0xf0) 6:improve the AX.25 stack in both the n0ary-bbs TNC (which is the AX.25                                                                                                               <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=7, n(r)=0, p=0, pid=0xf0) 7:stack from an older copy of KA9Q) and the more recent (for values of                                                                                                                <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=0, n(r)=0, p=0, pid=0xf0) 8:"recent" !) KA9Q stack Jeremy ported to *NIX.                                                                                                                                       <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=1, n(r)=0, p=0, pid=0xf0) 9:                                                                                                                                                                                    <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=2, n(r)=0, p=0, pid=0xf0)10:The TL;DR is this:                                              /abort<0x0d>

N0ARY-1 audio level = 99(56/41)   [NONE]   _|||||||_
[0.4] N0ARY-1>KK6VQK-1:(RR res, n(r)=3, f=0)
[0L] KK6VQK-1>N0ARY-1:(RR cmd, n(r)=0, p=1)
  • I send a burst
  • I get an ACK RR for all of the frames
  • I already had a poll queued, so I poll RR
  • N0ARY sends back a poll response with the correct n(r)
  • .. but somewhere the transmit logic gets confused and thinks it has to send it again.

This happens a number of times, until:

[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=3, n(r)=0, p=0, pid=0xf0) 3:So, to answer in reverse order.                                                                                                                                                     <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=4, n(r)=0, p=0, pid=0xf0) 4:                                                                                                                                                                                    <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=5, n(r)=0, p=0, pid=0xf0) 5:The sysop these days is KE6JJJ.  I've been working with him on trying to                                                                                                            <0x0d>
Q[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=6, n(r)=0, p=0, pid=0xf0) 6:improve the AX.25 stack in both the n0ary-bbs TNC (which is the AX.25                                                                                                               <0x0d>
Q[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=7, n(r)=0, p=0, pid=0xf0) 7:stack from an older copy of KA9Q) and the more recent (for values of                                                                                                                <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=0, n(r)=0, p=0, pid=0xf0) 8:"recent" !) KA9Q stack Jeremy ported to *NIX.                                                                                                                                       <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=1, n(r)=0, p=0, pid=0xf0) 9:                                                                                                                                                                                    <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=2, n(r)=0, p=0, pid=0xf0)10:The TL;DR is this:                                              /abort<0x0d>


N0ARY-1 audio level = 99(56/41)   [NONE]   _|||||||_
[0.4] N0ARY-1>KK6VQK-1:(RR res, n(r)=3, f=0)
[0L] KK6VQK-1>N0ARY-1:(RR cmd, n(r)=0, p=1)

N0ARY-1 audio level = 99(55/40)   [NONE]   _||||||__
[0.3] N0ARY-1>KK6VQK-1:(RR res, n(r)=3, f=1)
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=3, n(r)=0, p=0, pid=0xf0) 3:So, to answer in reverse order.                                                                                                                                                     <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=4, n(r)=0, p=0, pid=0xf0) 4:                                                                                                                                                                                    <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=5, n(r)=0, p=0, pid=0xf0) 5:The sysop these days is KE6JJJ.  I've been working with him on trying to                                                                                                            <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=6, n(r)=0, p=0, pid=0xf0) 6:improve the AX.25 stack in both the n0ary-bbs TNC (which is the AX.25                                                                                                               <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=7, n(r)=0, p=0, pid=0xf0) 7:stack from an older copy of KA9Q) and the more recent (for values of                                                                                                                <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=0, n(r)=0, p=0, pid=0xf0) 8:"recent" !) KA9Q stack Jeremy ported to *NIX.                                                                                                                                       <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=1, n(r)=0, p=0, pid=0xf0) 9:                                                                                                                                                                                    <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=2, n(r)=0, p=0, pid=0xf0)10:The TL;DR is this:                                              /abort<0x0d>

N0ARY-1 audio level = 99(55/40)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(RR res, n(r)=1, f=0)
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=3, n(r)=0, p=0, pid=0xf0)/abort<0x0d>

N0ARY-1 audio level = 99(55/40)   [NONE]   _|||||||_
[0.4] N0ARY-1>KK6VQK-1:(REJ res, n(r)=1, f=0)
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=1, n(r)=0, p=0, pid=0xf0) 9:                                                                                                                                                                                    <0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=2, n(r)=0, p=0, pid=0xf0)10:The TL;DR is this:                                              /abort<0x0d>
[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=3, n(r)=0, p=0, pid=0xf0)/abort<0x0d>

N0ARY-1 audio level = 99(54/40)   [NONE]   _||||||__
[0.3] N0ARY-1>KK6VQK-1:(I cmd, n(s)=0, n(r)=4, p=0, pid=0xf0)!! Aborting message, not sent.<0x0d><0x0d>(Type HELP A for menu of A commands, etc.)<0x0d>9) KK6VQK de N0ARY [77154]><0x0d>
[0L] KK6VQK-1>N0ARY-1:(RR res, n(r)=1, f=0)
[0L] KK6VQK-1>N0ARY-1:(RR cmd, n(r)=1, p=1)

N0ARY-1 audio level = 99(57/40)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(RR res, n(r)=4, f=1)

.. it's possible somewhere the ACK'ing logic for sequence numbers is wrong.. need to go digging.

For now I'll set maxframes locally to 7 instead of 8 so I can get data out!

Using "disconnect X" / "reset X" / "close X" from the console doesn't close the session

When a session disconnects via the remote end sending a disconnect/eof, the telnet process used as part of ax25 connect will correctly close a session.

However if it's aborted locally the session socket gets closed down, but the session itself doesn't go away.

Here's what I see in the console.

net> ps                                                                                                                                                                                                   
Uptime 0:00:00:22                                                                                                                                                                                         
ksigs 730 queued 511 hiwat 1 woken 637 nops 93 dups 0                                                                                                                                                     
kwaits 1328 nops 597 from int 0                                                                                                                                                                           
PID                stksize   event              fl  in  out  name                                                                                                                                         
0x800eab640        32768     0x293d30           IW           keyboard                                                                                                                                     
0x800eab3c0        32768     0x29333c           IW           timer                                                                                                                                        
0x800eabc80        32768     0x8010c5120        IW           connect                                                                                                                                      
0x80189a140        32768     0x8010c5040        IW           tel_out                                                                                                                                      
0x800eab500        32768     0x291028           IW           network                                                                                                                                      
0x800eab780        32768     0x28ec98           IW           encap tx                                                                                                                                     
0x800eaba00        32768     0x292028           IW           tnc0 asytx                                                                                                                                   
0x800eab280        32768     0x293cd0           IW           killer                                                                                                                                       
0x800eab8c0        32768     0x291f88           IW           tnc0 rx                                                                                                                                      
0x800eab140        32768     0x800782380        IW           display                                                                                                                                      
0x800eabb40        32768     0x8007ff250        IW           tnc0 tx                                                                                                                                      
0x800eab000        0         0x0                I            cmdintrp                                                                                                                                     
net> session                                                                                                                                                                                              
 #  S#  Snd-Q State     Remote socket         Command                                                                                                                                                     
 1  8192    0 Connected N0ARY-1 on tnc0       connect tnc0 N0ARY-1                                                                                                                                        
net> session 1                                                                                                                                                                                            
net> session                                                                                                                                                                                              
 #  S#  Snd-Q State     Remote socket         Command                                                                                                                                                     
net> close                                                                                                                                                                                                
net> connect tnc0 N0ARY-1                                                                                                                                                                                 
net> close 1                                                                                                                                                                                              
net> session                                                                                                                                                                                              
 #  S#  Snd-Q State     Remote socket         Command                                                                                                                                                     
 1  8192    0 Disc pend N0ARY-1 on tnc0       connect tnc0 N0ARY-1                                                                                                                                        
net> session                                                                                                                                                                                              
 #  S#  Snd-Q State     Remote socket         Command                                                                                                                                                     
 1  8192    0 Disc pend N0ARY-1 on tnc0       connect tnc0 N0ARY-1                                                                                                                                        
net> session                                                                                                                                                                                              
 #  S#  Snd-Q State     Remote socket         Command                                                                                                                                                     
 1  8192    0 Disc pend N0ARY-1 on tnc0       connect tnc0 N0ARY-1                                                                                                                                        
net> session                                                                                                                                                                                              
 #  S#  Snd-Q State     Remote socket         Command                                                                                                                                                     
 1  -1      0                                 connect tnc0 N0ARY-1                                                                                                                                        
net> session                                                                                                                                                                                              
 #  S#  Snd-Q State     Remote socket         Command                                                                                                                                                     
 1  -1      0                                 connect tnc0 N0ARY-1                                                                                                                                        
net> session                                                                                                                                                                                              
 #  S#  Snd-Q State     Remote socket         Command                                                                                                                                                     
 1  -1      0                                 connect tnc0 N0ARY-1                                                                                                                                        
net> session                                                                                                                                                                                              
 #  S#  Snd-Q State     Remote socket         Command                                                                                                                                                     
 1  -1      0                                 connect tnc0 N0ARY-1                                                                                                                                        
net> session                                                                                                                                                                                              
 #  S#  Snd-Q State     Remote socket         Command                                                                                                                                                     
 1  -1      0                                 connect tnc0 N0ARY-1                                                                                                                                        
net>                                                               
net> ps                                                                                                                                                                                                   
Uptime 0:00:02:39                                                                                                                                                                                         
ksigs 3983 queued 3261 hiwat 1 woken 3699 nops 284 dups 0                                                                                                                                                 
kwaits 7941 nops 3867 from int 0                                                                                                                                                                          
PID                stksize   event              fl  in  out  name                                                                                                                                         
0x800eab640        32768     0x293d30           IW           keyboard                                                                                                                                     
0x800eab3c0        32768     0x29333c           IW           timer                                                                                                                                        
0x800eab500        32768     0x291028           IW           network                                                                                                                                      
0x800eabdc0        32768     0x8010c5040        IW           connect                                                                                                                                      
0x800eab780        32768     0x28ec98           IW           encap tx                                                                                                                                     
0x800eaba00        32768     0x292028           IW           tnc0 asytx                                                                                                                                   
0x800eab280        32768     0x293cd0           IW           killer                                                                                                                                       
0x800eab8c0        32768     0x291f88           IW           tnc0 rx                                                                                                                                      
0x800eab140        32768     0x800782380        IW           display                                                                                                                                      
0x800eabb40        32768     0x8007ff250        IW           tnc0 tx                                                                                                                                      
0x800eab000        0         0x0                I            cmdintrp                                                                                                                                     
net>                                                                   

Outside Connectivity?

Ok, I was able to get KA9Q running in DOS with all the important stuff running. Came back here to see if I could do the same with the KA9Q for UNIX. I am able to login with the loopback only here in UNIX. With DOS, I can get the ethernet (FTP resident driver) to talk to my LAN and do FTP/TELNET. I was also able to get it to talk to my TNC over serial/KISS. With the UNIX code again I only have loopback. I tried reading the source in the unix folder, but alas I am not much of a programmer beyond stuff I do for physics algorithms. So I am not sure if there is some sort of tun/tap or the ability to talk to world via a UNIX socket. So some very minimal bootstrap doc would be super helpful. I have the rest of the DOS documents for this package.

I also built Phil's source here in gethub with IN DOS with a Borland C compiler. It functions exactly the same as the version here.

I ended up using an older version because Phil's latest seems to be missing the connection between the "attach asy" driver and the ax.25 stack. In the older version, I initiate the KISS/AX.25 radio port by doing:

DOS: attach asy 0x3f8 4 ax25 tnc0 2048 9600
UNIX: attach asy /dev/cuau0 ax25 tnc0 2048 9600

In Phil's Github version (and your fork of that source I presume), I get the error:

Mode ax25 unknown for interface tnc0,

but I can replace the ax25 with "slip" and I takes it with no error. This leads believe I could setup some sort of slip link with the outside world. However, I am thinking your folks already have other options for connectivity.

I would love to play with this some more.

-Chris KQ6UP

Sending a 7 packet burst and a poll ends up potentially causing a REJ to be sent in response

the following sequence of packets seems like a popular one when watching BBS traffic, and it leads to some pretty bad behaviour.

[0L] KK6VQK-1>N0ARY-1:(I cmd, n(s)=6, n(r)=4, p=0, pid=0xf0)read 77196 noprompt<0x0d>

N0ARY-1 audio level = 100(59/41)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=4, n(r)=7, p=0, pid=0xf0)=============================================================<0x0d>

N0ARY-1 audio level = 100(55/41)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=5, n(r)=7, p=0, pid=0xf0)      Date: 25 Sep 2019 13:40<0x0d> Message #: 77196<0x0d>       BID: <14795_CX2SA><0x0d>

N0ARY-1 audio level = 100(55/42)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=6, n(r)=7, p=0, pid=0xf0)      From: CX2SA@CX2SA<0x0d>        To: EQUAKE@WW<0x0d>   Subject: (M5.2) southern Mid-Atlantic Ridge -40.7 -16.7<0x0d>

N0ARY-1 audio level = 100(59/40)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=7, n(r)=7, p=0, pid=0xf0)<0x0d>N6RME!I0OJJ!GB7CIP!N3HYM!CX2SA<0x0d>-------------------------------------------------------------<0x0d>

N0ARY-1 audio level = 100(57/41)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=0, n(r)=7, p=0, pid=0xf0)<0x0d>From: [email protected]<0x0d>To  : EQUAKE@WW<0x0d><0x0d>                     == PRELIMINARY REPORT ==<0x0d>

N0ARY-1 audio level = 100(59/39)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=1, n(r)=7, p=0, pid=0xf0)Event type:                       Earthquake <0x0d>Region:                           southern Mid-Atlantic Ridge<0x0d>

N0ARY-1 audio level = 99(54/42)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=2, n(r)=7, p=0, pid=0xf0)Geographic coordinates:           40.679S,  16.745W<0x0d>

N0ARY-1 audio level = 99(57/42)   [NONE]   _|||||||_
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=4, n(r)=7, p=1, pid=0xf0)=============================================================<0x0d>
[0L] KK6VQK-1>N0ARY-1:(RR res, n(r)=3, f=0)
[0L] KK6VQK-1>N0ARY-1:(REJ res, n(r)=3, f=1)

Now, note it sent a 7 packet burst (which is good!) and then it sent the I frame with the first sequence number in the burst again.

I sent a RR n(r)=3 to ACK everything up to 2 (which is good) but then since I got a frame with a seqno of 4, I assumed that I hit a sequence number issue and sent a REJ (which is bad.) It then gets stuck in its retransmission loop because it thinks the ACK means "send more data", but the REJ causes it to also send more data, so it double sends a whole lot of the same crap:

N0ARY-1 audio level = 100(58/41)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=3, n(r)=7, p=0, pid=0xf0)Magnitude:                        5.2<0x0d>Depth:                            10 km<0x0d>

N0ARY-1 audio level = 100(59/41)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=4, n(r)=7, p=0, pid=0xf0)Universal Time (UTC):             25 Sep 2019  20:15:54<0x0d>

N0ARY-1 audio level = 100(58/41)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=5, n(r)=7, p=0, pid=0xf0)Time near the Epicenter:          25 Sep 2019  19:15:54<0x0d>

N0ARY-1 audio level = 100(53/42)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=6, n(r)=7, p=0, pid=0xf0)<0x0d>Location with respect to nearby cities:<0x0d>555.5 km (344.4 mi) SW of Edinburgh of the Seven Seas, Saint Helena<0x0d>

N0ARY-1 audio level = 100(60/40)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=7, n(r)=7, p=0, pid=0xf0)3076.0 km (1907.1 mi) ESE of Arraial do Cabo, Brazil<0x0d>

N0ARY-1 audio level = 99(54/42)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=0, n(r)=7, p=0, pid=0xf0)3082.2 km (1911.0 mi) ESE of Cabo Frio, Brazil<0x0d>3083.0 km (1911.5 mi) ESE of Arma<0xef><0xbf><0xbd><0xef><0xbf><0xbd>o de B<0xef><0xbf><0xbd>zios, Brazil<0x0d>

N0ARY-1 audio level = 100(60/41)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=1, n(r)=7, p=0, pid=0xf0)3091.5 km (1916.7 mi) ESE of S<0xef><0xbf><0xbd>o Pedro da Aldeia, Brazil<0x0d>

N0ARY-1 audio level = 100(59/41)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=3, n(r)=7, p=0, pid=0xf0)Magnitude:                        5.2<0x0d>Depth:                            10 km<0x0d>

N0ARY-1 audio level = 99(57/41)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=4, n(r)=7, p=0, pid=0xf0)Universal Time (UTC):             25 Sep 2019  20:15:54<0x0d>

N0ARY-1 audio level = 100(59/41)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=5, n(r)=7, p=0, pid=0xf0)Time near the Epicenter:          25 Sep 2019  19:15:54<0x0d>

N0ARY-1 audio level = 100(59/39)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=6, n(r)=7, p=0, pid=0xf0)<0x0d>Location with respect to nearby cities:<0x0d>555.5 km (344.4 mi) SW of Edinburgh of the Seven Seas, Saint Helena<0x0d>

N0ARY-1 audio level = 99(56/42)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=7, n(r)=7, p=0, pid=0xf0)3076.0 km (1907.1 mi) ESE of Arraial do Cabo, Brazil<0x0d>

N0ARY-1 audio level = 100(59/39)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=0, n(r)=7, p=0, pid=0xf0)3082.2 km (1911.0 mi) ESE of Cabo Frio, Brazil<0x0d>3083.0 km (1911.5 mi) ESE of Arma<0xef><0xbf><0xbd><0xef><0xbf><0xbd>o de B<0xef><0xbf><0xbd>zios, Brazil<0x0d>

N0ARY-1 audio level = 99(58/41)   [NONE]   _||||||||
[0.4] N0ARY-1>KK6VQK-1:(I cmd, n(s)=1, n(r)=7, p=0, pid=0xf0)3091.5 km (1916.7 mi) ESE of S<0xef><0xbf><0xbd>o Pedro da Aldeia, Brazil<0x0d>
[0L] KK6VQK-1>N0ARY-1:(REJ res, n(r)=2, f=0)

The "sending too much crap" is a separate bug that'll end up being fixed when transmit delay (T2) is introduced. This bug is how it decides to send that final poll frame and the sequence number it's using to do so.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.