nopenpilot/tools/lib
Adeeb Shihadeh 8af20af66d
pylint: enforce indentation (W0311) (#24039)
* pylint: enforce indentation (W0311)

* few more
2022-03-24 23:23:29 -07:00
..
tests pylint: enforce indentation (W0311) (#24039) 2022-03-24 23:23:29 -07:00
vidindex Add pre-commit hooks (#1629) 2020-06-03 12:54:49 -07:00
README.md tools: add MultiLogIterator example to readme (#23917) 2022-03-07 10:04:41 -08:00
__init__.py merge in tools 2020-01-17 10:07:22 -08:00
api.py tools: make auth optional for public routes (#22386) 2021-09-30 20:13:46 +02:00
auth.py pylint: enforce indentation (W0311) (#24039) 2022-03-24 23:23:29 -07:00
auth_config.py tools: make auth optional for public routes (#22386) 2021-09-30 20:13:46 +02:00
bootlog.py tools: add bootlog helpers (#23504) 2022-01-12 21:37:43 -08:00
cache.py Less open file permissions (#21922) 2021-08-28 18:25:05 -07:00
exceptions.py merge in tools 2020-01-17 10:07:22 -08:00
filereader.py filereader better name for cd:/ replacement 2022-01-13 18:21:19 -08:00
framereader.py Ignore BrokenPipeError 2022-03-22 12:52:25 -07:00
helpers.py tools: add bootlog helpers (#23504) 2022-01-12 21:37:43 -08:00
kbhit.py Add type hints, small cleanups (#21080) 2021-06-03 12:21:04 +02:00
logreader.py can_print_changes improvements 2022-03-10 14:32:19 -08:00
robust_logreader.py LogReader: add arg to sort by time (#23346) 2022-01-02 11:56:53 -08:00
route.py tools: add bootlog helpers (#23504) 2022-01-12 21:37:43 -08:00
url_file.py Pyupgrade 3.6: Update syntax with Python 3.6+ features (#23305) 2021-12-24 11:18:39 -08:00

README.md

LogReader

Route is a class for conviently accessing all the logs from your routes. The LogReader class reads the non-video logs, i.e. rlog.bz2 and qlog.bz2. There's also a matching FrameReader class for reading the videos.

from tools.lib.route import Route
from tools.lib.logreader import LogReader

r = Route("4cf7a6ad03080c90|2021-09-29--13-46-36")

# get a list of paths for the route's rlog files
print(r.log_paths())

# and road camera (fcamera.hevc) files
print(r.camera_paths())

# setup a LogReader to read the route's first rlog
lr = LogReader(r.log_paths()[0])

# print out all the messages in the log
import codecs
codecs.register_error("strict", codecs.backslashreplace_errors)
for msg in lr:
  print(msg)

# setup a LogReader for the route's second qlog
lr = LogReader(r.log_paths()[1])

# print all the steering angles values from the log
for msg in lr:
  if msg.which() == "carState":
    print(msg.carState.steeringAngleDeg)

MultiLogIterator

MultiLogIterator is similar to LogReader, but reads multiple logs.

from tools.lib.route import Route
from tools.lib.logreader import MultiLogIterator

# setup a MultiLogIterator to read all the logs in the route
r = Route("4cf7a6ad03080c90|2021-09-29--13-46-36")
lr = MultiLogIterator(r.log_paths())

# print all the steering angles values from all the logs in the route
for msg in lr:
  if msg.which() == "carState":
    print(msg.carState.steeringAngleDeg)