match safety enum in cereal (#285)
* match safety enum in cereal * removing tons of hardcoding * add pythonpath to safety test * Fix safety test in Dockermaster
parent
a338d39322
commit
70219d7bb2
|
@ -11,7 +11,7 @@ jobs:
|
|||
- run:
|
||||
name: Run safety test
|
||||
command: |
|
||||
docker run panda_safety /bin/bash -c "cd /panda/tests/safety; ./test.sh"
|
||||
docker run panda_safety /bin/bash -c "cd /panda/tests/safety; PYTHONPATH=/ ./test.sh"
|
||||
|
||||
misra-c2012:
|
||||
machine:
|
||||
|
|
|
@ -45,42 +45,43 @@ typedef struct {
|
|||
const safety_hooks *hooks;
|
||||
} safety_hook_config;
|
||||
|
||||
// from cereal.car.CarParams.SafetyModel
|
||||
#define SAFETY_NOOUTPUT 0U
|
||||
#define SAFETY_HONDA 1U
|
||||
#define SAFETY_TOYOTA 2U
|
||||
#define SAFETY_GM 3U
|
||||
#define SAFETY_HONDA_BOSCH 4U
|
||||
#define SAFETY_FORD 5U
|
||||
#define SAFETY_CADILLAC 6U
|
||||
#define SAFETY_HYUNDAI 7U
|
||||
#define SAFETY_TESLA 8U
|
||||
#define SAFETY_ELM327 3U
|
||||
#define SAFETY_GM 4U
|
||||
#define SAFETY_HONDA_BOSCH 5U
|
||||
#define SAFETY_FORD 6U
|
||||
#define SAFETY_CADILLAC 7U
|
||||
#define SAFETY_HYUNDAI 8U
|
||||
#define SAFETY_CHRYSLER 9U
|
||||
#define SAFETY_SUBARU 10U
|
||||
#define SAFETY_GM_PASSIVE 11U
|
||||
#define SAFETY_MAZDA 12U
|
||||
#define SAFETY_GM_ASCM 0x1334U
|
||||
#define SAFETY_TOYOTA_IPAS 0x1335U
|
||||
#define SAFETY_ALLOUTPUT 0x1337U
|
||||
#define SAFETY_ELM327 0xE327U
|
||||
#define SAFETY_TESLA 10U
|
||||
#define SAFETY_SUBARU 11U
|
||||
#define SAFETY_GM_PASSIVE 12U
|
||||
#define SAFETY_MAZDA 13U
|
||||
#define SAFETY_TOYOTA_IPAS 16U
|
||||
#define SAFETY_ALLOUTPUT 17U
|
||||
#define SAFETY_GM_ASCM 18U
|
||||
|
||||
const safety_hook_config safety_hook_registry[] = {
|
||||
{SAFETY_NOOUTPUT, &nooutput_hooks},
|
||||
{SAFETY_HONDA, &honda_hooks},
|
||||
{SAFETY_HONDA_BOSCH, &honda_bosch_hooks},
|
||||
{SAFETY_TOYOTA, &toyota_hooks},
|
||||
{SAFETY_ELM327, &elm327_hooks},
|
||||
{SAFETY_GM, &gm_hooks},
|
||||
{SAFETY_HONDA_BOSCH, &honda_bosch_hooks},
|
||||
{SAFETY_FORD, &ford_hooks},
|
||||
{SAFETY_CADILLAC, &cadillac_hooks},
|
||||
{SAFETY_HYUNDAI, &hyundai_hooks},
|
||||
{SAFETY_CHRYSLER, &chrysler_hooks},
|
||||
{SAFETY_TESLA, &tesla_hooks},
|
||||
{SAFETY_SUBARU, &subaru_hooks},
|
||||
{SAFETY_GM_PASSIVE, &gm_passive_hooks},
|
||||
{SAFETY_MAZDA, &mazda_hooks},
|
||||
{SAFETY_TOYOTA_IPAS, &toyota_ipas_hooks},
|
||||
{SAFETY_GM_PASSIVE, &gm_passive_hooks},
|
||||
{SAFETY_GM_ASCM, &gm_ascm_hooks},
|
||||
{SAFETY_TESLA, &tesla_hooks},
|
||||
{SAFETY_ALLOUTPUT, &alloutput_hooks},
|
||||
{SAFETY_ELM327, &elm327_hooks},
|
||||
{SAFETY_GM_ASCM, &gm_ascm_hooks},
|
||||
};
|
||||
|
||||
int safety_set_mode(uint16_t mode, int16_t param) {
|
||||
|
|
|
@ -52,6 +52,8 @@ typedef struct __attribute__((packed)) {
|
|||
#define PANDA_USB_CAN_WRITE_BUS_NUM 3
|
||||
#define PANDA_USB_LIN_WRITE_BUS_NUM 2
|
||||
|
||||
#define SAFETY_ELM327 3U
|
||||
|
||||
typedef struct _elm_tcp_conn {
|
||||
struct espconn *conn;
|
||||
struct _elm_tcp_conn *next;
|
||||
|
@ -1420,7 +1422,7 @@ static void ICACHE_FLASH_ATTR elm_process_at_cmd(char *cmd, uint16_t len) {
|
|||
|
||||
elm_append_rsp_const("\r\r");
|
||||
elm_append_rsp_const(IDENT_MSG);
|
||||
panda_set_safety_mode(0xE327);
|
||||
panda_set_safety_mode(SAFETY_ELM327);
|
||||
|
||||
elm_proto_reinit(elm_current_proto());
|
||||
return;
|
||||
|
|
|
@ -38,6 +38,9 @@
|
|||
|
||||
#define PANDA_DLC_MASK 0x0F
|
||||
|
||||
#define SAFETY_ALLOUTPUT 17
|
||||
#define SAFETY_NOOUTPUT 0
|
||||
|
||||
struct panda_usb_ctx {
|
||||
struct panda_inf_priv *priv;
|
||||
u32 ndx;
|
||||
|
@ -156,7 +159,7 @@ static int panda_set_output_enable(struct panda_inf_priv* priv, bool enable){
|
|||
return usb_control_msg(priv->priv_dev->udev,
|
||||
usb_sndctrlpipe(priv->priv_dev->udev, 0),
|
||||
0xDC, USB_TYPE_VENDOR | USB_RECIP_DEVICE,
|
||||
enable ? 0x1337 : 0, 0, NULL, 0, USB_CTRL_SET_TIMEOUT);
|
||||
enable ? SAFETY_ALLOUTPUT : SAFETY_NOOUTPUT, 0, NULL, 0, USB_CTRL_SET_TIMEOUT);
|
||||
}
|
||||
|
||||
static void panda_usb_write_bulk_callback(struct urb *urb)
|
||||
|
|
|
@ -40,7 +40,7 @@ namespace panda {
|
|||
typedef enum _PANDA_SAFETY_MODE : uint16_t {
|
||||
SAFETY_NOOUTPUT = 0,
|
||||
SAFETY_HONDA = 1,
|
||||
SAFETY_ALLOUTPUT = 0x1337,
|
||||
SAFETY_ALLOUTPUT = 17,
|
||||
} PANDA_SAFETY_MODE;
|
||||
|
||||
typedef enum _PANDA_SERIAL_PORT : uint8_t {
|
||||
|
|
|
@ -23,7 +23,6 @@ BASEDIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "../")
|
|||
DEBUG = os.getenv("PANDADEBUG") is not None
|
||||
|
||||
# *** wifi mode ***
|
||||
|
||||
def build_st(target, mkfile="Makefile"):
|
||||
from panda import BASEDIR
|
||||
cmd = 'cd %s && make -f %s clean && make -f %s %s >/dev/null' % (os.path.join(BASEDIR, "board"), mkfile, mkfile, target)
|
||||
|
@ -109,20 +108,25 @@ class WifiHandle(object):
|
|||
# *** normal mode ***
|
||||
|
||||
class Panda(object):
|
||||
|
||||
# matches cereal.car.CarParams.SafetyModel
|
||||
SAFETY_NOOUTPUT = 0
|
||||
SAFETY_HONDA = 1
|
||||
SAFETY_TOYOTA = 2
|
||||
SAFETY_GM = 3
|
||||
SAFETY_HONDA_BOSCH = 4
|
||||
SAFETY_FORD = 5
|
||||
SAFETY_CADILLAC = 6
|
||||
SAFETY_HYUNDAI = 7
|
||||
SAFETY_TESLA = 8
|
||||
SAFETY_ELM327 = 3
|
||||
SAFETY_GM = 4
|
||||
SAFETY_HONDA_BOSCH = 5
|
||||
SAFETY_FORD = 6
|
||||
SAFETY_CADILLAC = 7
|
||||
SAFETY_HYUNDAI = 8
|
||||
SAFETY_CHRYSLER = 9
|
||||
SAFETY_TOYOTA_IPAS = 0x1335
|
||||
SAFETY_TOYOTA_NOLIMITS = 0x1336
|
||||
SAFETY_ALLOUTPUT = 0x1337
|
||||
SAFETY_ELM327 = 0xE327
|
||||
SAFETY_TESLA = 10
|
||||
SAFETY_SUBARU = 11
|
||||
SAFETY_GM_PASSIVE = 12
|
||||
SAFETY_MAZDA = 13
|
||||
SAFETY_TOYOTA_IPAS = 16
|
||||
SAFETY_ALLOUTPUT = 17
|
||||
SAFETY_GM_ASCM = 18
|
||||
|
||||
SERIAL_DEBUG = 0
|
||||
SERIAL_ESP = 1
|
||||
|
|
|
@ -15,7 +15,7 @@ def sec_since_boot():
|
|||
|
||||
def can_printer():
|
||||
p = Panda()
|
||||
p.set_safety_mode(0x1337)
|
||||
p.set_safety_mode(Panda.SAFETY_ALLOUTPUT)
|
||||
|
||||
start = sec_since_boot()
|
||||
lp = sec_since_boot()
|
||||
|
|
|
@ -301,7 +301,7 @@ def test_elm_panda_safety_mode_KWPFast():
|
|||
p_car.kline_drain()
|
||||
|
||||
p_elm = Panda("WIFI")
|
||||
p_elm.set_safety_mode(0xE327);
|
||||
p_elm.set_safety_mode(Panda.SAFETY_ELM327);
|
||||
|
||||
def get_checksum(dat):
|
||||
result = 0
|
||||
|
@ -625,7 +625,7 @@ def test_elm_panda_safety_mode_ISO15765():
|
|||
p_car.set_safety_mode(Panda.SAFETY_ALLOUTPUT)
|
||||
|
||||
p_elm = Panda("WIFI")
|
||||
p_elm.set_safety_mode(0xE327);
|
||||
p_elm.set_safety_mode(Panda.SAFETY_ELM327);
|
||||
|
||||
#sim = elm_car_simulator.ELMCarSimulator(serial, lin=False)
|
||||
#sim.start()
|
||||
|
|
|
@ -53,7 +53,7 @@ if __name__ == "__main__":
|
|||
args = parser.parse_args()
|
||||
|
||||
p = Panda()
|
||||
p.set_safety_mode(0x1337)
|
||||
p.set_safety_mode(Panda.SAFETY_ALLOUTPUT)
|
||||
|
||||
while 1:
|
||||
if len(p.can_recv()) == 0:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
FROM ubuntu:16.04
|
||||
|
||||
RUN apt-get update && apt-get install -y clang make python python-pip git curl locales zlib1g-dev libffi-dev bzip2 libssl-dev libbz2-dev
|
||||
RUN apt-get update && apt-get install -y clang make python python-pip git curl locales zlib1g-dev libffi-dev bzip2 libssl-dev libbz2-dev libusb-1.0-0
|
||||
|
||||
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen
|
||||
ENV LANG en_US.UTF-8
|
||||
|
@ -14,6 +14,6 @@ RUN pyenv install 3.7.3
|
|||
RUN pyenv global 3.7.3
|
||||
RUN pyenv rehash
|
||||
|
||||
COPY tests/safety/requirements.txt /panda/tests/safety/requirements.txt
|
||||
RUN pip install -r /panda/tests/safety/requirements.txt
|
||||
COPY tests/safety/requirements.txt requirements.txt
|
||||
RUN pip install -r requirements.txt
|
||||
COPY . /panda
|
||||
|
|
|
@ -1,2 +1,4 @@
|
|||
cffi==1.11.4
|
||||
numpy==1.14.5
|
||||
libusb1==1.6.6
|
||||
requests
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
import unittest
|
||||
import numpy as np
|
||||
import libpandasafety_py
|
||||
from panda import Panda
|
||||
|
||||
MAX_RATE_UP = 2
|
||||
MAX_RATE_DOWN = 5
|
||||
|
@ -31,7 +32,7 @@ class TestCadillacSafety(unittest.TestCase):
|
|||
@classmethod
|
||||
def setUp(cls):
|
||||
cls.safety = libpandasafety_py.libpandasafety
|
||||
cls.safety.safety_set_mode(6, 0)
|
||||
cls.safety.safety_set_mode(Panda.SAFETY_CADILLAC, 0)
|
||||
cls.safety.init_tests_cadillac()
|
||||
|
||||
def _send_msg(self, bus, addr, length):
|
||||
|
|
|
@ -4,6 +4,7 @@ import glob
|
|||
import unittest
|
||||
import numpy as np
|
||||
import libpandasafety_py
|
||||
from panda import Panda
|
||||
|
||||
MAX_RATE_UP = 3
|
||||
MAX_RATE_DOWN = 3
|
||||
|
@ -35,7 +36,7 @@ class TestChryslerSafety(unittest.TestCase):
|
|||
@classmethod
|
||||
def setUp(cls):
|
||||
cls.safety = libpandasafety_py.libpandasafety
|
||||
cls.safety.safety_set_mode(9, 0)
|
||||
cls.safety.safety_set_mode(Panda.SAFETY_CHRYSLER, 0)
|
||||
cls.safety.init_tests_chrysler()
|
||||
|
||||
def _send_msg(self, bus, addr, length):
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
import unittest
|
||||
import numpy as np
|
||||
import libpandasafety_py
|
||||
from panda import Panda
|
||||
|
||||
MAX_RATE_UP = 7
|
||||
MAX_RATE_DOWN = 17
|
||||
|
@ -32,7 +33,7 @@ class TestGmSafety(unittest.TestCase):
|
|||
@classmethod
|
||||
def setUp(cls):
|
||||
cls.safety = libpandasafety_py.libpandasafety
|
||||
cls.safety.safety_set_mode(3, 0)
|
||||
cls.safety.safety_set_mode(Panda.SAFETY_GM, 0)
|
||||
cls.safety.init_tests_gm()
|
||||
|
||||
def _send_msg(self, bus, addr, length):
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
import unittest
|
||||
import numpy as np
|
||||
import libpandasafety_py
|
||||
from panda import Panda
|
||||
|
||||
MAX_BRAKE = 255
|
||||
|
||||
|
@ -11,7 +12,7 @@ class TestHondaSafety(unittest.TestCase):
|
|||
@classmethod
|
||||
def setUp(cls):
|
||||
cls.safety = libpandasafety_py.libpandasafety
|
||||
cls.safety.safety_set_mode(1, 0)
|
||||
cls.safety.safety_set_mode(Panda.SAFETY_HONDA, 0)
|
||||
cls.safety.init_tests_honda()
|
||||
|
||||
def _send_msg(self, bus, addr, length):
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
import unittest
|
||||
import numpy as np
|
||||
import libpandasafety_py
|
||||
from panda import Panda
|
||||
|
||||
MAX_BRAKE = 255
|
||||
|
||||
|
@ -9,7 +10,7 @@ class TestHondaSafety(unittest.TestCase):
|
|||
@classmethod
|
||||
def setUp(cls):
|
||||
cls.safety = libpandasafety_py.libpandasafety
|
||||
cls.safety.safety_set_mode(4, 0)
|
||||
cls.safety.safety_set_mode(Panda.SAFETY_HONDA_BOSCH, 0)
|
||||
cls.safety.init_tests_honda()
|
||||
|
||||
def _send_msg(self, bus, addr, length):
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
import unittest
|
||||
import numpy as np
|
||||
import libpandasafety_py
|
||||
from panda import Panda
|
||||
|
||||
MAX_RATE_UP = 3
|
||||
MAX_RATE_DOWN = 7
|
||||
|
@ -29,7 +30,7 @@ class TestHyundaiSafety(unittest.TestCase):
|
|||
@classmethod
|
||||
def setUp(cls):
|
||||
cls.safety = libpandasafety_py.libpandasafety
|
||||
cls.safety.safety_set_mode(7, 0)
|
||||
cls.safety.safety_set_mode(Panda.SAFETY_HYUNDAI, 0)
|
||||
cls.safety.init_tests_hyundai()
|
||||
|
||||
def _send_msg(self, bus, addr, length):
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
import unittest
|
||||
import numpy as np
|
||||
import libpandasafety_py
|
||||
from panda import Panda
|
||||
|
||||
MAX_RATE_UP = 50
|
||||
MAX_RATE_DOWN = 70
|
||||
|
@ -29,7 +30,7 @@ class TestSubaruSafety(unittest.TestCase):
|
|||
@classmethod
|
||||
def setUp(cls):
|
||||
cls.safety = libpandasafety_py.libpandasafety
|
||||
cls.safety.safety_set_mode(10, 0)
|
||||
cls.safety.safety_set_mode(Panda.SAFETY_SUBARU, 0)
|
||||
cls.safety.init_tests_subaru()
|
||||
|
||||
def _send_msg(self, bus, addr, length):
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
import unittest
|
||||
import numpy as np
|
||||
import libpandasafety_py
|
||||
from panda import Panda
|
||||
|
||||
MAX_RATE_UP = 10
|
||||
MAX_RATE_DOWN = 25
|
||||
|
@ -33,7 +34,7 @@ class TestToyotaSafety(unittest.TestCase):
|
|||
@classmethod
|
||||
def setUp(cls):
|
||||
cls.safety = libpandasafety_py.libpandasafety
|
||||
cls.safety.safety_set_mode(2, 100)
|
||||
cls.safety.safety_set_mode(Panda.SAFETY_TOYOTA, 100)
|
||||
cls.safety.init_tests_toyota()
|
||||
|
||||
def _send_msg(self, bus, addr, length):
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
import unittest
|
||||
import numpy as np
|
||||
import libpandasafety_py
|
||||
from panda import Panda
|
||||
|
||||
IPAS_OVERRIDE_THRESHOLD = 200
|
||||
|
||||
|
@ -25,7 +26,7 @@ class TestToyotaSafety(unittest.TestCase):
|
|||
@classmethod
|
||||
def setUp(cls):
|
||||
cls.safety = libpandasafety_py.libpandasafety
|
||||
cls.safety.safety_set_mode(0x1335, 66)
|
||||
cls.safety.safety_set_mode(Panda.SAFETY_TOYOTA_IPAS, 66)
|
||||
cls.safety.init_tests_toyota()
|
||||
|
||||
def _torque_driver_msg(self, torque):
|
||||
|
|
|
@ -1,24 +1,7 @@
|
|||
#!/usr/bin/env python3
|
||||
import struct
|
||||
import panda.tests.safety.libpandasafety_py as libpandasafety_py
|
||||
|
||||
safety_modes = {
|
||||
"NOOUTPUT": 0,
|
||||
"HONDA": 1,
|
||||
"TOYOTA": 2,
|
||||
"GM": 3,
|
||||
"HONDA_BOSCH": 4,
|
||||
"FORD": 5,
|
||||
"CADILLAC": 6,
|
||||
"HYUNDAI": 7,
|
||||
"TESLA": 8,
|
||||
"CHRYSLER": 9,
|
||||
"SUBARU": 10,
|
||||
"GM_ASCM": 0x1334,
|
||||
"TOYOTA_IPAS": 0x1335,
|
||||
"ALLOUTPUT": 0x1337,
|
||||
"ELM327": 0xE327
|
||||
}
|
||||
from panda import Panda
|
||||
|
||||
def to_signed(d, bits):
|
||||
ret = d
|
||||
|
@ -28,51 +11,51 @@ def to_signed(d, bits):
|
|||
|
||||
def is_steering_msg(mode, addr):
|
||||
ret = False
|
||||
if mode == safety_modes["HONDA"] or mode == safety_modes["HONDA_BOSCH"]:
|
||||
if mode == Panda.SAFETY_HONDA or mode == Panda.SAFETY_HONDA_BOSCH:
|
||||
ret = (addr == 0xE4) or (addr == 0x194) or (addr == 0x33D)
|
||||
elif mode == safety_modes["TOYOTA"]:
|
||||
elif mode == Panda.SAFETY_TOYOTA:
|
||||
ret = addr == 0x2E4
|
||||
elif mode == safety_modes["GM"]:
|
||||
elif mode == Panda.SAFETY_GM:
|
||||
ret = addr == 384
|
||||
elif mode == safety_modes["HYUNDAI"]:
|
||||
elif mode == Panda.SAFETY_HYUNDAI:
|
||||
ret = addr == 832
|
||||
elif mode == safety_modes["CHRYSLER"]:
|
||||
elif mode == Panda.SAFETY_CHRYSLER:
|
||||
ret = addr == 0x292
|
||||
elif mode == safety_modes["SUBARU"]:
|
||||
elif mode == Panda.SAFETY_SUBARU:
|
||||
ret = addr == 0x122
|
||||
return ret
|
||||
|
||||
def get_steer_torque(mode, to_send):
|
||||
ret = 0
|
||||
if mode == safety_modes["HONDA"] or mode == safety_modes["HONDA_BOSCH"]:
|
||||
if mode == Panda.SAFETY_HONDA or mode == Panda.SAFETY_HONDA_BOSCH:
|
||||
ret = to_send.RDLR & 0xFFFF0000
|
||||
elif mode == safety_modes["TOYOTA"]:
|
||||
elif mode == Panda.SAFETY_TOYOTA:
|
||||
ret = (to_send.RDLR & 0xFF00) | ((to_send.RDLR >> 16) & 0xFF)
|
||||
ret = to_signed(ret, 16)
|
||||
elif mode == safety_modes["GM"]:
|
||||
elif mode == Panda.SAFETY_GM:
|
||||
ret = ((to_send.RDLR & 0x7) << 8) + ((to_send.RDLR & 0xFF00) >> 8)
|
||||
ret = to_signed(ret, 11)
|
||||
elif mode == safety_modes["HYUNDAI"]:
|
||||
elif mode == Panda.SAFETY_HYUNDAI:
|
||||
ret = ((to_send.RDLR >> 16) & 0x7ff) - 1024
|
||||
elif mode == safety_modes["CHRYSLER"]:
|
||||
elif mode == Panda.SAFETY_CHRYSLER:
|
||||
ret = ((to_send.RDLR & 0x7) << 8) + ((to_send.RDLR & 0xFF00) >> 8) - 1024
|
||||
elif mode == safety_modes["SUBARU"]:
|
||||
elif mode == Panda.SAFETY_SUBARU:
|
||||
ret = ((to_send.RDLR >> 16) & 0x1FFF)
|
||||
ret = to_signed(ret, 13)
|
||||
return ret
|
||||
|
||||
def set_desired_torque_last(safety, mode, torque):
|
||||
if mode == safety_modes["HONDA"] or mode == safety_modes["HONDA_BOSCH"]:
|
||||
if mode == Panda.SAFETY_HONDA or mode == Panda.SAFETY_HONDA_BOSCH:
|
||||
pass # honda safety mode doesn't enforce a rate on steering msgs
|
||||
elif mode == safety_modes["TOYOTA"]:
|
||||
elif mode == Panda.SAFETY_TOYOTA:
|
||||
safety.set_toyota_desired_torque_last(torque)
|
||||
elif mode == safety_modes["GM"]:
|
||||
elif mode == Panda.SAFETY_GM:
|
||||
safety.set_gm_desired_torque_last(torque)
|
||||
elif mode == safety_modes["HYUNDAI"]:
|
||||
elif mode == Panda.SAFETY_HYUNDAI:
|
||||
safety.set_hyundai_desired_torque_last(torque)
|
||||
elif mode == safety_modes["CHRYSLER"]:
|
||||
elif mode == Panda.SAFETY_CHRYSLER:
|
||||
safety.set_chrysler_desired_torque_last(torque)
|
||||
elif mode == safety_modes["SUBARU"]:
|
||||
elif mode == Panda.SAFETY_SUBARU:
|
||||
safety.set_subaru_desired_torque_last(torque)
|
||||
|
||||
def package_can_msg(msg):
|
||||
|
|
|
@ -2,10 +2,11 @@
|
|||
|
||||
import os
|
||||
import sys
|
||||
from panda import Panda
|
||||
import panda.tests.safety.libpandasafety_py as libpandasafety_py
|
||||
from panda.tests.safety_replay.helpers import is_steering_msg, get_steer_torque, \
|
||||
set_desired_torque_last, package_can_msg, \
|
||||
init_segment, safety_modes
|
||||
init_segment
|
||||
from tools.lib.logreader import LogReader
|
||||
|
||||
# replay a drive to check for safety violations
|
||||
|
@ -57,10 +58,7 @@ def replay_drive(lr, safety_mode, param):
|
|||
return tx_controls_blocked == 0
|
||||
|
||||
if __name__ == "__main__":
|
||||
if sys.argv[2] in safety_modes:
|
||||
mode = safety_modes[sys.argv[2]]
|
||||
else:
|
||||
mode = int(sys.argv[2])
|
||||
mode = int(sys.argv[2])
|
||||
param = 0 if len(sys.argv) < 4 else int(sys.argv[3])
|
||||
lr = LogReader(sys.argv[1])
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
import os
|
||||
import requests
|
||||
|
||||
from helpers import safety_modes
|
||||
from panda import Panda
|
||||
from replay_drive import replay_drive
|
||||
from tools.lib.logreader import LogReader
|
||||
|
||||
|
@ -11,13 +11,13 @@ BASE_URL = "https://commadataci.blob.core.windows.net/openpilotci/"
|
|||
|
||||
# (route, safety mode, param)
|
||||
logs = [
|
||||
("b0c9d2329ad1606b|2019-05-30--20-23-57.bz2", "HONDA", 0), # HONDA.CIVIC
|
||||
("38bfd238edecbcd7|2019-06-07--10-15-25.bz2", "TOYOTA", 66), # TOYOTA.PRIUS
|
||||
("f89c604cf653e2bf|2018-09-29--13-46-50.bz2", "GM", 0), # GM.VOLT
|
||||
("0375fdf7b1ce594d|2019-05-21--20-10-33.bz2", "HONDA_BOSCH", 1), # HONDA.ACCORD
|
||||
("02ec6bea180a4d36|2019-04-17--11-21-35.bz2", "HYUNDAI", 0), # HYUNDAI.SANTA_FE
|
||||
("03efb1fda29e30fe|2019-02-21--18-03-45.bz2", "CHRYSLER", 0), # CHRYSLER.PACIFICA_2018_HYBRID
|
||||
("791340bc01ed993d|2019-04-08--10-26-00.bz2", "SUBARU", 0), # SUBARU.IMPREZA
|
||||
("b0c9d2329ad1606b|2019-05-30--20-23-57.bz2", Panda.SAFETY_HONDA, 0), # HONDA.CIVIC
|
||||
("38bfd238edecbcd7|2019-06-07--10-15-25.bz2", Panda.SAFETY_TOYOTA, 66), # TOYOTA.PRIUS
|
||||
("f89c604cf653e2bf|2018-09-29--13-46-50.bz2", Panda.SAFETY_GM, 0), # GM.VOLT
|
||||
("0375fdf7b1ce594d|2019-05-21--20-10-33.bz2", Panda.SAFETY_HONDA_BOSCH, 1), # HONDA.ACCORD
|
||||
("02ec6bea180a4d36|2019-04-17--11-21-35.bz2", Panda.SAFETY_HYUNDAI, 0), # HYUNDAI.SANTA_FE
|
||||
("03efb1fda29e30fe|2019-02-21--18-03-45.bz2", Panda.SAFETY_CHRYSLER, 0), # CHRYSLER.PACIFICA_2018_HYBRID
|
||||
("791340bc01ed993d|2019-04-08--10-26-00.bz2", Panda.SAFETY_SUBARU, 0), # SUBARU.IMPREZA
|
||||
]
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
@ -29,10 +29,9 @@ if __name__ == "__main__":
|
|||
failed = []
|
||||
for route, mode, param in logs:
|
||||
lr = LogReader(route)
|
||||
m = safety_modes.get(mode, mode)
|
||||
|
||||
print("\nreplaying %s with safety mode %d and param %s" % (route, m, param))
|
||||
if not replay_drive(lr, m, int(param)):
|
||||
print("\nreplaying %s with safety mode %d and param %s" % (route, mode, param))
|
||||
if not replay_drive(lr, mode, int(param)):
|
||||
failed.append(route)
|
||||
|
||||
for f in failed:
|
||||
|
|
Loading…
Reference in New Issue