mirror of
https://github.com/markqvist/Reticulum.git
synced 2026-10-26 10:51:49 -04:00
Killed a couple of allocs, canonical HDLC frame method
This commit is contained in:
parent
ea98db4f53
commit
eb8414bee9
3 changed files with 12 additions and 3 deletions
|
|
@ -1031,7 +1031,7 @@ class BackboneClientInterface(Interface):
|
|||
def process_outgoing(self, data):
|
||||
if self.online and not self.detached:
|
||||
try:
|
||||
frame = bytes([HDLC.FLAG])+HDLC.escape(data)+bytes([HDLC.FLAG])
|
||||
frame = HDLC.frame(data)
|
||||
if self.tx_stalled or not self.transmit_buffer.append(frame, self.tx_hwm):
|
||||
self.tx_drops += 1
|
||||
self.tx_dropped_bytes += len(frame)
|
||||
|
|
|
|||
|
|
@ -218,7 +218,7 @@ class LocalClientInterface(Interface):
|
|||
if self.online:
|
||||
try:
|
||||
if self.epoll_backend:
|
||||
frame = bytes([HDLC.FLAG])+HDLC.escape(data)+bytes([HDLC.FLAG])
|
||||
frame = HDLC.frame(data)
|
||||
if self.tx_stalled or not self.transmit_buffer.append(frame, self.tx_hwm):
|
||||
self.tx_drops += 1
|
||||
self.tx_dropped_bytes += len(frame)
|
||||
|
|
@ -235,7 +235,7 @@ class LocalClientInterface(Interface):
|
|||
s = len(data) / self.bitrate * 8
|
||||
time.sleep(s)
|
||||
|
||||
data = bytes([HDLC.FLAG])+HDLC.escape(data)+bytes([HDLC.FLAG])
|
||||
data = HDLC.frame(data)
|
||||
self.socket.sendall(data)
|
||||
self.writing = False
|
||||
self.txb += len(data)
|
||||
|
|
|
|||
|
|
@ -50,6 +50,15 @@ class HDLC():
|
|||
frame = frame.replace(HDLC.ESCPD_ESC, HDLC.ESC_B)
|
||||
return frame
|
||||
|
||||
@staticmethod
|
||||
def frame(data):
|
||||
esc = HDLC.escape(data)
|
||||
frame = bytearray(len(esc)+2)
|
||||
frame[0] = HDLC.FLAG
|
||||
frame[1:-1] = esc
|
||||
frame[-1] = HDLC.FLAG
|
||||
return frame
|
||||
|
||||
class ReceiveBuffer():
|
||||
def __init__(self, mtu, min_frame_len, max_frame_len=None, on_frame=None, on_invalid=None):
|
||||
self._mtu = mtu
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue