mirror of
https://github.com/markqvist/Reticulum.git
synced 2024-11-21 21:20:17 +00:00
Fix KISS beacon frame formatting and add sync pattern
Two issues were resolved with KISS interface beacon transmissions: 1. Fixed frame length handling to meet minimum length requirements (15 bytes) for TNCs like Direwolf. Previously, raw beacon data was being sent directly, causing frame length errors: ``` <<< Data frame from KISS client application, channel 0, total length = 11 000: c0 00 44 4e 39 54 54 2d 31 35 c0 ..FOOBAR-15. Frame length 8 not in allowable range of 15 to 2123. ERROR - Invalid KISS data frame from client app. ``` 2. Added standard 0xAA 0xAA sync pattern to improve radio modem synchronization and compatibility with packet radio protocols like FX.25 and IL2P. This ensures: - Proper frame length for TNC compatibility - Better bit synchronization with standard sync pattern - Improved reception reliability - Compatible with both KISS TNCs and packet radio protocols ``` <<< Data frame from KISS client application, channel 0, total length = 18 000: c0 00 aa aa 44 4e 39 54 54 2d 31 35 00 00 00 00 ....FOOBAR-15.... 010: 00 c0 .. [0L 21:25:43 UTC] (Not AX.25)<0xaa><0xaa>FOOBAR-15<0x00><0x00><0x00><0x00><0x00> IL2P frame, max_fec = 1, 49 encoded bytes total 000: f1 5e 48 87 b8 59 b7 a1 cc 24 57 d6 0b 36 7c f1 .^H..Y...$W..6|. 010: 7c d5 af 85 db 12 99 80 9d b8 6b bb 6b 05 df 1e |.........k.k... 020: 69 0e d8 69 05 f6 ff c4 24 fa 58 f7 e7 f2 a4 df i..i....$.X..... 030: a1 . ```
This commit is contained in:
parent
d002a75f34
commit
3bbd43cc1b
@ -319,7 +319,14 @@ class KISSInterface(Interface):
|
|||||||
if time.time() > self.first_tx + self.beacon_i:
|
if time.time() > self.first_tx + self.beacon_i:
|
||||||
RNS.log("Interface "+str(self)+" is transmitting beacon data: "+str(self.beacon_d.decode("utf-8")), RNS.LOG_DEBUG)
|
RNS.log("Interface "+str(self)+" is transmitting beacon data: "+str(self.beacon_d.decode("utf-8")), RNS.LOG_DEBUG)
|
||||||
self.first_tx = None
|
self.first_tx = None
|
||||||
self.processOutgoing(self.beacon_d)
|
|
||||||
|
# Using standard HDLC flag or sync bytes
|
||||||
|
frame = bytearray([0xAA, 0xAA]) # Standard sync pattern
|
||||||
|
frame.extend(self.beacon_d)
|
||||||
|
while len(frame) < 15:
|
||||||
|
frame.append(0x00)
|
||||||
|
|
||||||
|
self.processOutgoing(bytes(frame))
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.online = False
|
self.online = False
|
||||||
|
Loading…
Reference in New Issue
Block a user