|
|
|
@ -2,13 +2,36 @@ |
|
|
|
|
import unittest |
|
|
|
|
|
|
|
|
|
from cereal import car |
|
|
|
|
from selfdrive.car.hyundai.values import CAMERA_SCC_CAR, CANFD_CAR, CAN_GEARS, CAR, CHECKSUM, FW_QUERY_CONFIG, \ |
|
|
|
|
FW_VERSIONS, LEGACY_SAFETY_MODE_CAR, PART_NUMBER_FW_PATTERN, PLATFORM_CODE_ECUS, \ |
|
|
|
|
get_platform_codes |
|
|
|
|
|
|
|
|
|
from selfdrive.car.hyundai.values import CAMERA_SCC_CAR, CANFD_CAR, CAN_GEARS, CAR, CHECKSUM, DATE_FW_ECUS, \ |
|
|
|
|
FW_QUERY_CONFIG, FW_VERSIONS, LEGACY_SAFETY_MODE_CAR, \ |
|
|
|
|
PART_NUMBER_FW_PATTERN, PLATFORM_CODE_ECUS, get_platform_codes |
|
|
|
|
Ecu = car.CarParams.Ecu |
|
|
|
|
ECU_NAME = {v: k for k, v in Ecu.schema.enumerants.items()} |
|
|
|
|
|
|
|
|
|
# Some platforms have date codes in a different format we don't yet parse (or are missing). |
|
|
|
|
# For now, assert list of expected missing date cars |
|
|
|
|
NO_DATES_PLATFORMS = { |
|
|
|
|
# CAN FD |
|
|
|
|
CAR.KIA_SPORTAGE_5TH_GEN, |
|
|
|
|
CAR.KIA_SPORTAGE_HYBRID_5TH_GEN, |
|
|
|
|
CAR.SANTA_CRUZ_1ST_GEN, |
|
|
|
|
CAR.TUCSON_4TH_GEN, |
|
|
|
|
CAR.TUCSON_HYBRID_4TH_GEN, |
|
|
|
|
# CAN |
|
|
|
|
CAR.ELANTRA, |
|
|
|
|
CAR.KIA_CEED, |
|
|
|
|
CAR.KIA_FORTE, |
|
|
|
|
CAR.KIA_OPTIMA_G4, |
|
|
|
|
CAR.KIA_OPTIMA_G4_FL, |
|
|
|
|
CAR.KIA_SORENTO, |
|
|
|
|
CAR.KONA, |
|
|
|
|
CAR.KONA_EV, |
|
|
|
|
CAR.KONA_EV_2022, |
|
|
|
|
CAR.KONA_HEV, |
|
|
|
|
CAR.SONATA_LF, |
|
|
|
|
CAR.VELOSTER, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TestHyundaiFingerprint(unittest.TestCase): |
|
|
|
|
def test_canfd_not_in_can_features(self): |
|
|
|
@ -62,10 +85,10 @@ class TestHyundaiFingerprint(unittest.TestCase): |
|
|
|
|
self.assertEqual(1, len(result), f"Unable to parse FW: {fw}") |
|
|
|
|
codes |= result |
|
|
|
|
|
|
|
|
|
# Some newer platforms have date codes in a different format we don't yet parse, |
|
|
|
|
# for now assert we can parse all FW or none |
|
|
|
|
self.assertEqual(len({b"-" in code for code in codes}), 1, |
|
|
|
|
"Not all FW dates are parsable") |
|
|
|
|
if ecu[0] not in DATE_FW_ECUS or car_model in NO_DATES_PLATFORMS: |
|
|
|
|
self.assertTrue(all({b"-" not in code for code in codes})) |
|
|
|
|
else: |
|
|
|
|
self.assertTrue(all({b"-" in code for code in codes})) |
|
|
|
|
|
|
|
|
|
if car_model == CAR.HYUNDAI_GENESIS: |
|
|
|
|
raise unittest.SkipTest("No part numbers for car model") |
|
|
|
|