Filtering LKAS HUD messages (#468)
* Filtering LKAS HUD messages * Added nissan test_fwd_hook() * Added Nissan TX_MSGS safety test Co-authored-by: rbiasini <riccardo.biasini@gmail.com>master
parent
99050f4129
commit
5b1a8dc873
|
@ -15,7 +15,7 @@ const struct lookup_t NISSAN_LOOKUP_MAX_ANGLE = {
|
||||||
|
|
||||||
const int NISSAN_DEG_TO_CAN = 100;
|
const int NISSAN_DEG_TO_CAN = 100;
|
||||||
|
|
||||||
const AddrBus NISSAN_TX_MSGS[] = {{0x169, 0}, {0x20b, 2}};
|
const AddrBus NISSAN_TX_MSGS[] = {{0x169, 0}, {0x2b1, 0}, {0x4cc, 0}, {0x20b, 2}};
|
||||||
|
|
||||||
AddrCheckStruct nissan_rx_checks[] = {
|
AddrCheckStruct nissan_rx_checks[] = {
|
||||||
{.addr = {0x2}, .bus = 0, .expected_timestep = 10000U},
|
{.addr = {0x2}, .bus = 0, .expected_timestep = 10000U},
|
||||||
|
@ -187,8 +187,8 @@ static int nissan_fwd_hook(int bus_num, CAN_FIFOMailBox_TypeDef *to_fwd) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bus_num == 2) {
|
if (bus_num == 2) {
|
||||||
// 0x169 is LKAS
|
// 0x169 is LKAS, 0x2b1 LKAS_HUD, 0x4cc LKAS_HUD_INFO_MSG
|
||||||
int block_msg = (addr == 0x169);
|
int block_msg = ((addr == 0x169) || (addr == 0x2b1) || (addr == 0x4cc));
|
||||||
if (!block_msg) {
|
if (!block_msg) {
|
||||||
bus_fwd = 0; // V-CAN
|
bus_fwd = 0; // V-CAN
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ ANGLE_DELTA_BP = [0., 5., 15.]
|
||||||
ANGLE_DELTA_V = [5., .8, .15] # windup limit
|
ANGLE_DELTA_V = [5., .8, .15] # windup limit
|
||||||
ANGLE_DELTA_VU = [5., 3.5, 0.4] # unwind limit
|
ANGLE_DELTA_VU = [5., 3.5, 0.4] # unwind limit
|
||||||
|
|
||||||
TX_MSGS = [[0x169, 0], [0x20b, 2]]
|
TX_MSGS = [[0x169, 0], [0x2b1, 0], [0x4cc, 0], [0x20b, 2]]
|
||||||
|
|
||||||
def twos_comp(val, bits):
|
def twos_comp(val, bits):
|
||||||
if val >= 0:
|
if val >= 0:
|
||||||
|
@ -176,5 +176,23 @@ class TestNissanSafety(unittest.TestCase):
|
||||||
def test_relay_malfunction(self):
|
def test_relay_malfunction(self):
|
||||||
StdTest.test_relay_malfunction(self, 0x169)
|
StdTest.test_relay_malfunction(self, 0x169)
|
||||||
|
|
||||||
|
def test_fwd_hook(self):
|
||||||
|
|
||||||
|
buss = list(range(0x0, 0x3))
|
||||||
|
msgs = list(range(0x1, 0x800))
|
||||||
|
|
||||||
|
blocked_msgs = [0x169,0x2b1,0x4cc]
|
||||||
|
for b in buss:
|
||||||
|
for m in msgs:
|
||||||
|
if b == 0:
|
||||||
|
fwd_bus = 2
|
||||||
|
elif b == 1:
|
||||||
|
fwd_bus = -1
|
||||||
|
elif b == 2:
|
||||||
|
fwd_bus = -1 if m in blocked_msgs else 0
|
||||||
|
|
||||||
|
# assume len 8
|
||||||
|
self.assertEqual(fwd_bus, self.safety.safety_fwd_hook(b, make_msg(b, m, 8)))
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
Loading…
Reference in New Issue