LogReader: remove commaCarSegments selector (#35750)

* a source should not be a readmode... and readmode should be logtype

* fix that

* fixup
pull/35755/head
Shane Smiskol 5 days ago committed by GitHub
parent 862a816215
commit b50b351b15
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 6
      tools/car_porting/examples/find_segments_with_message.ipynb
  2. 6
      tools/car_porting/examples/ford_vin_fingerprint.ipynb
  3. 6
      tools/car_porting/examples/hkg_canfd_gear_message.ipynb
  4. 3
      tools/lib/comma_car_segments.py
  5. 2
      tools/lib/helpers.py
  6. 4
      tools/lib/logreader.py

@ -76,7 +76,7 @@
" if platform not in database:\n", " if platform not in database:\n",
" print(f\"No segments available for {platform}\")\n", " print(f\"No segments available for {platform}\")\n",
" continue\n", " continue\n",
" \n", "\n",
" all_segments = database[platform]\n", " all_segments = database[platform]\n",
" NUM_SEGMENTS = min(len(all_segments), MAX_SEGS_PER_PLATFORM)\n", " NUM_SEGMENTS = min(len(all_segments), MAX_SEGS_PER_PLATFORM)\n",
" TEST_SEGMENTS.extend(random.sample(all_segments, NUM_SEGMENTS))\n", " TEST_SEGMENTS.extend(random.sample(all_segments, NUM_SEGMENTS))\n",
@ -147,7 +147,7 @@
} }
], ],
"source": [ "source": [
"from openpilot.tools.lib.logreader import LogReader\n", "from openpilot.tools.lib.logreader import LogReader, comma_car_segments_source\n",
"from tqdm.notebook import tqdm, tnrange\n", "from tqdm.notebook import tqdm, tnrange\n",
"\n", "\n",
"# Example search for CAN ignition messages\n", "# Example search for CAN ignition messages\n",
@ -169,7 +169,7 @@
"progress_bar = tnrange(len(TEST_SEGMENTS), desc=\"segments searched\")\n", "progress_bar = tnrange(len(TEST_SEGMENTS), desc=\"segments searched\")\n",
"\n", "\n",
"for segment in TEST_SEGMENTS:\n", "for segment in TEST_SEGMENTS:\n",
" lr = LogReader(segment)\n", " lr = LogReader(segment, sources=[comma_car_segments_source])\n",
" CP = lr.first(\"carParams\")\n", " CP = lr.first(\"carParams\")\n",
" if CP is None:\n", " if CP is None:\n",
" progress_bar.update()\n", " progress_bar.update()\n",

@ -20,7 +20,7 @@
"source": [ "source": [
"\"\"\"In this example, we use the public comma car segments database to check if vin fingerprinting is feasible for ford.\"\"\"\n", "\"\"\"In this example, we use the public comma car segments database to check if vin fingerprinting is feasible for ford.\"\"\"\n",
"\n", "\n",
"from openpilot.tools.lib.logreader import LogReader\n", "from openpilot.tools.lib.logreader import LogReader, comma_car_segments_source\n",
"from openpilot.tools.lib.comma_car_segments import get_comma_car_segments_database\n", "from openpilot.tools.lib.comma_car_segments import get_comma_car_segments_database\n",
"from opendbc.car.ford.values import CAR\n", "from opendbc.car.ford.values import CAR\n",
"\n", "\n",
@ -100,7 +100,7 @@
" if platform not in database:\n", " if platform not in database:\n",
" print(f\"Skipping platform: {platform}, no data available\")\n", " print(f\"Skipping platform: {platform}, no data available\")\n",
" continue\n", " continue\n",
" \n", "\n",
" all_segments = database[platform]\n", " all_segments = database[platform]\n",
"\n", "\n",
" NUM_SEGMENTS = min(len(all_segments), MAX_SEGS_PER_PLATFORM)\n", " NUM_SEGMENTS = min(len(all_segments), MAX_SEGS_PER_PLATFORM)\n",
@ -110,7 +110,7 @@
" segments = random.sample(all_segments, NUM_SEGMENTS)\n", " segments = random.sample(all_segments, NUM_SEGMENTS)\n",
"\n", "\n",
" for segment in segments:\n", " for segment in segments:\n",
" lr = LogReader(segment)\n", " lr = LogReader(segment, sources=[comma_car_segments_source])\n",
" CP = lr.first(\"carParams\")\n", " CP = lr.first(\"carParams\")\n",
" if \"FORD\" not in CP.carFingerprint:\n", " if \"FORD\" not in CP.carFingerprint:\n",
" print(segment, CP.carFingerprint)\n", " print(segment, CP.carFingerprint)\n",

@ -72,7 +72,7 @@
" #if platform not in database:\n", " #if platform not in database:\n",
" # print(f\"Skipping platform: {platform}, no data available\")\n", " # print(f\"Skipping platform: {platform}, no data available\")\n",
" # continue\n", " # continue\n",
" \n", "\n",
" all_segments = database[platform]\n", " all_segments = database[platform]\n",
"\n", "\n",
" NUM_SEGMENTS = min(len(all_segments), MAX_SEGS_PER_PLATFORM)\n", " NUM_SEGMENTS = min(len(all_segments), MAX_SEGS_PER_PLATFORM)\n",
@ -198,12 +198,12 @@
"from opendbc.car.hyundai.hyundaicanfd import CanBus\n", "from opendbc.car.hyundai.hyundaicanfd import CanBus\n",
"\n", "\n",
"from openpilot.selfdrive.pandad import can_capnp_to_list\n", "from openpilot.selfdrive.pandad import can_capnp_to_list\n",
"from openpilot.tools.lib.logreader import LogReader\n", "from openpilot.tools.lib.logreader import LogReader, comma_car_segments_source\n",
"\n", "\n",
"message_names = [\"GEAR_SHIFTER\", \"ACCELERATOR\", \"GEAR\", \"GEAR_ALT\", \"GEAR_ALT_2\"]\n", "message_names = [\"GEAR_SHIFTER\", \"ACCELERATOR\", \"GEAR\", \"GEAR_ALT\", \"GEAR_ALT_2\"]\n",
"\n", "\n",
"for segment in TEST_SEGMENTS:\n", "for segment in TEST_SEGMENTS:\n",
" lr = LogReader(segment)\n", " lr = LogReader(segment, sources=[comma_car_segments_source])\n",
" CP = lr.first(\"carParams\")\n", " CP = lr.first(\"carParams\")\n",
" if CP is None:\n", " if CP is None:\n",
" continue\n", " continue\n",

@ -14,7 +14,8 @@ def get_comma_car_segments_database():
ret = {} ret = {}
for platform in database: for platform in database:
ret[MIGRATION.get(platform, platform)] = database[platform] # TODO: remove this when commaCarSegments is updated to remove selector
ret[MIGRATION.get(platform, platform)] = [s.rstrip('/s') for s in database[platform]]
return ret return ret

@ -9,7 +9,7 @@ class RE:
INDEX = r'-?[0-9]+' INDEX = r'-?[0-9]+'
SLICE = fr'(?P<start>{INDEX})?:?(?P<end>{INDEX})?:?(?P<step>{INDEX})?' SLICE = fr'(?P<start>{INDEX})?:?(?P<end>{INDEX})?:?(?P<step>{INDEX})?'
SEGMENT_RANGE = fr'{ROUTE_NAME}(?:(--|/)(?P<slice>({SLICE})))?(?:/(?P<selector>([qras])))?' SEGMENT_RANGE = fr'{ROUTE_NAME}(?:(--|/)(?P<slice>({SLICE})))?(?:/(?P<selector>([qra])))?'
BOOTLOG_NAME = ROUTE_NAME BOOTLOG_NAME = ROUTE_NAME

@ -96,7 +96,6 @@ class _LogFileReader:
class ReadMode(enum.StrEnum): class ReadMode(enum.StrEnum):
RLOG = "r" # only read rlogs RLOG = "r" # only read rlogs
QLOG = "q" # only read qlogs QLOG = "q" # only read qlogs
SANITIZED = "s" # read from the commaCarSegments database
AUTO = "a" # default to rlogs, fallback to qlogs AUTO = "a" # default to rlogs, fallback to qlogs
AUTO_INTERACTIVE = "i" # default to rlogs, fallback to qlogs with a prompt from the user AUTO_INTERACTIVE = "i" # default to rlogs, fallback to qlogs with a prompt from the user
@ -216,9 +215,6 @@ def check_source(source: Source, *args) -> list[LogPath]:
def auto_source(sr: SegmentRange, sources: list[Source], mode: ReadMode = ReadMode.RLOG) -> list[LogPath]: def auto_source(sr: SegmentRange, sources: list[Source], mode: ReadMode = ReadMode.RLOG) -> list[LogPath]:
if mode == ReadMode.SANITIZED:
return comma_car_segments_source(sr, mode)
exceptions = {} exceptions = {}
# for automatic fallback modes, auto_source needs to first check if rlogs exist for any source # for automatic fallback modes, auto_source needs to first check if rlogs exist for any source

Loading…
Cancel
Save