Exemplo n.º 1
0
 def test_allow_engage_with_gas_interceptor_pressed(self):
     self.safety.safety_rx_hook(interceptor_msg(0x1000, 0x201))
     self.safety.set_controls_allowed(1)
     self.safety.safety_rx_hook(interceptor_msg(0x1000, 0x201))
     self.assertTrue(self.safety.get_controls_allowed())
     self.safety.safety_rx_hook(interceptor_msg(0, 0x201))
     self.safety.set_gas_interceptor_detected(False)
Exemplo n.º 2
0
 def test_prev_gas_interceptor(self):
     self.safety.safety_rx_hook(interceptor_msg(0x0, 0x201))
     self.assertFalse(self.safety.get_gas_interceptor_prev())
     self.safety.safety_rx_hook(interceptor_msg(0x1000, 0x201))
     self.assertTrue(self.safety.get_gas_interceptor_prev())
     self.safety.safety_rx_hook(interceptor_msg(0x0, 0x201))
     self.safety.set_gas_interceptor_detected(False)
Exemplo n.º 3
0
 def test_unsafe_mode_no_disengage_on_gas_interceptor(self):
     self.safety.set_controls_allowed(True)
     self.safety.set_unsafe_mode(UNSAFE_MODE.DISABLE_DISENGAGE_ON_GAS)
     for g in range(0, 0x1000):
         self._rx(interceptor_msg(g, 0x201))
         self.assertTrue(self.safety.get_controls_allowed())
         self._rx(interceptor_msg(0, 0x201))
         self.safety.set_gas_interceptor_detected(False)
     self.safety.set_unsafe_mode(UNSAFE_MODE.DEFAULT)
Exemplo n.º 4
0
 def test_disengage_on_gas_interceptor(self):
     for g in range(0, 0x1000):
         self.safety.safety_rx_hook(interceptor_msg(0, 0x201))
         self.safety.set_controls_allowed(True)
         self.safety.safety_rx_hook(interceptor_msg(g, 0x201))
         remain_enabled = g <= INTERCEPTOR_THRESHOLD
         self.assertEqual(remain_enabled,
                          self.safety.get_controls_allowed())
         self.safety.safety_rx_hook(interceptor_msg(0, 0x201))
         self.safety.set_gas_interceptor_detected(False)
Exemplo n.º 5
0
    def test_tx_hook_on_pedal_pressed_on_unsafe_gas_mode(self):
        for pedal in ['brake', 'gas', 'interceptor']:
            self.safety.set_unsafe_mode(UNSAFE_MODE.DISABLE_DISENGAGE_ON_GAS)
            if pedal == 'brake':
                # brake_pressed_prev and honda_moving
                self.safety.safety_rx_hook(self._speed_msg(100))
                self.safety.safety_rx_hook(self._brake_msg(1))
                allow_ctrl = False
            elif pedal == 'gas':
                # gas_pressed_prev
                self.safety.safety_rx_hook(self._gas_msg(1))
                allow_ctrl = True
            elif pedal == 'interceptor':
                # gas_interceptor_prev > INTERCEPTOR_THRESHOLD
                self.safety.safety_rx_hook(
                    interceptor_msg(INTERCEPTOR_THRESHOLD + 1, 0x201))
                self.safety.safety_rx_hook(
                    interceptor_msg(INTERCEPTOR_THRESHOLD + 1, 0x201))
                allow_ctrl = True

            self.safety.set_controls_allowed(1)
            hw = self.safety.get_honda_hw()
            if hw == HONDA_N_HW:
                self.safety.set_honda_fwd_brake(False)
                self.assertEqual(
                    allow_ctrl,
                    self.safety.safety_tx_hook(
                        self._send_brake_msg_nidec(0, 1, NIDEC_MAX_BRAKE)))
                self.assertEqual(
                    allow_ctrl,
                    self.safety.safety_tx_hook(
                        interceptor_msg(INTERCEPTOR_THRESHOLD, 0x200)))
            self.assertEqual(
                allow_ctrl,
                self.safety.safety_tx_hook(self._send_steer_msg(0x1000)))
            # reset status
            self.safety.set_controls_allowed(0)
            self.safety.set_unsafe_mode(UNSAFE_MODE.DEFAULT)
            self.safety.safety_tx_hook(self._send_brake_msg_nidec(0, 1, 0))
            self.safety.safety_tx_hook(self._send_steer_msg(0))
            self.safety.safety_tx_hook(interceptor_msg(0, 0x200))
            if pedal == 'brake':
                self.safety.safety_rx_hook(self._speed_msg(0))
                self.safety.safety_rx_hook(self._brake_msg(0))
            elif pedal == 'gas':
                self.safety.safety_rx_hook(self._gas_msg(0))
            elif pedal == 'interceptor':
                self.safety.set_gas_interceptor_detected(False)
Exemplo n.º 6
0
    def test_tx_hook_on_pedal_pressed(self):
        for pedal in ['brake', 'gas', 'interceptor']:
            if pedal == 'brake':
                # brake_pressed_prev and honda_moving
                self.safety.safety_rx_hook(self._speed_msg(100))
                self.safety.safety_rx_hook(self._brake_msg(1))
            elif pedal == 'gas':
                # gas_pressed_prev
                self.safety.safety_rx_hook(self._gas_msg(1))
            elif pedal == 'interceptor':
                # gas_interceptor_prev > INTERCEPTOR_THRESHOLD
                self.safety.safety_rx_hook(
                    interceptor_msg(INTERCEPTOR_THRESHOLD + 1, 0x201))
                self.safety.safety_rx_hook(
                    interceptor_msg(INTERCEPTOR_THRESHOLD + 1, 0x201))

            self.safety.set_controls_allowed(1)
            hw = self.safety.get_honda_hw()
            if hw == HONDA_N_HW:
                self.safety.set_honda_fwd_brake(False)
                self.assertFalse(
                    self.safety.safety_tx_hook(
                        self._send_brake_msg_nidec(0, 1, NIDEC_MAX_BRAKE)))
                self.assertFalse(
                    self.safety.safety_tx_hook(
                        interceptor_msg(INTERCEPTOR_THRESHOLD, 0x200)))
            self.assertFalse(
                self.safety.safety_tx_hook(self._send_steer_msg(0x1000)))

            # reset status
            self.safety.set_controls_allowed(0)
            self.safety.safety_tx_hook(self._send_brake_msg_nidec(0, 1, 0))
            self.safety.safety_tx_hook(self._send_steer_msg(0))
            self.safety.safety_tx_hook(interceptor_msg(0, 0x200))
            if pedal == 'brake':
                self.safety.safety_rx_hook(self._speed_msg(0))
                self.safety.safety_rx_hook(self._brake_msg(0))
            elif pedal == 'gas':
                self.safety.safety_rx_hook(self._gas_msg(0))
            elif pedal == 'interceptor':
                self.safety.set_gas_interceptor_detected(False)
Exemplo n.º 7
0
 def test_gas_interceptor_safety_check(self):
     if self.safety.get_honda_hw() == HONDA_N_HW:
         for gas in np.arange(0, 4000, 100):
             for controls_allowed in [True, False]:
                 self.safety.set_controls_allowed(controls_allowed)
                 if controls_allowed:
                     send = True
                 else:
                     send = gas == 0
                 self.assertEqual(
                     send,
                     self.safety.safety_tx_hook(interceptor_msg(gas,
                                                                0x200)))
Exemplo n.º 8
0
 def test_gas_interceptor_safety_check(self):
     self.safety.set_controls_allowed(0)
     self.assertTrue(self._tx(interceptor_msg(0, 0x200)))
     self.assertFalse(self._tx(interceptor_msg(0x1000, 0x200)))
     self.safety.set_controls_allowed(1)
     self.assertTrue(self._tx(interceptor_msg(0x1000, 0x200)))
Exemplo n.º 9
0
 def test_prev_gas_interceptor(self):
     self._rx(interceptor_msg(0x0, 0x201))
     self.assertFalse(self.safety.get_gas_interceptor_prev())
     self._rx(interceptor_msg(0x1000, 0x201))
     self.assertTrue(self.safety.get_gas_interceptor_prev())
     self._rx(interceptor_msg(0x0, 0x201))