Files
sunnypilot/openpilot/system/webrtc/helpers.py
T
stef 02b6cef15c webrtc: cleanup api (#38447)
* add support for multi-track with wideRoad single track as default

* remove stale debug mode

* multi track support

* make cameras list optional

* remove multi camera support from athena, make it only local

* update to teleop master
2026-07-27 20:47:43 -07:00

41 lines
1.1 KiB
Python

import time
import requests
from dataclasses import asdict, dataclass, field
WEBRTCD_PORT = 5001
@dataclass
class StreamRequestBody:
sdp: str
cameras: list[str]
enabled: bool
bridge_services_in: list[str] = field(default_factory=list)
bridge_services_out: list[str] = field(default_factory=list)
def post_stream_request(body: StreamRequestBody) -> dict:
t_start = time.monotonic()
try:
resp = requests.post(f"http://localhost:{WEBRTCD_PORT}/stream", json=asdict(body), timeout=10)
t_end = time.monotonic()
ret = resp.json()
ret["time"] = (t_end - t_start) * 1000
return ret
except requests.ConnectTimeout as e:
raise Exception("webrtc took too long to respond.") from e
except requests.ConnectionError as e:
raise Exception("webrtc server on device is not running.") from e
def wait_for_webrtcd(max_retries: float = 10) -> None:
attempts = 0
while attempts < max_retries:
try:
if requests.get(f"http://localhost:{WEBRTCD_PORT}/schema", timeout=1).ok:
return
except requests.ConnectionError:
attempts += 1
time.sleep(0.5)
raise TimeoutError("webrtcd did not initialize in time.")