From e09dd09654db83187eb5be82dc9166a5dfdd20e7 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sun, 3 Sep 2023 16:39:51 -0700 Subject: [PATCH] only radar --- selfdrive/car/tests/test_models.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/selfdrive/car/tests/test_models.py b/selfdrive/car/tests/test_models.py index 462ec2d114..d9ac3f0b1b 100755 --- a/selfdrive/car/tests/test_models.py +++ b/selfdrive/car/tests/test_models.py @@ -71,6 +71,7 @@ class TestCarModelBase(unittest.TestCase): ci: bool = True can_msgs: List[capnp.lib.capnp._DynamicStructReader] + elm_frame: Optional[int] @unittest.skipIf(SKIP_ENV_VAR in os.environ, f"Long running test skipped. Unset {SKIP_ENV_VAR} to run") @classmethod @@ -111,6 +112,7 @@ class TestCarModelBase(unittest.TestCase): enabled_toggle = True dashcam_only = False left_elm = False + cls.elm_frame = None for msg in lr: if msg.which() == 'pandaStateDEPRECATED': if msg.pandaStateDEPRECATED.safetyModel != SafetyModel.elm327: @@ -123,14 +125,14 @@ class TestCarModelBase(unittest.TestCase): break elif msg.which() == "can": + can_msgs.append(msg) if len(can_msgs) <= FRAME_FINGERPRINT: for m in msg.can: if m.src < 64: fingerprint[m.src][m.address] = len(m.dat) - # Skip CAN messages where OBD port could be multiplexed, and relay is closed - if left_elm: - can_msgs.append(msg) + if cls.elm_frame is None and left_elm: + cls.elm_frame = len(can_msgs) elif msg.which() == "carParams": car_fw = msg.carParams.carFw @@ -219,8 +221,10 @@ class TestCarModelBase(unittest.TestCase): RI = RadarInterface(self.CP) assert RI + # Since OBD port is multiplexed while fingerprinting, start parsing CAN messages + # after we've left ELM mode error_cnt = 0 - for i, msg in enumerate(self.can_msgs): + for i, msg in enumerate(self.can_msgs[self.elm_frame:]): rr = RI.update((msg.as_builder().to_bytes(),)) if rr is not None and i > 50: error_cnt += car.RadarData.Error.canError in rr.errors @@ -253,11 +257,12 @@ class TestCarModelBase(unittest.TestCase): if t > 1e6: self.assertTrue(self.safety.addr_checks_valid()) - # No need to check relay malfunction on disabled routes (relay closed) - if self.openpilot_enabled: + # No need to check relay malfunction on disabled routes (relay closed) or for reasonable fingerprinting time + # TODO: detect when relay has flipped to properly check relay malfunction + if self.openpilot_enabled and t > 5e6: self.assertFalse(self.safety.get_relay_malfunction()) - else: - self.safety.set_relay_malfunction(False) + else: + self.safety.set_relay_malfunction(False) self.assertFalse(len(failed_addrs), f"panda safety RX check failed: {failed_addrs}")