mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-24 00:33:55 +08:00
* segment range reader
* rename that
* revert that
* cleanup
* revert this for now
* revert this for now
* Fix + test
* rm that
* rm that
* use for auto_fingerprint
* simpler
* for notebook too
* match numpy indexing
* just use numpy directly
* remove that
* spacing
* spacing
* use qlog for auto fingerprint
* add 'read mode'
* pass in read mode
* add test for modes
* numpy indexing
* fix that case
* more examples
* fix the notebook
* cleanup the notebook
* cleaner
* fix those
old-commit-hash: 0d126e1e9e
36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
import bz2
|
|
import datetime
|
|
|
|
TIME_FMT = "%Y-%m-%d--%H-%M-%S"
|
|
|
|
# regex patterns
|
|
class RE:
|
|
DONGLE_ID = r'(?P<dongle_id>[a-z0-9]{16})'
|
|
TIMESTAMP = r'(?P<timestamp>[0-9]{4}-[0-9]{2}-[0-9]{2}--[0-9]{2}-[0-9]{2}-[0-9]{2})'
|
|
ROUTE_NAME = r'(?P<route_name>{}[|_/]{})'.format(DONGLE_ID, TIMESTAMP)
|
|
SEGMENT_NAME = r'{}(?:--|/)(?P<segment_num>[0-9]+)'.format(ROUTE_NAME)
|
|
INDEX = r'-?[0-9]+'
|
|
SLICE = r'(?P<start>{})?:?(?P<end>{})?:?(?P<step>{})?'.format(INDEX, INDEX, INDEX)
|
|
SEGMENT_RANGE = r'{}(?:--|/)?(?P<slice>({}))?'.format(ROUTE_NAME, SLICE)
|
|
BOOTLOG_NAME = ROUTE_NAME
|
|
|
|
EXPLORER_FILE = r'^(?P<segment_name>{})--(?P<file_name>[a-z]+\.[a-z0-9]+)$'.format(SEGMENT_NAME)
|
|
OP_SEGMENT_DIR = r'^(?P<segment_name>{})$'.format(SEGMENT_NAME)
|
|
|
|
|
|
def timestamp_to_datetime(t: str) -> datetime.datetime:
|
|
"""
|
|
Convert an openpilot route timestamp to a python datetime
|
|
"""
|
|
return datetime.datetime.strptime(t, TIME_FMT)
|
|
|
|
|
|
def save_log(dest, log_msgs, compress=True):
|
|
dat = b"".join(msg.as_builder().to_bytes() for msg in log_msgs)
|
|
|
|
if compress:
|
|
dat = bz2.compress(dat)
|
|
|
|
with open(dest, "wb") as f:
|
|
f.write(dat)
|