athena: split data into multiple frames (#21918)

pull/21924/head
Greg Hogan 4 years ago committed by GitHub
parent 2dff84121e
commit a6debb999c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      selfdrive/athena/athenad.py

@ -42,6 +42,7 @@ RECONNECT_TIMEOUT_S = 70
RETRY_DELAY = 10 # seconds RETRY_DELAY = 10 # seconds
MAX_RETRY_COUNT = 30 # Try for at most 5 minutes if upload fails immediately MAX_RETRY_COUNT = 30 # Try for at most 5 minutes if upload fails immediately
WS_FRAME_SIZE = 4096
dispatcher["echo"] = lambda s: s dispatcher["echo"] = lambda s: s
recv_queue: Any = queue.Queue() recv_queue: Any = queue.Queue()
@ -506,7 +507,11 @@ def ws_send(ws, end_event):
data = send_queue.get_nowait() data = send_queue.get_nowait()
except queue.Empty: except queue.Empty:
data = log_send_queue.get(timeout=1) data = log_send_queue.get(timeout=1)
ws.send(data) for i in range(0, len(data), WS_FRAME_SIZE):
frame = data[i:i+WS_FRAME_SIZE]
last = i + WS_FRAME_SIZE >= len(data)
opcode = ABNF.OPCODE_TEXT if i == 0 else ABNF.OPCODE_CONT
ws.send_frame(ABNF.create_frame(frame, opcode, last))
except queue.Empty: except queue.Empty:
pass pass
except Exception: except Exception:

Loading…
Cancel
Save