mirror of https://github.com/commaai/panda.git
this is a better name
This commit is contained in:
parent
b50455cc76
commit
892ca5a0f1
|
@ -179,7 +179,7 @@ void safety_tick(const safety_config *cfg) {
|
||||||
// lag threshold is max of: 1s and MAX_MISSED_MSGS * expected timestep.
|
// lag threshold is max of: 1s and MAX_MISSED_MSGS * expected timestep.
|
||||||
// Quite conservative to not risk false triggers.
|
// Quite conservative to not risk false triggers.
|
||||||
// 2s of lag is worse case, since the function is called at 1Hz
|
// 2s of lag is worse case, since the function is called at 1Hz
|
||||||
uint32_t timestep = 1e6 / cfg->rx_checks[i].msg[cfg->rx_checks[i].index].expected_freq;
|
uint32_t timestep = 1e6 / cfg->rx_checks[i].msg[cfg->rx_checks[i].index].frequency;
|
||||||
bool lagging = elapsed_time > MAX(timestep * MAX_MISSED_MSGS, 1e6);
|
bool lagging = elapsed_time > MAX(timestep * MAX_MISSED_MSGS, 1e6);
|
||||||
cfg->rx_checks[i].lagging = lagging;
|
cfg->rx_checks[i].lagging = lagging;
|
||||||
if (lagging) {
|
if (lagging) {
|
||||||
|
|
|
@ -3,7 +3,7 @@ const CanMsg BODY_TX_MSGS[] = {{0x250, 0, 8}, {0x250, 0, 6}, {0x251, 0, 5}, //
|
||||||
{0x1, 0, 8}}; // CAN flasher
|
{0x1, 0, 8}}; // CAN flasher
|
||||||
|
|
||||||
RxCheck body_rx_checks[] = {
|
RxCheck body_rx_checks[] = {
|
||||||
{.msg = {{0x201, 0, 8, .check_checksum = false, .max_counter = 0U, .expected_freq = 100U}, { 0 }, { 0 }}},
|
{.msg = {{0x201, 0, 8, .check_checksum = false, .max_counter = 0U, .frequency = 100U}, { 0 }, { 0 }}},
|
||||||
};
|
};
|
||||||
|
|
||||||
static void body_rx_hook(CANPacket_t *to_push) {
|
static void body_rx_hook(CANPacket_t *to_push) {
|
||||||
|
|
|
@ -94,28 +94,28 @@ const CanMsg CHRYSLER_RAM_HD_TX_MSGS[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
RxCheck chrysler_rx_checks[] = {
|
RxCheck chrysler_rx_checks[] = {
|
||||||
{.msg = {{CHRYSLER_ADDRS.EPS_2, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 100U}, { 0 }, { 0 }}},
|
{.msg = {{CHRYSLER_ADDRS.EPS_2, 0, 8, .check_checksum = true, .max_counter = 15U, .frequency = 100U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{CHRYSLER_ADDRS.ESP_1, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{CHRYSLER_ADDRS.ESP_1, 0, 8, .check_checksum = true, .max_counter = 15U, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
//{.msg = {{ESP_8, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 50U}}},
|
//{.msg = {{ESP_8, 0, 8, .check_checksum = true, .max_counter = 15U, .frequency = 50U}}},
|
||||||
{.msg = {{514, 0, 8, .check_checksum = false, .max_counter = 0U, .expected_freq = 100U}, { 0 }, { 0 }}},
|
{.msg = {{514, 0, 8, .check_checksum = false, .max_counter = 0U, .frequency = 100U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{CHRYSLER_ADDRS.ECM_5, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{CHRYSLER_ADDRS.ECM_5, 0, 8, .check_checksum = true, .max_counter = 15U, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{CHRYSLER_ADDRS.DAS_3, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{CHRYSLER_ADDRS.DAS_3, 0, 8, .check_checksum = true, .max_counter = 15U, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
};
|
};
|
||||||
|
|
||||||
RxCheck chrysler_ram_dt_rx_checks[] = {
|
RxCheck chrysler_ram_dt_rx_checks[] = {
|
||||||
{.msg = {{CHRYSLER_RAM_DT_ADDRS.EPS_2, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 100U}, { 0 }, { 0 }}},
|
{.msg = {{CHRYSLER_RAM_DT_ADDRS.EPS_2, 0, 8, .check_checksum = true, .max_counter = 15U, .frequency = 100U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{CHRYSLER_RAM_DT_ADDRS.ESP_1, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{CHRYSLER_RAM_DT_ADDRS.ESP_1, 0, 8, .check_checksum = true, .max_counter = 15U, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{CHRYSLER_RAM_DT_ADDRS.ESP_8, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{CHRYSLER_RAM_DT_ADDRS.ESP_8, 0, 8, .check_checksum = true, .max_counter = 15U, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{CHRYSLER_RAM_DT_ADDRS.ECM_5, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{CHRYSLER_RAM_DT_ADDRS.ECM_5, 0, 8, .check_checksum = true, .max_counter = 15U, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{CHRYSLER_RAM_DT_ADDRS.DAS_3, 2, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{CHRYSLER_RAM_DT_ADDRS.DAS_3, 2, 8, .check_checksum = true, .max_counter = 15U, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
};
|
};
|
||||||
|
|
||||||
RxCheck chrysler_ram_hd_rx_checks[] = {
|
RxCheck chrysler_ram_hd_rx_checks[] = {
|
||||||
{.msg = {{CHRYSLER_RAM_HD_ADDRS.EPS_2, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 100U}, { 0 }, { 0 }}},
|
{.msg = {{CHRYSLER_RAM_HD_ADDRS.EPS_2, 0, 8, .check_checksum = true, .max_counter = 15U, .frequency = 100U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{CHRYSLER_RAM_HD_ADDRS.ESP_1, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{CHRYSLER_RAM_HD_ADDRS.ESP_1, 0, 8, .check_checksum = true, .max_counter = 15U, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{CHRYSLER_RAM_HD_ADDRS.ESP_8, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{CHRYSLER_RAM_HD_ADDRS.ESP_8, 0, 8, .check_checksum = true, .max_counter = 15U, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{CHRYSLER_RAM_HD_ADDRS.ECM_5, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{CHRYSLER_RAM_HD_ADDRS.ECM_5, 0, 8, .check_checksum = true, .max_counter = 15U, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{CHRYSLER_RAM_HD_ADDRS.DAS_3, 2, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{CHRYSLER_RAM_HD_ADDRS.DAS_3, 2, 8, .check_checksum = true, .max_counter = 15U, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -58,14 +58,14 @@ const CanMsg FORD_CANFD_LONG_TX_MSGS[] = {
|
||||||
// warning: quality flags are not yet checked in openpilot's CAN parser,
|
// warning: quality flags are not yet checked in openpilot's CAN parser,
|
||||||
// this may be the cause of blocked messages
|
// this may be the cause of blocked messages
|
||||||
RxCheck ford_rx_checks[] = {
|
RxCheck ford_rx_checks[] = {
|
||||||
{.msg = {{FORD_BrakeSysFeatures, 0, 8, .check_checksum = true, .max_counter = 15U, .quality_flag=true, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{FORD_BrakeSysFeatures, 0, 8, .check_checksum = true, .max_counter = 15U, .quality_flag=true, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
// TODO: FORD_EngVehicleSpThrottle2 has a counter that skips by 2, understand and enable counter check
|
// TODO: FORD_EngVehicleSpThrottle2 has a counter that skips by 2, understand and enable counter check
|
||||||
{.msg = {{FORD_EngVehicleSpThrottle2, 0, 8, .check_checksum = true, .quality_flag=true, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{FORD_EngVehicleSpThrottle2, 0, 8, .check_checksum = true, .quality_flag=true, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{FORD_Yaw_Data_FD1, 0, 8, .check_checksum = true, .max_counter = 255U, .quality_flag=true, .expected_freq = 100U}, { 0 }, { 0 }}},
|
{.msg = {{FORD_Yaw_Data_FD1, 0, 8, .check_checksum = true, .max_counter = 255U, .quality_flag=true, .frequency = 100U}, { 0 }, { 0 }}},
|
||||||
// These messages have no counter or checksum
|
// These messages have no counter or checksum
|
||||||
{.msg = {{FORD_EngBrakeData, 0, 8, .expected_freq = 10U}, { 0 }, { 0 }}},
|
{.msg = {{FORD_EngBrakeData, 0, 8, .frequency = 10U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{FORD_EngVehicleSpThrottle, 0, 8, .expected_freq = 100U}, { 0 }, { 0 }}},
|
{.msg = {{FORD_EngVehicleSpThrottle, 0, 8, .frequency = 100U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{FORD_DesiredTorqBrk, 0, 8, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{FORD_DesiredTorqBrk, 0, 8, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
};
|
};
|
||||||
|
|
||||||
static uint8_t ford_get_counter(CANPacket_t *to_push) {
|
static uint8_t ford_get_counter(CANPacket_t *to_push) {
|
||||||
|
|
|
@ -40,14 +40,14 @@ const CanMsg GM_CAM_LONG_TX_MSGS[] = {{0x180, 0, 4}, {0x315, 0, 5}, {0x2CB, 0, 8
|
||||||
|
|
||||||
// TODO: do checksum and counter checks. Add correct timestep, 0.1s for now.
|
// TODO: do checksum and counter checks. Add correct timestep, 0.1s for now.
|
||||||
RxCheck gm_rx_checks[] = {
|
RxCheck gm_rx_checks[] = {
|
||||||
{.msg = {{0x184, 0, 8, .expected_freq = 10U}, { 0 }, { 0 }}},
|
{.msg = {{0x184, 0, 8, .frequency = 10U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{0x34A, 0, 5, .expected_freq = 10U}, { 0 }, { 0 }}},
|
{.msg = {{0x34A, 0, 5, .frequency = 10U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{0x1E1, 0, 7, .expected_freq = 10U}, { 0 }, { 0 }}},
|
{.msg = {{0x1E1, 0, 7, .frequency = 10U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{0xBE, 0, 6, .expected_freq = 10U}, // Volt, Silverado, Acadia Denali
|
{.msg = {{0xBE, 0, 6, .frequency = 10U}, // Volt, Silverado, Acadia Denali
|
||||||
{0xBE, 0, 7, .expected_freq = 10U}, // Bolt EUV
|
{0xBE, 0, 7, .frequency = 10U}, // Bolt EUV
|
||||||
{0xBE, 0, 8, .expected_freq = 10U}}}, // Escalade
|
{0xBE, 0, 8, .frequency = 10U}}}, // Escalade
|
||||||
{.msg = {{0x1C4, 0, 8, .expected_freq = 10U}, { 0 }, { 0 }}},
|
{.msg = {{0x1C4, 0, 8, .frequency = 10U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{0xC9, 0, 8, .expected_freq = 10U}, { 0 }, { 0 }}},
|
{.msg = {{0xC9, 0, 8, .frequency = 10U}, { 0 }, { 0 }}},
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint16_t GM_PARAM_HW_CAM = 1;
|
const uint16_t GM_PARAM_HW_CAM = 1;
|
||||||
|
|
|
@ -27,18 +27,18 @@ const LongitudinalLimits HONDA_NIDEC_LONG_LIMITS = {
|
||||||
|
|
||||||
// All common address checks except SCM_BUTTONS which isn't on one Nidec safety configuration
|
// All common address checks except SCM_BUTTONS which isn't on one Nidec safety configuration
|
||||||
#define HONDA_COMMON_NO_SCM_FEEDBACK_RX_CHECKS(pt_bus) \
|
#define HONDA_COMMON_NO_SCM_FEEDBACK_RX_CHECKS(pt_bus) \
|
||||||
{.msg = {{0x1A6, (pt_bus), 8, .check_checksum = true, .max_counter = 3U, .expected_freq = 25U}, /* SCM_BUTTONS */ \
|
{.msg = {{0x1A6, (pt_bus), 8, .check_checksum = true, .max_counter = 3U, .frequency = 25U}, /* SCM_BUTTONS */ \
|
||||||
{0x296, (pt_bus), 4, .check_checksum = true, .max_counter = 3U, .expected_freq = 25U}, { 0 }}}, \
|
{0x296, (pt_bus), 4, .check_checksum = true, .max_counter = 3U, .frequency = 25U}, { 0 }}}, \
|
||||||
{.msg = {{0x158, (pt_bus), 8, .check_checksum = true, .max_counter = 3U, .expected_freq = 100U}, { 0 }, { 0 }}}, /* ENGINE_DATA */ \
|
{.msg = {{0x158, (pt_bus), 8, .check_checksum = true, .max_counter = 3U, .frequency = 100U}, { 0 }, { 0 }}}, /* ENGINE_DATA */ \
|
||||||
{.msg = {{0x17C, (pt_bus), 8, .check_checksum = true, .max_counter = 3U, .expected_freq = 100U}, { 0 }, { 0 }}}, /* POWERTRAIN_DATA */ \
|
{.msg = {{0x17C, (pt_bus), 8, .check_checksum = true, .max_counter = 3U, .frequency = 100U}, { 0 }, { 0 }}}, /* POWERTRAIN_DATA */ \
|
||||||
|
|
||||||
#define HONDA_COMMON_RX_CHECKS(pt_bus) \
|
#define HONDA_COMMON_RX_CHECKS(pt_bus) \
|
||||||
HONDA_COMMON_NO_SCM_FEEDBACK_RX_CHECKS(pt_bus) \
|
HONDA_COMMON_NO_SCM_FEEDBACK_RX_CHECKS(pt_bus) \
|
||||||
{.msg = {{0x326, (pt_bus), 8, .check_checksum = true, .max_counter = 3U, .expected_freq = 10U}, { 0 }, { 0 }}}, /* SCM_FEEDBACK */ \
|
{.msg = {{0x326, (pt_bus), 8, .check_checksum = true, .max_counter = 3U, .frequency = 10U}, { 0 }, { 0 }}}, /* SCM_FEEDBACK */ \
|
||||||
|
|
||||||
// Alternate brake message is used on some Honda Bosch, and Honda Bosch radarless (where PT bus is 0)
|
// Alternate brake message is used on some Honda Bosch, and Honda Bosch radarless (where PT bus is 0)
|
||||||
#define HONDA_ALT_BRAKE_ADDR_CHECK(pt_bus) \
|
#define HONDA_ALT_BRAKE_ADDR_CHECK(pt_bus) \
|
||||||
{.msg = {{0x1BE, (pt_bus), 3, .check_checksum = true, .max_counter = 3U, .expected_freq = 50U}, { 0 }, { 0 }}}, /* BRAKE_MODULE */ \
|
{.msg = {{0x1BE, (pt_bus), 3, .check_checksum = true, .max_counter = 3U, .frequency = 50U}, { 0 }, { 0 }}}, /* BRAKE_MODULE */ \
|
||||||
|
|
||||||
|
|
||||||
// Nidec and bosch radarless has the powertrain bus on bus 0
|
// Nidec and bosch radarless has the powertrain bus on bus 0
|
||||||
|
|
|
@ -52,13 +52,13 @@ const CanMsg HYUNDAI_CAMERA_SCC_TX_MSGS[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
#define HYUNDAI_COMMON_RX_CHECKS(legacy) \
|
#define HYUNDAI_COMMON_RX_CHECKS(legacy) \
|
||||||
{.msg = {{0x260, 0, 8, .check_checksum = true, .max_counter = 3U, .expected_freq = 100U}, \
|
{.msg = {{0x260, 0, 8, .check_checksum = true, .max_counter = 3U, .frequency = 100U}, \
|
||||||
{0x371, 0, 8, .expected_freq = 100U}, { 0 }}}, \
|
{0x371, 0, 8, .frequency = 100U}, { 0 }}}, \
|
||||||
{.msg = {{0x386, 0, 8, .check_checksum = !(legacy), .max_counter = (legacy) ? 0U : 15U, .expected_freq = 100U}, { 0 }, { 0 }}}, \
|
{.msg = {{0x386, 0, 8, .check_checksum = !(legacy), .max_counter = (legacy) ? 0U : 15U, .frequency = 100U}, { 0 }, { 0 }}}, \
|
||||||
{.msg = {{0x394, 0, 8, .check_checksum = !(legacy), .max_counter = (legacy) ? 0U : 7U, .expected_freq = 100U}, { 0 }, { 0 }}}, \
|
{.msg = {{0x394, 0, 8, .check_checksum = !(legacy), .max_counter = (legacy) ? 0U : 7U, .frequency = 100U}, { 0 }, { 0 }}}, \
|
||||||
|
|
||||||
#define HYUNDAI_SCC12_ADDR_CHECK(scc_bus) \
|
#define HYUNDAI_SCC12_ADDR_CHECK(scc_bus) \
|
||||||
{.msg = {{0x421, (scc_bus), 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 50U}, { 0 }, { 0 }}}, \
|
{.msg = {{0x421, (scc_bus), 8, .check_checksum = true, .max_counter = 15U, .frequency = 50U}, { 0 }, { 0 }}}, \
|
||||||
|
|
||||||
RxCheck hyundai_rx_checks[] = {
|
RxCheck hyundai_rx_checks[] = {
|
||||||
HYUNDAI_COMMON_RX_CHECKS(false)
|
HYUNDAI_COMMON_RX_CHECKS(false)
|
||||||
|
@ -73,7 +73,7 @@ RxCheck hyundai_cam_scc_rx_checks[] = {
|
||||||
RxCheck hyundai_long_rx_checks[] = {
|
RxCheck hyundai_long_rx_checks[] = {
|
||||||
HYUNDAI_COMMON_RX_CHECKS(false)
|
HYUNDAI_COMMON_RX_CHECKS(false)
|
||||||
// Use CLU11 (buttons) to manage controls allowed instead of SCC cruise state
|
// Use CLU11 (buttons) to manage controls allowed instead of SCC cruise state
|
||||||
{.msg = {{0x4F1, 0, 4, .check_checksum = false, .max_counter = 15U, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{0x4F1, 0, 4, .check_checksum = false, .max_counter = 15U, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
};
|
};
|
||||||
|
|
||||||
// older hyundai models have less checks due to missing counters and checksums
|
// older hyundai models have less checks due to missing counters and checksums
|
||||||
|
|
|
@ -57,22 +57,22 @@ const CanMsg HYUNDAI_CANFD_HDA1_TX_MSGS[] = {
|
||||||
// *** Addresses checked in rx hook ***
|
// *** Addresses checked in rx hook ***
|
||||||
// EV, ICE, HYBRID: ACCELERATOR (0x35), ACCELERATOR_BRAKE_ALT (0x100), ACCELERATOR_ALT (0x105)
|
// EV, ICE, HYBRID: ACCELERATOR (0x35), ACCELERATOR_BRAKE_ALT (0x100), ACCELERATOR_ALT (0x105)
|
||||||
#define HYUNDAI_CANFD_COMMON_RX_CHECKS(pt_bus) \
|
#define HYUNDAI_CANFD_COMMON_RX_CHECKS(pt_bus) \
|
||||||
{.msg = {{0x35, (pt_bus), 32, .check_checksum = true, .max_counter = 0xffU, .expected_freq = 100U}, \
|
{.msg = {{0x35, (pt_bus), 32, .check_checksum = true, .max_counter = 0xffU, .frequency = 100U}, \
|
||||||
{0x100, (pt_bus), 32, .check_checksum = true, .max_counter = 0xffU, .expected_freq = 100U}, \
|
{0x100, (pt_bus), 32, .check_checksum = true, .max_counter = 0xffU, .frequency = 100U}, \
|
||||||
{0x105, (pt_bus), 32, .check_checksum = true, .max_counter = 0xffU, .expected_freq = 100U}}}, \
|
{0x105, (pt_bus), 32, .check_checksum = true, .max_counter = 0xffU, .frequency = 100U}}}, \
|
||||||
{.msg = {{0x175, (pt_bus), 24, .check_checksum = true, .max_counter = 0xffU, .expected_freq = 50U}, { 0 }, { 0 }}}, \
|
{.msg = {{0x175, (pt_bus), 24, .check_checksum = true, .max_counter = 0xffU, .frequency = 50U}, { 0 }, { 0 }}}, \
|
||||||
{.msg = {{0xa0, (pt_bus), 24, .check_checksum = true, .max_counter = 0xffU, .expected_freq = 100U}, { 0 }, { 0 }}}, \
|
{.msg = {{0xa0, (pt_bus), 24, .check_checksum = true, .max_counter = 0xffU, .frequency = 100U}, { 0 }, { 0 }}}, \
|
||||||
{.msg = {{0xea, (pt_bus), 24, .check_checksum = true, .max_counter = 0xffU, .expected_freq = 100U}, { 0 }, { 0 }}}, \
|
{.msg = {{0xea, (pt_bus), 24, .check_checksum = true, .max_counter = 0xffU, .frequency = 100U}, { 0 }, { 0 }}}, \
|
||||||
|
|
||||||
#define HYUNDAI_CANFD_BUTTONS_ADDR_CHECK(pt_bus) \
|
#define HYUNDAI_CANFD_BUTTONS_ADDR_CHECK(pt_bus) \
|
||||||
{.msg = {{0x1cf, (pt_bus), 8, .check_checksum = false, .max_counter = 0xfU, .expected_freq = 50U}, { 0 }, { 0 }}}, \
|
{.msg = {{0x1cf, (pt_bus), 8, .check_checksum = false, .max_counter = 0xfU, .frequency = 50U}, { 0 }, { 0 }}}, \
|
||||||
|
|
||||||
#define HYUNDAI_CANFD_ALT_BUTTONS_ADDR_CHECK(pt_bus) \
|
#define HYUNDAI_CANFD_ALT_BUTTONS_ADDR_CHECK(pt_bus) \
|
||||||
{.msg = {{0x1aa, (pt_bus), 16, .check_checksum = false, .max_counter = 0xffU, .expected_freq = 50U}, { 0 }, { 0 }}}, \
|
{.msg = {{0x1aa, (pt_bus), 16, .check_checksum = false, .max_counter = 0xffU, .frequency = 50U}, { 0 }, { 0 }}}, \
|
||||||
|
|
||||||
// SCC_CONTROL (from ADAS unit or camera)
|
// SCC_CONTROL (from ADAS unit or camera)
|
||||||
#define HYUNDAI_CANFD_SCC_ADDR_CHECK(scc_bus) \
|
#define HYUNDAI_CANFD_SCC_ADDR_CHECK(scc_bus) \
|
||||||
{.msg = {{0x1a0, (scc_bus), 32, .check_checksum = true, .max_counter = 0xffU, .expected_freq = 50U}, { 0 }, { 0 }}}, \
|
{.msg = {{0x1a0, (scc_bus), 32, .check_checksum = true, .max_counter = 0xffU, .frequency = 50U}, { 0 }, { 0 }}}, \
|
||||||
|
|
||||||
|
|
||||||
// *** Non-HDA2 checks ***
|
// *** Non-HDA2 checks ***
|
||||||
|
|
|
@ -26,11 +26,11 @@ const SteeringLimits MAZDA_STEERING_LIMITS = {
|
||||||
const CanMsg MAZDA_TX_MSGS[] = {{MAZDA_LKAS, 0, 8}, {MAZDA_CRZ_BTNS, 0, 8}, {MAZDA_LKAS_HUD, 0, 8}};
|
const CanMsg MAZDA_TX_MSGS[] = {{MAZDA_LKAS, 0, 8}, {MAZDA_CRZ_BTNS, 0, 8}, {MAZDA_LKAS_HUD, 0, 8}};
|
||||||
|
|
||||||
RxCheck mazda_rx_checks[] = {
|
RxCheck mazda_rx_checks[] = {
|
||||||
{.msg = {{MAZDA_CRZ_CTRL, 0, 8, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{MAZDA_CRZ_CTRL, 0, 8, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{MAZDA_CRZ_BTNS, 0, 8, .expected_freq = 10U}, { 0 }, { 0 }}},
|
{.msg = {{MAZDA_CRZ_BTNS, 0, 8, .frequency = 10U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{MAZDA_STEER_TORQUE, 0, 8, .expected_freq = 83U}, { 0 }, { 0 }}},
|
{.msg = {{MAZDA_STEER_TORQUE, 0, 8, .frequency = 83U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{MAZDA_ENGINE_DATA, 0, 8, .expected_freq = 100U}, { 0 }, { 0 }}},
|
{.msg = {{MAZDA_ENGINE_DATA, 0, 8, .frequency = 100U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{MAZDA_PEDALS, 0, 8, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{MAZDA_PEDALS, 0, 8, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
};
|
};
|
||||||
|
|
||||||
// track msgs coming from OP so that we know what CAM msgs to drop and what to forward
|
// track msgs coming from OP so that we know what CAM msgs to drop and what to forward
|
||||||
|
|
|
@ -21,18 +21,18 @@ const CanMsg NISSAN_TX_MSGS[] = {
|
||||||
|
|
||||||
// Signals duplicated below due to the fact that these messages can come in on either CAN bus, depending on car model.
|
// Signals duplicated below due to the fact that these messages can come in on either CAN bus, depending on car model.
|
||||||
RxCheck nissan_rx_checks[] = {
|
RxCheck nissan_rx_checks[] = {
|
||||||
{.msg = {{0x2, 0, 5, .expected_freq = 100U},
|
{.msg = {{0x2, 0, 5, .frequency = 100U},
|
||||||
{0x2, 1, 5, .expected_freq = 100U}, { 0 }}}, // STEER_ANGLE_SENSOR
|
{0x2, 1, 5, .frequency = 100U}, { 0 }}}, // STEER_ANGLE_SENSOR
|
||||||
{.msg = {{0x285, 0, 8, .expected_freq = 50U},
|
{.msg = {{0x285, 0, 8, .frequency = 50U},
|
||||||
{0x285, 1, 8, .expected_freq = 50U}, { 0 }}}, // WHEEL_SPEEDS_REAR
|
{0x285, 1, 8, .frequency = 50U}, { 0 }}}, // WHEEL_SPEEDS_REAR
|
||||||
{.msg = {{0x30f, 2, 3, .expected_freq = 10U},
|
{.msg = {{0x30f, 2, 3, .frequency = 10U},
|
||||||
{0x30f, 1, 3, .expected_freq = 10U}, { 0 }}}, // CRUISE_STATE
|
{0x30f, 1, 3, .frequency = 10U}, { 0 }}}, // CRUISE_STATE
|
||||||
{.msg = {{0x15c, 0, 8, .expected_freq = 50U},
|
{.msg = {{0x15c, 0, 8, .frequency = 50U},
|
||||||
{0x15c, 1, 8, .expected_freq = 50U},
|
{0x15c, 1, 8, .frequency = 50U},
|
||||||
{0x239, 0, 8, .expected_freq = 50U}}}, // GAS_PEDAL
|
{0x239, 0, 8, .frequency = 50U}}}, // GAS_PEDAL
|
||||||
{.msg = {{0x454, 0, 8, .expected_freq = 10U},
|
{.msg = {{0x454, 0, 8, .frequency = 10U},
|
||||||
{0x454, 1, 8, .expected_freq = 10U},
|
{0x454, 1, 8, .frequency = 10U},
|
||||||
{0x1cc, 0, 4, .expected_freq = 100U}}}, // DOORS_LIGHTS / BRAKE
|
{0x1cc, 0, 4, .frequency = 100U}}}, // DOORS_LIGHTS / BRAKE
|
||||||
};
|
};
|
||||||
|
|
||||||
// EPS Location. false = V-CAN, true = C-CAN
|
// EPS Location. false = V-CAN, true = C-CAN
|
||||||
|
|
|
@ -74,11 +74,11 @@ const LongitudinalLimits SUBARU_LONG_LIMITS = {
|
||||||
{MSG_SUBARU_ES_STATIC_2, SUBARU_MAIN_BUS, 8}, \
|
{MSG_SUBARU_ES_STATIC_2, SUBARU_MAIN_BUS, 8}, \
|
||||||
|
|
||||||
#define SUBARU_COMMON_RX_CHECKS(alt_bus) \
|
#define SUBARU_COMMON_RX_CHECKS(alt_bus) \
|
||||||
{.msg = {{MSG_SUBARU_Throttle, SUBARU_MAIN_BUS, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 100U}, { 0 }, { 0 }}}, \
|
{.msg = {{MSG_SUBARU_Throttle, SUBARU_MAIN_BUS, 8, .check_checksum = true, .max_counter = 15U, .frequency = 100U}, { 0 }, { 0 }}}, \
|
||||||
{.msg = {{MSG_SUBARU_Steering_Torque, SUBARU_MAIN_BUS, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 50U}, { 0 }, { 0 }}}, \
|
{.msg = {{MSG_SUBARU_Steering_Torque, SUBARU_MAIN_BUS, 8, .check_checksum = true, .max_counter = 15U, .frequency = 50U}, { 0 }, { 0 }}}, \
|
||||||
{.msg = {{MSG_SUBARU_Wheel_Speeds, alt_bus, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 50U}, { 0 }, { 0 }}}, \
|
{.msg = {{MSG_SUBARU_Wheel_Speeds, alt_bus, 8, .check_checksum = true, .max_counter = 15U, .frequency = 50U}, { 0 }, { 0 }}}, \
|
||||||
{.msg = {{MSG_SUBARU_Brake_Status, alt_bus, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 50U}, { 0 }, { 0 }}}, \
|
{.msg = {{MSG_SUBARU_Brake_Status, alt_bus, 8, .check_checksum = true, .max_counter = 15U, .frequency = 50U}, { 0 }, { 0 }}}, \
|
||||||
{.msg = {{MSG_SUBARU_CruiseControl, alt_bus, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 20U}, { 0 }, { 0 }}}, \
|
{.msg = {{MSG_SUBARU_CruiseControl, alt_bus, 8, .check_checksum = true, .max_counter = 15U, .frequency = 20U}, { 0 }, { 0 }}}, \
|
||||||
|
|
||||||
const CanMsg SUBARU_TX_MSGS[] = {
|
const CanMsg SUBARU_TX_MSGS[] = {
|
||||||
SUBARU_COMMON_TX_MSGS(SUBARU_MAIN_BUS, MSG_SUBARU_ES_LKAS)
|
SUBARU_COMMON_TX_MSGS(SUBARU_MAIN_BUS, MSG_SUBARU_ES_LKAS)
|
||||||
|
|
|
@ -31,9 +31,9 @@ const CanMsg SUBARU_PG_TX_MSGS[] = {
|
||||||
|
|
||||||
// TODO: do checksum and counter checks after adding the signals to the outback dbc file
|
// TODO: do checksum and counter checks after adding the signals to the outback dbc file
|
||||||
RxCheck subaru_preglobal_rx_checks[] = {
|
RxCheck subaru_preglobal_rx_checks[] = {
|
||||||
{.msg = {{MSG_SUBARU_PG_Throttle, SUBARU_PG_MAIN_BUS, 8, .expected_freq = 100U}, { 0 }, { 0 }}},
|
{.msg = {{MSG_SUBARU_PG_Throttle, SUBARU_PG_MAIN_BUS, 8, .frequency = 100U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{MSG_SUBARU_PG_Steering_Torque, SUBARU_PG_MAIN_BUS, 8, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{MSG_SUBARU_PG_Steering_Torque, SUBARU_PG_MAIN_BUS, 8, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{MSG_SUBARU_PG_CruiseControl, SUBARU_PG_MAIN_BUS, 8, .expected_freq = 20U}, { 0 }, { 0 }}},
|
{.msg = {{MSG_SUBARU_PG_CruiseControl, SUBARU_PG_MAIN_BUS, 8, .frequency = 20U}, { 0 }, { 0 }}},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -32,21 +32,21 @@ const CanMsg TESLA_PT_TX_MSGS[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
RxCheck tesla_rx_checks[] = {
|
RxCheck tesla_rx_checks[] = {
|
||||||
{.msg = {{0x2b9, 2, 8, .expected_freq = 25U}, { 0 }, { 0 }}}, // DAS_control
|
{.msg = {{0x2b9, 2, 8, .frequency = 25U}, { 0 }, { 0 }}}, // DAS_control
|
||||||
{.msg = {{0x370, 0, 8, .expected_freq = 25U}, { 0 }, { 0 }}}, // EPAS_sysStatus
|
{.msg = {{0x370, 0, 8, .frequency = 25U}, { 0 }, { 0 }}}, // EPAS_sysStatus
|
||||||
{.msg = {{0x108, 0, 8, .expected_freq = 100U}, { 0 }, { 0 }}}, // DI_torque1
|
{.msg = {{0x108, 0, 8, .frequency = 100U}, { 0 }, { 0 }}}, // DI_torque1
|
||||||
{.msg = {{0x118, 0, 6, .expected_freq = 100U}, { 0 }, { 0 }}}, // DI_torque2
|
{.msg = {{0x118, 0, 6, .frequency = 100U}, { 0 }, { 0 }}}, // DI_torque2
|
||||||
{.msg = {{0x20a, 0, 8, .expected_freq = 50U}, { 0 }, { 0 }}}, // BrakeMessage
|
{.msg = {{0x20a, 0, 8, .frequency = 50U}, { 0 }, { 0 }}}, // BrakeMessage
|
||||||
{.msg = {{0x368, 0, 8, .expected_freq = 10U}, { 0 }, { 0 }}}, // DI_state
|
{.msg = {{0x368, 0, 8, .frequency = 10U}, { 0 }, { 0 }}}, // DI_state
|
||||||
{.msg = {{0x318, 0, 8, .expected_freq = 10U}, { 0 }, { 0 }}}, // GTW_carState
|
{.msg = {{0x318, 0, 8, .frequency = 10U}, { 0 }, { 0 }}}, // GTW_carState
|
||||||
};
|
};
|
||||||
|
|
||||||
RxCheck tesla_pt_rx_checks[] = {
|
RxCheck tesla_pt_rx_checks[] = {
|
||||||
{.msg = {{0x106, 0, 8, .expected_freq = 100U}, { 0 }, { 0 }}}, // DI_torque1
|
{.msg = {{0x106, 0, 8, .frequency = 100U}, { 0 }, { 0 }}}, // DI_torque1
|
||||||
{.msg = {{0x116, 0, 6, .expected_freq = 100U}, { 0 }, { 0 }}}, // DI_torque2
|
{.msg = {{0x116, 0, 6, .frequency = 100U}, { 0 }, { 0 }}}, // DI_torque2
|
||||||
{.msg = {{0x1f8, 0, 8, .expected_freq = 50U}, { 0 }, { 0 }}}, // BrakeMessage
|
{.msg = {{0x1f8, 0, 8, .frequency = 50U}, { 0 }, { 0 }}}, // BrakeMessage
|
||||||
{.msg = {{0x2bf, 2, 8, .expected_freq = 25U}, { 0 }, { 0 }}}, // DAS_control
|
{.msg = {{0x2bf, 2, 8, .frequency = 25U}, { 0 }, { 0 }}}, // DAS_control
|
||||||
{.msg = {{0x256, 0, 8, .expected_freq = 10U}, { 0 }, { 0 }}}, // DI_state
|
{.msg = {{0x256, 0, 8, .frequency = 10U}, { 0 }, { 0 }}}, // DI_state
|
||||||
};
|
};
|
||||||
|
|
||||||
bool tesla_longitudinal = false;
|
bool tesla_longitudinal = false;
|
||||||
|
|
|
@ -33,11 +33,11 @@ const CanMsg TOYOTA_TX_MSGS[] = {{0x283, 0, 7}, {0x2E6, 0, 8}, {0x2E7, 0, 8}, {0
|
||||||
{0x200, 0, 6}}; // interceptor
|
{0x200, 0, 6}}; // interceptor
|
||||||
|
|
||||||
RxCheck toyota_rx_checks[] = {
|
RxCheck toyota_rx_checks[] = {
|
||||||
{.msg = {{ 0xaa, 0, 8, .check_checksum = false, .expected_freq = 83U}, { 0 }, { 0 }}},
|
{.msg = {{ 0xaa, 0, 8, .check_checksum = false, .frequency = 83U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{0x260, 0, 8, .check_checksum = true, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{0x260, 0, 8, .check_checksum = true, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{0x1D2, 0, 8, .check_checksum = true, .expected_freq = 33U}, { 0 }, { 0 }}},
|
{.msg = {{0x1D2, 0, 8, .check_checksum = true, .frequency = 33U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{0x224, 0, 8, .check_checksum = false, .expected_freq = 40U},
|
{.msg = {{0x224, 0, 8, .check_checksum = false, .frequency = 40U},
|
||||||
{0x226, 0, 8, .check_checksum = false, .expected_freq = 40U}, { 0 }}},
|
{0x226, 0, 8, .check_checksum = false, .frequency = 40U}, { 0 }}},
|
||||||
};
|
};
|
||||||
|
|
||||||
// safety param flags
|
// safety param flags
|
||||||
|
|
|
@ -39,12 +39,12 @@ const CanMsg VOLKSWAGEN_MQB_LONG_TX_MSGS[] = {{MSG_HCA_01, 0, 8}, {MSG_LDW_02, 0
|
||||||
{MSG_ACC_02, 0, 8}, {MSG_ACC_06, 0, 8}, {MSG_ACC_07, 0, 8}};
|
{MSG_ACC_02, 0, 8}, {MSG_ACC_06, 0, 8}, {MSG_ACC_07, 0, 8}};
|
||||||
|
|
||||||
RxCheck volkswagen_mqb_rx_checks[] = {
|
RxCheck volkswagen_mqb_rx_checks[] = {
|
||||||
{.msg = {{MSG_ESP_19, 0, 8, .check_checksum = false, .max_counter = 0U, .expected_freq = 100U}, { 0 }, { 0 }}},
|
{.msg = {{MSG_ESP_19, 0, 8, .check_checksum = false, .max_counter = 0U, .frequency = 100U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{MSG_LH_EPS_03, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 100U}, { 0 }, { 0 }}},
|
{.msg = {{MSG_LH_EPS_03, 0, 8, .check_checksum = true, .max_counter = 15U, .frequency = 100U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{MSG_ESP_05, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{MSG_ESP_05, 0, 8, .check_checksum = true, .max_counter = 15U, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{MSG_TSK_06, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{MSG_TSK_06, 0, 8, .check_checksum = true, .max_counter = 15U, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{MSG_MOTOR_20, 0, 8, .check_checksum = true, .max_counter = 15U, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{MSG_MOTOR_20, 0, 8, .check_checksum = true, .max_counter = 15U, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{MSG_MOTOR_14, 0, 8, .check_checksum = false, .max_counter = 0U, .expected_freq = 10U}, { 0 }, { 0 }}},
|
{.msg = {{MSG_MOTOR_14, 0, 8, .check_checksum = false, .max_counter = 0U, .frequency = 10U}, { 0 }, { 0 }}},
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t volkswagen_crc8_lut_8h2f[256]; // Static lookup table for CRC8 poly 0x2F, aka 8H2F/AUTOSAR
|
uint8_t volkswagen_crc8_lut_8h2f[256]; // Static lookup table for CRC8 poly 0x2F, aka 8H2F/AUTOSAR
|
||||||
|
|
|
@ -38,12 +38,12 @@ const CanMsg VOLKSWAGEN_PQ_LONG_TX_MSGS[] = {{MSG_HCA_1, 0, 5}, {MSG_LDW_1, 0,
|
||||||
{MSG_ACC_SYSTEM, 0, 8}, {MSG_ACC_GRA_ANZEIGE, 0, 8}};
|
{MSG_ACC_SYSTEM, 0, 8}, {MSG_ACC_GRA_ANZEIGE, 0, 8}};
|
||||||
|
|
||||||
RxCheck volkswagen_pq_rx_checks[] = {
|
RxCheck volkswagen_pq_rx_checks[] = {
|
||||||
{.msg = {{MSG_LENKHILFE_3, 0, 6, .check_checksum = true, .max_counter = 15U, .expected_freq = 100U}, { 0 }, { 0 }}},
|
{.msg = {{MSG_LENKHILFE_3, 0, 6, .check_checksum = true, .max_counter = 15U, .frequency = 100U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{MSG_BREMSE_1, 0, 8, .check_checksum = false, .max_counter = 0U, .expected_freq = 100U}, { 0 }, { 0 }}},
|
{.msg = {{MSG_BREMSE_1, 0, 8, .check_checksum = false, .max_counter = 0U, .frequency = 100U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{MSG_MOTOR_2, 0, 8, .check_checksum = false, .max_counter = 0U, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{MSG_MOTOR_2, 0, 8, .check_checksum = false, .max_counter = 0U, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{MSG_MOTOR_3, 0, 8, .check_checksum = false, .max_counter = 0U, .expected_freq = 100U}, { 0 }, { 0 }}},
|
{.msg = {{MSG_MOTOR_3, 0, 8, .check_checksum = false, .max_counter = 0U, .frequency = 100U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{MSG_MOTOR_5, 0, 8, .check_checksum = true, .max_counter = 0U, .expected_freq = 50U}, { 0 }, { 0 }}},
|
{.msg = {{MSG_MOTOR_5, 0, 8, .check_checksum = true, .max_counter = 0U, .frequency = 50U}, { 0 }, { 0 }}},
|
||||||
{.msg = {{MSG_GRA_NEU, 0, 4, .check_checksum = true, .max_counter = 15U, .expected_freq = 30U}, { 0 }, { 0 }}},
|
{.msg = {{MSG_GRA_NEU, 0, 4, .check_checksum = true, .max_counter = 15U, .frequency = 30U}, { 0 }, { 0 }}},
|
||||||
};
|
};
|
||||||
|
|
||||||
static uint32_t volkswagen_pq_get_checksum(CANPacket_t *to_push) {
|
static uint32_t volkswagen_pq_get_checksum(CANPacket_t *to_push) {
|
||||||
|
|
|
@ -115,7 +115,7 @@ typedef struct {
|
||||||
const bool check_checksum; // true is checksum check is performed
|
const bool check_checksum; // true is checksum check is performed
|
||||||
const uint8_t max_counter; // maximum value of the counter. 0 means that the counter check is skipped
|
const uint8_t max_counter; // maximum value of the counter. 0 means that the counter check is skipped
|
||||||
const bool quality_flag; // true is quality flag check is performed
|
const bool quality_flag; // true is quality flag check is performed
|
||||||
const uint32_t expected_freq; // expected frequency of the message [Hz]
|
const uint32_t frequency; // expected frequency of the message [Hz]
|
||||||
} CanMsgCheck;
|
} CanMsgCheck;
|
||||||
|
|
||||||
// params and flags about checksum, counter and frequency checks for each monitored address
|
// params and flags about checksum, counter and frequency checks for each monitored address
|
||||||
|
|
Loading…
Reference in New Issue