From b143411521f1b7ff8c1aba07785905cd0437a0a2 Mon Sep 17 00:00:00 2001 From: Greg Hogan Date: Fri, 13 Aug 2021 08:38:36 -0700 Subject: [PATCH] athena: split data into multiple frames (#21918) old-commit-hash: a6debb999c1a4cd8e82ce71bdfb128d76f2923ef --- selfdrive/athena/athenad.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/selfdrive/athena/athenad.py b/selfdrive/athena/athenad.py index 1dc0ed6658..4c656756b4 100755 --- a/selfdrive/athena/athenad.py +++ b/selfdrive/athena/athenad.py @@ -42,6 +42,7 @@ RECONNECT_TIMEOUT_S = 70 RETRY_DELAY = 10 # seconds MAX_RETRY_COUNT = 30 # Try for at most 5 minutes if upload fails immediately +WS_FRAME_SIZE = 4096 dispatcher["echo"] = lambda s: s recv_queue: Any = queue.Queue() @@ -506,7 +507,11 @@ def ws_send(ws, end_event): data = send_queue.get_nowait() except queue.Empty: 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: pass except Exception: