mirror of
https://jihulab.com/mr-one/openpilot.git
synced 2026-10-27 21:13:42 +08:00
volkswagen: allow the radar disable diagnostics in the safety TX list
This commit is contained in:
@@ -1,13 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
extern const uint16_t FLAG_VOLKSWAGEN_LONG_CONTROL;
|
||||
extern const uint16_t FLAG_VOLKSWAGEN_DISABLE_RADAR;
|
||||
|
||||
const uint16_t FLAG_VOLKSWAGEN_LONG_CONTROL = 1;
|
||||
const uint16_t FLAG_VOLKSWAGEN_DISABLE_RADAR = 8;
|
||||
|
||||
static uint8_t volkswagen_crc8_lut_8h2f[256]; // Static lookup table for CRC8 poly 0x2F, aka 8H2F/AUTOSAR
|
||||
|
||||
extern bool volkswagen_longitudinal;
|
||||
bool volkswagen_longitudinal = false;
|
||||
|
||||
extern bool volkswagen_disable_radar;
|
||||
bool volkswagen_disable_radar = false;
|
||||
|
||||
extern bool volkswagen_set_button_prev;
|
||||
bool volkswagen_set_button_prev = false;
|
||||
|
||||
@@ -40,6 +46,7 @@ bool volkswagen_brake_pressure_detected = false;
|
||||
|
||||
static void volkswagen_common_init(void) {
|
||||
volkswagen_longitudinal = false;
|
||||
volkswagen_disable_radar = false;
|
||||
volkswagen_set_button_prev = false;
|
||||
volkswagen_resume_button_prev = false;
|
||||
volkswagen_brake_pedal_switch = false;
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
#define MSG_Motor_51 0x10BU // RX for TSK state and accel pedal
|
||||
#define MSG_KLR_01 0x25DU // TX, for capacitive steering wheel
|
||||
#define MSG_TA_01 0x26BU // TX by OP, Travel Assist status
|
||||
#define MSG_DIAGNOSTIC 0x700U // TX, functional tester present for the radar disable
|
||||
#define MSG_RADAR_DIAG 0x757U // TX, physical radar diagnostic address
|
||||
|
||||
// ACC_18.ACC_Anforderung_HMS, the states openpilot is allowed to request
|
||||
#define VOLKSWAGEN_MEB_HMS_KEINE_ANFORDERUNG 0U
|
||||
@@ -116,10 +118,28 @@ static safety_config volkswagen_meb_init(uint16_t param) {
|
||||
{MSG_TA_01, 0, 8, .check_relay = true},
|
||||
};
|
||||
|
||||
// With the radar disabled (camera side of the relay) openpilot needs the diagnostic
|
||||
// addresses to put the radar into a programming session
|
||||
static const CanMsg VOLKSWAGEN_MEB_TX_MSGS_NO_RADAR[] = {
|
||||
{MSG_HCA_03, 0, 24, .check_relay = true},
|
||||
{MSG_LDW_02, 0, 8, .check_relay = true},
|
||||
{MSG_KLR_01, 0, 8, .check_relay = false},
|
||||
{MSG_KLR_01, 2, 8, .check_relay = true},
|
||||
{MSG_ACC_19, 0, 48, .check_relay = true},
|
||||
{MSG_ACC_18, 0, 32, .check_relay = true},
|
||||
{MSG_TA_01, 0, 8, .check_relay = true},
|
||||
{MSG_DIAGNOSTIC, 0, 8, .check_relay = false},
|
||||
{MSG_RADAR_DIAG, 0, 8, .check_relay = false},
|
||||
};
|
||||
|
||||
volkswagen_common_init();
|
||||
const uint16_t FLAG_VOLKSWAGEN_MEB_ALT_CRC = 2;
|
||||
volkswagen_meb_alt_crc = GET_FLAG(param, FLAG_VOLKSWAGEN_MEB_ALT_CRC);
|
||||
|
||||
#ifdef ALLOW_DEBUG
|
||||
volkswagen_disable_radar = GET_FLAG(param, FLAG_VOLKSWAGEN_DISABLE_RADAR);
|
||||
#endif
|
||||
|
||||
safety_config ret;
|
||||
if (volkswagen_meb_alt_crc) {
|
||||
static RxCheck volkswagen_meb_gen2_rx_checks[] = {
|
||||
@@ -128,7 +148,8 @@ static safety_config volkswagen_meb_init(uint16_t param) {
|
||||
{.msg = {{MSG_ESC_51, 0, 64, 50U, .max_counter = 15U, .ignore_quality_flag = true}, { 0 }, { 0 }}},
|
||||
};
|
||||
|
||||
ret = BUILD_SAFETY_CFG(volkswagen_meb_gen2_rx_checks, VOLKSWAGEN_MEB_TX_MSGS);
|
||||
ret = volkswagen_disable_radar ? BUILD_SAFETY_CFG(volkswagen_meb_gen2_rx_checks, VOLKSWAGEN_MEB_TX_MSGS_NO_RADAR)
|
||||
: BUILD_SAFETY_CFG(volkswagen_meb_gen2_rx_checks, VOLKSWAGEN_MEB_TX_MSGS);
|
||||
} else {
|
||||
static RxCheck volkswagen_meb_rx_checks[] = {
|
||||
VOLKSWAGEN_MEB_COMMON_RX_CHECKS
|
||||
@@ -136,7 +157,8 @@ static safety_config volkswagen_meb_init(uint16_t param) {
|
||||
{.msg = {{MSG_ESC_51, 0, 48, 50U, .max_counter = 15U, .ignore_quality_flag = true}, { 0 }, { 0 }}},
|
||||
};
|
||||
|
||||
ret = BUILD_SAFETY_CFG(volkswagen_meb_rx_checks, VOLKSWAGEN_MEB_TX_MSGS);
|
||||
ret = volkswagen_disable_radar ? BUILD_SAFETY_CFG(volkswagen_meb_rx_checks, VOLKSWAGEN_MEB_TX_MSGS_NO_RADAR)
|
||||
: BUILD_SAFETY_CFG(volkswagen_meb_rx_checks, VOLKSWAGEN_MEB_TX_MSGS);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user