diff --git a/selfdrive/debug/dump.py b/selfdrive/debug/dump.py index 514a415577..787e9bc738 100755 --- a/selfdrive/debug/dump.py +++ b/selfdrive/debug/dump.py @@ -7,7 +7,7 @@ import codecs from hexdump import hexdump from cereal import log from cereal.services import SERVICE_LIST -from openpilot.tools.lib.logreader import raw_live_logreader +from openpilot.tools.lib.live_logreader import raw_live_logreader codecs.register_error("strict", codecs.backslashreplace_errors) diff --git a/tools/lib/live_logreader.py b/tools/lib/live_logreader.py new file mode 100644 index 0000000000..0678fd1d00 --- /dev/null +++ b/tools/lib/live_logreader.py @@ -0,0 +1,31 @@ +import os +from typing import List +from cereal import log as capnp_log, messaging +from cereal.services import SERVICE_LIST + +from openpilot.tools.lib.logreader import LogIterable, RawLogIterable + + +ALL_SERVICES = list(SERVICE_LIST.keys()) + +def raw_live_logreader(services: List[str] = ALL_SERVICES, addr: str = '127.0.0.1') -> RawLogIterable: + if addr != "127.0.0.1": + os.environ["ZMQ"] = "1" + messaging.context = messaging.Context() + + poller = messaging.Poller() + + for m in services: + messaging.sub_sock(m, poller, addr=addr) + + while True: + polld = poller.poll(100) + for sock in polld: + msg = sock.receive() + yield msg + + +def live_logreader(services: List[str] = ALL_SERVICES, addr: str = '127.0.0.1') -> LogIterable: + for m in raw_live_logreader(services, addr): + with capnp_log.Event.from_bytes(m) as evt: + yield evt diff --git a/tools/lib/logreader.py b/tools/lib/logreader.py index 24dfc75d47..f7548b8c0f 100755 --- a/tools/lib/logreader.py +++ b/tools/lib/logreader.py @@ -16,8 +16,7 @@ import warnings from typing import Dict, Iterable, Iterator, List, Type from urllib.parse import parse_qs, urlparse -from cereal import log as capnp_log, messaging -from cereal.services import SERVICE_LIST +from cereal import log as capnp_log from openpilot.common.swaglog import cloudlog from openpilot.tools.lib.comma_car_segments import get_url as get_comma_segments_url from openpilot.tools.lib.openpilotci import get_url @@ -294,31 +293,6 @@ are uploaded or auto fallback to qlogs with '/a' selector at the end of the rout return next(self.filter(msg_type), None) -ALL_SERVICES = list(SERVICE_LIST.keys()) - -def raw_live_logreader(services: List[str] = ALL_SERVICES, addr: str = '127.0.0.1') -> RawLogIterable: - if addr != "127.0.0.1": - os.environ["ZMQ"] = "1" - messaging.context = messaging.Context() - - poller = messaging.Poller() - - for m in services: - messaging.sub_sock(m, poller, addr=addr) - - while True: - polld = poller.poll(100) - for sock in polld: - msg = sock.receive() - yield msg - - -def live_logreader(services: List[str] = ALL_SERVICES, addr: str = '127.0.0.1') -> LogIterable: - for m in raw_live_logreader(services, addr): - with capnp_log.Event.from_bytes(m) as evt: - yield evt - - if __name__ == "__main__": import codecs # capnproto <= 0.8.0 throws errors converting byte data to string