craigerl / aprsd

Amateur radio APRS daemon which listens for messages and responds. By KM6LYW.
Apache License 2.0
120 stars 19 forks source link

piggyback acks in message not supported #42

Open hemna opened 3 years ago

hemna commented 3 years ago

There is a bug in the aprslib parsing library that doesn't handle parsing out the acks in line number format here: https://github.com/rossengeorgiev/aprs-python/issues/58

This means aprsd will fail to properly parse out messages/commands when a user sends a message with {WW}AA format

└─[$] <> cat test-2.py
import aprslib
import pprint
msg = "KO4KWC-6>APRS,TCPIP*,qAC,T2MCI::KO4KWC-14:weather ve3kbr {22}AA"
packet = aprslib.parse(msg)
pprint.pprint(packet)

results in

└─[$] <> python test-2.py
{'addresse': 'KO4KWC-14',
 'format': 'message',
 'from': 'KO4KWC-6',
 'message_text': 'weather ve3kbr {22}AA',
 'path': ['TCPIP*', 'qAC', 'T2MCI'],
 'raw': 'KO4KWC-6>APRS,TCPIP*,qAC,T2MCI::KO4KWC-14:weather ve3kbr {22}AA',
 'to': 'APRS',
 'via': 'T2MCI'}
hemna commented 3 years ago

aprsd doesn't support the piggyback ack as a result.

ldeffenb commented 2 years ago

For additional information on where {xx}yy comes from, read: http://www.aprs.org/aprs11/replyacks.txt

hemna commented 2 years ago

currently APRSD is not embedding acks in reply messages.

ldeffenb commented 2 years ago

True, but it is also not acking Reply-Ack-compatible clients correctly. Consider:

2022-01-12 12:50:58 EST: KJ4ERJ>APWW11,TCPIP*,qAC,SECOND::REPEAT   :n 2m{HP}
2022-01-12 12:50:58 EST: REPEAT>APZ100,TCPIP*,qAC,T2ALBERTA::KJ4ERJ   :ackHP
2022-01-12 12:50:59 EST: REPEAT>APZ100,TCPIP*,qAC,T2ALBERTA::KJ4ERJ   :K4EOC 146.8950- Toff 0.7mi W{379
2022-01-12 12:51:00 EST: KJ4ERJ>APWW11,TCPIP*,qAC,SECOND::REPEAT   :ack379

2022-01-12 12:51:32 EST: KJ4ERJ>APWW11,TCPIP*,qAC,SECOND::REPEAT   :n 2m{HP}
2022-01-12 12:51:32 EST: REPEAT>APZ100,TCPIP*,qAC,T2ALBERTA::KJ4ERJ   :ackHP
2022-01-12 12:51:32 EST: REPEAT>APZ100,TCPIP*,qAC,T2ALBERTA::KJ4ERJ   :K4EOC 146.8950- Toff 0.7mi W{380
2022-01-12 12:51:33 EST: KJ4ERJ>APWW11,TCPIP*,qAC,SECOND::REPEAT   :ack380

2022-01-12 12:52:04 EST: KJ4ERJ>APWW11,TCPIP*,qAC,SECOND::REPEAT   :n 2m{HP}
2022-01-12 12:52:04 EST: REPEAT>APZ100,TCPIP*,qAC,T2ALBERTA::KJ4ERJ   :ackHP
2022-01-12 12:52:04 EST: REPEAT>APZ100,TCPIP*,qAC,T2ALBERTA::KJ4ERJ   :K4EOC 146.8950- Toff 0.7mi W{381
2022-01-12 12:52:05 EST: KJ4ERJ>APWW11,TCPIP*,qAC,SECOND::REPEAT   :ack381

(Just for the audit-trail)

hemna commented 2 years ago

Here is a current example exchange

today at 12:53:43 PM Received Message _______________                                              
today at 12:53:43 PM   Raw     : KJ4ERJ>APWW11,TCPIP*,qAC,SECOND::REPEAT   :n 5 2m{HQ}
today at 12:53:43 PM    From    : KJ4ERJ                                                             
today at 12:53:43 PM    Message : n 5 2m                                                             
today at 12:53:43 PM    Msg #   : HQ                                                                 
today at 12:53:43 PM  Received Message _______________ Complete

today at 12:53:43 PM  Sending ack _______________                                                    
today at 12:53:43 PM  Raw     : REPEAT>APZ100::KJ4ERJ   :ackHQ                                     
today at 12:53:43 PM  To      : KJ4ERJ                                                             
today at 12:53:43 PM   Ack     : HQ                                                                 
today at 12:53:43 PM  Sending ack _______________ Complete

today at 12:53:44 PM  Sending Message _______________                                                 
today at 12:53:44 PM    Raw     : REPEAT>APZ100::KJ4ERJ   :K4EOC 146.8950- Toff 0.7mi W{383           
today at 12:53:44 PM    To      : KJ4ERJ                                                              
today at 12:53:44 PM    Message : K4EOC 146.8950- Toff 0.7mi W                                        
today at 12:53:44 PM    Msg #   : 383                                                                 
today at 12:53:44 PM  Sending Message _______________ Complete
hemna commented 2 months ago

aprslib supports parsing out piggyback acks now. APRSD doesn't support sending them at the moment.