Volkswagen: test FW version format (#32162)

* add test

* more explicit
old-commit-hash: 70b8e277d0
pull/32199/head
Shane Smiskol 1 year ago committed by GitHub
parent 9e67d3fd70
commit d3af84c43d
  1. 19
      selfdrive/car/volkswagen/tests/test_volkswagen.py
  2. 4
      selfdrive/car/volkswagen/values.py

@ -0,0 +1,19 @@
#!/usr/bin/env python3
import unittest
from openpilot.selfdrive.car.volkswagen.values import SPARE_PART_FW_PATTERN
from openpilot.selfdrive.car.volkswagen.fingerprints import FW_VERSIONS
class TestVolkswagenPlatformConfigs(unittest.TestCase):
def test_spare_part_fw_pattern(self):
# Relied on for determining if a FW is likely VW
for platform, ecus in FW_VERSIONS.items():
with self.subTest(platform=platform):
for fws in ecus.values():
for fw in fws:
self.assertNotEqual(SPARE_PART_FW_PATTERN.match(fw), None, f"Bad FW: {fw}")
if __name__ == "__main__":
unittest.main()

@ -1,6 +1,7 @@
from collections import namedtuple from collections import namedtuple
from dataclasses import dataclass, field from dataclasses import dataclass, field
from enum import Enum, IntFlag from enum import Enum, IntFlag
import re
from cereal import car from cereal import car
from panda.python import uds from panda.python import uds
@ -362,6 +363,9 @@ VOLKSWAGEN_VERSION_RESPONSE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER +
VOLKSWAGEN_RX_OFFSET = 0x6a VOLKSWAGEN_RX_OFFSET = 0x6a
# TODO: determine the unknown groups
SPARE_PART_FW_PATTERN = re.compile(b'\xf1\x87(?P<gateway>[0-9][0-9A-Z]{2})(?P<unknown>[0-9][0-9A-Z][0-9])(?P<unknown2>[0-9A-Z]{2}[0-9])([A-Z0-9]| )')
FW_QUERY_CONFIG = FwQueryConfig( FW_QUERY_CONFIG = FwQueryConfig(
# TODO: add back whitelists after we gather enough data # TODO: add back whitelists after we gather enough data
requests=[request for bus, obd_multiplexing in [(1, True), (1, False), (0, False)] for request in [ requests=[request for bus, obd_multiplexing in [(1, True), (1, False), (0, False)] for request in [

Loading…
Cancel
Save