live_logreader.py 830 B

123456789101112131415161718192021222324252627282930
  1. import os
  2. from cereal import log as capnp_log, messaging
  3. from cereal.services import SERVICE_LIST
  4. from openpilot.tools.lib.logreader import LogIterable, RawLogIterable
  5. ALL_SERVICES = list(SERVICE_LIST.keys())
  6. def raw_live_logreader(services: list[str] = ALL_SERVICES, addr: str = '127.0.0.1') -> RawLogIterable:
  7. if addr != "127.0.0.1":
  8. os.environ["ZMQ"] = "1"
  9. messaging.context = messaging.Context()
  10. poller = messaging.Poller()
  11. for m in services:
  12. messaging.sub_sock(m, poller, addr=addr)
  13. while True:
  14. polld = poller.poll(100)
  15. for sock in polld:
  16. msg = sock.receive()
  17. yield msg
  18. def live_logreader(services: list[str] = ALL_SERVICES, addr: str = '127.0.0.1') -> LogIterable:
  19. for m in raw_live_logreader(services, addr):
  20. with capnp_log.Event.from_bytes(m) as evt:
  21. yield evt